diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml
index d0c4c16784f8c..6e7f97cf53035 100644
--- a/.github/workflows/ci_suite.yml
+++ b/.github/workflows/ci_suite.yml
@@ -76,7 +76,7 @@ jobs:
path: tools/icon_cutter/cache
key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }}
- name: Install OpenDream
- uses: robinraju/release-downloader@v1.9
+ uses: robinraju/release-downloader@v1.11
with:
repository: "OpenDreamProject/OpenDream"
tag: "latest"
diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml
index b3eeeb3fb1e56..aaf01306a806e 100644
--- a/.github/workflows/compile_changelogs.yml
+++ b/.github/workflows/compile_changelogs.yml
@@ -23,7 +23,7 @@ jobs:
- name: "Setup python"
if: steps.value_holder.outputs.ACTIONS_ENABLED
- uses: actions/setup-python@v1
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml
index 2ffef72218384..40710a9044b74 100644
--- a/.github/workflows/generate_documentation.yml
+++ b/.github/workflows/generate_documentation.yml
@@ -27,10 +27,9 @@ jobs:
touch dmdoc/.nojekyll
echo codedocs.tgstation13.org > dmdoc/CNAME
- name: Deploy
- uses: JamesIves/github-pages-deploy-action@3.7.1
+ uses: JamesIves/github-pages-deploy-action@v4.6.4
with:
- BRANCH: gh-pages
- CLEAN: true
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- SINGLE_COMMIT: true
- FOLDER: dmdoc
+ branch: gh-pages
+ clean: true
+ single-commit: true
+ folder: dmdoc
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 241db03f6e82d..1b268802227af 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- - uses: actions/stale@v4
+ - uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-pr-message: "This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself"
diff --git a/.github/workflows/tgs_test.yml b/.github/workflows/tgs_test.yml
index bd538307aa3f3..37062e440735a 100644
--- a/.github/workflows/tgs_test.yml
+++ b/.github/workflows/tgs_test.yml
@@ -57,7 +57,7 @@ jobs:
- 5000:5000 #Can't use env here for some reason
steps:
- name: Setup dotnet
- uses: actions/setup-dotnet@v2
+ uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
index a2b3d227d5db2..7b7cec2c72a05 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
@@ -66,7 +66,7 @@
/obj/effect/step_trigger/sound_effect{
happens_once = 1;
name = "\proper a grave mistake";
- sound = 'sound/hallucinations/i_see_you1.ogg';
+ sound = 'sound/effects/hallucinations/i_see_you1.ogg';
triggerer_only = 1
},
/obj/effect/step_trigger/message{
diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm
index 88bf95847b9a4..d9c7d0aa705a6 100644
--- a/_maps/RandomZLevels/museum.dmm
+++ b/_maps/RandomZLevels/museum.dmm
@@ -1235,7 +1235,7 @@
},
/obj/item/reagent_containers/cup/glass/coffee,
/obj/item/paper/fluff/scrambled_pass{
- puzzle_id = "museum_r_wing_puzzle"
+ puzzle_id = "museum_right_wing"
},
/turf/open/floor/iron/dark,
/area/awaymission/museum)
@@ -34926,7 +34926,7 @@ FK
FK
FK
FK
-FO
+FK
FK
FK
FK
@@ -37490,7 +37490,7 @@ GQ
FK
FK
vb
-FK
+FO
FK
FK
PP
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 920c3c93f8d55..70090fc32fcee 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -10266,6 +10266,7 @@
/obj/item/food/popsicle/creamsicle_orange,
/obj/machinery/airalarm/directional/north,
/obj/effect/turf_decal/tile/dark_blue/half/contrasted,
+/obj/effect/mapping_helpers/airalarm/tlv_cold_room,
/turf/open/floor/iron/kitchen_coldroom,
/area/station/medical/coldroom)
"dLq" = (
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index 59c71329b21fb..096cf003ac4eb 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -1631,7 +1631,7 @@
/obj/effect/landmark/event_spawn,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"aAk" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/box,
@@ -2135,7 +2135,7 @@
/obj/structure/reagent_dispensers/cooking_oil,
/obj/machinery/camera/autoname/directional/south,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"aJz" = (
/obj/structure/railing,
/obj/structure/table,
@@ -4200,7 +4200,7 @@
"byb" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"byf" = (
/obj/structure/closet/emcloset/anchored,
/turf/open/floor/plating,
@@ -8267,7 +8267,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/mob/living/basic/goat/pete,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"cYP" = (
/obj/effect/landmark/event_spawn,
/obj/structure/cable,
@@ -10056,7 +10056,7 @@
"dCh" = (
/obj/machinery/gibber,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"dCi" = (
/obj/structure/table/reinforced/rglass,
/obj/item/storage/backpack/duffelbag/sec,
@@ -16256,7 +16256,7 @@
"fNy" = (
/obj/structure/closet/secure_closet/freezer/meat,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"fNB" = (
/obj/effect/turf_decal/tile/red/anticorner/contrasted{
dir = 1
@@ -36207,6 +36207,9 @@
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating,
/area/station/maintenance/department/cargo)
+"mMT" = (
+/turf/closed/wall,
+/area/station/service/kitchen/coldroom)
"mNl" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/turf/open/floor/iron,
@@ -37574,6 +37577,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
+"nlz" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/west,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/station/service/kitchen/coldroom)
"nlI" = (
/obj/effect/landmark/start/depsec/engineering,
/obj/effect/turf_decal/trimline/red/filled/line{
@@ -40888,8 +40898,10 @@
/area/station/maintenance/department/science)
"oBU" = (
/obj/machinery/food_cart,
+/obj/machinery/airalarm/directional/north,
+/obj/effect/mapping_helpers/airalarm/tlv_cold_room,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"oCb" = (
/obj/machinery/atmospherics/pipe/smart/simple/green/visible{
dir = 1
@@ -44775,7 +44787,7 @@
/obj/structure/kitchenspike,
/obj/machinery/light/directional/west,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"pTt" = (
/obj/structure/disposalpipe/segment{
dir = 9
@@ -47955,6 +47967,16 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/ai_monitored/turret_protected/ai_upload_foyer)
+"rbt" = (
+/obj/machinery/door/airlock{
+ name = "Kitchen Cold Room"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/service/kitchen,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
+/area/station/service/kitchen/coldroom)
"rbw" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden,
@@ -50245,7 +50267,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"rNJ" = (
/turf/closed/wall,
/area/station/maintenance/solars/port/fore)
@@ -53736,7 +53758,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"sUM" = (
/obj/item/radio/intercom/directional/west,
/turf/open/openspace,
@@ -55255,7 +55277,7 @@
/obj/structure/kitchenspike,
/obj/item/radio/intercom/directional/west,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"txo" = (
/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/engine,
@@ -59791,7 +59813,7 @@
"uZg" = (
/obj/machinery/icecream_vat,
/turf/open/floor/iron/kitchen_coldroom/freezerfloor,
-/area/station/service/kitchen)
+/area/station/service/kitchen/coldroom)
"uZx" = (
/turf/closed/wall,
/area/station/hallway/primary/central)
@@ -93333,10 +93355,10 @@ bIi
acc
jrX
gGm
-enu
-enu
-enu
-enu
+mMT
+mMT
+mMT
+mMT
edv
eBb
hRB
@@ -93589,12 +93611,12 @@ kYl
sUD
dGc
fDN
-enu
-enu
+mMT
+mMT
twW
pTn
-enu
-enu
+mMT
+mMT
hwk
hRB
jkF
@@ -93846,12 +93868,12 @@ heh
jUd
acc
fDN
-enu
+mMT
uZg
byb
rNs
-rNs
-sUI
+nlz
+rbt
cXL
enu
tGt
@@ -94103,12 +94125,12 @@ acc
acc
acc
fDN
-enu
+mMT
oBU
aAg
cYH
aJv
-enu
+mMT
drJ
shG
vMb
@@ -94360,12 +94382,12 @@ acB
jmn
atX
mUW
-enu
+mMT
fNy
rNs
rNs
dCh
-enu
+mMT
alP
enu
nii
@@ -94617,12 +94639,12 @@ gGS
bcu
bcu
pPy
-enu
-enu
+mMT
+mMT
sUI
-enu
-enu
-enu
+mMT
+mMT
+mMT
duS
pQM
pYu
diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm
index 3dda9d34da2a1..0192f6aa1188a 100644
--- a/_maps/shuttles/whiteship_kilo.dmm
+++ b/_maps/shuttles/whiteship_kilo.dmm
@@ -399,14 +399,7 @@
/turf/open/floor/plating,
/area/shuttle/abandoned/cargo)
"ry" = (
-/obj/machinery/porta_turret/centcom_shuttle/weak{
- dir = 4;
- name = "Old Mining Turret";
- lethal_projectile = /obj/projectile/kinetic/miner;
- lethal_projectile_sound = 'sound/weapons/kinetic_accel.ogg';
- stun_projectile = /obj/projectile/kinetic/miner;
- stun_projectile_sound = 'sound/weapons/kinetic_accel.ogg'
- },
+/obj/machinery/porta_turret/centcom_shuttle/weak/mining,
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned/bar)
"rC" = (
diff --git a/_maps/templates/holodeck_holdoutbunker.dmm b/_maps/templates/holodeck_holdoutbunker.dmm
index 782cbd919aa89..fccad07bfed85 100644
--- a/_maps/templates/holodeck_holdoutbunker.dmm
+++ b/_maps/templates/holodeck_holdoutbunker.dmm
@@ -28,12 +28,6 @@
},
/turf/open/floor/holofloor/asteroid,
/area/template_noop)
-"x" = (
-/obj/structure/foamedmetal,
-/obj/structure/window/spawner/directional/east,
-/obj/structure/bookcase/random/fiction,
-/turf/open/floor/holofloor/asteroid,
-/area/template_noop)
"I" = (
/obj/structure/table,
/obj/item/gun/energy/laser,
@@ -62,7 +56,7 @@ a
"}
(2,1,1) = {"
b
-x
+b
b
b
b
diff --git a/code/__DEFINES/actions.dm b/code/__DEFINES/actions.dm
index 99f9c1aca551d..a99baa7cd65dd 100644
--- a/code/__DEFINES/actions.dm
+++ b/code/__DEFINES/actions.dm
@@ -10,6 +10,8 @@
#define AB_CHECK_INCAPACITATED (1<<4)
///Action button checks if user is jaunting
#define AB_CHECK_PHASED (1<<5)
+///Action button checks if user is not on an open turf
+#define AB_CHECK_OPEN_TURF (1<<6)
DEFINE_BITFIELD(check_flags, list(
"CHECK IF HANDS BLOCKED" = AB_CHECK_HANDS_BLOCKED,
@@ -18,6 +20,7 @@ DEFINE_BITFIELD(check_flags, list(
"CHECK IF CONSCIOUS" = AB_CHECK_CONSCIOUS,
"CHECK IF INCAPACITATED" = AB_CHECK_INCAPACITATED,
"CHECK IF TEMPORARILY INCORPOREAL" = AB_CHECK_PHASED,
+ "CHECK IF NOT ON AN OPEN TURF" = AB_CHECK_OPEN_TURF,
))
///Action button triggered with right click
diff --git a/code/__DEFINES/apc_defines.dm b/code/__DEFINES/apc_defines.dm
index ee6c2bb67d636..efcfdd864f2ec 100644
--- a/code/__DEFINES/apc_defines.dm
+++ b/code/__DEFINES/apc_defines.dm
@@ -54,12 +54,6 @@
/// The APCs external powernet has enough power to charge the APC.
#define APC_HAS_POWER 2
-// Ethereals:
-/// How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter.
-#define APC_DRAIN_TIME (7.5 SECONDS)
-/// How much power ethereals gain/drain from APCs.
-#define APC_POWER_GAIN (0.2 * STANDARD_CELL_CHARGE)
-
// Wires & EMPs:
/// The wire value used to reset the APCs wires after one's EMPed.
#define APC_RESET_EMP "emp"
diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm
index 40f342df26834..516fe8c4e193a 100644
--- a/code/__DEFINES/chat.dm
+++ b/code/__DEFINES/chat.dm
@@ -51,3 +51,5 @@
#define separator_hr(str) ("
" + str + "
")
/// Emboldens runechat messages
#define RUNECHAT_BOLD(str) "+[str]+"
+/// Helper which creates a chat message which may have a tooltip in some contexts, but not others.
+#define conditional_tooltip(normal_text, tooltip_text, condition) ((condition) ? (span_tooltip(tooltip_text, normal_text)) : (normal_text))
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
index 925c7bc4e718e..36a2ca2c80584 100644
--- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
@@ -15,9 +15,6 @@
///from base of atom/movable/Bump(): (/atom)
#define COMSIG_MOVABLE_BUMP "movable_bump"
#define COMPONENT_INTERCEPT_BUMPED (1<<0)
-///from base of atom/movable/newtonian_move(): (inertia_direction, start_delay)
-#define COMSIG_MOVABLE_NEWTONIAN_MOVE "movable_newtonian_move"
- #define COMPONENT_MOVABLE_NEWTONIAN_BLOCK (1<<0)
///from datum/component/drift/apply_initial_visuals(): ()
#define COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT "movable_drift_visual_attempt"
#define DRIFT_VISUAL_FAILED (1<<0)
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
index 5fe266bc3f0d1..4a558c5fa7e03 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
@@ -52,6 +52,8 @@
#define MOVE_ARG_NEW_LOC 1
/// The argument of move_args which dictates our movement direction
#define MOVE_ARG_DIRECTION 2
+/// From base of /client/Move(): (new_loc, direction)
+#define COMSIG_MOB_CLIENT_MOVE_NOGRAV "mob_client_move_nograv"
/// From base of /client/Move(): (direction, old_dir)
#define COMSIG_MOB_CLIENT_MOVED "mob_client_moved"
/// From base of /client/proc/change_view() (mob/source, new_size)
@@ -253,5 +255,9 @@
/// from /mob/proc/key_down(): (key, client/client, full_key)
#define COMSIG_MOB_KEYDOWN "mob_key_down"
+/// from /mob/Process_Spacemove(movement_dir, continuous_move): (movement_dir, continuous_move, atom/backup)
+#define COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE "mob_attempt_halt_spacemove"
+ #define COMPONENT_PREVENT_SPACEMOVE_HALT (1<<0)
+
/// from /mob/update_incapacitated(): (old_incap, new_incap)
#define COMSIG_MOB_INCAPACITATE_CHANGED "mob_incapacitated"
diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm
index 1b167de3354d2..a9cc41b7d8d8d 100644
--- a/code/__DEFINES/dcs/signals/signals_object.dm
+++ b/code/__DEFINES/dcs/signals/signals_object.dm
@@ -417,6 +417,8 @@
#define COMSIG_PROJECTILE_ON_SPAWN_DROP "projectile_on_spawn_drop"
///sent to the projectile when spawning the item (shrapnel) that may be embedded: (new_item)
#define COMSIG_PROJECTILE_ON_SPAWN_EMBEDDED "projectile_on_spawn_embedded"
+///sent to the projectile when successfully embedding into something
+#define COMSIG_PROJECTILE_ON_EMBEDDED "projectile_on_embedded"
// /obj/vehicle/sealed/car/vim signals
diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm
index a8a7ad975af2e..cffe920215335 100644
--- a/code/__DEFINES/footsteps.dm
+++ b/code/__DEFINES/footsteps.dm
@@ -84,10 +84,10 @@ GLOBAL_LIST_INIT(footstep, list(
'sound/effects/footstep/grass3.ogg',
'sound/effects/footstep/grass4.ogg'), 75, 0),
FOOTSTEP_WATER = list(list(
- 'sound/effects/footstep/water1.ogg',
- 'sound/effects/footstep/water2.ogg',
- 'sound/effects/footstep/water3.ogg',
- 'sound/effects/footstep/water4.ogg'), 100, 1),
+ 'sound/effects/footstep/water/water1.ogg',
+ 'sound/effects/footstep/water/water2.ogg',
+ 'sound/effects/footstep/water/water3.ogg',
+ 'sound/effects/footstep/water/water4.ogg'), 100, 1),
FOOTSTEP_LAVA = list(list(
'sound/effects/footstep/lava1.ogg',
'sound/effects/footstep/lava2.ogg',
@@ -134,10 +134,10 @@ GLOBAL_LIST_INIT(barefootstep, list(
'sound/effects/footstep/grass3.ogg',
'sound/effects/footstep/grass4.ogg'), 75, 0),
FOOTSTEP_WATER = list(list(
- 'sound/effects/footstep/water1.ogg',
- 'sound/effects/footstep/water2.ogg',
- 'sound/effects/footstep/water3.ogg',
- 'sound/effects/footstep/water4.ogg'), 100, 1),
+ 'sound/effects/footstep/water/water1.ogg',
+ 'sound/effects/footstep/water/water2.ogg',
+ 'sound/effects/footstep/water/water3.ogg',
+ 'sound/effects/footstep/water/water4.ogg'), 100, 1),
FOOTSTEP_LAVA = list(list(
'sound/effects/footstep/lava1.ogg',
'sound/effects/footstep/lava2.ogg',
@@ -178,10 +178,10 @@ GLOBAL_LIST_INIT(clawfootstep, list(
'sound/effects/footstep/grass3.ogg',
'sound/effects/footstep/grass4.ogg'), 75, 0),
FOOTSTEP_WATER = list(list(
- 'sound/effects/footstep/water1.ogg',
- 'sound/effects/footstep/water2.ogg',
- 'sound/effects/footstep/water3.ogg',
- 'sound/effects/footstep/water4.ogg'), 100, 1),
+ 'sound/effects/footstep/water/water1.ogg',
+ 'sound/effects/footstep/water/water2.ogg',
+ 'sound/effects/footstep/water/water3.ogg',
+ 'sound/effects/footstep/water/water4.ogg'), 100, 1),
FOOTSTEP_LAVA = list(list(
'sound/effects/footstep/lava1.ogg',
'sound/effects/footstep/lava2.ogg',
@@ -196,10 +196,10 @@ GLOBAL_LIST_INIT(heavyfootstep, list(
'sound/effects/footstep/heavy1.ogg',
'sound/effects/footstep/heavy2.ogg'), 100, 2),
FOOTSTEP_WATER = list(list(
- 'sound/effects/footstep/water1.ogg',
- 'sound/effects/footstep/water2.ogg',
- 'sound/effects/footstep/water3.ogg',
- 'sound/effects/footstep/water4.ogg'), 100, 2),
+ 'sound/effects/footstep/water/water1.ogg',
+ 'sound/effects/footstep/water/water2.ogg',
+ 'sound/effects/footstep/water/water3.ogg',
+ 'sound/effects/footstep/water/water4.ogg'), 100, 2),
FOOTSTEP_LAVA = list(list(
'sound/effects/footstep/lava1.ogg',
'sound/effects/footstep/lava2.ogg',
diff --git a/code/__DEFINES/movement.dm b/code/__DEFINES/movement.dm
index be3546ea102d1..9a2c01f0bfb92 100644
--- a/code/__DEFINES/movement.dm
+++ b/code/__DEFINES/movement.dm
@@ -134,3 +134,19 @@ GLOBAL_VAR_INIT(glide_size_multiplier, 1.0)
#define MOVELOOP_FAILURE 0
#define MOVELOOP_SUCCESS 1
#define MOVELOOP_NOT_READY 2
+
+#define NEWTONS *1
+
+#define DEFAULT_INERTIA_SPEED 5
+/// Maximum inertia that an object can hold. Used to prevent objects from getting to stupid speeds.
+#define INERTIA_FORCE_CAP 25 NEWTONS
+/// How much inertia is deducted when a mob has newtonian spacemove capabilities and is not moving in the same direction
+#define INERTIA_FORCE_SPACEMOVE_REDUCTION 0.75 NEWTONS
+/// How much inertia we must have to not be able to instantly stop after having something to grab
+#define INERTIA_FORCE_SPACEMOVE_GRAB 1.5 NEWTONS
+/// How much inertia is required for the impacted object to be thrown at the wall
+#define INERTIA_FORCE_THROW_FLOOR 10 NEWTONS
+/// How much inertia is required past the floor to add 1 strength
+#define INERTIA_FORCE_PER_THROW_FORCE 5 NEWTONS
+// Results in maximum speed of 1 tile per tick, capped at about 2/3rds of maximum force
+#define INERTIA_SPEED_COEF 0.375
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 7322340fb1f4f..4335d535ee6f6 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -184,3 +184,4 @@ GLOBAL_LIST_INIT(announcer_keys, list(
#define SFX_DEFAULT_FISH_SLAP "default_fish_slap"
#define SFX_ALT_FISH_SLAP "alt_fish_slap"
#define SFX_FISH_PICKUP "fish_pickup"
+#define SFX_LIQUID_POUR "liquid_pour"
diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm
index a4f81a168e610..9b3c2612afa34 100644
--- a/code/__DEFINES/span.dm
+++ b/code/__DEFINES/span.dm
@@ -14,8 +14,8 @@
#define span_alien(str) ("" + str + "")
#define span_announce(str) ("" + str + "")
#define span_announcement_header(str) ("" + str + "")
-#define span_average(str) ("" + str + "")
+#define span_bad(str) ("" + str + "")
#define span_big(str) ("" + str + "")
#define span_bigicon(str) ("" + str + "")
#define span_binarysay(str) ("" + str + "")
@@ -48,9 +48,12 @@
#define span_drone(str) ("" + str + "")
#define span_engradio(str) ("" + str + "")
#define span_extremelybig(str) ("" + str + "")
+#define span_emote(str) ("" + str + "")
#define span_enteradio(str) ("" + str + "")
+#define span_game(str) ("" + str + "")
#define span_game_say(str) ("" + str + "")
#define span_ghostalert(str) ("" + str + "")
+#define span_good(str) ("" + str + "")
#define span_green(str) ("" + str + "")
#define span_greenannounce(str) ("" + str + "")
#define span_greenteamradio(str) ("" + str + "")
@@ -70,6 +73,7 @@
#define span_info(str) ("" + str + "")
#define span_infoplain(str) ("" + str + "")
#define span_interface(str) ("" + str + "")
+#define span_italics(str) ("" + str + "")
#define span_linkify(str) ("" + str + "")
#define span_looc(str) ("" + str + "")
#define span_major_announcement_text(str) ("" + str + "")
diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm
index feddc24c6f858..237e956ca7fae 100644
--- a/code/__DEFINES/surgery.dm
+++ b/code/__DEFINES/surgery.dm
@@ -28,6 +28,8 @@
#define ORGAN_VIRGIN (1<<10)
/// ALWAYS show this when scanned by advanced scanners, even if it is totally healthy
#define ORGAN_PROMINENT (1<<11)
+/// An organ that is ostensibly dangerous when inside a body
+#define ORGAN_HAZARDOUS (1<<12)
/// Helper to figure out if a limb is organic
#define IS_ORGANIC_LIMB(limb) (limb.bodytype & BODYTYPE_ORGANIC)
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index c911181c43166..4fdf598f65977 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -988,7 +988,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
///This fish is currently on cooldown and cannot splash ink unto people's faces
#define TRAIT_FISH_INK_ON_COOLDOWN "fish_ink_on_cooldown"
///This fish requires two hands to carry even if smaller than FISH_SIZE_TWO_HANDS_REQUIRED, as long as it's bulky-sized.
-#define TRAIT_FISH_SHOULD_TWOHANDED "should_twohanded"
+#define TRAIT_FISH_SHOULD_TWOHANDED "fish_should_twohanded"
+///This fish won't be killed when cooked.
+#define TRAIT_FISH_SURVIVE_COOKING "fish_survive_cooking"
/// Trait given to angelic constructs to let them purge cult runes
#define TRAIT_ANGELIC "angelic"
@@ -1278,6 +1280,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
///Trait given to a turf that should not be allowed to be terraformed, such as turfs holding ore vents.
#define TRAIT_NO_TERRAFORM "no_terraform"
+///Trait that prevents mobs from stopping by grabbing objects
+#define TRAIT_NOGRAV_ALWAYS_DRIFT "nograv_always_drift"
+
///Mobs with these trait do not get italicized/quiet speech when speaking in low pressure
#define TRAIT_SPEECH_BOOSTER "speech_booster"
diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm
index e3d1f9f065b18..beb2b98944bc0 100644
--- a/code/__DEFINES/traits/sources.dm
+++ b/code/__DEFINES/traits/sources.dm
@@ -299,6 +299,9 @@
/// Trait when a drink was renamed by a shaker
#define SHAKER_LABEL_TRAIT "shaker_trait"
+/// Trait given by a jetpack
+#define JETPACK_TRAIT "jetpack_trait"
+
/// Trait added by style component
#define STYLE_TRAIT "style"
diff --git a/code/__DEFINES/~doppler_defines/span.dm b/code/__DEFINES/~doppler_defines/span.dm
index 0cf649540d128..50b00a06af8b8 100644
--- a/code/__DEFINES/~doppler_defines/span.dm
+++ b/code/__DEFINES/~doppler_defines/span.dm
@@ -1,8 +1,6 @@
-#define span_italics(str) ("" + str + "")
#define span_pink(str) ("" + str + "")
#define span_brown(str) ("" + str + "")
#define span_cyan(str) ("" + str + "")
#define span_orange(str) ("" + str + "")
#define span_yellow(str) ("" + str + "")
#define span_rlooc(str) ("" + str + "")
-#define span_emote(str) ("" + str + "")
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 699ae8aa72cdd..3eb89831957b8 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -235,7 +235,7 @@
if(!SSticker.IsRoundInProgress() || QDELETED(character))
return
var/area/player_area = get_area(character)
- deadchat_broadcast(" has arrived at the station at [player_area.name].", "[character.real_name] ([rank])", follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE)
+ deadchat_broadcast(span_game(" has arrived at the station at [span_name(player_area.name)]."), span_game("[span_name(character.real_name)] ([rank])"), follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE)
if(!character.mind)
return
if(!GLOB.announcement_systems.len)
diff --git a/code/__HELPERS/honkerblast.dm b/code/__HELPERS/honkerblast.dm
index c0712f420f2d7..f49a5ca4aca29 100644
--- a/code/__HELPERS/honkerblast.dm
+++ b/code/__HELPERS/honkerblast.dm
@@ -5,7 +5,7 @@
var/list/properly_honked = list()
var/list/severely_honked = list()
- playsound(origin_turf, 'sound/items/airhorn.ogg', 100, TRUE)
+ playsound(origin_turf, 'sound/items/airhorn/airhorn.ogg', 100, TRUE)
for(var/mob/living/carbon/victim as anything in hearers(max(light_range, medium_range, heavy_range), origin_turf))
if(!victim.can_hear())
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 4c0cf3038f58f..7c12561c9977b 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -402,7 +402,7 @@ world
/// appearance system (overlays/underlays, etc.) is not available.
///
/// Only the first argument is required.
-/proc/getFlatIcon(image/appearance, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE)
+/proc/getFlatIcon(image/appearance, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE, parentcolor)
// Loop through the underlays, then overlays, sorting them into the layers list
#define PROCESS_OVERLAYS_OR_UNDERLAYS(flat, process, base_layer) \
for (var/i in 1 to process.len) { \
@@ -513,6 +513,20 @@ world
var/addY1 = 0
var/addY2 = 0
+ if(appearance.color)
+ if(islist(appearance.color))
+ flat.MapColors(arglist(appearance.color))
+ else
+ flat.Blend(appearance.color, ICON_MULTIPLY)
+
+ if(parentcolor && !(appearance.appearance_flags & RESET_COLOR))
+ if(islist(parentcolor))
+ flat.MapColors(arglist(parentcolor))
+ else
+ flat.Blend(parentcolor, ICON_MULTIPLY)
+
+ var/next_parentcolor = appearance.color || parentcolor
+
for(var/image/layer_image as anything in layers)
if(layer_image.alpha == 0)
continue
@@ -520,8 +534,14 @@ world
if(layer_image == copy) // 'layer_image' is an /image based on the object being flattened.
curblend = BLEND_OVERLAY
add = icon(layer_image.icon, layer_image.icon_state, base_icon_dir)
+ if(appearance.color)
+ if(islist(appearance.color))
+ add.MapColors(arglist(appearance.color))
+ else
+ add.Blend(appearance.color, ICON_MULTIPLY)
else // 'I' is an appearance object.
- add = getFlatIcon(image(layer_image), curdir, curicon, curstate, curblend, FALSE, no_anim)
+ add = getFlatIcon(image(layer_image), curdir, curicon, curstate, curblend, FALSE, no_anim, next_parentcolor)
+
if(!add)
continue
@@ -553,11 +573,6 @@ world
// Blend the overlay into the flattened icon
flat.Blend(add, blendMode2iconMode(curblend), layer_image.pixel_x + 2 - flatX1, layer_image.pixel_y + 2 - flatY1)
- if(appearance.color)
- if(islist(appearance.color))
- flat.MapColors(arglist(appearance.color))
- else
- flat.Blend(appearance.color, ICON_MULTIPLY)
if(appearance.alpha < 255)
flat.Blend(rgb(255, 255, 255, appearance.alpha), ICON_MULTIPLY)
diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm
index 5a55fd46fd296..395aa12f1397f 100644
--- a/code/__HELPERS/maths.dm
+++ b/code/__HELPERS/maths.dm
@@ -241,3 +241,7 @@
/// Useful for providing an additive modifier to a value that is used as a divisor, such as `/obj/projectile/var/speed`
/proc/reciprocal_add(x, y)
return 1/((1/x)+y)
+
+/// 180s an angle
+/proc/reverse_angle(angle)
+ return (angle + 180) % 360
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 7c8e84e226d23..867f6f9e7649d 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -208,7 +208,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
var/atom/target_loc = target?.loc
var/drifting = FALSE
- if(GLOB.move_manager.processing_on(user, SSspacedrift))
+ if(GLOB.move_manager.processing_on(user, SSnewtonian_movement))
drifting = TRUE
var/holding = user.get_active_held_item()
@@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
if(!QDELETED(progbar))
progbar.update(world.time - starttime)
- if(drifting && !GLOB.move_manager.processing_on(user, SSspacedrift))
+ if(drifting && !GLOB.move_manager.processing_on(user, SSnewtonian_movement))
drifting = FALSE
user_loc = user.loc
diff --git a/code/__HELPERS/movement.dm b/code/__HELPERS/movement.dm
new file mode 100644
index 0000000000000..e820b3dfff125
--- /dev/null
+++ b/code/__HELPERS/movement.dm
@@ -0,0 +1,2 @@
+/// Converts w_class into newtons from throwing it, in (0.6 ~ 2.2) range
+#define WEIGHT_TO_NEWTONS(w_class, arguments...) 0.2 NEWTONS + w_class * 0.4 NEWTONS
diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm
index 895ff2388fd26..db381d2d589a4 100644
--- a/code/__HELPERS/priority_announce.dm
+++ b/code/__HELPERS/priority_announce.dm
@@ -142,7 +142,7 @@
else
finalized_announcement = CHAT_ALERT_DEFAULT_SPAN(jointext(minor_announcement_strings, ""))
- var/custom_sound = sound_override || (alert ? 'sound/misc/notice1.ogg' : 'sound/misc/notice2.ogg')
+ var/custom_sound = sound_override || (alert ? 'sound/announcer/notice/notice1.ogg' : 'sound/announcer/notice/notice2.ogg')
dispatch_announcement_to_players(finalized_announcement, players, custom_sound, should_play_sound)
/// Sends an announcement about the level changing to players. Uses the passed in datum and the subsystem's previous security level to generate the message.
@@ -186,7 +186,7 @@
/// Proc that just dispatches the announcement to our applicable audience. Only the announcement is a mandatory arg.
/proc/dispatch_announcement_to_players(announcement, list/players = GLOB.player_list, sound_override = null, should_play_sound = TRUE)
- var/sound_to_play = !isnull(sound_override) ? sound_override : 'sound/misc/notice2.ogg'
+ var/sound_to_play = !isnull(sound_override) ? sound_override : 'sound/announcer/notice/notice2.ogg'
for(var/mob/target in players)
if(isnewplayer(target) || !target.can_hear())
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 71e80014bb54a..72af6cf3ac181 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -571,7 +571,7 @@ GLOBAL_LIST_INIT(achievements_unlocked, list())
/datum/controller/subsystem/ticker/proc/medal_report()
if(GLOB.commendations.len)
var/list/parts = list()
- parts += "Medal Commendations:"
+ parts += span_header("Medal Commendations:")
for (var/com in GLOB.commendations)
parts += com
return "
[parts.Join(" ")]
"
@@ -660,7 +660,7 @@ GLOBAL_LIST_INIT(achievements_unlocked, list())
var/datum/action/report/R = new
C.player_details.player_actions += R
R.Grant(C.mob)
- to_chat(C,"Show roundend report again")
+ to_chat(C,span_infoplain("Show roundend report again"))
/datum/action/report
name = "Show roundend report"
diff --git a/code/_globalvars/lists/achievements.dm b/code/_globalvars/lists/achievements.dm
index 283931f99847c..c788f070ad3b7 100644
--- a/code/_globalvars/lists/achievements.dm
+++ b/code/_globalvars/lists/achievements.dm
@@ -3,7 +3,7 @@ GLOBAL_LIST_EMPTY(commendations)
GLOBAL_LIST_INIT(achievement_categories, list("Bosses", "Jobs", "Skills", "Misc", "Mafia", "Scores"))
///A list of sounds that can be played when unlocking an achievement, set in the preferences.
GLOBAL_LIST_INIT(achievement_sounds, list(
- CHEEVO_SOUND_PING = sound('sound/effects/glockenspiel_ping.ogg', volume = 70),
- CHEEVO_SOUND_JINGLE = sound('sound/effects/beeps_jingle.ogg', volume = 70),
- CHEEVO_SOUND_TADA = sound('sound/effects/tada_fanfare.ogg', volume = 30),
+ CHEEVO_SOUND_PING = sound('sound/effects/achievement/glockenspiel_ping.ogg', volume = 70),
+ CHEEVO_SOUND_JINGLE = sound('sound/effects/achievement/beeps_jingle.ogg', volume = 70),
+ CHEEVO_SOUND_TADA = sound('sound/effects/achievement/tada_fanfare.ogg', volume = 30),
))
diff --git a/code/_globalvars/lists/ambience.dm b/code/_globalvars/lists/ambience.dm
index 12a389cf081f8..24d765b71c183 100644
--- a/code/_globalvars/lists/ambience.dm
+++ b/code/_globalvars/lists/ambience.dm
@@ -1,167 +1,167 @@
GLOBAL_LIST_INIT(generic_ambience,list(
- 'sound/ambience/ambigen1.ogg',
- 'sound/ambience/ambigen2.ogg',
- 'sound/ambience/ambigen3.ogg',
- 'sound/ambience/ambigen4.ogg',
- 'sound/ambience/ambigen5.ogg',
- 'sound/ambience/ambigen6.ogg',
- 'sound/ambience/ambigen7.ogg',
- 'sound/ambience/ambigen8.ogg',
- 'sound/ambience/ambigen9.ogg',
- 'sound/ambience/ambigen10.ogg',
- 'sound/ambience/ambigen11.ogg',
- 'sound/ambience/ambigen13.ogg',
- 'sound/ambience/ambigen14.ogg',
+ 'sound/ambience/general/ambigen1.ogg',
+ 'sound/ambience/general/ambigen2.ogg',
+ 'sound/ambience/general/ambigen3.ogg',
+ 'sound/ambience/general/ambigen4.ogg',
+ 'sound/ambience/general/ambigen5.ogg',
+ 'sound/ambience/general/ambigen6.ogg',
+ 'sound/ambience/general/ambigen7.ogg',
+ 'sound/ambience/general/ambigen8.ogg',
+ 'sound/ambience/general/ambigen9.ogg',
+ 'sound/ambience/general/ambigen10.ogg',
+ 'sound/ambience/general/ambigen11.ogg',
+ 'sound/ambience/general/ambigen13.ogg',
+ 'sound/ambience/general/ambigen14.ogg',
))
GLOBAL_LIST_INIT(holy_ambience,list(
- 'sound/ambience/ambicha1.ogg',
- 'sound/ambience/ambicha2.ogg',
- 'sound/ambience/ambicha3.ogg',
- 'sound/ambience/ambicha4.ogg',
- 'sound/ambience/ambiholy.ogg',
- 'sound/ambience/ambiholy2.ogg',
- 'sound/ambience/ambiholy3.ogg',
+ 'sound/ambience/holy/ambicha1.ogg',
+ 'sound/ambience/holy/ambicha2.ogg',
+ 'sound/ambience/holy/ambicha3.ogg',
+ 'sound/ambience/holy/ambicha4.ogg',
+ 'sound/ambience/holy/ambiholy.ogg',
+ 'sound/ambience/holy/ambiholy2.ogg',
+ 'sound/ambience/holy/ambiholy3.ogg',
))
GLOBAL_LIST_INIT(danger_ambience,list(
- 'sound/ambience/ambidanger.ogg',
- 'sound/ambience/ambidanger2.ogg',
+ 'sound/ambience/misc/ambidanger.ogg',
+ 'sound/ambience/misc/ambidanger2.ogg',
))
GLOBAL_LIST_INIT(ruins_ambience,list(
- 'sound/ambience/ambicave.ogg',
- 'sound/ambience/ambidanger.ogg',
- 'sound/ambience/ambidanger2.ogg',
- 'sound/ambience/ambimaint1.ogg',
- 'sound/ambience/ambimine.ogg',
- 'sound/ambience/ambimystery.ogg',
- 'sound/ambience/ambiruin.ogg',
- 'sound/ambience/ambiruin2.ogg',
- 'sound/ambience/ambiruin3.ogg',
- 'sound/ambience/ambiruin4.ogg',
- 'sound/ambience/ambiruin5.ogg',
- 'sound/ambience/ambiruin6.ogg',
- 'sound/ambience/ambiruin7.ogg',
- 'sound/ambience/ambitech3.ogg',
+ 'sound/ambience/lavaland/ambicave.ogg',
+ 'sound/ambience/misc/ambidanger.ogg',
+ 'sound/ambience/misc/ambidanger2.ogg',
+ 'sound/ambience/maintenance/ambimaint1.ogg',
+ 'sound/ambience/ruin/ambimine.ogg',
+ 'sound/ambience/misc/ambimystery.ogg',
+ 'sound/ambience/ruin/ambiruin.ogg',
+ 'sound/ambience/ruin/ambiruin2.ogg',
+ 'sound/ambience/ruin/ambiruin3.ogg',
+ 'sound/ambience/ruin/ambiruin4.ogg',
+ 'sound/ambience/ruin/ambiruin5.ogg',
+ 'sound/ambience/ruin/ambiruin6.ogg',
+ 'sound/ambience/ruin/ambiruin7.ogg',
+ 'sound/ambience/engineering/ambitech3.ogg',
))
GLOBAL_LIST_INIT(engi_ambience,list(
- 'sound/ambience/ambiatmos.ogg',
- 'sound/ambience/ambiatmos2.ogg',
- 'sound/ambience/ambisin1.ogg',
- 'sound/ambience/ambisin2.ogg',
- 'sound/ambience/ambisin3.ogg',
- 'sound/ambience/ambisin4.ogg',
- 'sound/ambience/ambitech.ogg',
- 'sound/ambience/ambitech2.ogg',
- 'sound/ambience/ambitech3.ogg',
+ 'sound/ambience/engineering/ambiatmos.ogg',
+ 'sound/ambience/engineering/ambiatmos2.ogg',
+ 'sound/ambience/engineering/ambisin1.ogg',
+ 'sound/ambience/engineering/ambisin2.ogg',
+ 'sound/ambience/engineering/ambisin3.ogg',
+ 'sound/ambience/engineering/ambisin4.ogg',
+ 'sound/ambience/engineering/ambitech.ogg',
+ 'sound/ambience/engineering/ambitech2.ogg',
+ 'sound/ambience/engineering/ambitech3.ogg',
))
GLOBAL_LIST_INIT(mining_ambience, list(
- 'sound/ambience/ambicave.ogg',
- 'sound/ambience/ambidanger.ogg',
- 'sound/ambience/ambidanger2.ogg',
- 'sound/ambience/ambilava1.ogg',
- 'sound/ambience/ambilava2.ogg',
- 'sound/ambience/ambilava3.ogg',
- 'sound/ambience/ambimaint1.ogg',
- 'sound/ambience/ambimine.ogg',
- 'sound/ambience/ambiruin.ogg',
- 'sound/ambience/ambiruin2.ogg',
- 'sound/ambience/ambiruin3.ogg',
- 'sound/ambience/ambiruin4.ogg',
- 'sound/ambience/ambiruin5.ogg',
- 'sound/ambience/ambiruin6.ogg',
- 'sound/ambience/ambiruin7.ogg',
+ 'sound/ambience/lavaland/ambicave.ogg',
+ 'sound/ambience/misc/ambidanger.ogg',
+ 'sound/ambience/misc/ambidanger2.ogg',
+ 'sound/ambience/lavaland/ambilava1.ogg',
+ 'sound/ambience/lavaland/ambilava2.ogg',
+ 'sound/ambience/lavaland/ambilava3.ogg',
+ 'sound/ambience/maintenance/ambimaint1.ogg',
+ 'sound/ambience/ruin/ambimine.ogg',
+ 'sound/ambience/ruin/ambiruin.ogg',
+ 'sound/ambience/ruin/ambiruin2.ogg',
+ 'sound/ambience/ruin/ambiruin3.ogg',
+ 'sound/ambience/ruin/ambiruin4.ogg',
+ 'sound/ambience/ruin/ambiruin5.ogg',
+ 'sound/ambience/ruin/ambiruin6.ogg',
+ 'sound/ambience/ruin/ambiruin7.ogg',
))
GLOBAL_LIST_INIT(icemoon_ambience,list(
- 'sound/ambience/ambiicetheme.ogg',
- 'sound/ambience/ambiicemelody1.ogg',
- 'sound/ambience/ambiicemelody2.ogg',
- 'sound/ambience/ambiicemelody3.ogg',
- 'sound/ambience/ambiicemelody4.ogg',
- 'sound/ambience/ambiicesting1.ogg',
- 'sound/ambience/ambiicesting2.ogg',
- 'sound/ambience/ambiicesting3.ogg',
- 'sound/ambience/ambiicesting4.ogg',
- 'sound/ambience/ambiicesting5.ogg',
+ 'sound/ambience/icemoon/ambiicetheme.ogg',
+ 'sound/ambience/icemoon/ambiicemelody1.ogg',
+ 'sound/ambience/icemoon/ambiicemelody2.ogg',
+ 'sound/ambience/icemoon/ambiicemelody3.ogg',
+ 'sound/ambience/icemoon/ambiicemelody4.ogg',
+ 'sound/ambience/icemoon/ambiicesting1.ogg',
+ 'sound/ambience/icemoon/ambiicesting2.ogg',
+ 'sound/ambience/icemoon/ambiicesting3.ogg',
+ 'sound/ambience/icemoon/ambiicesting4.ogg',
+ 'sound/ambience/icemoon/ambiicesting5.ogg',
))
GLOBAL_LIST_INIT(medical_ambience,list(
- 'sound/ambience/ambinice.ogg',
+ 'sound/ambience/medical/ambinice.ogg',
))
GLOBAL_LIST_INIT(virology_ambience,list(
- 'sound/ambience/ambiviro.ogg',
- 'sound/ambience/ambiviro1.ogg',
- 'sound/ambience/ambiviro2.ogg',
+ 'sound/ambience/medical/ambiviro.ogg',
+ 'sound/ambience/medical/ambiviro1.ogg',
+ 'sound/ambience/medical/ambiviro2.ogg',
))
GLOBAL_LIST_INIT(spooky_ambience,list(
- 'sound/ambience/ambimo1.ogg',
- 'sound/ambience/ambimo2.ogg',
- 'sound/ambience/ambimystery.ogg',
- 'sound/ambience/ambiodd.ogg',
- 'sound/ambience/ambiruin6.ogg',
- 'sound/ambience/ambiruin7.ogg',
+ 'sound/ambience/medical/ambimo1.ogg',
+ 'sound/ambience/medical/ambimo2.ogg',
+ 'sound/ambience/misc/ambimystery.ogg',
+ 'sound/ambience/misc/ambiodd.ogg',
+ 'sound/ambience/ruin/ambiruin6.ogg',
+ 'sound/ambience/ruin/ambiruin7.ogg',
))
GLOBAL_LIST_INIT(space_ambience,list(
- 'sound/ambience/ambiatmos.ogg',
- 'sound/ambience/ambispace.ogg',
- 'sound/ambience/ambispace2.ogg',
- 'sound/ambience/ambispace3.ogg',
- 'sound/ambience/ambispace4.ogg',
- 'sound/ambience/ambispace5.ogg',
- 'sound/ambience/ambispace6.ogg',
- 'sound/ambience/title2.ogg',
+ 'sound/ambience/engineering/ambiatmos.ogg',
+ 'sound/ambience/space/ambispace.ogg',
+ 'sound/ambience/space/ambispace2.ogg',
+ 'sound/ambience/space/ambispace3.ogg',
+ 'sound/ambience/space/ambispace4.ogg',
+ 'sound/ambience/space/ambispace5.ogg',
+ 'sound/ambience/space/ambispace6.ogg',
+ 'sound/music/lobby_music/title2.ogg',
))
GLOBAL_LIST_INIT(maint_ambience,list(
- 'sound/ambience/ambimaint1.ogg',
- 'sound/ambience/ambimaint2.ogg',
- 'sound/ambience/ambimaint3.ogg',
- 'sound/ambience/ambimaint4.ogg',
- 'sound/ambience/ambimaint5.ogg',
- 'sound/ambience/ambimaint6.ogg',
- 'sound/ambience/ambimaint7.ogg',
- 'sound/ambience/ambimaint8.ogg',
- 'sound/ambience/ambimaint9.ogg',
- 'sound/ambience/ambimaint10.ogg',
- 'sound/ambience/ambimaint11.ogg',
- 'sound/ambience/ambimaint12.ogg',
- 'sound/ambience/ambitech2.ogg',
- 'sound/voice/lowHiss1.ogg',
- 'sound/voice/lowHiss2.ogg',
- 'sound/voice/lowHiss3.ogg',
- 'sound/voice/lowHiss4.ogg',
- 'sound/ambience/maintambience.ogg',
+ 'sound/ambience/maintenance/ambimaint1.ogg',
+ 'sound/ambience/maintenance/ambimaint2.ogg',
+ 'sound/ambience/maintenance/ambimaint3.ogg',
+ 'sound/ambience/maintenance/ambimaint4.ogg',
+ 'sound/ambience/maintenance/ambimaint5.ogg',
+ 'sound/ambience/maintenance/ambimaint6.ogg',
+ 'sound/ambience/maintenance/ambimaint7.ogg',
+ 'sound/ambience/maintenance/ambimaint8.ogg',
+ 'sound/ambience/maintenance/ambimaint9.ogg',
+ 'sound/ambience/maintenance/ambimaint10.ogg',
+ 'sound/ambience/maintenance/ambimaint11.ogg',
+ 'sound/ambience/maintenance/ambimaint12.ogg',
+ 'sound/ambience/engineering/ambitech2.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss1.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss2.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss3.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss4.ogg',
+ 'sound/ambience/maintenance/maintambience.ogg',
))
GLOBAL_LIST_INIT(away_ambience,list(
- 'sound/ambience/ambiatmos.ogg',
- 'sound/ambience/ambiatmos2.ogg',
- 'sound/ambience/ambidanger.ogg',
- 'sound/ambience/ambidanger2.ogg',
- 'sound/ambience/ambimaint.ogg',
- 'sound/ambience/ambiodd.ogg',
- 'sound/ambience/ambiruin.ogg',
- 'sound/ambience/ambiruin2.ogg',
- 'sound/ambience/ambiruin3.ogg',
- 'sound/ambience/ambiruin4.ogg',
- 'sound/ambience/ambiruin5.ogg',
- 'sound/ambience/ambiruin6.ogg',
- 'sound/ambience/ambiruin7.ogg',
- 'sound/ambience/ambitech.ogg',
- 'sound/ambience/ambitech2.ogg',
+ 'sound/ambience/engineering/ambiatmos.ogg',
+ 'sound/ambience/engineering/ambiatmos2.ogg',
+ 'sound/ambience/misc/ambidanger.ogg',
+ 'sound/ambience/misc/ambidanger2.ogg',
+ 'sound/ambience/maintenance/ambimaint.ogg',
+ 'sound/ambience/misc/ambiodd.ogg',
+ 'sound/ambience/ruin/ambiruin.ogg',
+ 'sound/ambience/ruin/ambiruin2.ogg',
+ 'sound/ambience/ruin/ambiruin3.ogg',
+ 'sound/ambience/ruin/ambiruin4.ogg',
+ 'sound/ambience/ruin/ambiruin5.ogg',
+ 'sound/ambience/ruin/ambiruin6.ogg',
+ 'sound/ambience/ruin/ambiruin7.ogg',
+ 'sound/ambience/engineering/ambitech.ogg',
+ 'sound/ambience/engineering/ambitech2.ogg',
))
GLOBAL_LIST_INIT(reebe_ambience,list(
- 'sound/ambience/ambireebe1.ogg',
- 'sound/ambience/ambireebe2.ogg',
- 'sound/ambience/ambireebe3.ogg',
+ 'sound/ambience/misc/ambireebe1.ogg',
+ 'sound/ambience/misc/ambireebe2.ogg',
+ 'sound/ambience/misc/ambireebe3.ogg',
))
GLOBAL_LIST_INIT(creepy_ambience,list(
@@ -169,25 +169,25 @@ GLOBAL_LIST_INIT(creepy_ambience,list(
'sound/effects/ghost2.ogg',
'sound/effects/heart_beat.ogg',
'sound/effects/screech.ogg',
- 'sound/hallucinations/behind_you1.ogg',
- 'sound/hallucinations/behind_you2.ogg',
- 'sound/hallucinations/far_noise.ogg',
- 'sound/hallucinations/growl1.ogg',
- 'sound/hallucinations/growl2.ogg',
- 'sound/hallucinations/growl3.ogg',
- 'sound/hallucinations/i_see_you1.ogg',
- 'sound/hallucinations/i_see_you2.ogg',
- 'sound/hallucinations/im_here1.ogg',
- 'sound/hallucinations/im_here2.ogg',
- 'sound/hallucinations/look_up1.ogg',
- 'sound/hallucinations/look_up2.ogg',
- 'sound/hallucinations/over_here1.ogg',
- 'sound/hallucinations/over_here2.ogg',
- 'sound/hallucinations/over_here3.ogg',
- 'sound/hallucinations/turn_around1.ogg',
- 'sound/hallucinations/turn_around2.ogg',
- 'sound/hallucinations/veryfar_noise.ogg',
- 'sound/hallucinations/wail.ogg',
+ 'sound/effects/hallucinations/behind_you1.ogg',
+ 'sound/effects/hallucinations/behind_you2.ogg',
+ 'sound/effects/hallucinations/far_noise.ogg',
+ 'sound/effects/hallucinations/growl1.ogg',
+ 'sound/effects/hallucinations/growl2.ogg',
+ 'sound/effects/hallucinations/growl3.ogg',
+ 'sound/effects/hallucinations/i_see_you1.ogg',
+ 'sound/effects/hallucinations/i_see_you2.ogg',
+ 'sound/effects/hallucinations/im_here1.ogg',
+ 'sound/effects/hallucinations/im_here2.ogg',
+ 'sound/effects/hallucinations/look_up1.ogg',
+ 'sound/effects/hallucinations/look_up2.ogg',
+ 'sound/effects/hallucinations/over_here1.ogg',
+ 'sound/effects/hallucinations/over_here2.ogg',
+ 'sound/effects/hallucinations/over_here3.ogg',
+ 'sound/effects/hallucinations/turn_around1.ogg',
+ 'sound/effects/hallucinations/turn_around2.ogg',
+ 'sound/effects/hallucinations/veryfar_noise.ogg',
+ 'sound/effects/hallucinations/wail.ogg',
))
GLOBAL_LIST_INIT(ambience_assoc,list(
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 82cc3f1cf10b3..123deaa2518e5 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -134,22 +134,22 @@ GLOBAL_LIST_EMPTY(female_clothing_icons)
GLOBAL_LIST_INIT(scarySounds, list(
'sound/effects/footstep/clownstep1.ogg',
'sound/effects/footstep/clownstep2.ogg',
- 'sound/effects/glassbr1.ogg',
- 'sound/effects/glassbr2.ogg',
- 'sound/effects/glassbr3.ogg',
- 'sound/items/welder.ogg',
- 'sound/items/welder2.ogg',
- 'sound/machines/airlock.ogg',
- 'sound/voice/hiss1.ogg',
- 'sound/voice/hiss2.ogg',
- 'sound/voice/hiss3.ogg',
- 'sound/voice/hiss4.ogg',
- 'sound/voice/hiss5.ogg',
- 'sound/voice/hiss6.ogg',
- 'sound/weapons/armbomb.ogg',
- 'sound/weapons/taser.ogg',
- 'sound/weapons/thudswoosh.ogg',
- 'sound/weapons/shove.ogg',
+ 'sound/effects/glass/glassbr1.ogg',
+ 'sound/effects/glass/glassbr2.ogg',
+ 'sound/effects/glass/glassbr3.ogg',
+ 'sound/items/tools/welder.ogg',
+ 'sound/items/tools/welder2.ogg',
+ 'sound/machines/airlock/airlock.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss1.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss2.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss3.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss4.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss5.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss6.ogg',
+ 'sound/items/weapons/armbomb.ogg',
+ 'sound/items/weapons/taser.ogg',
+ 'sound/items/weapons/thudswoosh.ogg',
+ 'sound/items/weapons/shove.ogg',
))
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 6660604acd69f..798c2eae7ae45 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -544,6 +544,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE,
"TRAIT_XRAY_HEARING" = TRAIT_XRAY_HEARING,
"TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION,
+ "TRAIT_NOGRAV_ALWAYS_DRIFT" = TRAIT_NOGRAV_ALWAYS_DRIFT,
"TRAIT_SPEECH_BOOSTER" = TRAIT_SPEECH_BOOSTER,
"TRAIT_MINING_PARRYING" = TRAIT_MINING_PARRYING,
"TRAIT_ILLUSORY_EFFECT" = TRAIT_ILLUSORY_EFFECT,
@@ -623,6 +624,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_FISH_SHOULD_TWOHANDED" = TRAIT_FISH_SHOULD_TWOHANDED,
"TRAIT_FISH_STASIS" = TRAIT_FISH_STASIS,
"TRAIT_FISH_STINGER" = TRAIT_FISH_STINGER,
+ "TRAIT_FISH_SURVIVE_COOKING" = TRAIT_FISH_SURVIVE_COOKING,
"TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE,
"TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY,
"TRAIT_FISH_WELL_COOKED" = TRAIT_FISH_WELL_COOKED,
diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm
index b24fdac208d26..c1910e642fc84 100644
--- a/code/_globalvars/traits/admin_tooling.dm
+++ b/code/_globalvars/traits/admin_tooling.dm
@@ -350,6 +350,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_FISH_SHOULD_TWOHANDED" = TRAIT_FISH_SHOULD_TWOHANDED,
"TRAIT_FISH_STASIS" = TRAIT_FISH_STASIS,
"TRAIT_FISH_STINGER" = TRAIT_FISH_STINGER,
+ "TRAIT_FISH_SURVIVE_COOKING" = TRAIT_FISH_SURVIVE_COOKING,
"TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE,
"TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY,
"TRAIT_YUCKY_FISH" = TRAIT_YUCKY_FISH,
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index d477195a603ab..5e4ee1e849dbb 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -435,7 +435,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
if(!QDELETED(rube) && !QDELETED(offerer))
offerer.visible_message(span_danger("[offerer] pulls away from [rube]'s slap at the last second, dodging the high-five entirely!"), span_nicegreen("[rube] fails to make contact with your hand, making an utter fool of [rube.p_them()]self!"), span_hear("You hear a disappointing sound of flesh not hitting flesh!"), ignored_mobs=rube)
to_chat(rube, span_userdanger("[uppertext("NO! [offerer] PULLS [offerer.p_their()] HAND AWAY FROM YOURS! YOU'RE TOO SLOW!")]"))
- playsound(offerer, 'sound/weapons/thudswoosh.ogg', 100, TRUE, 1)
+ playsound(offerer, 'sound/items/weapons/thudswoosh.ogg', 100, TRUE, 1)
rube.Knockdown(1 SECONDS)
offerer.add_mood_event("high_five", /datum/mood_event/down_low)
rube.add_mood_event("high_five", /datum/mood_event/too_slow)
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 5af9b7e016156..e7c4ef3e06790 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -214,7 +214,7 @@
return FALSE
if(!force && !HAS_TRAIT(src, TRAIT_CUSTOM_TAP_SOUND))
- playsound(src, 'sound/weapons/tap.ogg', get_clamped_volume(), TRUE, -1)
+ playsound(src, 'sound/items/weapons/tap.ogg', get_clamped_volume(), TRUE, -1)
else if(hitsound)
playsound(src, hitsound, get_clamped_volume(), TRUE, extrarange = stealthy_audio ? SILENCED_SOUND_EXTRARANGE : -1, falloff_distance = 0)
diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm
index 964459aea68d4..c17d86902a8a6 100644
--- a/code/controllers/configuration/entries/general.dm
+++ b/code/controllers/configuration/entries/general.dm
@@ -319,7 +319,7 @@
default = "http://tgstation13.org/phpBB/index.php"
/datum/config_entry/string/rulesurl
- default = "http://www.tgstation13.org/wiki/Rules"
+ default = "http://tgstation13.org/wiki/Rules"
/datum/config_entry/string/githuburl
default = "https://www.github.com/tgstation/tgstation"
diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm
index 7258b0b16e948..87f088a41ea13 100644
--- a/code/controllers/subsystem/ambience.dm
+++ b/code/controllers/subsystem/ambience.dm
@@ -70,16 +70,16 @@ SUBSYSTEM_DEF(ambience)
///A list of rare sound effects to fuck with players. No, it does not contain actual minecraft sounds anymore.
var/static/list/minecraft_cave_noises = list(
- 'sound/machines/airlock.ogg',
+ 'sound/machines/airlock/airlock.ogg',
'sound/effects/snap.ogg',
'sound/effects/footstep/clownstep1.ogg',
'sound/effects/footstep/clownstep2.ogg',
- 'sound/items/welder.ogg',
- 'sound/items/welder2.ogg',
- 'sound/items/crowbar.ogg',
+ 'sound/items/tools/welder.ogg',
+ 'sound/items/tools/welder2.ogg',
+ 'sound/items/tools/crowbar.ogg',
'sound/items/deconstruct.ogg',
- 'sound/ambience/source_holehit3.ogg',
- 'sound/ambience/cavesound3.ogg',
+ 'sound/ambience/misc/source_holehit3.ogg',
+ 'sound/ambience//misc/cavesound3.ogg',
)
/area/station/maintenance/play_ambience(mob/M, sound/override_sound, volume)
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
index efe857b936ddf..4d182febb07e5 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
@@ -577,7 +577,7 @@
player_mind.add_antag_datum(/datum/antagonist/nightmare)
new_nightmare.set_species(/datum/species/shadow/nightmare)
- playsound(new_nightmare, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(new_nightmare, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(new_nightmare)] has been made into a Nightmare by the midround ruleset.")
log_dynamic("[key_name(new_nightmare)] was spawned as a Nightmare by the midround ruleset.")
return new_nightmare
@@ -618,7 +618,7 @@
player_mind.transfer_to(S)
player_mind.add_antag_datum(/datum/antagonist/space_dragon)
- playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(S, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by the midround ruleset.")
log_dynamic("[key_name(S)] was spawned as a Space Dragon by the midround ruleset.")
priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert")
@@ -930,7 +930,7 @@
new_datum.original_ref = WEAKREF(clone_victim.mind)
new_datum.setup_clone()
- playsound(clone, 'sound/weapons/zapbang.ogg', 30, TRUE)
+ playsound(clone, 'sound/items/weapons/zapbang.ogg', 30, TRUE)
new /obj/item/storage/toolbox/mechanical(clone.loc) //so they dont get stuck in maints
message_admins("[ADMIN_LOOKUPFLW(clone)] has been made into a Paradox Clone by the midround ruleset.")
@@ -995,7 +995,7 @@
player_mind.special_role = antag_flag
player_mind.add_antag_datum(antag_datum)
- playsound(voidwalker, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(voidwalker, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(voidwalker)] has been made into a Voidwalker by the midround ruleset.")
log_dynamic("[key_name(voidwalker)] was spawned as a Voidwalker by the midround ruleset.")
return voidwalker
diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm
index 7bb597ba30e12..2f678291eb6c7 100644
--- a/code/controllers/subsystem/explosions.dm
+++ b/code/controllers/subsystem/explosions.dm
@@ -521,7 +521,7 @@ ADMIN_VERB(check_bomb_impacts, R_DEBUG, "Check Bomb Impact", "See what the effec
* - [creaking_sound][/sound]: The sound that plays when the station creaks during the explosion.
* - [hull_creaking_sound][/sound]: The sound that plays when the station creaks after the explosion.
*/
-/datum/controller/subsystem/explosions/proc/shake_the_room(turf/epicenter, near_distance, far_distance, quake_factor, echo_factor, creaking, sound/near_sound = sound(get_sfx(SFX_EXPLOSION)), sound/far_sound = sound('sound/effects/explosionfar.ogg'), sound/echo_sound = sound('sound/effects/explosion_distant.ogg'), sound/creaking_sound = sound(get_sfx(SFX_EXPLOSION_CREAKING)), hull_creaking_sound = sound(get_sfx(SFX_HULL_CREAKING)))
+/datum/controller/subsystem/explosions/proc/shake_the_room(turf/epicenter, near_distance, far_distance, quake_factor, echo_factor, creaking, sound/near_sound = sound(get_sfx(SFX_EXPLOSION)), sound/far_sound = sound('sound/effects/explosion/explosionfar.ogg'), sound/echo_sound = sound('sound/effects/explosion/explosion_distant.ogg'), sound/creaking_sound = sound(get_sfx(SFX_EXPLOSION_CREAKING)), hull_creaking_sound = sound(get_sfx(SFX_HULL_CREAKING)))
var/frequency = get_rand_frequency()
var/blast_z = epicenter.z
if(isnull(creaking)) // Autoset creaking.
diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm
index faa2df1050ec2..93b823f18b595 100644
--- a/code/controllers/subsystem/id_access.dm
+++ b/code/controllers/subsystem/id_access.dm
@@ -410,7 +410,7 @@ SUBSYSTEM_DEF(id_access)
id_card.assignment = trim.assignment
var/datum/job/trim_job = trim.find_job()
- if (!isnull(trim_job) && !isnull(id_card.registered_account))
+ if (!isnull(id_card.registered_account))
var/datum/job/old_job = id_card.registered_account.account_job
id_card.registered_account.account_job = trim_job
id_card.registered_account.update_account_job_lists(trim_job, old_job)
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 0b04b25c59721..74b820894b256 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -680,7 +680,7 @@ SUBSYSTEM_DEF(job)
job_debug("RJCT: Player rejected, Player: [player]")
unassigned -= player
if(!run_divide_occupation_pure)
- to_chat(player, "You have failed to qualify for any job you desired.")
+ to_chat(player, span_infoplain("You have failed to qualify for any job you desired."))
player.ready = PLAYER_NOT_READY
diff --git a/code/controllers/subsystem/movement/movement.dm b/code/controllers/subsystem/movement/movement.dm
index 425c67a0c474f..d6043d596bb0e 100644
--- a/code/controllers/subsystem/movement/movement.dm
+++ b/code/controllers/subsystem/movement/movement.dm
@@ -66,7 +66,7 @@ SUBSYSTEM_DEF(movement)
return // Still work to be done
var/bucket_time = bucket_info[MOVEMENT_BUCKET_TIME]
smash_bucket(1, bucket_time) // We assume we're the first bucket in the queue right now
- visual_delay = MC_AVERAGE_FAST(visual_delay, max((world.time - canonical_time) / wait, 1))
+ visual_delay = MC_AVERAGE_FAST(visual_delay, max((world.time - canonical_time) / TICKS2DS(wait), 1))
/// Removes a bucket from our system. You only need to pass in the time, but if you pass in the index of the list you save us some work
/datum/controller/subsystem/movement/proc/smash_bucket(index, bucket_time)
diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm
index ec0136bc8c178..58b1c58b0bca1 100644
--- a/code/controllers/subsystem/movement/movement_types.dm
+++ b/code/controllers/subsystem/movement/movement_types.dm
@@ -869,3 +869,95 @@
var/atom/old_loc = moving.loc
holder.current_pipe = holder.current_pipe.transfer(holder)
return old_loc != moving?.loc ? MOVELOOP_SUCCESS : MOVELOOP_FAILURE
+
+
+/**
+ * Helper proc for the smooth_move datum
+ *
+ * Returns TRUE if the loop sucessfully started, or FALSE if it failed
+ *
+ * Arguments:
+ * moving - The atom we want to move
+ * angle - Angle at which we want to move
+ * delay - How many deci-seconds to wait between fires. Defaults to the lowest value, 0.1
+ * timeout - Time in deci-seconds until the moveloop self expires. Defaults to INFINITY
+ * subsystem - The movement subsystem to use. Defaults to SSmovement. Only one loop can exist for any one subsystem
+ * priority - Defines how different move loops override each other. Lower numbers beat higher numbers, equal defaults to what currently exists. Defaults to MOVEMENT_DEFAULT_PRIORITY
+ * flags - Set of bitflags that effect move loop behavior in some way. Check _DEFINES/movement.dm
+ *
+**/
+
+/datum/move_manager/proc/smooth_move(moving, angle, delay, timeout, subsystem, priority, flags, datum/extra_info)
+ return add_to_loop(moving, subsystem, /datum/move_loop/smooth_move, priority, flags, extra_info, delay, timeout, angle)
+
+/datum/move_loop/smooth_move
+ /// Angle at which we move. 0 is north because byond.
+ var/angle = 0
+ /// When this gets bigger than 1, we move a turf
+ var/x_ticker = 0
+ var/y_ticker = 0
+ /// The rate at which we move, between 0 and 1. Cached to cut down on trig
+ var/x_rate = 0
+ var/y_rate = 1
+ /// Sign for our movement
+ var/x_sign = 1
+ var/y_sign = 1
+ /// Actual move delay, as delay will be modified by move() depending on what direction we move in
+ var/saved_delay
+
+/datum/move_loop/smooth_move/setup(delay, timeout, angle)
+ . = ..()
+ if(!.)
+ return FALSE
+ set_angle(angle)
+ saved_delay = delay
+
+/datum/move_loop/smooth_move/set_delay(new_delay)
+ new_delay = round(new_delay, world.tick_lag)
+ . = ..()
+ saved_delay = delay
+
+/datum/move_loop/smooth_move/compare_loops(datum/move_loop/loop_type, priority, flags, extra_info, delay, timeout, atom/chasing, home = FALSE)
+ if(..() && angle == src.angle)
+ return TRUE
+ return FALSE
+
+/datum/move_loop/smooth_move/move()
+ var/atom/old_loc = moving.loc
+ // Defaulting to 2 because if one rate is 0 the other is guaranteed to be 1, so maxing out at 1 to_move
+ var/x_to_move = x_rate > 0 ? (1 - x_ticker) / x_rate : 2
+ var/y_to_move = y_rate > 0 ? (1 - y_ticker) / y_rate : 2
+ var/move_dist = min(x_to_move, y_to_move)
+ x_ticker += x_rate * move_dist
+ y_ticker += y_rate * move_dist
+
+ // Per Bresenham's, if we are closer to the next tile's center move diagonally. Checked by seeing if we pass into the next tile after moving another half a tile
+ var/move_x = (x_ticker + x_rate * 0.5) > 1
+ var/move_y = (y_ticker + y_rate * 0.5) > 1
+ if (move_x)
+ x_ticker = 0
+ if (move_y)
+ y_ticker = 0
+
+ var/turf/next_turf = locate(moving.x + (move_x ? x_sign : 0), moving.y + (move_y ? y_sign : 0), moving.z)
+ moving.Move(next_turf, get_dir(moving, next_turf), FALSE, !(flags & MOVEMENT_LOOP_NO_DIR_UPDATE))
+
+ if (old_loc == moving?.loc)
+ return MOVELOOP_FAILURE
+
+ delay = saved_delay
+ if (move_x && move_y)
+ delay *= 1.4
+
+ return MOVELOOP_SUCCESS
+
+/datum/move_loop/smooth_move/proc/set_angle(new_angle)
+ angle = new_angle
+ x_rate = sin(angle)
+ y_rate = cos(angle)
+ x_sign = SIGN(x_rate)
+ y_sign = SIGN(y_rate)
+ x_rate = abs(x_rate)
+ y_rate = abs(y_rate)
+ x_ticker = 0
+ y_ticker = 0
diff --git a/code/controllers/subsystem/movement/newtonian_movement.dm b/code/controllers/subsystem/movement/newtonian_movement.dm
new file mode 100644
index 0000000000000..aeb03a576dae0
--- /dev/null
+++ b/code/controllers/subsystem/movement/newtonian_movement.dm
@@ -0,0 +1,31 @@
+/// The subsystem is intended to tick things related to space/newtonian movement, such as constant sources of inertia
+MOVEMENT_SUBSYSTEM_DEF(newtonian_movement)
+ name = "Newtonian Movement"
+ flags = SS_NO_INIT|SS_TICKER
+ runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
+
+ var/stat_tag = "P" //Used for logging
+ var/list/processing = list()
+ var/list/currentrun = list()
+
+/datum/controller/subsystem/movement/newtonian_movement/stat_entry(msg)
+ msg = "[stat_tag]:[length(processing)]"
+ return ..()
+
+/datum/controller/subsystem/movement/newtonian_movement/fire(resumed = FALSE)
+ . = ..()
+ if (!resumed)
+ currentrun = processing.Copy()
+ //cache for sanic speed (lists are references anyways)
+ var/list/current_run = currentrun
+
+ while(current_run.len)
+ var/datum/thing = current_run[current_run.len]
+ current_run.len--
+ if(QDELETED(thing))
+ processing -= thing
+ else if(thing.process(TICKS2DS(wait) * 0.1) == PROCESS_KILL)
+ // fully stop so that a future START_PROCESSING will work
+ STOP_PROCESSING(src, thing)
+ if (MC_TICK_CHECK)
+ return
diff --git a/code/controllers/subsystem/movement/spacedrift.dm b/code/controllers/subsystem/movement/spacedrift.dm
deleted file mode 100644
index 4002b5eb555f2..0000000000000
--- a/code/controllers/subsystem/movement/spacedrift.dm
+++ /dev/null
@@ -1,5 +0,0 @@
-MOVEMENT_SUBSYSTEM_DEF(spacedrift)
- name = "Space Drift"
- priority = FIRE_PRIORITY_SPACEDRIFT
- flags = SS_NO_INIT|SS_TICKER
- runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
diff --git a/code/controllers/subsystem/nightshift.dm b/code/controllers/subsystem/nightshift.dm
index b8df42742e43c..170f12696147f 100644
--- a/code/controllers/subsystem/nightshift.dm
+++ b/code/controllers/subsystem/nightshift.dm
@@ -26,7 +26,7 @@ SUBSYSTEM_DEF(nightshift)
/datum/controller/subsystem/nightshift/proc/announce(message)
priority_announce(
text = message,
- sound = 'sound/misc/notice2.ogg',
+ sound = 'sound/announcer/notice/notice2.ogg',
sender_override = "Automated Lighting System Announcement",
color_override = "grey",
)
diff --git a/code/controllers/subsystem/polling.dm b/code/controllers/subsystem/polling.dm
index 6cdcfbfd45949..b237edd3870b6 100644
--- a/code/controllers/subsystem/polling.dm
+++ b/code/controllers/subsystem/polling.dm
@@ -36,7 +36,7 @@ SUBSYSTEM_DEF(polling)
* * chat_text_border_icon: Object or path to make an icon of to decorate the chat announcement.
* * announce_chosen: Whether we should announce the chosen candidates in chat. This is ignored unless amount_to_pick is greater than 0.
*
- * Returns a list of all mobs who signed up for the poll.
+ * Returns a list of all mobs who signed up for the poll, OR, in the case that amount_to_pick is equal to 1 the singular mob/null if no available candidates.
*/
/datum/controller/subsystem/polling/proc/poll_candidates(
question,
@@ -155,7 +155,7 @@ SUBSYSTEM_DEF(polling)
act_never = "[custom_link_style_start]\[Never For This Round\]"
if(!duplicate_message_check(alert_poll)) //Only notify people once. They'll notice if there are multiple and we don't want to spam people.
- SEND_SOUND(candidate_mob, 'sound/misc/notice2.ogg')
+ SEND_SOUND(candidate_mob, 'sound/announcer/notice/notice2.ogg')
var/surrounding_icon
if(chat_text_border_icon)
var/image/surrounding_image
@@ -175,9 +175,11 @@ SUBSYSTEM_DEF(polling)
UNTIL(new_poll.finished)
if(!(amount_to_pick > 0))
return new_poll.signed_up
- if(length(new_poll.signed_up) < amount_to_pick)
- return new_poll.signed_up
for(var/pick in 1 to amount_to_pick)
+ // There may be less people signed up than amount_to_pick
+ // pick_n_take returns the default return value of null if passed an empty list, so just break in that case rather than adding null to the list.
+ if(!length(new_poll.signed_up))
+ break
new_poll.chosen_candidates += pick_n_take(new_poll.signed_up)
if(announce_chosen)
new_poll.announce_chosen(group)
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index 11a055d292ce2..0ad0a78589221 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -140,6 +140,9 @@ SUBSYSTEM_DEF(shuttle)
/// Did the supermatter start a cascade event?
var/supermatter_cascade = FALSE
+ /// List of express consoles that are waiting for pack initialization
+ var/list/obj/machinery/computer/cargo/express/express_consoles = list()
+
/datum/controller/subsystem/shuttle/Initialize()
order_number = rand(1, 9000)
@@ -172,6 +175,9 @@ SUBSYSTEM_DEF(shuttle)
supply_packs[pack.id] = pack
+ for (var/obj/machinery/computer/cargo/express/console as anything in express_consoles)
+ console.packin_up(TRUE)
+
setup_shuttles(stationary_docking_ports)
has_purchase_shuttle_access = init_has_purchase_shuttle_access()
@@ -275,7 +281,7 @@ SUBSYSTEM_DEF(shuttle)
priority_announce(
text = "Emergency shuttle uplink interference detected, shuttle call disabled while the system reinitializes. Estimated restore in [DisplayTimeText(lockout_timer, round_seconds_to = 60)].",
title = "Uplink Interference",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "grey",
)
@@ -289,7 +295,7 @@ SUBSYSTEM_DEF(shuttle)
priority_announce(
text= "Emergency shuttle uplink services are now back online.",
title = "Uplink Restored",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "green",
)
@@ -523,7 +529,7 @@ SUBSYSTEM_DEF(shuttle)
priority_announce(
text = "Departure has been postponed indefinitely pending conflict resolution.",
title = "Hostile Environment Detected",
- sound = 'sound/misc/notice1.ogg',
+ sound = 'sound/announcer/notice/notice1.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "grey",
)
@@ -533,7 +539,7 @@ SUBSYSTEM_DEF(shuttle)
priority_announce(
text = "You have [DisplayTimeText(emergency_dock_time)] to board the emergency shuttle.",
title = "Hostile Environment Resolved",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "green",
)
diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm
index fc0375f4f0b6a..da403db9e4559 100644
--- a/code/controllers/subsystem/throwing.dm
+++ b/code/controllers/subsystem/throwing.dm
@@ -202,6 +202,11 @@ SUBSYSTEM_DEF(throwing)
if(!thrownthing)
return
thrownthing.throwing = null
+ var/drift_force = speed
+ if (isitem(thrownthing))
+ var/obj/item/thrownitem = thrownthing
+ drift_force *= WEIGHT_TO_NEWTONS(thrownitem.w_class)
+
if (!hit)
for (var/atom/movable/obstacle as anything in get_turf(thrownthing)) //looking for our target on the turf we land on.
if (obstacle == target)
@@ -214,9 +219,9 @@ SUBSYSTEM_DEF(throwing)
thrownthing.throw_impact(get_turf(thrownthing), src) // we haven't hit something yet and we still must, let's hit the ground.
if(QDELETED(thrownthing)) //throw_impact can delete things, such as glasses smashing
return //deletion should already be handled by on_thrownthing_qdel()
- thrownthing.newtonian_move(init_dir)
+ thrownthing.newtonian_move(delta_to_angle(dist_x, dist_y), drift_force = drift_force)
else
- thrownthing.newtonian_move(init_dir)
+ thrownthing.newtonian_move(delta_to_angle(dist_x, dist_y), drift_force = drift_force)
if(target)
thrownthing.throw_impact(target, src)
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index f5a9309457246..74825c3fb72cb 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -498,7 +498,7 @@ SUBSYSTEM_DEF(ticker)
list_clear_nulls(queued_players)
for (var/mob/dead/new_player/new_player in queued_players)
to_chat(new_player, span_userdanger("The alive players limit has been released! [html_encode(">>Join Game<<")]"))
- SEND_SOUND(new_player, sound('sound/misc/notice1.ogg'))
+ SEND_SOUND(new_player, sound('sound/announcer/notice/notice1.ogg'))
GLOB.latejoin_menu.ui_interact(new_player)
queued_players.len = 0
queue_delay = 0
@@ -513,7 +513,7 @@ SUBSYSTEM_DEF(ticker)
if(living_player_count() < hard_popcap)
if(next_in_line?.client)
to_chat(next_in_line, span_userdanger("A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<"))
- SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg'))
+ SEND_SOUND(next_in_line, sound('sound/announcer/notice/notice1.ogg'))
next_in_line.ui_interact(next_in_line)
return
queued_players -= next_in_line //Client disconnected, remove he
diff --git a/code/datums/actions/action.dm b/code/datums/actions/action.dm
index d8247d3e92a5e..2f297f480ae66 100644
--- a/code/datums/actions/action.dm
+++ b/code/datums/actions/action.dm
@@ -114,7 +114,8 @@
RegisterSignal(owner, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(update_status_on_signal))
if(check_flags & AB_CHECK_PHASED)
RegisterSignals(owner, list(SIGNAL_ADDTRAIT(TRAIT_MAGICALLY_PHASED), SIGNAL_REMOVETRAIT(TRAIT_MAGICALLY_PHASED)), PROC_REF(update_status_on_signal))
-
+ if(check_flags & AB_CHECK_OPEN_TURF)
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(update_status_on_signal))
if(owner_has_control)
RegisterSignal(grant_to, COMSIG_MOB_KEYDOWN, PROC_REF(keydown), override = TRUE)
GiveAction(grant_to)
@@ -141,6 +142,7 @@
UnregisterSignal(owner, list(
COMSIG_LIVING_SET_BODY_POSITION,
COMSIG_MOB_STATCHANGE,
+ COMSIG_MOVABLE_MOVED,
SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED),
SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED),
SIGNAL_ADDTRAIT(TRAIT_INCAPACITATED),
@@ -200,6 +202,10 @@
if (feedback)
owner.balloon_alert(owner, "incorporeal!")
return FALSE
+ if((check_flags & AB_CHECK_OPEN_TURF) && !isopenturf(owner.loc))
+ if (feedback)
+ owner.balloon_alert(owner, "not enough space!")
+ return FALSE
return TRUE
/// Builds / updates all buttons we have shared or given out
diff --git a/code/datums/actions/mobs/blood_warp.dm b/code/datums/actions/mobs/blood_warp.dm
index 1e48c6e5aa419..d65c941f5df4a 100644
--- a/code/datums/actions/mobs/blood_warp.dm
+++ b/code/datums/actions/mobs/blood_warp.dm
@@ -57,11 +57,11 @@
shuffle_inplace(pools)
found_bloodpool = pick(pools)
if(found_bloodpool)
- owner.visible_message("[owner] sinks into the blood...")
- playsound(owner_turf, 'sound/magic/enter_blood.ogg', 100, TRUE, -1)
+ owner.visible_message(span_danger("[owner] sinks into the blood..."))
+ playsound(owner_turf, 'sound/effects/magic/enter_blood.ogg', 100, TRUE, -1)
owner.forceMove(get_turf(found_bloodpool))
- playsound(get_turf(owner), 'sound/magic/exit_blood.ogg', 100, TRUE, -1)
- owner.visible_message("And springs back out!")
+ playsound(get_turf(owner), 'sound/effects/magic/exit_blood.ogg', 100, TRUE, -1)
+ owner.visible_message(span_danger("And springs back out!"))
SEND_SIGNAL(owner, COMSIG_BLOOD_WARP)
return TRUE
return FALSE
diff --git a/code/datums/actions/mobs/chase_target.dm b/code/datums/actions/mobs/chase_target.dm
index c88285dd636be..c64293a863b3e 100644
--- a/code/datums/actions/mobs/chase_target.dm
+++ b/code/datums/actions/mobs/chase_target.dm
@@ -31,7 +31,7 @@
/// This is the proc that actually does the throwing. Charge only adds a timer for this.
/datum/action/cooldown/mob_cooldown/chase_target/proc/throw_thyself()
- playsound(owner, 'sound/weapons/sonic_jackhammer.ogg', 50, TRUE)
+ playsound(owner, 'sound/items/weapons/sonic_jackhammer.ogg', 50, TRUE)
owner.throw_at(target, 7, 1.1, owner, FALSE, FALSE, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), owner, 'sound/effects/meteorimpact.ogg', 50 * size, TRUE, 2), INFINITY)
/// Resets the charge buffs.
diff --git a/code/datums/actions/mobs/create_legion_turrets.dm b/code/datums/actions/mobs/create_legion_turrets.dm
index 5fb668ebc36d1..71427893f43da 100644
--- a/code/datums/actions/mobs/create_legion_turrets.dm
+++ b/code/datums/actions/mobs/create_legion_turrets.dm
@@ -18,7 +18,7 @@
/// Creates new legion turrets around the owner between the minimum and maximum
/datum/action/cooldown/mob_cooldown/create_legion_turrets/proc/create(atom/target)
- playsound(owner, 'sound/magic/RATTLEMEBONES.ogg', 100, TRUE)
+ playsound(owner, 'sound/effects/magic/RATTLEMEBONES.ogg', 100, TRUE)
var/list/possible_locations = list()
for(var/turf/checked_turf in oview(owner, 4)) //Only place the turrets on open turfs
if(checked_turf.is_blocked_turf())
@@ -80,7 +80,7 @@
var/angle = get_angle(our_turf, target_turf)
var/datum/point/vector/V = new(our_turf.x, our_turf.y, our_turf.z, 0, 0, angle)
generate_tracer_between_points(V, V.return_vector_after_increments(6), /obj/effect/projectile/tracer/legion/tracer, 0, shot_delay, 0, 0, 0, null)
- playsound(src, 'sound/machines/airlockopen.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockopen.ogg', 100, TRUE)
addtimer(CALLBACK(src, PROC_REF(fire_beam), angle), shot_delay)
/// Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
@@ -88,13 +88,13 @@
var/obj/projectile/ouchie = new projectile_type(loc)
ouchie.firer = src
ouchie.fire(angle)
- playsound(src, 'sound/effects/bin_close.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/bin/bin_close.ogg', 100, TRUE)
QDEL_IN(src, 0.5 SECONDS)
/// Used for the legion turret.
/obj/projectile/beam/legion
name = "blood pulse"
- hitsound = 'sound/magic/magic_missile.ogg'
+ hitsound = 'sound/effects/magic/magic_missile.ogg'
damage = 19
range = 6
light_color = COLOR_SOFT_RED
diff --git a/code/datums/actions/mobs/dash.dm b/code/datums/actions/mobs/dash.dm
index 81d6f8165d92c..ad87ab93f9a79 100644
--- a/code/datums/actions/mobs/dash.dm
+++ b/code/datums/actions/mobs/dash.dm
@@ -52,11 +52,11 @@
new /obj/effect/temp_visual/small_smoke/halfsecond(step_forward_turf)
var/obj/effect/temp_visual/decoy/fading/halfsecond/D = new (own_turf, owner)
owner.forceMove(step_back_turf)
- playsound(own_turf, 'sound/weapons/punchmiss.ogg', 40, TRUE, -1)
+ playsound(own_turf, 'sound/items/weapons/punchmiss.ogg', 40, TRUE, -1)
owner.alpha = 0
animate(owner, alpha = 255, time = 5)
SLEEP_CHECK_DEATH(0.2 SECONDS, owner)
D.forceMove(step_forward_turf)
owner.forceMove(target_turf)
- playsound(target_turf, 'sound/weapons/punchmiss.ogg', 40, TRUE, -1)
+ playsound(target_turf, 'sound/items/weapons/punchmiss.ogg', 40, TRUE, -1)
SLEEP_CHECK_DEATH(0.1 SECONDS, owner)
diff --git a/code/datums/actions/mobs/fire_breath.dm b/code/datums/actions/mobs/fire_breath.dm
index e52fa14d0d905..11ad04fa0df20 100644
--- a/code/datums/actions/mobs/fire_breath.dm
+++ b/code/datums/actions/mobs/fire_breath.dm
@@ -7,7 +7,7 @@
/// The range of the fire
var/fire_range = 15
/// The sound played when you use this ability
- var/fire_sound = 'sound/magic/fireball.ogg'
+ var/fire_sound = 'sound/effects/magic/fireball.ogg'
/// Time to wait between spawning each fire turf
var/fire_delay = 1.5 DECISECONDS
/// How hot is our fire
diff --git a/code/datums/actions/mobs/projectileattack.dm b/code/datums/actions/mobs/projectileattack.dm
index d8f8e6bdf6427..933f94d0025f3 100644
--- a/code/datums/actions/mobs/projectileattack.dm
+++ b/code/datums/actions/mobs/projectileattack.dm
@@ -126,7 +126,7 @@
desc = "Fires projectiles in a spiral pattern."
cooldown_time = 3 SECONDS
projectile_type = /obj/projectile/colossus
- projectile_sound = 'sound/magic/clockwork/invoke_general.ogg'
+ projectile_sound = 'sound/effects/magic/clockwork/invoke_general.ogg'
/// Whether or not the attack is the enraged form
var/enraged = FALSE
@@ -186,7 +186,7 @@
desc = "Fires projectiles in all directions."
cooldown_time = 3 SECONDS
projectile_type = /obj/projectile/colossus
- projectile_sound = 'sound/magic/clockwork/invoke_general.ogg'
+ projectile_sound = 'sound/effects/magic/clockwork/invoke_general.ogg'
/datum/action/cooldown/mob_cooldown/projectile_attack/random_aoe/attack_sequence(mob/living/firer, atom/target)
var/turf/U = get_turf(firer)
@@ -208,7 +208,7 @@
desc = "Fires projectiles in a shotgun pattern."
cooldown_time = 2 SECONDS
projectile_type = /obj/projectile/colossus
- projectile_sound = 'sound/magic/clockwork/invoke_general.ogg'
+ projectile_sound = 'sound/effects/magic/clockwork/invoke_general.ogg'
var/list/shot_angles = list(12.5, 7.5, 2.5, -2.5, -7.5, -12.5)
/datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/attack_sequence(mob/living/firer, atom/target)
@@ -263,7 +263,7 @@
desc = "Fires projectiles in specific directions."
cooldown_time = 4 SECONDS
projectile_type = /obj/projectile/colossus
- projectile_sound = 'sound/magic/clockwork/invoke_general.ogg'
+ projectile_sound = 'sound/effects/magic/clockwork/invoke_general.ogg'
var/list/firing_directions
/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/New(Target)
@@ -308,7 +308,7 @@
desc = "Fires a kinetic accelerator projectile at the target."
cooldown_time = 1.5 SECONDS
projectile_type = /obj/projectile/kinetic/miner
- projectile_sound = 'sound/weapons/kinetic_accel.ogg'
+ projectile_sound = 'sound/items/weapons/kinetic_accel.ogg'
/datum/action/cooldown/mob_cooldown/projectile_attack/kinetic_accelerator/Activate(atom/target_atom)
. = ..()
diff --git a/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm b/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm
index 5bd0f8404883d..0e6780adeac76 100644
--- a/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm
+++ b/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm
@@ -46,7 +46,7 @@
/datum/ai_planning_subtree/random_speech/insect
speech_chance = 5
- sound = list('sound/creatures/chitter.ogg')
+ sound = list('sound/mobs/non-humanoids/insect/chitter.ogg')
emote_hear = list("chitters.")
/datum/ai_planning_subtree/random_speech/mothroach
@@ -56,7 +56,7 @@
/datum/ai_planning_subtree/random_speech/mouse
speech_chance = 1
speak = list("Squeak!", "SQUEAK!", "Squeak?")
- sound = list('sound/creatures/mousesqueek.ogg')
+ sound = list('sound/mobs/non-humanoids/mouse/mousesqueek.ogg')
emote_hear = list("squeaks.")
emote_see = list("runs in a circle.", "shakes.")
@@ -72,7 +72,7 @@
/datum/ai_planning_subtree/random_speech/sheep
speech_chance = 5
speak = list("baaa","baaaAAAAAH!","baaah")
- sound = list('sound/creatures/sheep1.ogg', 'sound/creatures/sheep2.ogg', 'sound/creatures/sheep3.ogg')
+ sound = list('sound/mobs/non-humanoids/sheep/sheep1.ogg', 'sound/mobs/non-humanoids/sheep/sheep2.ogg', 'sound/mobs/non-humanoids/sheep/sheep3.ogg')
emote_hear = list("bleats.")
emote_see = list("shakes her head.", "stares into the distance.")
@@ -101,21 +101,21 @@
/datum/ai_planning_subtree/random_speech/chicken
speech_chance = 15 // really talkative ladies
speak = list("Cluck!", "BWAAAAARK BWAK BWAK BWAK!", "Bwaak bwak.")
- sound = list('sound/creatures/clucks.ogg', 'sound/creatures/bagawk.ogg')
+ sound = list('sound/mobs/non-humanoids/chicken/clucks.ogg', 'sound/mobs/non-humanoids/chicken/bagawk.ogg')
emote_hear = list("clucks.", "croons.")
emote_see = list("pecks at the ground.","flaps her wings viciously.")
/datum/ai_planning_subtree/random_speech/chick
speech_chance = 4
speak = list("Cherp.", "Cherp?", "Chirrup.", "Cheep!")
- sound = list('sound/creatures/chick_peep.ogg')
+ sound = list('sound/mobs/non-humanoids/chicken/chick_peep.ogg')
emote_hear = list("cheeps.")
emote_see = list("pecks at the ground.","flaps her tiny wings.")
/datum/ai_planning_subtree/random_speech/cow
speech_chance = 1
speak = list("moo?","moo","MOOOOOO")
- sound = list('sound/creatures/cow.ogg')
+ sound = list('sound/mobs/non-humanoids/cow/cow.ogg')
emote_hear = list("brays.")
emote_see = list("shakes her head.")
@@ -164,19 +164,19 @@
/datum/ai_planning_subtree/random_speech/pig
speech_chance = 3
speak = list("oink?","oink","snurf")
- sound = list('sound/creatures/pig1.ogg', 'sound/creatures/pig2.ogg')
+ sound = list('sound/mobs/non-humanoids/pig/pig1.ogg', 'sound/mobs/non-humanoids/pig/pig2.ogg')
emote_hear = list("snorts.")
emote_see = list("sniffs around.")
/datum/ai_planning_subtree/random_speech/pony
speech_chance = 3
- sound = list('sound/creatures/pony/whinny01.ogg', 'sound/creatures/pony/whinny02.ogg', 'sound/creatures/pony/whinny03.ogg')
+ sound = list('sound/mobs/non-humanoids/pony/whinny01.ogg', 'sound/mobs/non-humanoids/pony/whinny02.ogg', 'sound/mobs/non-humanoids/pony/whinny03.ogg')
emote_hear = list("whinnies!")
emote_see = list("horses around.")
/datum/ai_planning_subtree/random_speech/pony/tamed
speech_chance = 3
- sound = list('sound/creatures/pony/snort.ogg')
+ sound = list('sound/mobs/non-humanoids/pony/snort.ogg')
emote_hear = list("snorts.")
emote_see = list("snorts.")
@@ -188,7 +188,7 @@
/datum/ai_planning_subtree/random_speech/ant
speech_chance = 1
speak = list("BZZZZT!", "CHTCHTCHT!", "Bzzz", "ChtChtCht")
- sound = list('sound/creatures/chitter.ogg')
+ sound = list('sound/mobs/non-humanoids/insect/chitter.ogg')
emote_hear = list("buzzes.", "clacks.")
emote_see = list("shakes their head.", "twitches their antennae.")
@@ -200,7 +200,7 @@
/datum/ai_planning_subtree/random_speech/crab
speech_chance = 1
- sound = list('sound/creatures/claw_click.ogg')
+ sound = list('sound/mobs/non-humanoids/crab/claw_click.ogg')
emote_hear = list("clicks.")
emote_see = list("clacks.")
diff --git a/code/datums/ai/dog/dog_behaviors.dm b/code/datums/ai/dog/dog_behaviors.dm
index 00a2f789e12b5..958b1f3d03de1 100644
--- a/code/datums/ai/dog/dog_behaviors.dm
+++ b/code/datums/ai/dog/dog_behaviors.dm
@@ -44,7 +44,7 @@
if(!SPT_PROB(20, seconds_per_tick))
return
living_pawn.do_attack_animation(target, ATTACK_EFFECT_DISARM)
- playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(target, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
target.visible_message(span_danger("[living_pawn] paws ineffectually at [target]!"), span_danger("[living_pawn] paws ineffectually at you!"))
/// Let them know we mean business
@@ -54,4 +54,4 @@
living_pawn.manual_emote("[pick("barks", "growls", "stares")] menacingly at [target]!")
if(!SPT_PROB(40, seconds_per_tick))
return
- playsound(living_pawn, pick('sound/creatures/dog/growl1.ogg', 'sound/creatures/dog/growl2.ogg'), 50, TRUE, -1)
+ playsound(living_pawn, pick('sound/mobs/non-humanoids/dog/growl1.ogg', 'sound/mobs/non-humanoids/dog/growl2.ogg'), 50, TRUE, -1)
diff --git a/code/datums/announcers/default_announcer.dm b/code/datums/announcers/default_announcer.dm
index 9db822e02feff..bf24f611af842 100644
--- a/code/datums/announcers/default_announcer.dm
+++ b/code/datums/announcers/default_announcer.dm
@@ -1,20 +1,20 @@
/datum/centcom_announcer/default
- welcome_sounds = list('sound/ai/default/welcome.ogg')
- alert_sounds = list('sound/ai/default/attention.ogg')
- command_report_sounds = list('sound/ai/default/commandreport.ogg')
- event_sounds = list(ANNOUNCER_AIMALF = 'sound/ai/default/aimalf.ogg',
- ANNOUNCER_ALIENS = 'sound/ai/default/aliens.ogg',
- ANNOUNCER_ANIMES = 'sound/ai/default/animes.ogg',
- ANNOUNCER_GRANOMALIES = 'sound/ai/default/granomalies.ogg',
- ANNOUNCER_INTERCEPT = 'sound/ai/default/intercept.ogg',
- ANNOUNCER_IONSTORM = 'sound/ai/default/ionstorm.ogg',
- ANNOUNCER_METEORS = 'sound/ai/default/meteors.ogg',
- ANNOUNCER_OUTBREAK5 = 'sound/ai/default/outbreak5.ogg',
- ANNOUNCER_OUTBREAK7 = 'sound/ai/default/outbreak7.ogg',
- ANNOUNCER_POWEROFF = 'sound/ai/default/poweroff.ogg',
- ANNOUNCER_POWERON = 'sound/ai/default/poweron.ogg',
- ANNOUNCER_RADIATION = 'sound/ai/default/radiation.ogg',
- ANNOUNCER_SHUTTLECALLED = 'sound/ai/default/shuttlecalled.ogg',
- ANNOUNCER_SHUTTLEDOCK = 'sound/ai/default/shuttledock.ogg',
- ANNOUNCER_SHUTTLERECALLED = 'sound/ai/default/shuttlerecalled.ogg',
- ANNOUNCER_SPANOMALIES = 'sound/ai/default/spanomalies.ogg')
+ welcome_sounds = list('sound/announcer/default/welcome.ogg')
+ alert_sounds = list('sound/announcer/default/attention.ogg')
+ command_report_sounds = list('sound/announcer/default/commandreport.ogg')
+ event_sounds = list(ANNOUNCER_AIMALF = 'sound/announcer/default/aimalf.ogg',
+ ANNOUNCER_ALIENS = 'sound/announcer/default/aliens.ogg',
+ ANNOUNCER_ANIMES = 'sound/announcer/default/animes.ogg',
+ ANNOUNCER_GRANOMALIES = 'sound/announcer/default/granomalies.ogg',
+ ANNOUNCER_INTERCEPT = 'sound/announcer/default/intercept.ogg',
+ ANNOUNCER_IONSTORM = 'sound/announcer/default/ionstorm.ogg',
+ ANNOUNCER_METEORS = 'sound/announcer/default/meteors.ogg',
+ ANNOUNCER_OUTBREAK5 = 'sound/announcer/default/outbreak5.ogg',
+ ANNOUNCER_OUTBREAK7 = 'sound/announcer/default/outbreak7.ogg',
+ ANNOUNCER_POWEROFF = 'sound/announcer/default/poweroff.ogg',
+ ANNOUNCER_POWERON = 'sound/announcer/default/poweron.ogg',
+ ANNOUNCER_RADIATION = 'sound/announcer/default/radiation.ogg',
+ ANNOUNCER_SHUTTLECALLED = 'sound/announcer/default/shuttlecalled.ogg',
+ ANNOUNCER_SHUTTLEDOCK = 'sound/announcer/default/shuttledock.ogg',
+ ANNOUNCER_SHUTTLERECALLED = 'sound/announcer/default/shuttlerecalled.ogg',
+ ANNOUNCER_SPANOMALIES = 'sound/announcer/default/spanomalies.ogg')
diff --git a/code/datums/announcers/intern_announcer.dm b/code/datums/announcers/intern_announcer.dm
index 5e8544c18710f..635508256b781 100644
--- a/code/datums/announcers/intern_announcer.dm
+++ b/code/datums/announcers/intern_announcer.dm
@@ -1,46 +1,46 @@
/datum/centcom_announcer/intern
- welcome_sounds = list('sound/ai/intern/welcome/1.ogg',
- 'sound/ai/intern/welcome/2.ogg',
- 'sound/ai/intern/welcome/3.ogg',
- 'sound/ai/intern/welcome/4.ogg',
- 'sound/ai/intern/welcome/5.ogg',
- 'sound/ai/intern/welcome/6.ogg')
+ welcome_sounds = list('sound/announcer/intern/welcome/1.ogg',
+ 'sound/announcer/intern/welcome/2.ogg',
+ 'sound/announcer/intern/welcome/3.ogg',
+ 'sound/announcer/intern/welcome/4.ogg',
+ 'sound/announcer/intern/welcome/5.ogg',
+ 'sound/announcer/intern/welcome/6.ogg')
- alert_sounds = list('sound/ai/intern/alerts/1.ogg',
- 'sound/ai/intern/alerts/2.ogg',
- 'sound/ai/intern/alerts/3.ogg',
- 'sound/ai/intern/alerts/4.ogg',
- 'sound/ai/intern/alerts/5.ogg',
- 'sound/ai/intern/alerts/6.ogg',
- 'sound/ai/intern/alerts/7.ogg',
- 'sound/ai/intern/alerts/8.ogg',
- 'sound/ai/intern/alerts/9.ogg',
- 'sound/ai/intern/alerts/10.ogg',
- 'sound/ai/intern/alerts/11.ogg',
- 'sound/ai/intern/alerts/12.ogg',
- 'sound/ai/intern/alerts/13.ogg',
- 'sound/ai/intern/alerts/14.ogg')
+ alert_sounds = list('sound/announcer/intern/alerts/1.ogg',
+ 'sound/announcer/intern/alerts/2.ogg',
+ 'sound/announcer/intern/alerts/3.ogg',
+ 'sound/announcer/intern/alerts/4.ogg',
+ 'sound/announcer/intern/alerts/5.ogg',
+ 'sound/announcer/intern/alerts/6.ogg',
+ 'sound/announcer/intern/alerts/7.ogg',
+ 'sound/announcer/intern/alerts/8.ogg',
+ 'sound/announcer/intern/alerts/9.ogg',
+ 'sound/announcer/intern/alerts/10.ogg',
+ 'sound/announcer/intern/alerts/11.ogg',
+ 'sound/announcer/intern/alerts/12.ogg',
+ 'sound/announcer/intern/alerts/13.ogg',
+ 'sound/announcer/intern/alerts/14.ogg')
- command_report_sounds = list('sound/ai/intern/commandreport/1.ogg',
- 'sound/ai/intern/commandreport/2.ogg',
- 'sound/ai/intern/commandreport/3.ogg')
+ command_report_sounds = list('sound/announcer/intern/commandreport/1.ogg',
+ 'sound/announcer/intern/commandreport/2.ogg',
+ 'sound/announcer/intern/commandreport/3.ogg')
- event_sounds = list(ANNOUNCER_AIMALF = 'sound/ai/default/aimalf.ogg',
- ANNOUNCER_ALIENS = 'sound/ai/intern/aliens.ogg',
- ANNOUNCER_ANIMES = 'sound/ai/intern/animes.ogg',
- ANNOUNCER_GRANOMALIES = 'sound/ai/intern/granomalies.ogg',
- ANNOUNCER_INTERCEPT = 'sound/ai/intern/intercept.ogg',
- ANNOUNCER_IONSTORM = 'sound/ai/intern/ionstorm.ogg',
- ANNOUNCER_METEORS = 'sound/ai/intern/meteors.ogg',
- ANNOUNCER_OUTBREAK5 = 'sound/ai/intern/outbreak5.ogg',
- ANNOUNCER_OUTBREAK7 = 'sound/ai/intern/outbreak7.ogg',
- ANNOUNCER_POWEROFF = 'sound/ai/intern/poweroff.ogg',
- ANNOUNCER_POWERON = 'sound/ai/intern/poweron.ogg',
- ANNOUNCER_RADIATION = 'sound/ai/intern/radiation.ogg',
- ANNOUNCER_SHUTTLECALLED = 'sound/ai/intern/shuttlecalled.ogg',
- ANNOUNCER_SHUTTLEDOCK = 'sound/ai/intern/shuttledock.ogg',
- ANNOUNCER_SHUTTLERECALLED = 'sound/ai/intern/shuttlerecalled.ogg',
- ANNOUNCER_SPANOMALIES = 'sound/ai/intern/spanomalies.ogg')
+ event_sounds = list(ANNOUNCER_AIMALF = 'sound/announcer/default/aimalf.ogg',
+ ANNOUNCER_ALIENS = 'sound/announcer/intern/aliens.ogg',
+ ANNOUNCER_ANIMES = 'sound/announcer/intern/animes.ogg',
+ ANNOUNCER_GRANOMALIES = 'sound/announcer/intern/granomalies.ogg',
+ ANNOUNCER_INTERCEPT = 'sound/announcer/intern/intercept.ogg',
+ ANNOUNCER_IONSTORM = 'sound/announcer/intern/ionstorm.ogg',
+ ANNOUNCER_METEORS = 'sound/announcer/intern/meteors.ogg',
+ ANNOUNCER_OUTBREAK5 = 'sound/announcer/intern/outbreak5.ogg',
+ ANNOUNCER_OUTBREAK7 = 'sound/announcer/intern/outbreak7.ogg',
+ ANNOUNCER_POWEROFF = 'sound/announcer/intern/poweroff.ogg',
+ ANNOUNCER_POWERON = 'sound/announcer/intern/poweron.ogg',
+ ANNOUNCER_RADIATION = 'sound/announcer/intern/radiation.ogg',
+ ANNOUNCER_SHUTTLECALLED = 'sound/announcer/intern/shuttlecalled.ogg',
+ ANNOUNCER_SHUTTLEDOCK = 'sound/announcer/intern/shuttledock.ogg',
+ ANNOUNCER_SHUTTLERECALLED = 'sound/announcer/intern/shuttlerecalled.ogg',
+ ANNOUNCER_SPANOMALIES = 'sound/announcer/intern/spanomalies.ogg')
- custom_alert_message = "Please stand by for an important message from our new intern. "
+ custom_alert_message = span_alert("Please stand by for an important message from our new intern. ")
diff --git a/code/datums/announcers/medbot_announcer.dm b/code/datums/announcers/medbot_announcer.dm
index 17e8555221320..7269fe85c5703 100644
--- a/code/datums/announcers/medbot_announcer.dm
+++ b/code/datums/announcers/medbot_announcer.dm
@@ -1,21 +1,21 @@
/datum/centcom_announcer/medbot
- welcome_sounds = list('sound/ai/medbot/welcome.ogg',
- 'sound/ai/medbot/newAI.ogg')
- alert_sounds = list('sound/ai/medbot/attention.ogg')
- command_report_sounds = list('sound/ai/medbot/commandreport.ogg')
- event_sounds = list(ANNOUNCER_AIMALF = 'sound/ai/default/aimalf.ogg',
- ANNOUNCER_ALIENS = 'sound/ai/medbot/aliens.ogg',
- ANNOUNCER_ANIMES = 'sound/ai/medbot/animes.ogg',
- ANNOUNCER_GRANOMALIES = 'sound/ai/medbot/granomalies.ogg',
- ANNOUNCER_INTERCEPT = 'sound/ai/medbot/intercept.ogg',
- ANNOUNCER_IONSTORM = 'sound/ai/medbot/ionstorm.ogg',
- ANNOUNCER_METEORS = 'sound/ai/medbot/meteors.ogg',
- ANNOUNCER_OUTBREAK5 = 'sound/ai/medbot/outbreak5.ogg',
- ANNOUNCER_OUTBREAK7 = 'sound/ai/medbot/outbreak7.ogg',
- ANNOUNCER_POWEROFF = 'sound/ai/medbot/poweroff.ogg',
- ANNOUNCER_POWERON = 'sound/ai/medbot/poweron.ogg',
- ANNOUNCER_RADIATION = 'sound/ai/medbot/radiation.ogg',
- ANNOUNCER_SHUTTLECALLED = 'sound/ai/medbot/shuttlecalled.ogg',
- ANNOUNCER_SHUTTLEDOCK = 'sound/ai/medbot/shuttledock.ogg',
- ANNOUNCER_SHUTTLERECALLED = 'sound/ai/medbot/shuttlerecalled.ogg',
- ANNOUNCER_SPANOMALIES = 'sound/ai/medbot/spanomalies.ogg')
+ welcome_sounds = list('sound/announcer/medbot/welcome.ogg',
+ 'sound/announcer/medbot/newAI.ogg')
+ alert_sounds = list('sound/announcer/medbot/attention.ogg')
+ command_report_sounds = list('sound/announcer/medbot/commandreport.ogg')
+ event_sounds = list(ANNOUNCER_AIMALF = 'sound/announcer/default/aimalf.ogg',
+ ANNOUNCER_ALIENS = 'sound/announcer/medbot/aliens.ogg',
+ ANNOUNCER_ANIMES = 'sound/announcer/medbot/animes.ogg',
+ ANNOUNCER_GRANOMALIES = 'sound/announcer/medbot/granomalies.ogg',
+ ANNOUNCER_INTERCEPT = 'sound/announcer/medbot/intercept.ogg',
+ ANNOUNCER_IONSTORM = 'sound/announcer/medbot/ionstorm.ogg',
+ ANNOUNCER_METEORS = 'sound/announcer/medbot/meteors.ogg',
+ ANNOUNCER_OUTBREAK5 = 'sound/announcer/medbot/outbreak5.ogg',
+ ANNOUNCER_OUTBREAK7 = 'sound/announcer/medbot/outbreak7.ogg',
+ ANNOUNCER_POWEROFF = 'sound/announcer/medbot/poweroff.ogg',
+ ANNOUNCER_POWERON = 'sound/announcer/medbot/poweron.ogg',
+ ANNOUNCER_RADIATION = 'sound/announcer/medbot/radiation.ogg',
+ ANNOUNCER_SHUTTLECALLED = 'sound/announcer/medbot/shuttlecalled.ogg',
+ ANNOUNCER_SHUTTLEDOCK = 'sound/announcer/medbot/shuttledock.ogg',
+ ANNOUNCER_SHUTTLERECALLED = 'sound/announcer/medbot/shuttlerecalled.ogg',
+ ANNOUNCER_SPANOMALIES = 'sound/announcer/medbot/spanomalies.ogg')
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index 708a416301159..ad27ee5ee3edf 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -212,6 +212,9 @@
/obj/effect/ebeam/singularity_act()
return
+/obj/effect/ebeam/Process_Spacemove(movement_dir, continuous_move)
+ return TRUE
+
/// A beam subtype used for advanced beams, to react to atoms entering the beam
/obj/effect/ebeam/reacting
/// If TRUE, atoms that exist in the beam's loc when inited count as "entering" the beam
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index 99467c570990f..da0388f6c54d2 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -1,3 +1,8 @@
+
+#define IMAGINARY_FRIEND_RANGE 9
+#define IMAGINARY_FRIEND_SPEECH_RANGE IMAGINARY_FRIEND_RANGE
+#define IMAGINARY_FRIEND_EXTENDED_SPEECH_RANGE 999
+
/datum/brain_trauma/special/imaginary_friend
name = "Imaginary Friend"
desc = "Patient can see and hear an imaginary person."
@@ -88,11 +93,15 @@
var/mob/living/owner
var/bubble_icon = "default"
+ /// Whether our host and other imaginary friends can hear us only when nearby or practically anywhere.
+ var/extended_message_range = TRUE
+
/mob/camera/imaginary_friend/Login()
. = ..()
if(!. || !client)
return FALSE
- greet()
+ if(owner)
+ greet()
Show()
/mob/camera/imaginary_friend/proc/greet()
@@ -119,6 +128,7 @@
if(!owner.imaginary_group)
owner.imaginary_group = list(owner)
owner.imaginary_group += src
+ greet()
/// Copies appearance from passed player prefs, or randomises them if none are provided
/mob/camera/imaginary_friend/proc/setup_appearance(datum/preferences/appearance_from_prefs = null)
@@ -212,7 +222,7 @@
create_chat_message(speaker, message_language, raw_message, spans)
to_chat(src, compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mods))
-/mob/camera/imaginary_friend/send_speech(message, range = 7, obj/source = src, bubble_type = bubble_icon, list/spans = list(), datum/language/message_language = null, list/message_mods = list(), forced = null)
+/mob/camera/imaginary_friend/send_speech(message, range = IMAGINARY_FRIEND_SPEECH_RANGE, obj/source = src, bubble_type = bubble_icon, list/spans = list(), datum/language/message_language = null, list/message_mods = list(), forced = null)
message = get_message_mods(message, message_mods)
message = capitalize(message)
@@ -232,6 +242,9 @@
message = "[randomnote] [capitalize(message)] [randomnote]"
spans |= SPAN_SINGING
+ if(extended_message_range)
+ range = IMAGINARY_FRIEND_EXTENDED_SPEECH_RANGE
+
var/eavesdrop_range = 0
if (message_mods[MODE_CUSTOM_SAY_ERASE_INPUT])
@@ -528,3 +541,7 @@
real_name = "[owner.real_name]?"
name = real_name
human_image = icon('icons/mob/simple/lavaland/lavaland_monsters.dmi', icon_state = "curseblob")
+
+#undef IMAGINARY_FRIEND_RANGE
+#undef IMAGINARY_FRIEND_SPEECH_RANGE
+#undef IMAGINARY_FRIEND_EXTENDED_SPEECH_RANGE
diff --git a/code/datums/brain_damage/magic.dm b/code/datums/brain_damage/magic.dm
index 441d220a5ded3..fde1e5d2421f1 100644
--- a/code/datums/brain_damage/magic.dm
+++ b/code/datums/brain_damage/magic.dm
@@ -104,14 +104,14 @@
create_stalker()
if(get_dist(owner, stalker) <= 1)
- playsound(owner, 'sound/magic/demon_attack1.ogg', 50)
+ playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50)
owner.visible_message(span_warning("[owner] is torn apart by invisible claws!"), span_userdanger("Ghostly claws tear your body apart!"))
owner.take_bodypart_damage(rand(20, 45), wound_bonus=CANT_WOUND)
else if(SPT_PROB(30, seconds_per_tick))
stalker.forceMove(get_step_towards(stalker, owner))
if(get_dist(owner, stalker) <= 8)
if(!close_stalker)
- var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE)
+ var/sound/slowbeat = sound('sound/effects/health/slowbeat.ogg', repeat = TRUE)
owner.playsound_local(owner, slowbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
close_stalker = TRUE
else
diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm
index 1bf011e0fab49..f49a6d0c0bc52 100644
--- a/code/datums/brain_damage/special.dm
+++ b/code/datums/brain_damage/special.dm
@@ -45,7 +45,7 @@
else
message = pick_list_replacements(BRAIN_DAMAGE_FILE, "god_neutral")
- playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 200, TRUE, 5)
+ playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 200, TRUE, 5)
voice_of_god(message, owner, list("colossus","yell"), 2.5, include_owner, name, TRUE)
/datum/brain_trauma/special/bluespace_prophet
@@ -218,7 +218,7 @@
linked = FALSE
return
to_chat(owner, span_warning("Your connection to [linked_target] suddenly feels extremely strong... you can feel it pulling you!"))
- owner.playsound_local(owner, 'sound/magic/lightning_chargeup.ogg', 75, FALSE)
+ owner.playsound_local(owner, 'sound/effects/magic/lightning_chargeup.ogg', 75, FALSE)
returning = TRUE
addtimer(CALLBACK(src, PROC_REF(snapback)), 10 SECONDS)
@@ -231,7 +231,7 @@
return
to_chat(owner, span_warning("You're pulled through spacetime!"))
do_teleport(owner, get_turf(linked_target), null, channel = TELEPORT_CHANNEL_QUANTUM)
- owner.playsound_local(owner, 'sound/magic/repulse.ogg', 100, FALSE)
+ owner.playsound_local(owner, 'sound/effects/magic/repulse.ogg', 100, FALSE)
linked_target = null
linked = FALSE
@@ -388,17 +388,17 @@
if(owner.stat != CONSCIOUS)
if(prob(20))
- owner.playsound_local(beepsky, 'sound/voice/beepsky/iamthelaw.ogg', 50)
+ owner.playsound_local(beepsky, 'sound/mobs/non-humanoids/beepsky/iamthelaw.ogg', 50)
return
if(get_dist(owner, beepsky) <= 1)
- owner.playsound_local(owner, 'sound/weapons/egloves.ogg', 50)
+ owner.playsound_local(owner, 'sound/items/weapons/egloves.ogg', 50)
owner.visible_message(span_warning("[owner]'s body jerks as if it was shocked."), span_userdanger("You feel the fist of the LAW."))
owner.adjustStaminaLoss(rand(40, 70))
QDEL_NULL(beepsky)
if(prob(20) && get_dist(owner, beepsky) <= 8)
- owner.playsound_local(beepsky, 'sound/voice/beepsky/criminal.ogg', 40)
+ owner.playsound_local(beepsky, 'sound/mobs/non-humanoids/beepsky/criminal.ogg', 40)
/obj/effect/client_image_holder/securitron
name = "Securitron"
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index 6d0f8fc565415..198b674631750 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -305,7 +305,7 @@
addtimer(TRAIT_CALLBACK_REMOVE(owner, TRAIT_DISCOORDINATED_TOOL_USER, TRAUMA_TRAIT), 10 SECONDS)
addtimer(CALLBACK(owner, TYPE_PROC_REF(/atom, balloon_alert), owner, "dexterity regained!"), 10 SECONDS)
if(prob(15))
- playsound(owner,'sound/effects/sf_hiccup_male_01.ogg', 50)
+ playsound(owner,'sound/mobs/humanoids/human/hiccup/sf_hiccup_male_01.ogg', 50)
owner.emote("hiccup")
//too drunk to feel anything
//if they're to this point, they're likely dying of liver damage
diff --git a/code/datums/candidate_poll.dm b/code/datums/candidate_poll.dm
index f1fa9812014ed..9afec6f371bb6 100644
--- a/code/datums/candidate_poll.dm
+++ b/code/datums/candidate_poll.dm
@@ -74,7 +74,7 @@
if(time_left() <= 0)
if(!silent)
to_chat(candidate, span_danger("Sorry, you were too late for the consideration!"))
- SEND_SOUND(candidate, 'sound/machines/buzz-sigh.ogg')
+ SEND_SOUND(candidate, 'sound/machines/buzz/buzz-sigh.ogg')
return FALSE
signed_up += candidate
diff --git a/code/datums/cinematics/malf_doomsday.dm b/code/datums/cinematics/malf_doomsday.dm
index 2eb330d9a484f..02297065afc45 100644
--- a/code/datums/cinematics/malf_doomsday.dm
+++ b/code/datums/cinematics/malf_doomsday.dm
@@ -5,6 +5,6 @@
flick("intro_malf", screen)
stoplag(7.6 SECONDS)
flick("station_explode_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
special_callback?.Invoke()
screen.icon_state = "summary_malf"
diff --git a/code/datums/cinematics/narsie_summon.dm b/code/datums/cinematics/narsie_summon.dm
index 2fecac2c63a80..1e0a5d1d48f94 100644
--- a/code/datums/cinematics/narsie_summon.dm
+++ b/code/datums/cinematics/narsie_summon.dm
@@ -5,9 +5,9 @@
screen.icon_state = null
flick("intro_cult", screen)
stoplag(2.5 SECONDS)
- play_cinematic_sound(sound('sound/magic/enter_blood.ogg'))
+ play_cinematic_sound(sound('sound/effects/magic/enter_blood.ogg'))
stoplag(2.8 SECONDS)
- play_cinematic_sound(sound('sound/machines/terminal_off.ogg'))
+ play_cinematic_sound(sound('sound/machines/terminal/terminal_off.ogg'))
stoplag(2 SECONDS)
flick("station_corrupted", screen)
play_cinematic_sound(sound('sound/effects/ghost.ogg'))
@@ -20,10 +20,10 @@
/datum/cinematic/cult_fail/play_cinematic()
screen.icon_state = "station_intact"
stoplag(2 SECONDS)
- play_cinematic_sound(sound('sound/creatures/narsie_rises.ogg'))
+ play_cinematic_sound(sound('sound/music/antag/bloodcult/narsie_rises.ogg'))
stoplag(6 SECONDS)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
stoplag(1 SECONDS)
- play_cinematic_sound(sound('sound/magic/demon_dies.ogg'))
+ play_cinematic_sound(sound('sound/effects/magic/demon_dies.ogg'))
stoplag(3 SECONDS)
special_callback?.Invoke()
diff --git a/code/datums/cinematics/nuke_cinematics.dm b/code/datums/cinematics/nuke_cinematics.dm
index dd827f7c0b9fd..858d95c7e5102 100644
--- a/code/datums/cinematics/nuke_cinematics.dm
+++ b/code/datums/cinematics/nuke_cinematics.dm
@@ -22,7 +22,7 @@
/datum/cinematic/nuke/ops_victory/play_nuke_effect()
flick("station_explode_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
/// The syndicate nuclear bomb was activated, but just barely missed the station!
/datum/cinematic/nuke/ops_miss
@@ -30,7 +30,7 @@
/datum/cinematic/nuke/ops_miss/play_nuke_effect()
flick("station_intact_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
/// The self destruct, or another station-destroying entity like a blob, destroyed the station!
/datum/cinematic/nuke/self_destruct
@@ -38,14 +38,14 @@
/datum/cinematic/nuke/self_destruct/play_nuke_effect()
flick("station_explode_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
/// The self destruct was activated, yet somehow avoided destroying the station!
/datum/cinematic/nuke/self_destruct_miss
after_nuke_summary_state = "station_intact"
/datum/cinematic/nuke/self_destruct_miss/play_nuke_effect()
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
special_callback?.Invoke()
/// The syndicate nuclear bomb was activated, and the nuclear operatives failed to extract on their shuttle before it detonated on the station!
@@ -54,7 +54,7 @@
/datum/cinematic/nuke/mutual_destruction/play_nuke_effect()
flick("station_explode_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
/// A blood cult summoned Nar'sie, but central command deployed a nuclear package to stop them.
/datum/cinematic/nuke/cult
@@ -62,7 +62,7 @@
/datum/cinematic/nuke/cult/play_nuke_effect()
flick("station_explode_fade_red", screen)
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
/// A fake version of the nuclear detonation, where it winds up, but doesn't explode.
/datum/cinematic/nuke/fake
@@ -77,7 +77,7 @@
cleanup_time = 10 SECONDS
/datum/cinematic/nuke/clown/play_nuke_effect()
- play_cinematic_sound(sound('sound/items/airhorn.ogg'))
+ play_cinematic_sound(sound('sound/items/airhorn/airhorn.ogg'))
flick("summary_selfdes", screen) //???
/// A fake version of the nuclear detonation, where it winds up, but doesn't explode as the nuke core within was missing.
@@ -86,7 +86,7 @@
/datum/cinematic/nuke/no_core/play_nuke_effect()
flick("station_intact", screen)
- play_cinematic_sound(sound('sound/ambience/signal.ogg'))
+ play_cinematic_sound(sound('sound/ambience/misc/signal.ogg'))
stoplag(10 SECONDS)
/// The syndicate nuclear bomb was activated, but just missed the station by a whole z-level!
@@ -96,5 +96,5 @@
/datum/cinematic/nuke/far_explosion/play_cinematic()
// This one has no intro sequence.
// It's actually just a global sound, which makes you wonder why it's a cinematic.
- play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ play_cinematic_sound(sound('sound/effects/explosion/explosion_distant.ogg'))
special_callback?.Invoke()
diff --git a/code/datums/communications.dm b/code/datums/communications.dm
index 92e5fdcfd74ac..6df6b1e07bb34 100644
--- a/code/datums/communications.dm
+++ b/code/datums/communications.dm
@@ -37,9 +37,9 @@ GLOBAL_DATUM_INIT(communications_controller, /datum/communciations_controller, n
else
var/list/message_data = user.treat_message(input)
if(syndicate)
- priority_announce(html_decode(message_data["message"]), null, 'sound/misc/announce_syndi.ogg', ANNOUNCEMENT_TYPE_SYNDICATE, has_important_message = TRUE, players = players, color_override = "red")
+ priority_announce(html_decode(message_data["message"]), null, 'sound/announcer/announcement/announce_syndi.ogg', ANNOUNCEMENT_TYPE_SYNDICATE, has_important_message = TRUE, players = players, color_override = "red")
else
- priority_announce(html_decode(message_data["message"]), null, 'sound/misc/announce.ogg', ANNOUNCEMENT_TYPE_CAPTAIN, has_important_message = TRUE, players = players)
+ priority_announce(html_decode(message_data["message"]), null, 'sound/announcer/announcement/announce.ogg', ANNOUNCEMENT_TYPE_CAPTAIN, has_important_message = TRUE, players = players)
COOLDOWN_START(src, nonsilicon_message_cooldown, COMMUNICATION_COOLDOWN)
user.log_talk(input, LOG_SAY, tag="priority announcement")
message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.")
diff --git a/code/datums/components/chuunibyou.dm b/code/datums/components/chuunibyou.dm
index 5724b93488f49..5373b3f798754 100644
--- a/code/datums/components/chuunibyou.dm
+++ b/code/datums/components/chuunibyou.dm
@@ -71,7 +71,7 @@
/datum/component/chuunibyou/proc/on_spell_projectile(mob/living/source, datum/action/cooldown/spell/spell, atom/cast_on, obj/projectile/to_fire)
SIGNAL_HANDLER
- playsound(to_fire,'sound/magic/staff_change.ogg', 75, TRUE)
+ playsound(to_fire,'sound/effects/magic/staff_change.ogg', 75, TRUE)
to_fire.color = "#f825f8"
to_fire.name = "chuuni-[to_fire.name]"
to_fire.set_light(2, 2, LIGHT_COLOR_PINK, l_on = TRUE)
@@ -101,7 +101,7 @@
COOLDOWN_START(src, heal_cooldown, CHUUNIBYOU_COOLDOWN_TIME)
source.heal_overall_damage(heal_amount)
- playsound(source, 'sound/magic/staff_healing.ogg', 30)
+ playsound(source, 'sound/effects/magic/staff_healing.ogg', 30)
to_chat(source, span_danger("You feel slightly healed by your chuuni powers."))
/datum/component/chuunibyou/no_healing
diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm
index dfd79e696224c..2546106d40327 100644
--- a/code/datums/components/crafting/equipment.dm
+++ b/code/datums/components/crafting/equipment.dm
@@ -282,3 +282,15 @@
)
category = CAT_EQUIPMENT
tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER)
+
+/datum/crafting_recipe/tether_anchor
+ name = "Tether Anchor"
+ result = /obj/item/tether_anchor
+ reqs = list(
+ /obj/item/stack/sheet/iron = 5,
+ /obj/item/stack/rods = 2,
+ /obj/item/stack/cable_coil = 15
+ )
+ tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WRENCH)
+ time = 5 SECONDS
+ category = CAT_EQUIPMENT
diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm
index bfd2385f89e01..e69d535a58b30 100644
--- a/code/datums/components/crafting/ranged_weapon.dm
+++ b/code/datums/components/crafting/ranged_weapon.dm
@@ -339,8 +339,7 @@
/obj/item/stack/rods = 4,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/capacitor = 1,
- /obj/item/clothing/glasses/regular = 1,
- /obj/item/reagent_containers/cup/glass/drinkingglass = 1,
+ /obj/item/reagent_containers/cup/glass/drinkingglass = 2,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 10 SECONDS
diff --git a/code/datums/components/crank_recharge.dm b/code/datums/components/crank_recharge.dm
index 1f2272a8debc2..4940a02b0553e 100644
--- a/code/datums/components/crank_recharge.dm
+++ b/code/datums/components/crank_recharge.dm
@@ -14,9 +14,11 @@
var/charge_sound_cooldown_time
/// Are we currently charging
var/is_charging = FALSE
+ /// Should you be able to move while charging, use IGNORE_USER_LOC_CHANGE if you want to move and crank
+ var/charge_move = NONE
COOLDOWN_DECLARE(charge_sound_cooldown)
-/datum/component/crank_recharge/Initialize(charging_cell, spin_to_win = FALSE, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS)
+/datum/component/crank_recharge/Initialize(charging_cell, spin_to_win = FALSE, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/items/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS, charge_move = NONE)
. = ..()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
@@ -28,7 +30,7 @@
src.cooldown_time = cooldown_time
src.charge_sound = charge_sound
src.charge_sound_cooldown_time = charge_sound_cooldown_time
-
+ src.charge_move = charge_move
/datum/component/crank_recharge/RegisterWithParent()
. = ..()
RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self))
@@ -57,7 +59,7 @@
COOLDOWN_START(src, charge_sound_cooldown, charge_sound_cooldown_time)
playsound(source, charge_sound, 40)
source.balloon_alert(user, "charging...")
- if(!do_after(user, cooldown_time, source, interaction_key = DOAFTER_SOURCE_CHARGE_CRANKRECHARGE))
+ if(!do_after(user, cooldown_time, source, interaction_key = DOAFTER_SOURCE_CHARGE_CRANKRECHARGE, timed_action_flags = charge_move))
is_charging = FALSE
return
charging_cell.give(charge_amount)
diff --git a/code/datums/components/cuff_n_stun.dm b/code/datums/components/cuff_n_stun.dm
index d238a81f06a24..fda9618e93c14 100644
--- a/code/datums/components/cuff_n_stun.dm
+++ b/code/datums/components/cuff_n_stun.dm
@@ -22,7 +22,7 @@
COOLDOWN_DECLARE(stun_cooldown)
/datum/component/stun_n_cuff/Initialize(list/blacklist_mobs = list(),
- stun_sound = 'sound/weapons/egloves.ogg',
+ stun_sound = 'sound/items/weapons/egloves.ogg',
stun_timer = 8 SECONDS,
handcuff_timer = 4 SECONDS,
stun_cooldown_timer = 10 SECONDS,
@@ -75,7 +75,7 @@
living_parent.balloon_alert(human_target, "already cuffed!")
return
- playsound(parent, 'sound/weapons/cablecuff.ogg', 30, TRUE)
+ playsound(parent, 'sound/items/weapons/cablecuff.ogg', 30, TRUE)
human_target.visible_message(span_danger("[parent] is trying to put zipties on [human_target]!"),\
span_danger("[parent] is trying to put zipties on you!"))
diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm
index 71e07e6380e11..554e3d611ba2d 100644
--- a/code/datums/components/cult_ritual_item.dm
+++ b/code/datums/components/cult_ritual_item.dm
@@ -176,7 +176,7 @@
* cultist - the mob doing the destroying
*/
/datum/component/cult_ritual_item/proc/do_destroy_girder(obj/structure/girder/cult/cult_girder, mob/living/cultist)
- playsound(cult_girder, 'sound/weapons/resonator_blast.ogg', 40, TRUE, ignore_walls = FALSE)
+ playsound(cult_girder, 'sound/items/weapons/resonator_blast.ogg', 40, TRUE, ignore_walls = FALSE)
cultist.visible_message(
span_warning("[cultist] strikes [cult_girder] with [parent]!"),
span_notice("You demolish [cult_girder].")
@@ -320,7 +320,7 @@
if(scribe_failed)
failed = CALLBACK(GLOBAL_PROC, scribe_failed)
- SEND_SOUND(cultist, sound('sound/weapons/slice.ogg', 0, 1, 10))
+ SEND_SOUND(cultist, sound('sound/items/weapons/slice.ogg', 0, 1, 10))
if(!do_after(cultist, scribe_mod, target = get_turf(cultist), timed_action_flags = IGNORE_SLOWDOWNS))
cleanup_shields()
failed?.Invoke()
@@ -371,7 +371,7 @@
var/area/summon_location = get_area(cultist)
priority_announce(
text = "Figments from an eldritch god are being summoned by [cultist.real_name] into [summon_location.get_original_area_name()] from an unknown dimension. Disrupt the ritual at all costs!",
- sound = 'sound/ambience/antag/bloodcult/bloodcult_scribe.ogg',
+ sound = 'sound/music/antag/bloodcult/bloodcult_scribe.ogg',
sender_override = "[command_name()] Higher Dimensional Affairs",
has_important_message = TRUE,
)
diff --git a/code/datums/components/deployable.dm b/code/datums/components/deployable.dm
index f45a5b226c39d..ac0f006fb6cde 100644
--- a/code/datums/components/deployable.dm
+++ b/code/datums/components/deployable.dm
@@ -68,7 +68,7 @@
return
new_direction = user.dir //Gets the direction for thing_to_be_deployed if there is a user
source.balloon_alert(user, "deploying...")
- playsound(source, 'sound/items/ratchet.ogg', 50, TRUE)
+ playsound(source, 'sound/items/tools/ratchet.ogg', 50, TRUE)
if(!do_after(user, deploy_time))
return
else // If there is for some reason no user, then the location and direction are set here
diff --git a/code/datums/components/direct_explosive_trap.dm b/code/datums/components/direct_explosive_trap.dm
index e3a125eb928ed..1372c569bbade 100644
--- a/code/datums/components/direct_explosive_trap.dm
+++ b/code/datums/components/direct_explosive_trap.dm
@@ -74,7 +74,7 @@
to_chat(victim, span_bolddanger("[source] was boobytrapped!"))
if (!isnull(saboteur))
to_chat(saboteur, span_bolddanger("Success! Your trap on [source] caught [victim.name]!"))
- playsound(source, 'sound/effects/explosion2.ogg', 200, TRUE)
+ playsound(source, 'sound/effects/explosion/explosion2.ogg', 200, TRUE)
new /obj/effect/temp_visual/explosion(get_turf(source))
EX_ACT(victim, explosive_force)
qdel(src)
diff --git a/code/datums/components/drift.dm b/code/datums/components/drift.dm
deleted file mode 100644
index 7fba50d315178..0000000000000
--- a/code/datums/components/drift.dm
+++ /dev/null
@@ -1,194 +0,0 @@
-///Component that handles drifting
-///Manages a movement loop that actually does the legwork of moving someone
-///Alongside dealing with the post movement input blocking required to make things look nice
-/datum/component/drift
- var/atom/inertia_last_loc
- var/old_dir
- var/datum/move_loop/move/drifting_loop
- ///Should we ignore the next glide rate input we get?
- ///This is to some extent a hack around the order of operations
- ///Around COMSIG_MOVELOOP_POSTPROCESS. I'm sorry lad
- var/ignore_next_glide = FALSE
- ///Have we been delayed? IE: active, but not working right this second?
- var/delayed = FALSE
- var/block_inputs_until
-
-/// Accepts three args. The direction to drift in, if the drift is instant or not, and if it's not instant, the delay on the start
-/datum/component/drift/Initialize(direction, instant = FALSE, start_delay = 0)
- if(!ismovable(parent))
- return COMPONENT_INCOMPATIBLE
- . = ..()
-
- var/flags = MOVEMENT_LOOP_OUTSIDE_CONTROL
- if(instant)
- flags |= MOVEMENT_LOOP_START_FAST
- var/atom/movable/movable_parent = parent
- drifting_loop = GLOB.move_manager.move(moving = parent, direction = direction, delay = movable_parent.inertia_move_delay, subsystem = SSspacedrift, priority = MOVEMENT_SPACE_PRIORITY, flags = flags)
-
- if(!drifting_loop) //Really want to qdel here but can't
- return COMPONENT_INCOMPATIBLE
-
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_START, PROC_REF(drifting_start))
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_STOP, PROC_REF(drifting_stop))
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(before_move))
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(after_move))
- RegisterSignal(drifting_loop, COMSIG_QDELETING, PROC_REF(loop_death))
- RegisterSignal(movable_parent, COMSIG_MOVABLE_NEWTONIAN_MOVE, PROC_REF(newtonian_impulse))
- if(drifting_loop.status & MOVELOOP_STATUS_RUNNING)
- drifting_start(drifting_loop) // There's a good chance it'll autostart, gotta catch that
-
- var/visual_delay = movable_parent.inertia_move_delay
-
- // Start delay is essentially a more granular version of instant
- // Isn't used in the standard case, just for things that have odd wants
- if(!instant && start_delay)
- drifting_loop.pause_for(start_delay)
- visual_delay = start_delay
-
- apply_initial_visuals(visual_delay)
-
-/datum/component/drift/Destroy()
- inertia_last_loc = null
- if(!QDELETED(drifting_loop))
- qdel(drifting_loop)
- drifting_loop = null
- var/atom/movable/movable_parent = parent
- movable_parent.inertia_moving = FALSE
- return ..()
-
-/datum/component/drift/proc/apply_initial_visuals(visual_delay)
- // If something "somewhere" doesn't want us to apply our glidesize delays, don't
- if(SEND_SIGNAL(parent, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT) & DRIFT_VISUAL_FAILED)
- return
-
- // Ignore the next glide because it's literally just us
- ignore_next_glide = TRUE
- var/atom/movable/movable_parent = parent
- movable_parent.set_glide_size(MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSspacedrift.visual_delay))
- if(ismob(parent))
- var/mob/mob_parent = parent
- //Ok this is slightly weird, but basically, we need to force the client to glide at our rate
- //Make sure moving into a space move looks like a space move essentially
- //There is an inbuilt assumption that gliding will be added as a part of a move call, but eh
- //It's ok if it's not, it's just important if it is.
- mob_parent.client?.visual_delay = MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSspacedrift.visual_delay)
-
-/datum/component/drift/proc/newtonian_impulse(datum/source, inertia_direction)
- SIGNAL_HANDLER
- var/atom/movable/movable_parent = parent
- inertia_last_loc = movable_parent.loc
- if(drifting_loop)
- drifting_loop.direction = inertia_direction
- if(!inertia_direction)
- qdel(src)
- return COMPONENT_MOVABLE_NEWTONIAN_BLOCK
-
-/datum/component/drift/proc/drifting_start()
- SIGNAL_HANDLER
- var/atom/movable/movable_parent = parent
- inertia_last_loc = movable_parent.loc
- RegisterSignal(movable_parent, COMSIG_MOVABLE_MOVED, PROC_REF(handle_move))
- // We will use glide size to intuit how long to delay our loop's next move for
- // This way you can't ride two movements at once while drifting, since that'd be dumb as fuck
- RegisterSignal(movable_parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(handle_glidesize_update))
- // If you stop pulling something mid drift, I want it to retain that momentum
- RegisterSignal(movable_parent, COMSIG_ATOM_NO_LONGER_PULLING, PROC_REF(stopped_pulling))
-
-/datum/component/drift/proc/drifting_stop()
- SIGNAL_HANDLER
- var/atom/movable/movable_parent = parent
- movable_parent.inertia_moving = FALSE
- ignore_next_glide = FALSE
- UnregisterSignal(movable_parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, COMSIG_ATOM_NO_LONGER_PULLING))
-
-/datum/component/drift/proc/before_move(datum/source)
- SIGNAL_HANDLER
- var/atom/movable/movable_parent = parent
- movable_parent.inertia_moving = TRUE
- old_dir = movable_parent.dir
- delayed = FALSE
-
-/datum/component/drift/proc/after_move(datum/source, result, visual_delay)
- SIGNAL_HANDLER
- if(result == MOVELOOP_FAILURE)
- qdel(src)
- return
-
- var/atom/movable/movable_parent = parent
- movable_parent.setDir(old_dir)
- movable_parent.inertia_moving = FALSE
- if(movable_parent.Process_Spacemove(drifting_loop.direction, continuous_move = TRUE))
- glide_to_halt(visual_delay)
- return
-
- inertia_last_loc = movable_parent.loc
- ignore_next_glide = TRUE
-
-/datum/component/drift/proc/loop_death(datum/source)
- SIGNAL_HANDLER
- drifting_loop = null
- UnregisterSignal(parent, COMSIG_MOVABLE_NEWTONIAN_MOVE) // We won't block a component from replacing us anymore
-
-/datum/component/drift/proc/handle_move(datum/source, old_loc)
- SIGNAL_HANDLER
- // This can happen, because signals once sent cannot be stopped
- if(QDELETED(src))
- return
- var/atom/movable/movable_parent = parent
- if(!isturf(movable_parent.loc))
- qdel(src)
- return
- if(movable_parent.inertia_moving)
- return
- if(!movable_parent.Process_Spacemove(drifting_loop.direction, continuous_move = TRUE))
- return
- qdel(src)
-
-/// We're going to take the passed in glide size
-/// and use it to manually delay our loop for that period
-/// to allow the other movement to complete
-/datum/component/drift/proc/handle_glidesize_update(datum/source, glide_size)
- SIGNAL_HANDLER
- // If we aren't drifting, or this is us, fuck off
- var/atom/movable/movable_parent = parent
- if(!drifting_loop || movable_parent.inertia_moving)
- return
- // If we are drifting, but this set came from the moveloop itself, drop the input
- // I'm sorry man
- if(ignore_next_glide)
- ignore_next_glide = FALSE
- return
- var/glide_delay = round(world.icon_size / glide_size, 1) * world.tick_lag
- drifting_loop.pause_for(glide_delay)
- delayed = TRUE
-
-/// If we're pulling something and stop, we want it to continue at our rate and such
-/datum/component/drift/proc/stopped_pulling(datum/source, atom/movable/was_pulling)
- SIGNAL_HANDLER
- // This does mean it falls very slightly behind, but otherwise they'll potentially run into us
- var/next_move_in = drifting_loop.timer - world.time + world.tick_lag
- was_pulling.newtonian_move(drifting_loop.direction, start_delay = next_move_in)
-
-/datum/component/drift/proc/glide_to_halt(glide_for)
- if(!ismob(parent))
- qdel(src)
- return
-
- var/mob/mob_parent = parent
- var/client/our_client = mob_parent.client
- // If we're not active, don't do the glide because it'll look dumb as fuck
- if(!our_client || delayed)
- qdel(src)
- return
-
- block_inputs_until = world.time + glide_for
- QDEL_IN(src, glide_for + 1)
- qdel(drifting_loop)
- RegisterSignal(parent, COMSIG_MOB_CLIENT_PRE_MOVE, PROC_REF(allow_final_movement))
-
-/datum/component/drift/proc/allow_final_movement(datum/source)
- // Some things want to allow movement out of spacedrift, we should let them
- if(SEND_SIGNAL(parent, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT) & DRIFT_ALLOW_INPUT)
- return
- if(world.time < block_inputs_until)
- return COMSIG_MOB_CLIENT_BLOCK_PRE_MOVE
diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm
index 84bfa8dfad0f0..6fc61db5e76a6 100644
--- a/code/datums/components/embedded.dm
+++ b/code/datums/components/embedded.dm
@@ -57,7 +57,7 @@
var/damage = weapon.throwforce
if(harmful)
victim.throw_alert(ALERT_EMBEDDED_OBJECT, /atom/movable/screen/alert/embeddedobject)
- playsound(victim,'sound/weapons/bladeslice.ogg', 40)
+ playsound(victim,'sound/items/weapons/bladeslice.ogg', 40)
if (limb.can_bleed())
weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody!
damage += weapon.w_class * embed_data.impact_pain_mult
diff --git a/code/datums/components/fish_growth.dm b/code/datums/components/fish_growth.dm
index bc7c8a9869e44..3ec1427fd51a8 100644
--- a/code/datums/components/fish_growth.dm
+++ b/code/datums/components/fish_growth.dm
@@ -11,43 +11,90 @@
var/use_drop_loc
///Is the parent deleted once the result is spawned?
var/del_on_grow
+ ///Will the result inherit the name of the fish if that was changed from the initial name.
+ var/inherit_name
-/datum/component/fish_growth/Initialize(result_type, growth_rate, use_drop_loc = TRUE, del_on_grow = TRUE)
+/datum/component/fish_growth/Initialize(result_type, growth_time, use_drop_loc = TRUE, del_on_grow = TRUE, inherit_name = TRUE)
. = ..()
if(!isfish(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_FISH_LIFE, PROC_REF(on_fish_life))
src.result_type = result_type
- src.growth_rate = growth_rate
+ growth_rate = 100 / growth_time
src.use_drop_loc = use_drop_loc
src.del_on_grow = del_on_grow
+ src.inherit_name = inherit_name
-/datum/component/fish_growth/CheckDupeComponent(result_type, growth_rate, use_drop_loc = TRUE, del_on_grow = TRUE)
+/datum/component/fish_growth/CheckDupeComponent(
+ datum/component/fish_growth/new_growth, // will be null
+ result_type,
+ growth_time,
+ use_drop_loc = TRUE,
+ del_on_grow = TRUE,
+ inherit_name = TRUE,
+)
if(result_type == src.result_type)
- src.growth_rate = growth_rate
+ growth_rate = 100 / growth_time
return TRUE //copy the growth rate and kill the new component
return FALSE
+/datum/component/fish_growth/RegisterWithParent()
+ var/evo_growth = ispath(result_type, /datum/fish_evolution)
+ RegisterSignal(parent, COMSIG_FISH_LIFE, PROC_REF(on_fish_life))
+ if(!evo_growth)
+ return
+ var/datum/fish_evolution/evolution = GLOB.fish_evolutions[result_type]
+ evolution.RegisterSignal(parent, COMSIG_FISH_BEFORE_GROWING, TYPE_PROC_REF(/datum/fish_evolution, growth_checks))
+ evolution.register_fish(parent)
+
+/datum/component/fish_growth/UnregisterFromParent()
+ UnregisterSignal(parent, list(COMSIG_FISH_LIFE, COMSIG_FISH_BEFORE_GROWING))
+
/datum/component/fish_growth/proc/on_fish_life(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(SEND_SIGNAL(source, COMSIG_FISH_BEFORE_GROWING, seconds_per_tick) & COMPONENT_DONT_GROW)
+ if(source.status == FISH_DEAD) //It died just now.
return
- maturation += growth_rate * seconds_per_tick
+ var/deciseconds_elapsed = seconds_per_tick * 10
+ var/growth = growth_rate * deciseconds_elapsed
+ if(SEND_SIGNAL(source, COMSIG_FISH_BEFORE_GROWING, seconds_per_tick, growth) & COMPONENT_DONT_GROW)
+ return
+ maturation += growth
if(maturation >= 100)
finish_growing(source)
/datum/component/fish_growth/proc/finish_growing(obj/item/fish/source)
var/atom/location = use_drop_loc ? source.drop_location() : source.loc
- var/atom/movable/result = new result_type (location)
- if(location != source.loc)
- result.visible_message(span_boldnotice("\A [result] jumps out of [source.loc]!"))
- playsound(result, 'sound/effects/fish_splash.ogg', 60)
- if(isbasicmob(result))
- for(var/trait_type in source.fish_traits)
- var/datum/fish_trait/trait = GLOB.fish_traits[trait_type]
- trait.apply_to_mob(result)
-
- addtimer(CALLBACK(result, TYPE_PROC_REF(/mob/living/basic, hop_on_nearby_turf)), 0.1 SECONDS)
+ var/is_evo = ispath(result_type, /datum/fish_evolution)
+ var/atom/movable/result
+ if(is_evo)
+ var/datum/fish_evolution/evolution = GLOB.fish_evolutions[result_type]
+ result = source.create_offspring(evolution.new_fish_type, evolution = evolution)
+ var/obj/item/fish/fishie = result
+ fishie.breeding_wait = source.breeding_wait
+ fishie.last_feeding = source.last_feeding
+ var/health_percent = source.health / initial(source.health)
+ fishie.adjust_health(fishie.health * health_percent)
+ else
+ result = new result_type (location)
+ if(location != source.loc)
+ result.visible_message(span_boldnotice("\A [result] jumps out of [source.loc]!"))
+ playsound(result, 'sound/effects/fish_splash.ogg', 60)
+ if(isbasicmob(result))
+ for(var/trait_type in source.fish_traits)
+ var/datum/fish_trait/trait = GLOB.fish_traits[trait_type]
+ trait.apply_to_mob(result)
+
+ addtimer(CALLBACK(result, TYPE_PROC_REF(/mob/living/basic, hop_on_nearby_turf)), 0.1 SECONDS)
+
+ if(is_evo || location == source.loc)
+ var/message_verb = del_on_grow ? "grows into" : "generates"
+ location.visible_message(span_notice("[source] [message_verb] \a [result]."), vision_distance = 3)
+
+ if(inherit_name && source.name != initial(source.name))
+ if(ismob(result))
+ var/mob/mob = result
+ mob.fully_replace_character_name(mob.name, source.name)
+ else
+ result.name = source.name
SEND_SIGNAL(source, COMSIG_FISH_FINISH_GROWING, result)
diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm
index 5163ca69dacd9..ecd2f1ff836fd 100644
--- a/code/datums/components/infective.dm
+++ b/code/datums/components/infective.dm
@@ -37,7 +37,7 @@
src.weak_infection_chance = weak_infection_chance
/datum/component/infective/Destroy()
- QDEL_NULL(diseases)
+ QDEL_LIST(diseases)
return ..()
/datum/component/infective/RegisterWithParent()
diff --git a/code/datums/components/interaction_booby_trap.dm b/code/datums/components/interaction_booby_trap.dm
index 2ae22ffbb5ae5..ef8d3c78cfcb4 100644
--- a/code/datums/components/interaction_booby_trap.dm
+++ b/code/datums/components/interaction_booby_trap.dm
@@ -26,7 +26,7 @@
/datum/component/interaction_booby_trap/Initialize(
explosion_light_range = 3,
explosion_heavy_range = 1, // So we destroy some machine components
- triggered_sound = 'sound/machines/triple_beep.ogg',
+ triggered_sound = 'sound/machines/beep/triple_beep.ogg',
trigger_delay = 0.5 SECONDS,
sound_loop_type = /datum/looping_sound/trapped_machine_beep,
defuse_tool = TOOL_SCREWDRIVER,
diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm
index 9562f161fb4a8..0f70e0d80b717 100644
--- a/code/datums/components/irradiated.dm
+++ b/code/datums/components/irradiated.dm
@@ -51,11 +51,13 @@
/datum/component/irradiated/RegisterWithParent()
RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean))
RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, PROC_REF(on_geiger_counter_scan))
+ RegisterSignal(parent, COMSIG_LIVING_HEALTHSCAN, PROC_REF(on_healthscan))
/datum/component/irradiated/UnregisterFromParent()
UnregisterSignal(parent, list(
COMSIG_COMPONENT_CLEAN_ACT,
COMSIG_GEIGER_COUNTER_SCAN,
+ COMSIG_LIVING_HEALTHSCAN,
))
/datum/component/irradiated/Destroy(force)
@@ -186,6 +188,12 @@
return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL
+/datum/component/irradiated/proc/on_healthscan(datum/source, list/render_list, advanced, mob/user, mode, tochat)
+ SIGNAL_HANDLER
+
+ render_list += conditional_tooltip("Subject is irradiated.", "Supply antiradiation or antitoxin, such as [/datum/reagent/medicine/potass_iodide::name] or [/datum/reagent/medicine/pen_acid::name].", tochat)
+ render_list += " "
+
/atom/movable/screen/alert/irradiated
name = "Irradiated"
desc = "You're irradiated! Heal your toxins quick, and stand under a shower to halt the incoming damage."
diff --git a/code/datums/components/jetpack.dm b/code/datums/components/jetpack.dm
index 437660abc82e0..1da8822091b90 100644
--- a/code/datums/components/jetpack.dm
+++ b/code/datums/components/jetpack.dm
@@ -17,17 +17,25 @@
var/datum/effect_system/trail_follow/trail
/// The typepath to instansiate our trail as, when we need it
var/effect_type
+ /// Drift force applied each movement tick
+ var/drift_force
+ /// Force that applied when stabiliziation is active and the player isn't moving in the same direction as the jetpack
+ var/stabilization_force
+ /// Our current user
+ var/mob/user
/**
* Arguments:
* * stabilize - If we should drift when we finish moving, or sit stable in space]
+ * * drift_force - How much force is applied whenever the user tries to move
+ * * stabilization_force - How much force is applied per tick when we try to stabilize the user
* * activation_signal - Signal we activate on
* * deactivation_signal - Signal we deactivate on
* * return_flag - Flag to return if activation fails
* * check_on_move - Callback we call each time we attempt a move, we expect it to retun true if the move is ok, false otherwise. It expects an arg, TRUE if fuel should be consumed, FALSE othewise
* * effect_type - Type of trail_follow to spawn
*/
-/datum/component/jetpack/Initialize(stabilize, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
+/datum/component/jetpack/Initialize(stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
. = ..()
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
@@ -44,8 +52,10 @@
src.deactivation_signal = deactivation_signal
src.return_flag = return_flag
src.effect_type = effect_type
+ src.drift_force = drift_force
+ src.stabilization_force = stabilization_force
-/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
+/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type)
UnregisterSignal(parent, src.activation_signal)
if(src.deactivation_signal)
UnregisterSignal(parent, src.deactivation_signal)
@@ -59,6 +69,8 @@
src.deactivation_signal = deactivation_signal
src.return_flag = return_flag
src.effect_type = effect_type
+ src.drift_force = drift_force
+ src.stabilization_force = stabilization_force
if(trail && trail.effect_type != effect_type)
setup_trail(trail.holder)
@@ -66,87 +78,86 @@
/datum/component/jetpack/Destroy(force)
if(trail)
QDEL_NULL(trail)
+ user = null
check_on_move = null
return ..()
/datum/component/jetpack/proc/setup_trail(mob/user)
if(trail)
QDEL_NULL(trail)
-
trail = new effect_type
trail.auto_process = FALSE
trail.set_up(user)
trail.start()
-/datum/component/jetpack/proc/activate(datum/source, mob/user)
+/datum/component/jetpack/proc/activate(datum/source, mob/new_user)
SIGNAL_HANDLER
if(!check_on_move.Invoke(TRUE))
return return_flag
+ user = new_user
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(move_react))
RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react))
- RegisterSignal(user, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(spacemove_react))
- RegisterSignal(user, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT, PROC_REF(block_starting_visuals))
- RegisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT, PROC_REF(ignore_ending_block))
-
+ RegisterSignal(user, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
+ START_PROCESSING(SSnewtonian_movement, src)
setup_trail(user)
-/datum/component/jetpack/proc/deactivate(datum/source, mob/user)
+/datum/component/jetpack/proc/deactivate(datum/source, mob/old_user)
SIGNAL_HANDLER
- UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
- UnregisterSignal(user, COMSIG_MOVABLE_PRE_MOVE)
- UnregisterSignal(user, COMSIG_MOVABLE_SPACEMOVE)
- UnregisterSignal(user, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT)
- UnregisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT)
+ UnregisterSignal(old_user, COMSIG_MOVABLE_MOVED)
+ UnregisterSignal(old_user, COMSIG_MOVABLE_PRE_MOVE)
+ UnregisterSignal(old_user, COMSIG_MOB_CLIENT_MOVE_NOGRAV)
+ STOP_PROCESSING(SSnewtonian_movement, src)
+ user = null
if(trail)
QDEL_NULL(trail)
-/datum/component/jetpack/proc/move_react(mob/user)
+/datum/component/jetpack/proc/move_react(mob/source)
SIGNAL_HANDLER
- if(!user || !user.client)//Don't allow jet self using
- return
- if(!isturf(user.loc))//You can't use jet in nowhere or from mecha/closet
- return
- if(!(user.movement_type & FLOATING) || user.buckled)//You don't want use jet in gravity or while buckled.
+ if (!should_trigger(source))
return
- if(user.pulledby)//You don't must use jet if someone pull you
- return
- if(user.throwing)//You don't must use jet if you thrown
- return
- if(user.client.intended_direction)//You use jet when press keys. yes.
- thrust()
-/datum/component/jetpack/proc/pre_move_react(mob/user)
- SIGNAL_HANDLER
- if(!trail)
- return FALSE
- trail.oldposition = get_turf(user)
+ if(source.client.intended_direction && check_on_move.Invoke(FALSE))//You use jet when press keys. yes.
+ trail.generate_effect()
-/datum/component/jetpack/proc/spacemove_react(mob/user, movement_dir, continuous_move)
- SIGNAL_HANDLER
- if(!continuous_move && movement_dir)
- return COMSIG_MOVABLE_STOP_SPACEMOVE
- // Check if we have the fuel to stop this. Do NOT cosume any fuel, just check
- // This is done because things other then us can use our fuel
- if(stabilize && check_on_move.Invoke(FALSE))
- return COMSIG_MOVABLE_STOP_SPACEMOVE
-
-/// Returns true if the thrust went well, false otherwise
-/datum/component/jetpack/proc/thrust()
- if(!check_on_move.Invoke(TRUE))
+/datum/component/jetpack/proc/should_trigger(mob/source)
+ if(!source || !source.client)//Don't allow jet self using
+ return FALSE
+ if(!isturf(source.loc))//You can't use jet in nowhere or from mecha/closet
+ return FALSE
+ if(!(source.movement_type & FLOATING) || source.buckled)//You don't want use jet in gravity or while buckled.
+ return FALSE
+ if(source.pulledby)//You don't must use jet if someone pull you
+ return FALSE
+ if(source.throwing)//You don't must use jet if you thrown
return FALSE
- trail.generate_effect()
return TRUE
-/// Basically, tell the drift component not to do its starting visuals, because they look dumb for us
-/datum/component/jetpack/proc/block_starting_visuals(datum/source)
+/datum/component/jetpack/proc/pre_move_react(mob/source)
SIGNAL_HANDLER
- return DRIFT_VISUAL_FAILED
+ if(!trail)
+ return FALSE
+ trail.oldposition = get_turf(source)
+
+/datum/component/jetpack/process(seconds_per_tick)
+ if (!should_trigger(user) || !stabilize || isnull(user.drift_handler))
+ return
-/// If we're on, don't let the drift component block movements at the end since we can speed
-/datum/component/jetpack/proc/ignore_ending_block(datum/source)
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / user.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ user.drift_handler.stabilize_drift(user.client.intended_direction ? dir2angle(user.client.intended_direction) : null, user.client.intended_direction ? max_drift_force : 0, stabilization_force * (seconds_per_tick * 1 SECONDS))
+
+/datum/component/jetpack/proc/on_client_move(mob/source, list/move_args)
SIGNAL_HANDLER
- return DRIFT_ALLOW_INPUT
+
+ if (!should_trigger(source))
+ return
+
+ if (!check_on_move.Invoke(TRUE))
+ return
+
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = drift_force, controlled_cap = max_drift_force)
+ source.setDir(source.client.intended_direction)
diff --git a/code/datums/components/jukebox.dm b/code/datums/components/jukebox.dm
index 545b9daab0b1e..071e284756f95 100644
--- a/code/datums/components/jukebox.dm
+++ b/code/datums/components/jukebox.dm
@@ -400,7 +400,7 @@
// Default track supplied for testing and also because it's a banger
/datum/track/default
- song_path = 'sound/ambience/title3.ogg'
+ song_path = 'sound/music/lobby_music/title3.ogg'
song_name = "Tintin on the Moon"
song_length = 3 MINUTES + 52 SECONDS
song_beat = 1 SECONDS
diff --git a/code/datums/components/mob_harvest.dm b/code/datums/components/mob_harvest.dm
index b9f9f86350be5..242161027b069 100644
--- a/code/datums/components/mob_harvest.dm
+++ b/code/datums/components/mob_harvest.dm
@@ -25,7 +25,7 @@
///how long it takes to harvest from the mob
var/item_harvest_time = 5 SECONDS
///typepath of harvest sound
- var/item_harvest_sound = 'sound/items/welder2.ogg'
+ var/item_harvest_sound = 'sound/items/tools/welder2.ogg'
//harvest_type, produced_item_typepath and speedup_type are typepaths, not reference
/datum/component/mob_harvest/Initialize(harvest_tool, fed_item, produced_item_typepath, produced_item_desc, max_ready, item_generation_wait, item_reduction_time, item_harvest_time, item_harvest_sound)
diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm
index c59be2ed27651..a1be66654a2c0 100644
--- a/code/datums/components/plumbing/_plumbing.dm
+++ b/code/datums/components/plumbing/_plumbing.dm
@@ -343,7 +343,7 @@
parent_movable.update_appearance()
if(changer)
- playsound(changer, 'sound/items/ratchet.ogg', 10, TRUE) //sound
+ playsound(changer, 'sound/items/tools/ratchet.ogg', 10, TRUE) //sound
//quickly disconnect and reconnect the network.
if(active)
diff --git a/code/datums/components/ranged_attacks.dm b/code/datums/components/ranged_attacks.dm
index 2f9c6cb822da5..58883ce58111f 100644
--- a/code/datums/components/ranged_attacks.dm
+++ b/code/datums/components/ranged_attacks.dm
@@ -20,7 +20,7 @@
/datum/component/ranged_attacks/Initialize(
casing_type,
projectile_type,
- projectile_sound = 'sound/weapons/gun/pistol/shot.ogg',
+ projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg',
burst_shots,
burst_intervals = 0.2 SECONDS,
cooldown_time = 3 SECONDS,
diff --git a/code/datums/components/regenerative_shield.dm b/code/datums/components/regenerative_shield.dm
index 5ecf670820381..34d305b27e13f 100644
--- a/code/datums/components/regenerative_shield.dm
+++ b/code/datums/components/regenerative_shield.dm
@@ -59,7 +59,7 @@
if(damage >= damage_threshold || number_of_hits <= 0)
return NONE
- playsound(get_turf(parent), 'sound/weapons/tap.ogg', 20)
+ playsound(get_turf(parent), 'sound/items/weapons/tap.ogg', 20)
new /obj/effect/temp_visual/guardian/phase/out(get_turf(parent))
number_of_hits = max(0, number_of_hits - 1)
if(number_of_hits <= 0)
@@ -71,14 +71,14 @@
for(var/obj/effect/my_effect as anything in shield_overlays)
animate(my_effect, alpha = 0, time = 3 SECONDS)
my_effect.remove_filter(SHIELD_FILTER)
- playsound(parent, 'sound/mecha/mech_shield_drop.ogg', 20)
+ playsound(parent, 'sound/vehicles/mecha/mech_shield_drop.ogg', 20)
/datum/component/regenerative_shield/proc/enable_shield()
number_of_hits = initial(number_of_hits)
for(var/obj/effect/my_effect as anything in shield_overlays)
animate(my_effect, alpha = 255, time = 3 SECONDS)
addtimer(CALLBACK(src, PROC_REF(apply_filter_effects), my_effect), 5 SECONDS)
- playsound(parent, 'sound/mecha/mech_shield_raise.ogg', 20)
+ playsound(parent, 'sound/vehicles/mecha/mech_shield_raise.ogg', 20)
/datum/component/regenerative_shield/proc/apply_filter_effects(obj/effect/new_effect)
if(isnull(new_effect))
diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm
index 37b62d1aa0e3c..969e6a9a3cec1 100644
--- a/code/datums/components/religious_tool.dm
+++ b/code/datums/components/religious_tool.dm
@@ -159,15 +159,15 @@
/datum/component/religious_tool/proc/perform_rite(mob/living/user, path)
if(user.mind.holy_role < HOLY_ROLE_PRIEST)
if(user.mind.holy_role == HOLY_ROLE_DEACON)
- to_chat(user, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.")
+ to_chat(user, span_warning("You are merely a deacon of [GLOB.deity], and therefore cannot perform rites."))
else
- to_chat(user, "You are not holy, and therefore cannot perform rites.")
+ to_chat(user, span_warning("You are not holy, and therefore cannot perform rites."))
return
if(rite_types_allowlist && !is_path_in_list(path, rite_types_allowlist))
to_chat(user, span_warning("This cannot perform that kind of rite."))
return
if(performing_rite)
- to_chat(user, "There is a rite currently being performed here already.")
+ to_chat(user, span_notice("There is a rite currently being performed here already."))
return
if(!user.can_perform_action(parent, FORBID_TELEKINESIS_REACH))
to_chat(user,span_warning("You are not close enough to perform the rite."))
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index ae4d29e22f5f9..7a18e923afebe 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -389,7 +389,7 @@
if(human_user && is_clown_job(human_user.mind?.assigned_role))
// there's a new sheriff in town
- playsound(movable_parent, 'sound/creatures/pony/clown_gallup.ogg', 50)
+ playsound(movable_parent, 'sound/mobs/non-humanoids/pony/clown_gallup.ogg', 50)
COOLDOWN_START(src, pony_trot_cooldown, 500 MILLISECONDS)
/datum/component/riding/creature/bear/handle_specials()
diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm
index f7ee78673e057..3c55eae46688a 100644
--- a/code/datums/components/riding/riding_vehicle.dm
+++ b/code/datums/components/riding/riding_vehicle.dm
@@ -15,19 +15,19 @@
if(!keycheck(rider))
if(z_move_flags & ZMOVE_FEEDBACK)
- to_chat(rider, "[movable_parent] has no key inserted!")
+ to_chat(rider, span_warning("[movable_parent] has no key inserted!"))
return COMPONENT_RIDDEN_STOP_Z_MOVE
if(HAS_TRAIT(rider, TRAIT_INCAPACITATED))
if(z_move_flags & ZMOVE_FEEDBACK)
- to_chat(rider, "You cannot operate [movable_parent] right now!")
+ to_chat(rider, span_warning("You cannot operate [movable_parent] right now!"))
return COMPONENT_RIDDEN_STOP_Z_MOVE
if(ride_check_flags & RIDER_NEEDS_LEGS && HAS_TRAIT(rider, TRAIT_FLOORED))
if(z_move_flags & ZMOVE_FEEDBACK)
- to_chat(rider, "You can't seem to manage that while unable to stand up enough to move [movable_parent]...")
+ to_chat(rider, span_warning("You can't seem to manage that while unable to stand up enough to move [movable_parent]..."))
return COMPONENT_RIDDEN_STOP_Z_MOVE
if(ride_check_flags & RIDER_NEEDS_ARMS && HAS_TRAIT(rider, TRAIT_HANDS_BLOCKED))
if(z_move_flags & ZMOVE_FEEDBACK)
- to_chat(rider, "You can't seem to hold onto [movable_parent] to move it...")
+ to_chat(rider, span_warning("You can't seem to hold onto [movable_parent] to move it..."))
return COMPONENT_RIDDEN_STOP_Z_MOVE
return COMPONENT_RIDDEN_ALLOW_Z_MOVE
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index 6ff8197e09319..40df294af12a8 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -76,7 +76,7 @@
var/obj/rotated_obj = parent
rotated_obj.setDir(turn(rotated_obj.dir, degrees))
if(rotation_flags & ROTATION_REQUIRE_WRENCH)
- playsound(rotated_obj, 'sound/items/ratchet.ogg', 50, TRUE)
+ playsound(rotated_obj, 'sound/items/tools/ratchet.ogg', 50, TRUE)
post_rotation.Invoke(user, degrees)
diff --git a/code/datums/components/scope.dm b/code/datums/components/scope.dm
index 087eb0c06d24c..903f8d9bd917f 100644
--- a/code/datums/components/scope.dm
+++ b/code/datums/components/scope.dm
@@ -164,7 +164,7 @@
if(HAS_TRAIT(user, TRAIT_USER_SCOPED))
user.balloon_alert(user, "already zoomed!")
return
- user.playsound_local(parent, 'sound/weapons/scope.ogg', 75, TRUE)
+ user.playsound_local(parent, 'sound/items/weapons/scope.ogg', 75, TRUE)
tracker = user.overlay_fullscreen("scope", /atom/movable/screen/fullscreen/cursor_catcher/scope, isgun(parent))
tracker.assign_to_mob(user, range_modifier)
tracker_owner_ckey = user.ckey
@@ -210,7 +210,7 @@
))
REMOVE_TRAIT(user, TRAIT_USER_SCOPED, REF(src))
- user.playsound_local(parent, 'sound/weapons/scope.ogg', 75, TRUE, frequency = -1)
+ user.playsound_local(parent, 'sound/items/weapons/scope.ogg', 75, TRUE, frequency = -1)
user.clear_fullscreen("scope")
// if the client has ended up in another mob, find that mob so we can fix their cursor
diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm
index da83c4ad2d29d..53fc330806245 100644
--- a/code/datums/components/shielded.dm
+++ b/code/datums/components/shielded.dm
@@ -101,7 +101,7 @@
var/obj/item/item_parent = parent
COOLDOWN_START(src, charge_add_cd, charge_increment_delay)
adjust_charge(charge_recovery) // set the number of charges to current + recovery per increment, clamped from zero to max_charges
- playsound(item_parent, 'sound/magic/charge.ogg', 50, TRUE)
+ playsound(item_parent, 'sound/effects/magic/charge.ogg', 50, TRUE)
if(current_charges == max_charges)
playsound(item_parent, 'sound/machines/ding.ogg', 50, TRUE)
diff --git a/code/datums/components/sisyphus_awarder.dm b/code/datums/components/sisyphus_awarder.dm
index 2a18a2889fc65..854ed26355f25 100644
--- a/code/datums/components/sisyphus_awarder.dm
+++ b/code/datums/components/sisyphus_awarder.dm
@@ -65,4 +65,4 @@
"reverse_dropoff_coords" = list(bottom_of_the_hill.x, bottom_of_the_hill.y, bottom_of_the_hill.z),
))
- SEND_SOUND(sisyphus, 'sound/ambience/music/sisyphus/sisyphus.ogg')
+ SEND_SOUND(sisyphus, 'sound/music/sisyphus/sisyphus.ogg')
diff --git a/code/datums/components/sitcomlaughter.dm b/code/datums/components/sitcomlaughter.dm
index 02ed818ea3044..bc69a08b80c9d 100644
--- a/code/datums/components/sitcomlaughter.dm
+++ b/code/datums/components/sitcomlaughter.dm
@@ -4,7 +4,7 @@
proctype = PROC_REF(EngageInComedy)
mobtype = /mob/living
///Sounds used for when user has a sitcom action occur
- var/list/comedysounds = list('sound/items/SitcomLaugh1.ogg', 'sound/items/SitcomLaugh2.ogg', 'sound/items/SitcomLaugh3.ogg')
+ var/list/comedysounds = list('sound/items/sitcom_laugh/sitcomLaugh1.ogg', 'sound/items/sitcom_laugh/sitcomLaugh2.ogg', 'sound/items/sitcom_laugh/sitcomLaugh3.ogg')
///Invoked in EngageInComedy is ran
var/datum/callback/post_comedy_callback
///Cooldown for inbetween laughs
diff --git a/code/datums/components/soapbox.dm b/code/datums/components/soapbox.dm
index 4d4577d5e12c8..9d15e5e69292c 100644
--- a/code/datums/components/soapbox.dm
+++ b/code/datums/components/soapbox.dm
@@ -14,15 +14,17 @@
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(parent_moved))
///Applies loud speech to our movable when entering the turf our parent is on
-/datum/component/soapbox/proc/on_loc_entered(datum/source, atom/movable/soapbox_arrive)
+/datum/component/soapbox/proc/on_loc_entered(datum/source, mob/living/soapbox_arrive)
SIGNAL_HANDLER
+ if(!isliving(soapbox_arrive))
+ return
if(QDELETED(soapbox_arrive))
return
RegisterSignal(soapbox_arrive, COMSIG_MOB_SAY, PROC_REF(soapbox_speech))
soapboxers += soapbox_arrive
///Takes away loud speech from our movable when it leaves the turf our parent is on
-/datum/component/soapbox/proc/on_loc_exited(datum/source, atom/movable/soapbox_leave)
+/datum/component/soapbox/proc/on_loc_exited(datum/source, mob/living/soapbox_leave)
SIGNAL_HANDLER
if(soapbox_leave in soapboxers)
UnregisterSignal(soapbox_leave, COMSIG_MOB_SAY)
diff --git a/code/datums/components/spin2win.dm b/code/datums/components/spin2win.dm
index 4524b403355f8..ce9dfa360b323 100644
--- a/code/datums/components/spin2win.dm
+++ b/code/datums/components/spin2win.dm
@@ -84,7 +84,7 @@
if(start_spin_message)
var/message = replacetext(start_spin_message, "%USER", spinning_user)
spinning_user.visible_message(message)
- playsound(spinning_user, 'sound/weapons/fwoosh.ogg', 75, FALSE)
+ playsound(spinning_user, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
stop_spinning_timer_id = addtimer(CALLBACK(src, PROC_REF(stop_spinning), spinning_user), spin_duration, TIMER_STOPPABLE|TIMER_DELETE_ME)
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_spin_equipped))
RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_spin_dropped))
@@ -95,7 +95,7 @@
STOP_PROCESSING(SSprocessing, src)
UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
deltimer(stop_spinning_timer_id)
- playsound(user, 'sound/weapons/fwoosh.ogg', 75, FALSE)
+ playsound(user, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
if(user && end_spin_message)
var/message = replacetext(end_spin_message, "%USER", user)
user.visible_message(message)
@@ -111,7 +111,7 @@
return PROCESS_KILL
var/mob/living/item_owner = spinning_item.loc
item_owner.emote("spin")
- playsound(item_owner, 'sound/weapons/fwoosh.ogg', 75, FALSE)
+ playsound(item_owner, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
for(var/mob/living/victim in orange(1, item_owner))
spinning_item.attack(victim, item_owner)
diff --git a/code/datums/components/spirit_holding.dm b/code/datums/components/spirit_holding.dm
index b510fde3523a4..11ceb778313a9 100644
--- a/code/datums/components/spirit_holding.dm
+++ b/code/datums/components/spirit_holding.dm
@@ -149,7 +149,7 @@
return // just in case
var/atom/movable/exorcised_movable = parent
to_chat(exorcist, span_notice("You begin to exorcise [parent]..."))
- playsound(parent, 'sound/hallucinations/veryfar_noise.ogg',40,TRUE)
+ playsound(parent, 'sound/effects/hallucinations/veryfar_noise.ogg',40,TRUE)
if(!do_after(exorcist, 4 SECONDS, target = exorcised_movable))
return
playsound(parent, 'sound/effects/pray_chaplain.ogg',60,TRUE)
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 94521486bcc5f..afd8cce49e8c7 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -1,5 +1,5 @@
/datum/component/squeak
- var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
+ var/static/list/default_squeak_sounds = list('sound/items/toy_squeak/toysqueak1.ogg'=1, 'sound/items/toy_squeak/toysqueak2.ogg'=1, 'sound/items/toy_squeak/toysqueak3.ogg'=1)
var/list/override_squeak_sounds
var/mob/holder
diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm
index 35f67d9cd0295..8b59717da70b8 100644
--- a/code/datums/components/stationloving.dm
+++ b/code/datums/components/stationloving.dm
@@ -61,7 +61,7 @@
CRASH("Unable to find a blobstart landmark for [type] to relocate [parent].")
var/atom/movable/movable_parent = parent
- playsound(movable_parent, 'sound/machines/synth_no.ogg', 5, TRUE)
+ playsound(movable_parent, 'sound/machines/synth/synth_no.ogg', 5, TRUE)
var/mob/holder = get(movable_parent, /mob)
if(holder)
diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm
index 69ade1e2f1b56..4821f70d006d3 100644
--- a/code/datums/components/summoning.dm
+++ b/code/datums/components/summoning.dm
@@ -24,7 +24,7 @@
max_mobs = 3,
spawn_delay = 10 SECONDS,
spawn_text = "appears out of nowhere",
- spawn_sound = 'sound/magic/summon_magic.ogg',
+ spawn_sound = 'sound/effects/magic/summon_magic.ogg',
list/faction,
)
if(!isitem(parent) && !ishostile(parent) && !isgun(parent) && !ismachinery(parent) && !isstructure(parent) && !isprojectilespell(parent))
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 3d777e888d9fc..baf1efaee1dd5 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -104,7 +104,7 @@
tackling = TRUE
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(checkObstacle))
- playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1)
+ playsound(user, 'sound/items/weapons/thudswoosh.ogg', 40, TRUE, -1)
var/leap_word = isfelinid(user) ? "pounce" : "leap" //If cat, "pounce" instead of "leap".
if(can_see(user, clicked_atom, 7))
@@ -533,7 +533,7 @@
else
user.adjustBruteLoss(40, updating_health=FALSE)
user.adjustStaminaLoss(30)
- playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
+ playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
playsound(user, 'sound/effects/wounds/crack2.ogg', 70, TRUE)
user.emote("scream")
@@ -550,7 +550,7 @@
user.adjustBruteLoss(40, updating_health = FALSE)
user.adjustStaminaLoss(30)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
- playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
+ playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
user.emote("gurgle")
shake_camera(user, 7, 7)
@@ -562,7 +562,7 @@
user.adjustBruteLoss(30)
user.Unconscious(10 SECONDS)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
- user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8)
+ user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8)
shake_camera(user, 6, 6)
user.flash_act(1, TRUE, TRUE, length = 3.5)
@@ -573,7 +573,7 @@
user.adjust_confusion(15 SECONDS)
if(prob(80))
user.gain_trauma(/datum/brain_trauma/mild/concussion)
- user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8)
+ user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8)
user.Knockdown(4 SECONDS)
shake_camera(user, 5, 5)
user.flash_act(1, TRUE, TRUE, length = 2.5)
@@ -593,7 +593,7 @@
user.Knockdown(2 SECONDS)
shake_camera(user, 2, 2)
- playsound(user, 'sound/weapons/smash.ogg', 70, TRUE)
+ playsound(user, 'sound/items/weapons/smash.ogg', 70, TRUE)
/datum/component/tackler/proc/resetTackle()
@@ -603,7 +603,7 @@
///A special case for splatting for handling windows
/datum/component/tackler/proc/splatWindow(mob/living/carbon/user, obj/structure/window/W)
- playsound(user, 'sound/effects/Glasshit.ogg', 140, TRUE)
+ playsound(user, 'sound/effects/glass/Glasshit.ogg', 140, TRUE)
if(W.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows
for(var/i in 1 to speed)
@@ -682,7 +682,7 @@
var/datum/thrownthing/tackle = tackle_ref?.resolve()
- playsound(owner, 'sound/weapons/smash.ogg', 70, TRUE)
+ playsound(owner, 'sound/items/weapons/smash.ogg', 70, TRUE)
if(tackle)
tackle.finalize(hit=TRUE)
resetTackle()
diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm
index e76f5d5b53cd3..b991891930cd1 100644
--- a/code/datums/components/tether.dm
+++ b/code/datums/components/tether.dm
@@ -1,39 +1,180 @@
+/// Creates a tether between two objects that limits movement range. Tether requires LOS and can be adjusted by left/right clicking its
/datum/component/tether
- dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
+ dupe_mode = COMPONENT_DUPE_ALLOWED
+ /// Other side of the tether
var/atom/tether_target
+ /// Maximum (and initial) distance that this tether can be adjusted to
var/max_dist
+ /// What the tether is going to be called
var/tether_name
+ /// Current extension distance
+ var/cur_dist
+ /// Embedded item that the tether "should" originate from
+ var/atom/embed_target
+ /// Beam effect
+ var/datum/beam/tether_beam
-/datum/component/tether/Initialize(atom/tether_target, max_dist = 4, tether_name)
- if(!isliving(parent) || !istype(tether_target) || !tether_target.loc)
+/datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null)
+ if(!ismovable(parent) || !istype(tether_target) || !tether_target.loc)
return COMPONENT_INCOMPATIBLE
+
src.tether_target = tether_target
+ src.embed_target = embed_target
src.max_dist = max_dist
+ cur_dist = max_dist
+ if (start_distance != null)
+ cur_dist = start_distance
+ var/datum/beam/beam = tether_target.Beam(parent, "line", 'icons/obj/clothing/modsuit/mod_modules.dmi', emissive = FALSE, beam_type = /obj/effect/ebeam/tether)
+ tether_beam = beam
if (ispath(tether_name, /atom))
var/atom/tmp = tether_name
src.tether_name = initial(tmp.name)
else
src.tether_name = tether_name
- RegisterSignals(parent, list(COMSIG_MOVABLE_PRE_MOVE), PROC_REF(checkTether))
-/datum/component/tether/proc/checkTether(mob/mover, newloc)
+/datum/component/tether/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(check_tether))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(check_snap))
+ RegisterSignal(tether_target, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(check_tether))
+ RegisterSignal(tether_target, COMSIG_MOVABLE_MOVED, PROC_REF(check_snap))
+ RegisterSignal(tether_target, COMSIG_QDELETING, PROC_REF(on_delete))
+ RegisterSignal(tether_beam.visuals, COMSIG_CLICK, PROC_REF(beam_click))
+ // Also snap if the beam gets deleted, more of a backup check than anything
+ RegisterSignal(tether_beam.visuals, COMSIG_QDELETING, PROC_REF(on_delete))
+
+ if (!isnull(embed_target))
+ RegisterSignal(embed_target, COMSIG_ITEM_UNEMBEDDED, PROC_REF(on_embedded_removed))
+ RegisterSignal(embed_target, COMSIG_QDELETING, PROC_REF(on_delete))
+
+/datum/component/tether/UnregisterFromParent()
+ UnregisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED))
+ if (!QDELETED(tether_target))
+ UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING))
+ if (!QDELETED(tether_beam))
+ UnregisterSignal(tether_beam.visuals, list(COMSIG_CLICK, COMSIG_QDELETING))
+ qdel(tether_beam)
+ if (!QDELETED(embed_target))
+ UnregisterSignal(embed_target, list(COMSIG_ITEM_UNEMBEDDED, COMSIG_QDELETING))
+
+/datum/component/tether/proc/check_tether(atom/source, new_loc)
SIGNAL_HANDLER
- if (get_dist(mover,newloc) > max_dist)
- to_chat(mover, span_userdanger("The [tether_name] runs out of slack and prevents you from moving!"))
+ if (check_snap())
+ return
+
+ if (!isturf(new_loc))
+ to_chat(source, span_warning("[tether_name] prevents you from entering [new_loc]!"))
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
+ var/atom/movable/anchor = (source == tether_target ? parent : tether_target)
+ if (get_dist(anchor, new_loc) > cur_dist)
+ if (!istype(anchor) || anchor.anchored || !anchor.Move(get_step_towards(anchor, new_loc)))
+ to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!"))
+ return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
+
var/atom/blocker
- out:
- for(var/turf/T in get_line(tether_target,newloc))
- if (T.density)
- blocker = T
- break out
- for(var/a in T)
- var/atom/A = a
- if(A.density && A != mover && A != tether_target)
- blocker = A
- break out
+ var/anchor_dir = get_dir(source, anchor)
+ for (var/turf/line_turf in get_line(anchor, new_loc))
+ if (line_turf.density && line_turf != anchor.loc && line_turf != source.loc)
+ blocker = line_turf
+ break
+ if (line_turf == anchor.loc || line_turf == source.loc)
+ for (var/atom/in_turf in line_turf)
+ if ((in_turf.flags_1 & ON_BORDER_1) && (in_turf.dir & anchor_dir))
+ blocker = in_turf
+ break
+ else
+ for (var/atom/in_turf in line_turf)
+ if (in_turf.density && in_turf != source && in_turf != tether_target)
+ blocker = in_turf
+ break
+
+ if (!isnull(blocker))
+ break
+
if (blocker)
- to_chat(mover, span_userdanger("The [tether_name] catches on [blocker] and prevents you from moving!"))
+ to_chat(source, span_warning("[tether_name] catches on [blocker] and prevents you from moving!"))
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
+
+ if (get_dist(anchor, new_loc) != cur_dist || !ismovable(source))
+ return
+
+ var/atom/movable/movable_source = source
+ var/datum/drift_handler/handler = movable_source.drift_handler
+ if (isnull(handler))
+ return
+ handler.remove_angle_force(get_angle(anchor, source))
+
+/datum/component/tether/proc/check_snap()
+ SIGNAL_HANDLER
+
+ var/atom/atom_target = parent
+ // Something broke us out, snap the tether
+ if (get_dist(atom_target, tether_target) > cur_dist + 1 || !isturf(atom_target.loc) || !isturf(tether_target.loc) || atom_target.z != tether_target.z)
+ atom_target.visible_message(span_warning("[atom_target]'s [tether_name] snaps!"), span_userdanger("Your [tether_name] snaps!"), span_hear("You hear a cable snapping."))
+ qdel(src)
+
+/datum/component/tether/proc/on_delete()
+ SIGNAL_HANDLER
+ qdel(src)
+
+/datum/component/tether/proc/on_embedded_removed(atom/source, mob/living/victim)
+ SIGNAL_HANDLER
+ parent.AddComponent(/datum/component/tether, source, max_dist, tether_name, cur_dist)
+ qdel(src)
+
+/datum/component/tether/proc/beam_click(atom/source, atom/location, control, params, mob/user)
+ SIGNAL_HANDLER
+
+ INVOKE_ASYNC(src, PROC_REF(process_beam_click), source, location, params, user)
+
+/datum/component/tether/proc/process_beam_click(atom/source, atom/location, params, mob/user)
+ var/list/modifiers = params2list(params)
+ if(LAZYACCESS(modifiers, CTRL_CLICK))
+ location.balloon_alert(user, "cutting the tether...")
+ if (!do_after(user, 5 SECONDS, user))
+ return
+
+ qdel(src)
+ location.balloon_alert(user, "tether cut!")
+ to_chat(parent, span_danger("Your [tether_name] has been cut!"))
+ return
+
+ if (LAZYACCESS(modifiers, RIGHT_CLICK))
+ if (cur_dist >= max_dist)
+ location.balloon_alert(user, "no coil remaining!")
+ return
+ cur_dist += 1
+ location.balloon_alert(user, "tether extended")
+ return
+
+ if (cur_dist <= 1)
+ location.balloon_alert(user, "too short!")
+ return
+
+ if (cur_dist > get_dist(parent, tether_target))
+ cur_dist -= 1
+ location.balloon_alert(user, "tether shortened")
+ return
+
+ if (!ismovable(parent) && !ismovable(tether_target))
+ location.balloon_alert(user, "too short!")
+ return
+
+ var/atom/movable/movable_parent = parent
+ var/atom/movable/movable_target = tether_target
+
+ if (istype(movable_parent) && movable_parent.Move(get_step(movable_parent.loc, get_dir(movable_parent, movable_target))))
+ cur_dist -= 1
+ location.balloon_alert(user, "tether shortened")
+ return
+
+ if (istype(movable_target) && movable_target.Move(get_step(movable_target.loc, get_dir(movable_target, movable_parent))))
+ cur_dist -= 1
+ location.balloon_alert(user, "tether shortened")
+ return
+
+ location.balloon_alert(user, "too short!")
+
+/obj/effect/ebeam/tether
+ mouse_opacity = MOUSE_OPACITY_ICON
diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm
index 7ab8b755ca10a..1fac66c07cd64 100644
--- a/code/datums/components/thermite.dm
+++ b/code/datums/components/thermite.dm
@@ -116,7 +116,7 @@
*/
/datum/component/thermite/proc/thermite_melt(mob/user)
var/turf/parent_turf = parent
- playsound(parent_turf, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(parent_turf, 'sound/items/tools/welder.ogg', 100, TRUE)
fakefire = new(parent_turf)
burn_callback = CALLBACK(src, PROC_REF(burn_parent), user)
burn_timer = addtimer(burn_callback, min(amount * 0.35 SECONDS, 20 SECONDS), TIMER_STOPPABLE)
diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm
index 5276f45dc0a75..622fb2ed7d31d 100644
--- a/code/datums/components/transforming.dm
+++ b/code/datums/components/transforming.dm
@@ -50,7 +50,7 @@
throwforce_on = 0,
throw_speed_on = 2,
sharpness_on = NONE,
- hitsound_on = 'sound/weapons/blade1.ogg',
+ hitsound_on = 'sound/items/weapons/blade1.ogg',
w_class_on = WEIGHT_CLASS_BULKY,
clumsy_check = TRUE,
clumsy_damage = 10,
@@ -174,7 +174,7 @@
/datum/component/transforming/proc/default_transform_message(obj/item/source, mob/user)
if(user)
source.balloon_alert(user, "[active ? "enabled" : "disabled"] [source]")
- playsound(source, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(source, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
/*
* Toggle active between true and false, and call
diff --git a/code/datums/components/trapdoor.dm b/code/datums/components/trapdoor.dm
index 32b72c48853e5..9efce370e82c7 100644
--- a/code/datums/components/trapdoor.dm
+++ b/code/datums/components/trapdoor.dm
@@ -243,10 +243,10 @@
return
if(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_TRAPDOOR_LINK, src) & LINKED_UP)
playsound(assembly_turf, 'sound/machines/chime.ogg', 50, TRUE)
- assembly_turf.visible_message("[src] has linked up to a nearby trapdoor! \
- You may now use it to check where the trapdoor is... be careful!", vision_distance = SAMETILE_MESSAGE_RANGE)
+ assembly_turf.visible_message(span_notice("[src] has linked up to a nearby trapdoor! \
+ You may now use it to check where the trapdoor is... be careful!"), vision_distance = SAMETILE_MESSAGE_RANGE)
else
- playsound(assembly_turf, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(assembly_turf, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
assembly_turf.visible_message(span_warning("[src] has failed to find a trapdoor nearby to link to."), vision_distance = SAMETILE_MESSAGE_RANGE)
/**
@@ -321,7 +321,7 @@
return TRUE
user.balloon_alert(user, "trapdoor triggered")
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
icon_state = "trapdoor_pressed"
addtimer(VARSET_CALLBACK(src, icon_state, initial(icon_state)), trapdoor_cooldown_time)
COOLDOWN_START(src, trapdoor_cooldown, trapdoor_cooldown_time)
diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm
index 00437a2cdd8f1..146d3c2de0785 100644
--- a/code/datums/dash_weapon.dm
+++ b/code/datums/dash_weapon.dm
@@ -11,9 +11,9 @@
/// How long does it take to get a dash charge back?
var/charge_rate = 25 SECONDS
/// What sound do we play on dash?
- var/dash_sound = 'sound/magic/blink.ogg'
+ var/dash_sound = 'sound/effects/magic/blink.ogg'
/// What sound do we play on recharge?
- var/recharge_sound = 'sound/magic/charge.ogg'
+ var/recharge_sound = 'sound/effects/magic/charge.ogg'
/// What effect does our beam use?
var/beam_effect = "blur"
/// How long does our beam last?
diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm
index b1afd1d1939a9..617cfde763d11 100644
--- a/code/datums/diseases/chronic_illness.dm
+++ b/code/datums/diseases/chronic_illness.dm
@@ -42,7 +42,7 @@
need_mob_update += affected_mob.adjustStaminaLoss(70, updating_stamina = FALSE)
if(SPT_PROB(1, seconds_per_tick))
to_chat(affected_mob, span_danger("You feel a buzzing in your brain."))
- SEND_SOUND(affected_mob, sound('sound/weapons/flash_ring.ogg'))
+ SEND_SOUND(affected_mob, sound('sound/items/weapons/flash_ring.ogg'))
if(SPT_PROB(0.5, seconds_per_tick))
need_mob_update += affected_mob.adjustBruteLoss(1, updating_health = FALSE)
if(need_mob_update)
@@ -75,7 +75,7 @@
if(2)
to_chat(affected_mob, span_boldwarning("There is no place for you in this timeline."))
affected_mob.adjustStaminaLoss(100, forced = TRUE)
- playsound(affected_mob.loc, 'sound/magic/repulse.ogg', 100, FALSE)
+ playsound(affected_mob.loc, 'sound/effects/magic/repulse.ogg', 100, FALSE)
affected_mob.emote("scream")
for(var/mob/living/viewers in viewers(3, affected_mob.loc))
viewers.flash_act()
diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm
index 45d4e6672fb69..419fc9efff3df 100644
--- a/code/datums/diseases/heart_failure.dm
+++ b/code/datums/diseases/heart_failure.dm
@@ -43,7 +43,7 @@
to_chat(affected_mob, span_warning("You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short of breath", "uneasy")]."))
if(3 to 4)
if(!sound)
- affected_mob.playsound_local(affected_mob, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
+ affected_mob.playsound_local(affected_mob, 'sound/effects/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
sound = TRUE
if(SPT_PROB(1.5, seconds_per_tick))
to_chat(affected_mob, span_danger("You feel a sharp pain in your chest!"))
diff --git a/code/datums/drift_handler.dm b/code/datums/drift_handler.dm
new file mode 100644
index 0000000000000..c70ea9802d6dc
--- /dev/null
+++ b/code/datums/drift_handler.dm
@@ -0,0 +1,258 @@
+///Component that handles drifting
+///Manages a movement loop that actually does the legwork of moving someone
+///Alongside dealing with the post movement input blocking required to make things look nice
+/datum/drift_handler
+ var/atom/movable/parent
+ var/atom/inertia_last_loc
+ var/old_dir
+ var/datum/move_loop/smooth_move/drifting_loop
+ ///Should we ignore the next glide rate input we get?
+ ///This is to some extent a hack around the order of operations
+ ///Around COMSIG_MOVELOOP_POSTPROCESS. I'm sorry lad
+ var/ignore_next_glide = FALSE
+ ///Have we been delayed? IE: active, but not working right this second?
+ var/delayed = FALSE
+ var/block_inputs_until
+ /// How much force is behind this drift.
+ var/drift_force = 1
+
+/// Accepts three args. The direction to drift in, if the drift is instant or not, and if it's not instant, the delay on the start
+/datum/drift_handler/New(atom/movable/parent, inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1)
+ . = ..()
+ src.parent = parent
+ parent.drift_handler = src
+ var/flags = MOVEMENT_LOOP_OUTSIDE_CONTROL
+ if(instant)
+ flags |= MOVEMENT_LOOP_START_FAST
+ src.drift_force = drift_force
+ drifting_loop = GLOB.move_manager.smooth_move(moving = parent, angle = inertia_angle, delay = get_loop_delay(parent), subsystem = SSnewtonian_movement, priority = MOVEMENT_SPACE_PRIORITY, flags = flags)
+
+ if(!drifting_loop)
+ qdel(src)
+ return
+
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_START, PROC_REF(drifting_start))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_STOP, PROC_REF(drifting_stop))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(before_move))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(after_move))
+ RegisterSignal(drifting_loop, COMSIG_QDELETING, PROC_REF(loop_death))
+ RegisterSignal(parent, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(attempt_halt))
+ if(drifting_loop.status & MOVELOOP_STATUS_RUNNING)
+ drifting_start(drifting_loop) // There's a good chance it'll autostart, gotta catch that
+
+ var/visual_delay = get_loop_delay(parent)
+
+ // Start delay is essentially a more granular version of instant
+ // Isn't used in the standard case, just for things that have odd wants
+ if(!instant && start_delay)
+ drifting_loop.pause_for(start_delay)
+ visual_delay = start_delay
+
+ apply_initial_visuals(visual_delay)
+
+/datum/drift_handler/Destroy()
+ inertia_last_loc = null
+ if(!QDELETED(drifting_loop))
+ qdel(drifting_loop)
+ drifting_loop = null
+ parent.inertia_moving = FALSE
+ parent.drift_handler = null
+ return ..()
+
+/datum/drift_handler/proc/apply_initial_visuals(visual_delay)
+ // If something "somewhere" doesn't want us to apply our glidesize delays, don't
+ if(SEND_SIGNAL(parent, COMSIG_MOVABLE_DRIFT_VISUAL_ATTEMPT) & DRIFT_VISUAL_FAILED)
+ return
+
+ // Ignore the next glide because it's literally just us
+ ignore_next_glide = TRUE
+ parent.set_glide_size(MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSnewtonian_movement.visual_delay))
+ if(!ismob(parent))
+ return
+ var/mob/mob_parent = parent
+ //Ok this is slightly weird, but basically, we need to force the client to glide at our rate
+ //Make sure moving into a space move looks like a space move essentially
+ //There is an inbuilt assumption that gliding will be added as a part of a move call, but eh
+ //It's ok if it's not, it's just important if it is.
+ mob_parent.client?.visual_delay = MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSnewtonian_movement.visual_delay)
+
+/datum/drift_handler/proc/newtonian_impulse(inertia_angle, start_delay, additional_force, controlled_cap)
+ SIGNAL_HANDLER
+ inertia_last_loc = parent.loc
+ // We've been told to move in the middle of deletion process, tell parent to create a new handler instead
+ if(!drifting_loop)
+ qdel(src)
+ return FALSE
+
+ var/applied_force = additional_force
+
+ var/force_x = sin(drifting_loop.angle) * drift_force + sin(inertia_angle) * applied_force / parent.inertia_force_weight
+ var/force_y = cos(drifting_loop.angle) * drift_force + cos(inertia_angle) * applied_force / parent.inertia_force_weight
+
+ drift_force = clamp(sqrt(force_x * force_x + force_y * force_y), 0, !isnull(controlled_cap) ? controlled_cap : INERTIA_FORCE_CAP)
+ if(drift_force < 0.1) // Rounding issues
+ qdel(src)
+ return TRUE
+
+ drifting_loop.set_angle(delta_to_angle(force_x, force_y))
+ drifting_loop.set_delay(get_loop_delay(parent))
+ return TRUE
+
+/datum/drift_handler/proc/drifting_start()
+ SIGNAL_HANDLER
+ inertia_last_loc = parent.loc
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(handle_move))
+ // We will use glide size to intuit how long to delay our loop's next move for
+ // This way you can't ride two movements at once while drifting, since that'd be dumb as fuck
+ RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(handle_glidesize_update))
+ // If you stop pulling something mid drift, I want it to retain that momentum
+ RegisterSignal(parent, COMSIG_ATOM_NO_LONGER_PULLING, PROC_REF(stopped_pulling))
+
+/datum/drift_handler/proc/drifting_stop()
+ SIGNAL_HANDLER
+ parent.inertia_moving = FALSE
+ ignore_next_glide = FALSE
+ UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, COMSIG_ATOM_NO_LONGER_PULLING))
+
+/datum/drift_handler/proc/before_move(datum/source)
+ SIGNAL_HANDLER
+ parent.inertia_moving = TRUE
+ old_dir = parent.dir
+ delayed = FALSE
+
+/datum/drift_handler/proc/after_move(datum/source, result, visual_delay)
+ SIGNAL_HANDLER
+ if(result == MOVELOOP_FAILURE)
+ qdel(src)
+ return
+
+ parent.setDir(old_dir)
+ parent.inertia_moving = FALSE
+ if(parent.Process_Spacemove(angle2dir(drifting_loop.angle), continuous_move = TRUE))
+ glide_to_halt(visual_delay)
+ return
+
+ inertia_last_loc = parent.loc
+ ignore_next_glide = TRUE
+
+/datum/drift_handler/proc/loop_death(datum/source)
+ SIGNAL_HANDLER
+ drifting_loop = null
+
+/datum/drift_handler/proc/handle_move(datum/source, old_loc)
+ SIGNAL_HANDLER
+ // This can happen, because signals once sent cannot be stopped
+ if(QDELETED(src))
+ return
+ if(!isturf(parent.loc))
+ qdel(src)
+ return
+ if(parent.inertia_moving)
+ return
+ if(!parent.Process_Spacemove(angle2dir(drifting_loop.angle), continuous_move = TRUE))
+ return
+ qdel(src)
+
+/// We're going to take the passed in glide size
+/// and use it to manually delay our loop for that period
+/// to allow the other movement to complete
+/datum/drift_handler/proc/handle_glidesize_update(datum/source, glide_size)
+ SIGNAL_HANDLER
+ // If we aren't drifting, or this is us, fuck off
+ if(!drifting_loop || parent.inertia_moving)
+ return
+ // If we are drifting, but this set came from the moveloop itself, drop the input
+ // I'm sorry man
+ if(ignore_next_glide)
+ ignore_next_glide = FALSE
+ return
+ var/glide_delay = round(world.icon_size / glide_size, 1) * world.tick_lag
+ drifting_loop.pause_for(glide_delay)
+ delayed = TRUE
+
+/// If we're pulling something and stop, we want it to continue at our rate and such
+/datum/drift_handler/proc/stopped_pulling(datum/source, atom/movable/was_pulling)
+ SIGNAL_HANDLER
+ // This does mean it falls very slightly behind, but otherwise they'll potentially run into us
+ var/next_move_in = drifting_loop.timer - world.time + world.tick_lag
+ was_pulling.newtonian_move(angle2dir(drifting_loop.angle), start_delay = next_move_in, drift_force = drift_force, controlled_cap = drift_force)
+
+/datum/drift_handler/proc/glide_to_halt(glide_for)
+ if(!ismob(parent))
+ qdel(src)
+ return
+
+ var/mob/mob_parent = parent
+ var/client/our_client = mob_parent.client
+ // If we're not active, don't do the glide because it'll look dumb as fuck
+ if(!our_client || delayed)
+ qdel(src)
+ return
+
+ block_inputs_until = world.time + glide_for + 1
+ QDEL_IN(src, glide_for + 1)
+ qdel(drifting_loop)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_PRE_MOVE, PROC_REF(allow_final_movement))
+
+/datum/drift_handler/proc/allow_final_movement(datum/source)
+ SIGNAL_HANDLER
+ // Some things want to allow movement out of spacedrift, we should let them
+ if(SEND_SIGNAL(parent, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT) & DRIFT_ALLOW_INPUT)
+ return
+ if(world.time < block_inputs_until)
+ return COMSIG_MOB_CLIENT_BLOCK_PRE_MOVE
+
+/datum/drift_handler/proc/attempt_halt(mob/source, movement_dir, continuous_move, atom/backup)
+ SIGNAL_HANDLER
+
+ if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
+ if (drift_force >= INERTIA_FORCE_THROW_FLOOR)
+ source.throw_at(backup, 1, floor(1 + (drift_force - INERTIA_FORCE_THROW_FLOOR) / INERTIA_FORCE_PER_THROW_FORCE), spin = FALSE)
+ return
+
+ if (drift_force < INERTIA_FORCE_SPACEMOVE_GRAB || isnull(drifting_loop))
+ return
+
+ if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight)
+ glide_to_halt(get_loop_delay(source))
+ return COMPONENT_PREVENT_SPACEMOVE_HALT
+
+ drift_force -= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight
+ drifting_loop.set_delay(get_loop_delay(source))
+ return COMPONENT_PREVENT_SPACEMOVE_HALT
+
+/datum/drift_handler/proc/get_loop_delay(atom/movable/movable)
+ return (DEFAULT_INERTIA_SPEED / ((1 - INERTIA_SPEED_COEF) + drift_force * INERTIA_SPEED_COEF)) * movable.inertia_move_multiplier
+
+/datum/drift_handler/proc/stabilize_drift(target_angle, target_force, stabilization_force)
+ /// We aren't drifting
+ if (isnull(drifting_loop))
+ return
+
+ /// Lack of angle means that we are trying to halt movement
+ if (isnull(target_angle))
+ // Going through newtonian_move ensures that all Process_Spacemove code runs properly, instead of directly adjusting forces
+ parent.newtonian_move(reverse_angle(drifting_loop.angle), drift_force = min(drift_force, stabilization_force))
+ return
+
+ // Force required to be applied in order to get to the desired movement vector, with projection of current movement onto desired vector to ensure that we only compensate for excess
+ var/drift_projection = max(0, cos(target_angle - drifting_loop.angle)) * drift_force
+ var/force_x = sin(target_angle) * target_force - sin(drifting_loop.angle) * drift_force
+ var/force_y = cos(target_angle) * target_force - cos(drifting_loop.angle) * drift_force
+ var/force_angle = delta_to_angle(force_x, force_y)
+ var/applied_force = sqrt(force_x * force_x + force_y * force_y)
+ var/force_projection = max(0, cos(target_angle - force_angle)) * applied_force
+ force_x -= min(force_projection, drift_projection) * sin(target_angle)
+ force_x -= min(force_projection, drift_projection) * cos(target_angle)
+ applied_force = min(sqrt(force_x * force_x + force_y * force_y), stabilization_force)
+ parent.newtonian_move(force_angle, instant = TRUE, drift_force = applied_force)
+
+/// Removes all force in a certain direction
+/datum/drift_handler/proc/remove_angle_force(target_angle)
+ /// We aren't drifting
+ if (isnull(drifting_loop))
+ return
+
+ var/projected_force = max(0, cos(target_angle - drifting_loop.angle)) * drift_force
+ if (projected_force > 0)
+ parent.newtonian_move(reverse_angle(target_angle), projected_force)
diff --git a/code/datums/elements/bugkiller_reagent.dm b/code/datums/elements/bugkiller_reagent.dm
index 57f2ae65d9209..d2c25926e966f 100644
--- a/code/datums/elements/bugkiller_reagent.dm
+++ b/code/datums/elements/bugkiller_reagent.dm
@@ -59,7 +59,7 @@
/datum/status_effect/bugkiller_death/on_apply()
if(owner.stat == DEAD)
return FALSE
- playsound(owner, 'sound/voice/human/malescream_1.ogg', 25, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 5)
+ playsound(owner, 'sound/mobs/humanoids/human/scream/malescream_1.ogg', 25, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 5)
to_chat(owner, span_userdanger("The world begins to go dark..."))
owner.spasm_animation(spasm_loops)
owner.adjust_eye_blur(duration)
diff --git a/code/datums/elements/corrupted_organ.dm b/code/datums/elements/corrupted_organ.dm
index 666ca3460fce5..504c6851e00c6 100644
--- a/code/datums/elements/corrupted_organ.dm
+++ b/code/datums/elements/corrupted_organ.dm
@@ -41,7 +41,7 @@
)
return
var/turf/origin_turf = get_turf(organ)
- playsound(organ, 'sound/magic/forcewall.ogg', vol = 100)
+ playsound(organ, 'sound/effects/magic/forcewall.ogg', vol = 100)
new /obj/effect/temp_visual/curse_blast(origin_turf)
organ.visible_message(span_revenwarning("[organ] explodes in a burst of dark energy!"))
for(var/mob/living/target in range(1, origin_turf))
diff --git a/code/datums/elements/damage_threshold.dm b/code/datums/elements/damage_threshold.dm
index 60c87dc5ed5c1..764f5d7a9bd6d 100644
--- a/code/datums/elements/damage_threshold.dm
+++ b/code/datums/elements/damage_threshold.dm
@@ -45,7 +45,7 @@
span_hear("You hear a thud."),
COMBAT_MESSAGE_RANGE,
)
- playsound(source, 'sound/weapons/tap.ogg', tap_vol, TRUE, -1)
+ playsound(source, 'sound/items/weapons/tap.ogg', tap_vol, TRUE, -1)
return SUCCESSFUL_BLOCK
return NONE
diff --git a/code/datums/elements/deliver_first.dm b/code/datums/elements/deliver_first.dm
index 0fb83a2545603..ae1947bff02a8 100644
--- a/code/datums/elements/deliver_first.dm
+++ b/code/datums/elements/deliver_first.dm
@@ -80,7 +80,7 @@
if(user)
target.balloon_alert(user, "access denied until delivery!")
if(COOLDOWN_FINISHED(src, deny_cooldown))
- playsound(target, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(target, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
COOLDOWN_START(src, deny_cooldown, DENY_SOUND_COOLDOWN)
return BLOCK_OPEN
diff --git a/code/datums/elements/door_pryer.dm b/code/datums/elements/door_pryer.dm
index 9f01e8be2b6ab..3e2bd2c5a43d6 100644
--- a/code/datums/elements/door_pryer.dm
+++ b/code/datums/elements/door_pryer.dm
@@ -60,7 +60,7 @@
message = span_warning("[attacker] starts forcing the [airlock_target] open!"),
blind_message = span_hear("You hear a metal screeching sound."),
)
- playsound(airlock_target, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+ playsound(airlock_target, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE)
airlock_target.balloon_alert(attacker, "prying...")
if(!do_after(attacker, pry_time, airlock_target))
airlock_target.balloon_alert(attacker, "interrupted!")
diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm
index 2aae03fb3a4b6..fbaf638bdd520 100644
--- a/code/datums/elements/embed.dm
+++ b/code/datums/elements/embed.dm
@@ -117,6 +117,8 @@
if(!try_force_embed(payload, limb))
payload.failedEmbed()
+ else
+ SEND_SIGNAL(source, COMSIG_PROJECTILE_ON_EMBEDDED, payload, hit)
Detach(source)
/**
diff --git a/code/datums/elements/falling_hazard.dm b/code/datums/elements/falling_hazard.dm
index 355bcd92e4e01..65ac6b4569f0e 100644
--- a/code/datums/elements/falling_hazard.dm
+++ b/code/datums/elements/falling_hazard.dm
@@ -12,7 +12,7 @@
/// Does the target crush and flatten whoever it falls on
var/crushes_people = FALSE
/// What sound is played when the target falls onto a mob
- var/impact_sound = 'sound/magic/clockwork/fellowship_armory.ogg' //CLANG
+ var/impact_sound = 'sound/effects/magic/clockwork/fellowship_armory.ogg' //CLANG
/datum/element/falling_hazard/Attach(datum/target, damage, wound_bonus, hardhat_safety, crushes, impact_sound)
. = ..()
@@ -52,7 +52,7 @@
if(crushes_people)
poor_target.Knockdown(0.25 SECONDS * fall_damage) // For a piano, that would be 15 seconds
- playsound(poor_target, 'sound/weapons/parry.ogg', 50, TRUE) // You PARRIED the falling object with your EPIC hardhat
+ playsound(poor_target, 'sound/items/weapons/parry.ogg', 50, TRUE) // You PARRIED the falling object with your EPIC hardhat
return
var/obj/item/bodypart/target_head = poor_target.get_bodypart(BODY_ZONE_HEAD)
diff --git a/code/datums/elements/high_fiver.dm b/code/datums/elements/high_fiver.dm
index 6e4e9739cefc5..249a9f4059de4 100644
--- a/code/datums/elements/high_fiver.dm
+++ b/code/datums/elements/high_fiver.dm
@@ -54,7 +54,7 @@
taker.add_mood_event(descriptor, /datum/mood_event/high_five_full_hand) // not so successful now!
return COMPONENT_OFFER_INTERRUPT
- playsound(offerer, 'sound/weapons/slap.ogg', min(50 * slappers_giver, 300), TRUE, 1)
+ playsound(offerer, 'sound/items/weapons/slap.ogg', min(50 * slappers_giver, 300), TRUE, 1)
offerer.add_mob_memory(/datum/memory/high_five, deuteragonist = taker, high_five_type = descriptor, high_ten = high_ten)
taker.add_mob_memory(/datum/memory/high_five, deuteragonist = offerer, high_five_type = descriptor, high_ten = high_ten)
diff --git a/code/datums/elements/kneejerk.dm b/code/datums/elements/kneejerk.dm
index cd93fe31917ed..78c0ba7654d69 100644
--- a/code/datums/elements/kneejerk.dm
+++ b/code/datums/elements/kneejerk.dm
@@ -51,17 +51,17 @@
var/target_brain_damage = target_brain.damage
if(target_brain_damage < BRAIN_DAMAGE_MILD) //a healthy brain produces a normal reaction
- playsound(target, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(target, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
target.visible_message(span_danger("[target]'s leg kicks out sharply!"), \
span_danger("Your leg kicks out sharply!"))
else if(target_brain_damage < BRAIN_DAMAGE_SEVERE) //a mildly damaged brain produces a delayed reaction
- playsound(target, 'sound/weapons/punchmiss.ogg', 15, TRUE, -1)
+ playsound(target, 'sound/items/weapons/punchmiss.ogg', 15, TRUE, -1)
target.visible_message(span_danger("After a moment, [target]'s leg kicks out sharply!"), \
span_danger("After a moment, your leg kicks out sharply!"))
else if(target_brain_damage < BRAIN_DAMAGE_DEATH) //a severely damaged brain produces a delayed + weaker reaction
- playsound(target, 'sound/weapons/punchmiss.ogg', 5, TRUE, -1)
+ playsound(target, 'sound/items/weapons/punchmiss.ogg', 5, TRUE, -1)
target.visible_message(span_danger("After a moment, [target]'s leg kicks out weakly!"), \
span_danger("After a moment, your leg kicks out weakly!"))
diff --git a/code/datums/elements/spooky.dm b/code/datums/elements/spooky.dm
index 30a04f6348b20..89d53c4e99734 100644
--- a/code/datums/elements/spooky.dm
+++ b/code/datums/elements/spooky.dm
@@ -40,7 +40,7 @@
if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
C.adjustStaminaLoss(18) //boneless humanoids don't lose the will to live
to_chat(C, "DOOT")
- to_chat(C, "You're feeling more bony.")
+ to_chat(C, span_robot("You're feeling more bony."))
INVOKE_ASYNC(src, PROC_REF(spectral_change), H)
else //the sound will spook monkeys.
diff --git a/code/datums/elements/wall_tearer.dm b/code/datums/elements/wall_tearer.dm
index 2c9ff5416d59b..cf61de7300919 100644
--- a/code/datums/elements/wall_tearer.dm
+++ b/code/datums/elements/wall_tearer.dm
@@ -51,7 +51,7 @@
var/rip_time = (istype(target, /turf/closed/wall/r_wall) ? tear_time * reinforced_multiplier : tear_time) / 3
if (rip_time > 0)
tearer.visible_message(span_warning("[tearer] begins tearing through [target]!"))
- playsound(tearer, 'sound/machines/airlock_alien_prying.ogg', vol = 100, vary = TRUE)
+ playsound(tearer, 'sound/machines/airlock/airlock_alien_prying.ogg', vol = 100, vary = TRUE)
target.balloon_alert(tearer, "tearing...")
if (!do_after(tearer, delay = rip_time, target = target, interaction_key = do_after_key))
tearer.balloon_alert(tearer, "interrupted!")
diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm
index 84355a8a490bf..9ce851a248665 100644
--- a/code/datums/emotes.dm
+++ b/code/datums/emotes.dm
@@ -100,8 +100,8 @@
user.log_message(msg, LOG_EMOTE)
var/tmp_sound = get_sound(user)
- if(tmp_sound && should_play_sound(user, intentional) && TIMER_COOLDOWN_FINISHED(user, type))
- TIMER_COOLDOWN_START(user, type, audio_cooldown)
+ if(tmp_sound && should_play_sound(user, intentional) && TIMER_COOLDOWN_FINISHED(user, "audible_emote_cooldown"))
+ TIMER_COOLDOWN_START(user, "audible_emote_cooldown", audio_cooldown)
playsound(source = user,soundin = tmp_sound,vol = 50, vary = vary, ignore_walls = sound_wall_ignore)
var/is_important = emote_type & EMOTE_IMPORTANT
@@ -126,22 +126,22 @@
runechat_flags = EMOTE_MESSAGE,
)
else if(is_important)
- to_chat(viewer, "[user] [msg]")
+ to_chat(viewer, span_emote("[user] [msg]"))
else if(is_audible && is_visual)
viewer.show_message(
- "[user] [msg]", MSG_AUDIBLE,
- "You see how [user] [msg]", MSG_VISUAL,
+ span_emote("[user] [msg]"), MSG_AUDIBLE,
+ span_emote("You see how [user] [msg]"), MSG_VISUAL,
)
else if(is_audible)
- viewer.show_message("[user] [msg]", MSG_AUDIBLE)
+ viewer.show_message(span_emote("[user] [msg]"), MSG_AUDIBLE)
else if(is_visual)
- viewer.show_message("[user] [msg]", MSG_VISUAL)
+ viewer.show_message(span_emote("[user] [msg]"), MSG_VISUAL)
return // Early exit so no dchat message
// The emote has some important information, and should always be shown to the user
else if(is_important)
for(var/mob/viewer as anything in viewers(user))
- to_chat(viewer, "[user] [msg]")
+ to_chat(viewer, span_emote("[user] [msg]"))
if(user.runechat_prefs_check(viewer, EMOTE_MESSAGE))
viewer.create_chat_message(
speaker = user,
@@ -153,7 +153,7 @@
else if(is_visual && is_audible)
user.audible_message(
message = msg,
- deaf_message = "You see how [user] [msg]",
+ deaf_message = span_emote("You see how [user] [msg]"),
self_message = msg,
audible_message_flags = EMOTE_MESSAGE|ALWAYS_SHOW_SELF_MESSAGE,
separation = space, // DOPPLER EDIT ADDITION
@@ -214,7 +214,7 @@
continue
if(!(get_chat_toggles(ghost.client) & CHAT_GHOSTSIGHT))
continue
- to_chat(ghost, "[FOLLOW_LINK(ghost, user)] [dchatmsg]")
+ to_chat(ghost, span_emote("[FOLLOW_LINK(ghost, user)] [dchatmsg]"))
return
diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index c3562aa598732..732323d28655c 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -89,4 +89,4 @@
msg += "Protect Assistant Role From Traitor: [CONFIG_GET(flag/protect_assistant_from_antagonist)]"
msg += "Enforce Human Authority: [CONFIG_GET(flag/enforce_human_authority)]"
msg += "Allow Latejoin Antagonists: [CONFIG_GET(flag/allow_latejoin_antagonists)]"
- to_chat(src, "[msg.Join(" ")]")
+ to_chat(src, span_infoplain(msg.Join(" ")))
diff --git a/code/datums/looping_sounds/acid.dm b/code/datums/looping_sounds/acid.dm
index e461e5d02ce9c..9dcf6e1750a0c 100644
--- a/code/datums/looping_sounds/acid.dm
+++ b/code/datums/looping_sounds/acid.dm
@@ -1,5 +1,5 @@
/// Soundloop for the acid component.
/datum/looping_sound/acid
- mid_sounds = list('sound/items/welder.ogg' = 1)
+ mid_sounds = list('sound/items/tools/welder.ogg' = 1)
mid_length = 10
volume = 150
diff --git a/code/datums/looping_sounds/breathing.dm b/code/datums/looping_sounds/breathing.dm
index 73474149ae4bb..a50e13a7fd5da 100644
--- a/code/datums/looping_sounds/breathing.dm
+++ b/code/datums/looping_sounds/breathing.dm
@@ -1,13 +1,13 @@
/datum/looping_sound/breathing
mid_sounds = list(
- 'sound/voice/breathing/internals_breathing1.ogg' = 1,
- 'sound/voice/breathing/internals_breathing2.ogg' = 1,
- 'sound/voice/breathing/internals_breathing3.ogg' = 1,
- 'sound/voice/breathing/internals_breathing4.ogg' = 1,
- 'sound/voice/breathing/internals_breathing5.ogg' = 1,
- 'sound/voice/breathing/internals_breathing6.ogg' = 1,
- 'sound/voice/breathing/internals_breathing7.ogg' = 1,
- 'sound/voice/breathing/internals_breathing8.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing1.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing2.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing3.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing4.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing5.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing6.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing7.ogg' = 1,
+ 'sound/mobs/humanoids/breathing/internals_breathing8.ogg' = 1,
)
//Calculated this by using the average breathing time of an adult (12 to 20 per minute, which on average is 16 per minute)
// realism is overrated, make it longer to reduce ear fatigue
diff --git a/code/datums/looping_sounds/choking.dm b/code/datums/looping_sounds/choking.dm
index 444204efa1fa6..6d337b1c7d648 100644
--- a/code/datums/looping_sounds/choking.dm
+++ b/code/datums/looping_sounds/choking.dm
@@ -1,5 +1,5 @@
/datum/looping_sound/choking
- mid_sounds = list('sound/creatures/gag1.ogg' = 1, 'sound/creatures/gag2.ogg' = 1, 'sound/creatures/gag3.ogg' = 1, 'sound/creatures/gag4.ogg' = 1, 'sound/creatures/gag5.ogg' = 1)
+ mid_sounds = list('sound/mobs/humanoids/human/gag_vomit/gag1.ogg' = 1, 'sound/mobs/humanoids/human/gag_vomit/gag2.ogg' = 1, 'sound/mobs/humanoids/human/gag_vomit/gag3.ogg' = 1, 'sound/mobs/humanoids/human/gag_vomit/gag4.ogg' = 1, 'sound/mobs/humanoids/human/gag_vomit/gag5.ogg' = 1)
mid_length = 1.6 SECONDS
mid_length_vary = 0.3 SECONDS
each_once = TRUE
diff --git a/code/datums/looping_sounds/cyborg.dm b/code/datums/looping_sounds/cyborg.dm
index 499e61757c6dd..0a01a4c7116b9 100644
--- a/code/datums/looping_sounds/cyborg.dm
+++ b/code/datums/looping_sounds/cyborg.dm
@@ -1,10 +1,10 @@
/datum/looping_sound/wash
- mid_sounds = list('sound/creatures/cyborg/wash1.ogg' = 1, 'sound/creatures/cyborg/wash2.ogg' = 1)
+ mid_sounds = list('sound/mobs/non-humanoids/cyborg/wash1.ogg' = 1, 'sound/mobs/non-humanoids/cyborg/wash2.ogg' = 1)
mid_length = 1.5 SECONDS // This makes them overlap slightly, which works out well for masking the fade in/out
start_volume = 100
- start_sound = 'sound/creatures/cyborg/wash_start.ogg'
+ start_sound = 'sound/mobs/non-humanoids/cyborg/wash_start.ogg'
start_length = 3.6 SECONDS // again, slightly shorter then the real time of 4 seconds, will make the transition to midsounds more seemless
end_volume = 100
- end_sound = 'sound/creatures/cyborg/wash_end.ogg'
+ end_sound = 'sound/mobs/non-humanoids/cyborg/wash_end.ogg'
vary = TRUE
extra_range = 5
diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm
index 00fd3063e4382..7800326bb0a35 100644
--- a/code/datums/looping_sounds/item_sounds.dm
+++ b/code/datums/looping_sounds/item_sounds.dm
@@ -5,7 +5,7 @@
/datum/looping_sound/reverse_bear_trap_beep
- mid_sounds = list('sound/machines/beep.ogg' = 1)
+ mid_sounds = list('sound/machines/beep/beep.ogg' = 1)
mid_length = 60
volume = 10
@@ -24,7 +24,7 @@
mid_length = 1 SECONDS
/datum/looping_sound/trapped_machine_beep
- mid_sounds = list('sound/machines/beep.ogg' = 1)
+ mid_sounds = list('sound/machines/beep/beep.ogg' = 1)
mid_length = 10 SECONDS
mid_length_vary = 5 SECONDS
falloff_exponent = 10
@@ -32,19 +32,19 @@
volume = 5
/datum/looping_sound/chainsaw
- start_sound = list('sound/weapons/chainsaw_start.ogg' = 1)
+ start_sound = list('sound/items/weapons/chainsaw_start.ogg' = 1)
start_length = 0.85 SECONDS
- mid_sounds = list('sound/weapons/chainsaw_loop.ogg' = 1)
+ mid_sounds = list('sound/items/weapons/chainsaw_loop.ogg' = 1)
mid_length = 0.85 SECONDS
- end_sound = list('sound/weapons/chainsaw_stop.ogg' = 1)
+ end_sound = list('sound/items/weapons/chainsaw_stop.ogg' = 1)
end_volume = 35
volume = 40
ignore_walls = FALSE
/datum/looping_sound/beesmoke
- mid_sounds = list('sound/weapons/beesmoke.ogg' = 1)
+ mid_sounds = list('sound/items/weapons/beesmoke.ogg' = 1)
volume = 5
/datum/looping_sound/zipline
- mid_sounds = list('sound/weapons/zipline_mid.ogg' = 1)
+ mid_sounds = list('sound/items/weapons/zipline_mid.ogg' = 1)
volume = 5
diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm
index bc32b03125660..c4648a929b300 100644
--- a/code/datums/looping_sounds/machinery_sounds.dm
+++ b/code/datums/looping_sounds/machinery_sounds.dm
@@ -47,7 +47,7 @@
volume = 15
/datum/looping_sound/clock
- mid_sounds = list('sound/ambience/ticking_clock.ogg' = 1)
+ mid_sounds = list('sound/ambience/misc/ticking_clock.ogg' = 1)
mid_length = 40
volume = 50
ignore_walls = FALSE
@@ -90,7 +90,7 @@
/datum/looping_sound/jackpot
mid_length = 11
- mid_sounds = list('sound/machines/roulettejackpot.ogg' = 1)
+ mid_sounds = list('sound/machines/roulette/roulettejackpot.ogg' = 1)
volume = 85
vary = TRUE
@@ -141,7 +141,7 @@
falloff_exponent = 20
/datum/looping_sound/firealarm
- mid_sounds = list('sound/machines/FireAlarm1.ogg' = 1,'sound/machines/FireAlarm2.ogg' = 1,'sound/machines/FireAlarm3.ogg' = 1,'sound/machines/FireAlarm4.ogg' = 1)
+ mid_sounds = list('sound/machines/fire_alarm/FireAlarm1.ogg' = 1,'sound/machines/fire_alarm/FireAlarm2.ogg' = 1,'sound/machines/fire_alarm/FireAlarm3.ogg' = 1,'sound/machines/fire_alarm/FireAlarm4.ogg' = 1)
mid_length = 2.4 SECONDS
volume = 30
@@ -151,34 +151,34 @@
falloff_exponent = 5
/datum/looping_sound/boiling
- mid_sounds = list('sound/effects/bubbles2.ogg' = 1)
+ mid_sounds = list('sound/effects/bubbles/bubbles2.ogg' = 1)
mid_length = 7 SECONDS
volume = 25
/datum/looping_sound/typing
mid_sounds = list(
- 'sound/machines/terminal_button01.ogg' = 1,
- 'sound/machines/terminal_button02.ogg' = 1,
- 'sound/machines/terminal_button03.ogg' = 1,
- 'sound/machines/terminal_button04.ogg' = 1,
- 'sound/machines/terminal_button05.ogg' = 1,
- 'sound/machines/terminal_button06.ogg' = 1,
- 'sound/machines/terminal_button07.ogg' = 1,
- 'sound/machines/terminal_button08.ogg' = 1,
+ 'sound/machines/terminal/terminal_button01.ogg' = 1,
+ 'sound/machines/terminal/terminal_button02.ogg' = 1,
+ 'sound/machines/terminal/terminal_button03.ogg' = 1,
+ 'sound/machines/terminal/terminal_button04.ogg' = 1,
+ 'sound/machines/terminal/terminal_button05.ogg' = 1,
+ 'sound/machines/terminal/terminal_button06.ogg' = 1,
+ 'sound/machines/terminal/terminal_button07.ogg' = 1,
+ 'sound/machines/terminal/terminal_button08.ogg' = 1,
)
mid_length = 0.3 SECONDS
/datum/looping_sound/soup
mid_sounds = list(
- 'sound/effects/soup_boil1.ogg' = 1,
- 'sound/effects/soup_boil2.ogg' = 1,
- 'sound/effects/soup_boil3.ogg' = 1,
- 'sound/effects/soup_boil4.ogg' = 1,
- 'sound/effects/soup_boil5.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil1.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil2.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil3.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil4.ogg' = 1,
+ 'sound/effects/soup_boil/soup_boil5.ogg' = 1,
)
mid_length = 3 SECONDS
volume = 80
- end_sound = 'sound/effects/soup_boil_end.ogg'
+ end_sound = 'sound/effects/soup_boil/soup_boil_end.ogg'
end_volume = 60
extra_range = MEDIUM_RANGE_SOUND_EXTRARANGE
falloff_exponent = 4
diff --git a/code/datums/looping_sounds/music.dm b/code/datums/looping_sounds/music.dm
index ac76e236bc784..cc35ab8a8ee37 100644
--- a/code/datums/looping_sounds/music.dm
+++ b/code/datums/looping_sounds/music.dm
@@ -1,6 +1,6 @@
/datum/looping_sound/local_forecast
mid_sounds = list(
- 'sound/ambience/music/elevator/robocop-short.ogg' = 1,
+ 'sound/music/elevator/robocop-short.ogg' = 1,
)
mid_length = 61 SECONDS
volume = 20
diff --git a/code/datums/looping_sounds/vents.dm b/code/datums/looping_sounds/vents.dm
index 2d0a3443631df..016b21db9cad0 100644
--- a/code/datums/looping_sounds/vents.dm
+++ b/code/datums/looping_sounds/vents.dm
@@ -1,7 +1,7 @@
/datum/looping_sound/vent_pump_overclock
- start_sound = 'sound/machines/fan_start.ogg'
+ start_sound = 'sound/machines/fan/fan_start.ogg'
start_length = 1.5 SECONDS
- end_sound = 'sound/machines/fan_stop.ogg'
+ end_sound = 'sound/machines/fan/fan_stop.ogg'
end_sound = 1.5 SECONDS
- mid_sounds = 'sound/machines/fan_loop.ogg'
+ mid_sounds = 'sound/machines/fan/fan_loop.ogg'
mid_length = 2 SECONDS
diff --git a/code/datums/looping_sounds/weather.dm b/code/datums/looping_sounds/weather.dm
index 6576cfb4e8d12..fa782a5f4ee5a 100644
--- a/code/datums/looping_sounds/weather.dm
+++ b/code/datums/looping_sounds/weather.dm
@@ -1,53 +1,53 @@
/datum/looping_sound/active_outside_ashstorm
mid_sounds = list(
- 'sound/weather/ashstorm/outside/active_mid1.ogg'=1,
- 'sound/weather/ashstorm/outside/active_mid1.ogg'=1,
- 'sound/weather/ashstorm/outside/active_mid1.ogg'=1
+ 'sound/ambience/weather/ashstorm/outside/active_mid1.ogg'=1,
+ 'sound/ambience/weather/ashstorm/outside/active_mid1.ogg'=1,
+ 'sound/ambience/weather/ashstorm/outside/active_mid1.ogg'=1
)
mid_length = 80
- start_sound = 'sound/weather/ashstorm/outside/active_start.ogg'
+ start_sound = 'sound/ambience/weather/ashstorm/outside/active_start.ogg'
start_length = 130
- end_sound = 'sound/weather/ashstorm/outside/active_end.ogg'
+ end_sound = 'sound/ambience/weather/ashstorm/outside/active_end.ogg'
volume = 80
/datum/looping_sound/active_inside_ashstorm
mid_sounds = list(
- 'sound/weather/ashstorm/inside/active_mid1.ogg'=1,
- 'sound/weather/ashstorm/inside/active_mid2.ogg'=1,
- 'sound/weather/ashstorm/inside/active_mid3.ogg'=1
+ 'sound/ambience/weather/ashstorm/inside/active_mid1.ogg'=1,
+ 'sound/ambience/weather/ashstorm/inside/active_mid2.ogg'=1,
+ 'sound/ambience/weather/ashstorm/inside/active_mid3.ogg'=1
)
mid_length = 80
- start_sound = 'sound/weather/ashstorm/inside/active_start.ogg'
+ start_sound = 'sound/ambience/weather/ashstorm/inside/active_start.ogg'
start_length = 130
- end_sound = 'sound/weather/ashstorm/inside/active_end.ogg'
+ end_sound = 'sound/ambience/weather/ashstorm/inside/active_end.ogg'
volume = 60
/datum/looping_sound/weak_outside_ashstorm
mid_sounds = list(
- 'sound/weather/ashstorm/outside/weak_mid1.ogg'=1,
- 'sound/weather/ashstorm/outside/weak_mid2.ogg'=1,
- 'sound/weather/ashstorm/outside/weak_mid3.ogg'=1
+ 'sound/ambience/weather/ashstorm/outside/weak_mid1.ogg'=1,
+ 'sound/ambience/weather/ashstorm/outside/weak_mid2.ogg'=1,
+ 'sound/ambience/weather/ashstorm/outside/weak_mid3.ogg'=1
)
mid_length = 80
- start_sound = 'sound/weather/ashstorm/outside/weak_start.ogg'
+ start_sound = 'sound/ambience/weather/ashstorm/outside/weak_start.ogg'
start_length = 130
- end_sound = 'sound/weather/ashstorm/outside/weak_end.ogg'
+ end_sound = 'sound/ambience/weather/ashstorm/outside/weak_end.ogg'
volume = 50
/datum/looping_sound/weak_inside_ashstorm
mid_sounds = list(
- 'sound/weather/ashstorm/inside/weak_mid1.ogg'=1,
- 'sound/weather/ashstorm/inside/weak_mid2.ogg'=1,
- 'sound/weather/ashstorm/inside/weak_mid3.ogg'=1
+ 'sound/ambience/weather/ashstorm/inside/weak_mid1.ogg'=1,
+ 'sound/ambience/weather/ashstorm/inside/weak_mid2.ogg'=1,
+ 'sound/ambience/weather/ashstorm/inside/weak_mid3.ogg'=1
)
mid_length = 80
- start_sound = 'sound/weather/ashstorm/inside/weak_start.ogg'
+ start_sound = 'sound/ambience/weather/ashstorm/inside/weak_start.ogg'
start_length = 130
- end_sound = 'sound/weather/ashstorm/inside/weak_end.ogg'
+ end_sound = 'sound/ambience/weather/ashstorm/inside/weak_end.ogg'
volume = 30
/datum/looping_sound/void_loop
- mid_sounds = list('sound/ambience/VoidsEmbrace.ogg'=1)
+ mid_sounds = list('sound/music/antag/heretic/VoidsEmbrace.ogg'=1)
mid_length = 1669 // exact length of the music in ticks
volume = 100
extra_range = 30
diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm
index 28b820278e21b..35f8a254e177e 100644
--- a/code/datums/martial/cqc.dm
+++ b/code/datums/martial/cqc.dm
@@ -104,7 +104,7 @@
attacker,
)
to_chat(attacker, span_danger("You slam [defender] into the ground!"))
- playsound(attacker, 'sound/weapons/slam.ogg', 50, TRUE, -1)
+ playsound(attacker, 'sound/items/weapons/slam.ogg', 50, TRUE, -1)
defender.apply_damage(10, BRUTE)
defender.Paralyze(12 SECONDS)
log_combat(attacker, defender, "slammed (CQC)")
@@ -125,7 +125,7 @@
attacker,
)
to_chat(attacker, span_danger("You kick [defender]'s head, knocking [defender.p_them()] out!"))
- playsound(attacker, 'sound/weapons/genhit1.ogg', 50, TRUE, -1)
+ playsound(attacker, 'sound/items/weapons/genhit1.ogg', 50, TRUE, -1)
var/helmet_protection = defender.run_armor_check(BODY_ZONE_HEAD, MELEE)
defender.apply_effect(20 SECONDS, EFFECT_KNOCKDOWN, helmet_protection)
@@ -141,7 +141,7 @@
attacker,
)
to_chat(attacker, span_danger("You kick [defender] back!"))
- playsound(attacker, 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
+ playsound(attacker, 'sound/items/weapons/cqchit1.ogg', 50, TRUE, -1)
var/atom/throw_target = get_edge_target_turf(defender, attacker.dir)
defender.throw_at(throw_target, 1, 14, attacker)
defender.apply_damage(10, attacker.get_attack_type())
@@ -163,7 +163,7 @@
)
to_chat(attacker, span_danger("You punch [defender]'s neck!"))
defender.adjustStaminaLoss(60)
- playsound(attacker, 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
+ playsound(attacker, 'sound/items/weapons/cqchit1.ogg', 50, TRUE, -1)
return TRUE
/datum/martial_art/cqc/proc/Restrain(mob/living/attacker, mob/living/defender)
@@ -201,7 +201,7 @@
attacker,
)
to_chat(attacker, span_danger("You strike [defender]'s abdomen, neck and back consecutively!"))
- playsound(defender, 'sound/weapons/cqchit2.ogg', 50, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/cqchit2.ogg', 50, TRUE, -1)
var/obj/item/held_item = defender.get_active_held_item()
if(held_item && defender.temporarilyRemoveItemFromInventory(held_item))
attacker.put_in_hands(held_item)
@@ -291,7 +291,7 @@
picked_hit_type = pick("kick", "stomp")
defender.apply_damage(bonus_damage, BRUTE)
- playsound(defender, (picked_hit_type == "kick" || picked_hit_type == "stomp") ? 'sound/weapons/cqchit2.ogg' : 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
+ playsound(defender, (picked_hit_type == "kick" || picked_hit_type == "stomp") ? 'sound/items/weapons/cqchit2.ogg' : 'sound/items/weapons/cqchit1.ogg', 50, TRUE, -1)
defender.visible_message(
span_danger("[attacker] [picked_hit_type]ed [defender]!"),
@@ -344,7 +344,7 @@
attacker,
)
to_chat(attacker, span_danger("You strike [defender]'s jaw,[disarmed_item ? " disarming [defender.p_them()] of [disarmed_item] and" : ""] leaving [defender.p_them()] disoriented!"))
- playsound(defender, 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/cqchit1.ogg', 50, TRUE, -1)
defender.set_jitter_if_lower(4 SECONDS)
defender.apply_damage(5, attacker.get_attack_type())
log_combat(attacker, defender, "disarmed (CQC)", addition = disarmed_item ? "(disarmed of [disarmed_item])" : null)
@@ -358,7 +358,7 @@
attacker,
)
to_chat(attacker, span_warning("You fail to disarm [defender]!"))
- playsound(defender, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
log_combat(attacker, defender, "failed to disarm (CQC)")
return MARTIAL_ATTACK_FAIL
diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm
index 57e158cf66982..d670b8eb63806 100644
--- a/code/datums/martial/krav_maga.dm
+++ b/code/datums/martial/krav_maga.dm
@@ -201,7 +201,7 @@
attacker,
)
to_chat(attacker, span_danger("You disarm [defender]!"))
- playsound(defender, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
log_combat(attacker, defender, "disarmed (Krav Maga)", addition = "(disarmed of [stuff_in_hand])")
return MARTIAL_ATTACK_INVALID // normal shove
diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm
index 47df74a3d4634..89981554f3ea3 100644
--- a/code/datums/martial/plasma_fist.dm
+++ b/code/datums/martial/plasma_fist.dm
@@ -41,7 +41,7 @@
/datum/martial_art/plasma_fist/proc/Tornado(mob/living/attacker, mob/living/defender)
attacker.say("TORNADO SWEEP!", forced="plasma fist")
- dance_rotate(attacker, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), attacker, 'sound/weapons/punch1.ogg', 15, TRUE, -1))
+ dance_rotate(attacker, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), attacker, 'sound/items/weapons/punch1.ogg', 15, TRUE, -1))
tornado_spell.cast(attacker)
log_combat(attacker, defender, "tornado sweeped (Plasma Fist)")
return TRUE
@@ -55,7 +55,7 @@
attacker,
)
to_chat(attacker, span_danger("You hit [defender] with Plasma Punch!"))
- playsound(defender, 'sound/weapons/punch1.ogg', 50, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 50, TRUE, -1)
var/atom/throw_target = get_edge_target_turf(defender, get_dir(defender, get_step_away(defender, attacker)))
defender.throw_at(throw_target, 200, 4,attacker)
attacker.say("HYAH!", forced="plasma fist")
@@ -66,7 +66,7 @@
var/hasclient = !!defender.client
attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH)
- playsound(defender, 'sound/weapons/punch1.ogg', 50, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 50, TRUE, -1)
attacker.say("PLASMA FIST!", forced="plasma fist")
defender.visible_message(
span_danger("[attacker] hits [defender] with THE PLASMA FIST TECHNIQUE!"),
@@ -125,7 +125,7 @@
user.apply_damage(rand(50, 70), BRUTE, wound_bonus = CANT_WOUND)
addtimer(CALLBACK(src, PROC_REF(Apotheosis_end), user), 6 SECONDS)
- playsound(boomspot, 'sound/weapons/punch1.ogg', 50, TRUE, -1)
+ playsound(boomspot, 'sound/items/weapons/punch1.ogg', 50, TRUE, -1)
explosion(user, devastation_range = plasma_power, heavy_impact_range = plasma_power*2, light_impact_range = plasma_power*4, ignorecap = TRUE, explosion_cause = src)
plasma_power = 1 //just in case there is any clever way to cause it to happen again
return TRUE
diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm
index 454d23637f255..99c2b0e222464 100644
--- a/code/datums/martial/psychotic_brawl.dm
+++ b/code/datums/martial/psychotic_brawl.dm
@@ -67,7 +67,7 @@
attacker,
)
to_chat(attacker, span_danger("You [atk_verb] [defender]!"))
- playsound(defender, 'sound/weapons/punch1.ogg', 40, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 40, TRUE, -1)
defender.apply_damage(defender_damage, attacker.get_attack_type(), BODY_ZONE_HEAD)
attacker.apply_damage(rand(5, 10), attacker.get_attack_type(), BODY_ZONE_HEAD)
if(iscarbon(defender))
diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm
index 02d0452fad265..f52050d8d76d7 100644
--- a/code/datums/martial/sleeping_carp.dm
+++ b/code/datums/martial/sleeping_carp.dm
@@ -53,7 +53,7 @@
attacker,
)
to_chat(attacker, span_danger("You [atk_verb] [defender]!"))
- playsound(defender, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 25, TRUE, -1)
log_combat(attacker, defender, "strong punched (Sleeping Carp)")
defender.apply_damage(20, attacker.get_attack_type(), affecting)
return TRUE
@@ -106,7 +106,7 @@
var/grab_log_description = "grabbed"
attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH)
- playsound(defender, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 25, TRUE, -1)
if(defender.stat != DEAD && !defender.IsUnconscious() && defender.getStaminaLoss() >= 80) //We put our target to sleep.
defender.visible_message(
span_danger("[attacker] carefully pinch a nerve in [defender]'s neck, knocking them out cold!"),
@@ -161,7 +161,7 @@
)
to_chat(attacker, span_danger("You [atk_verb] [defender]!"))
defender.apply_damage(final_damage, attacker.get_attack_type(), affecting, wound_bonus = CANT_WOUND)
- playsound(defender, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 25, TRUE, -1)
log_combat(attacker, defender, "punched (Sleeping Carp)")
return MARTIAL_ATTACK_SUCCESS
@@ -176,7 +176,7 @@
return MARTIAL_ATTACK_SUCCESS
attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH)
- playsound(defender, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+ playsound(defender, 'sound/items/weapons/punch1.ogg', 25, TRUE, -1)
defender.apply_damage(20, STAMINA)
log_combat(attacker, defender, "disarmed (Sleeping Carp)")
return MARTIAL_ATTACK_INVALID // normal disarm
@@ -204,7 +204,7 @@
span_danger("[carp_user] effortlessly swats [hitting_projectile] aside! [carp_user.p_They()] can block bullets with [carp_user.p_their()] bare hands!"),
span_userdanger("You deflect [hitting_projectile]!"),
)
- playsound(carp_user, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ playsound(carp_user, pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg'), 75, TRUE)
hitting_projectile.firer = carp_user
hitting_projectile.set_angle(rand(0, 360))//SHING
return COMPONENT_BULLET_PIERCED
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 82cd275aef25e..695bf43949653 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -490,3 +490,14 @@
description = "I DIDN'T MEAN TO HURT THEM!"
mood_change = -20
timeout = 10 MINUTES
+
+//Gained when you're hit over the head with wrapping paper or cardboard roll
+/datum/mood_event/bapped
+ description = "Ow.. my head, I feel a bit foolish now!"
+ mood_change = -1
+ timeout = 3 MINUTES
+
+/datum/mood_event/bapped/add_effects()
+ // Felinids apparently hate being hit over the head with cardboard
+ if(isfelinid(owner))
+ mood_change = -2
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index c86f7d7003334..e09a8337b72a4 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -474,7 +474,7 @@
if(prob(15))
owner.acid_act(rand(30, 50), 10)
owner.visible_message(span_warning("[owner]'s skin bubbles and pops."), span_userdanger("Your bubbling flesh pops! It burns!"))
- playsound(owner,'sound/weapons/sear.ogg', 50, TRUE)
+ playsound(owner,'sound/items/weapons/sear.ogg', 50, TRUE)
/datum/mutation/human/spastic
name = "Spastic"
diff --git a/code/datums/mutations/fire_breath.dm b/code/datums/mutations/fire_breath.dm
index 56915ff0130ea..d643bd98508d2 100644
--- a/code/datums/mutations/fire_breath.dm
+++ b/code/datums/mutations/fire_breath.dm
@@ -29,7 +29,7 @@
name = "Fire Breath"
desc = "You breathe a cone of fire directly in front of you."
button_icon_state = "fireball0"
- sound = 'sound/magic/demon_dies.ogg' //horrifying lizard noises
+ sound = 'sound/effects/magic/demon_dies.ogg' //horrifying lizard noises
school = SCHOOL_EVOCATION
cooldown_time = 40 SECONDS
diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm
index 38ecb0fa07356..4eb04cdc03366 100644
--- a/code/datums/mutations/hulk.dm
+++ b/code/datums/mutations/hulk.dm
@@ -207,7 +207,7 @@
continue
yeeted_person.adjustBruteLoss(step*0.5)
- playsound(collateral_mob,'sound/weapons/punch1.ogg',50,TRUE)
+ playsound(collateral_mob,'sound/items/weapons/punch1.ogg',50,TRUE)
log_combat(the_hulk, collateral_mob, "has smacked with tail swing victim")
log_combat(the_hulk, yeeted_person, "has smacked this person into someone while tail swinging") // i have no idea how to better word this
diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm
index 5a8d7458f3d0f..d3627167cb507 100644
--- a/code/datums/mutations/sight.dm
+++ b/code/datums/mutations/sight.dm
@@ -167,13 +167,13 @@
return
to_chat(source, span_warning("You shoot with your laser eyes!"))
source.changeNext_move(CLICK_CD_RANGE)
- source.newtonian_move(get_dir(target, source))
+ source.newtonian_move(get_angle(source, target))
var/obj/projectile/beam/laser/laser_eyes/LE = new(source.loc)
LE.firer = source
LE.def_zone = ran_zone(source.zone_selected)
LE.preparePixelProjectile(target, source, modifiers)
INVOKE_ASYNC(LE, TYPE_PROC_REF(/obj/projectile, fire))
- playsound(source, 'sound/weapons/taser2.ogg', 75, TRUE)
+ playsound(source, 'sound/items/weapons/taser2.ogg', 75, TRUE)
///Projectile type used by laser eyes
/obj/projectile/beam/laser/laser_eyes
diff --git a/code/datums/mutations/touch.dm b/code/datums/mutations/touch.dm
index 2483ef2e0fa1a..634a46ab217ba 100644
--- a/code/datums/mutations/touch.dm
+++ b/code/datums/mutations/touch.dm
@@ -28,7 +28,7 @@
name = "Shock Touch"
desc = "Channel electricity to your hand to shock people with."
button_icon_state = "zap"
- sound = 'sound/weapons/zapbang.ogg'
+ sound = 'sound/items/weapons/zapbang.ogg'
cooldown_time = 12 SECONDS
invocation_type = INVOCATION_NONE
spell_requirements = NONE
@@ -117,7 +117,7 @@
desc = "You can now lay your hands on other people to transfer a small amount of their physical injuries to yourself."
button_icon = 'icons/mob/actions/actions_genetic.dmi'
button_icon_state = "mending_touch"
- sound = 'sound/magic/staff_healing.ogg'
+ sound = 'sound/effects/magic/staff_healing.ogg'
cooldown_time = 12 SECONDS
school = SCHOOL_RESTORATION
invocation_type = INVOCATION_NONE
diff --git a/code/datums/proximity_monitor/fields/timestop.dm b/code/datums/proximity_monitor/fields/timestop.dm
index 79996dee2dd36..3b8001426a03c 100644
--- a/code/datums/proximity_monitor/fields/timestop.dm
+++ b/code/datums/proximity_monitor/fields/timestop.dm
@@ -45,13 +45,13 @@
/obj/effect/timestop/Destroy()
QDEL_NULL(chronofield)
if(!hidden)
- playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse!
+ playsound(src, 'sound/effects/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse!
return ..()
/obj/effect/timestop/proc/timestop()
target = get_turf(src)
if(!hidden)
- playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, -1)
+ playsound(src, 'sound/effects/magic/timeparadox2.ogg', 75, TRUE, -1)
chronofield = new (src, freezerange, TRUE, immune, antimagic_flags, channelled)
if(!channelled)
QDEL_IN(src, duration)
diff --git a/code/datums/quirks/neutral_quirks/monochromatic.dm b/code/datums/quirks/neutral_quirks/monochromatic.dm
index dd66220cb56a9..ef6735df25d93 100644
--- a/code/datums/quirks/neutral_quirks/monochromatic.dm
+++ b/code/datums/quirks/neutral_quirks/monochromatic.dm
@@ -17,7 +17,7 @@
/datum/quirk/monochromatic/post_add()
if(is_detective_job(quirk_holder.mind.assigned_role))
to_chat(quirk_holder, span_boldannounce("Mmm. Nothing's ever clear on this station. It's all shades of gray..."))
- quirk_holder.playsound_local(quirk_holder, 'sound/ambience/ambidet1.ogg', 50, FALSE)
+ quirk_holder.playsound_local(quirk_holder, 'sound/ambience/security/ambidet1.ogg', 50, FALSE)
/datum/quirk/monochromatic/remove()
quirk_holder.remove_client_colour(/datum/client_colour/monochrome)
diff --git a/code/datums/quirks/positive_quirks/spacer.dm b/code/datums/quirks/positive_quirks/spacer.dm
index 051798b4c06a6..344462703e906 100644
--- a/code/datums/quirks/positive_quirks/spacer.dm
+++ b/code/datums/quirks/positive_quirks/spacer.dm
@@ -43,7 +43,7 @@
check_z(quirk_holder, skip_timers = TRUE)
// drift slightly faster through zero G
- quirk_holder.inertia_move_delay *= 0.8
+ quirk_holder.inertia_move_multiplier *= 0.8
var/mob/living/carbon/human/human_quirker = quirk_holder
human_quirker.set_mob_height(modded_height)
@@ -73,7 +73,7 @@
if(QDELING(quirk_holder))
return
- quirk_holder.inertia_move_delay /= 0.8
+ quirk_holder.inertia_move_multiplier /= 0.8
quirk_holder.clear_mood_event("spacer")
quirk_holder.remove_movespeed_modifier(/datum/movespeed_modifier/spacer)
quirk_holder.remove_status_effect(/datum/status_effect/spacer)
diff --git a/code/datums/station_traits/job_traits.dm b/code/datums/station_traits/job_traits.dm
index b23a694cfdec9..3e8171d99c57b 100644
--- a/code/datums/station_traits/job_traits.dm
+++ b/code/datums/station_traits/job_traits.dm
@@ -258,7 +258,8 @@
/datum/station_trait/job/pun_pun/New()
. = ..()
- if(!SSticker.HasRoundStarted() || !GLOB.the_one_and_only_punpun) //Make sure we don't have two Pun Puns if loaded before the start of the round.
+ //Make sure we don't have two Pun Puns if loaded before the start of the round.
+ if(SSticker.HasRoundStarted() || !GLOB.the_one_and_only_punpun)
return
new /obj/effect/landmark/start/pun_pun(GLOB.the_one_and_only_punpun.loc)
qdel(GLOB.the_one_and_only_punpun)
diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm
index fc7fd4c01ef7f..8b5aadb3a06d6 100644
--- a/code/datums/station_traits/negative_traits.dm
+++ b/code/datums/station_traits/negative_traits.dm
@@ -713,7 +713,7 @@
Every shielding unit will provide an additional [shielder_time] of protection, fully protecting the station with [max_shielders] shielding units.
"}
- priority_announce(announcement, sound = 'sound/misc/notice1.ogg')
+ priority_announce(announcement, sound = 'sound/announcer/notice/notice1.ogg')
//Set the display screens to the radiation alert
var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS)
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 68462f1ae2ef2..cf3d1c88440b3 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -426,7 +426,7 @@
/datum/status_effect/mayhem/on_apply()
. = ..()
to_chat(owner, "RIP AND TEAR")
- SEND_SOUND(owner, sound('sound/hallucinations/veryfar_noise.ogg'))
+ SEND_SOUND(owner, sound('sound/effects/hallucinations/veryfar_noise.ogg'))
owner.cause_hallucination( \
/datum/hallucination/delusion/preset/demon, \
"[id] status effect", \
@@ -572,7 +572,7 @@
owner.add_stun_absorption(source = id, priority = 4)
owner.add_movespeed_mod_immunities(id, /datum/movespeed_modifier/damage_slowdown)
ADD_TRAIT(owner, TRAIT_FREE_HYPERSPACE_MOVEMENT, id)
- owner.playsound_local(get_turf(owner), 'sound/chemistry/ahaha.ogg', vol = 100, vary = TRUE, use_reverb = TRUE)
+ owner.playsound_local(get_turf(owner), 'sound/effects/chemistry/ahaha.ogg', vol = 100, vary = TRUE, use_reverb = TRUE)
return TRUE
/datum/status_effect/blessing_of_insanity/on_remove()
diff --git a/code/datums/status_effects/debuffs/choke.dm b/code/datums/status_effects/debuffs/choke.dm
index c16b946aa02bd..9113c8a1a023e 100644
--- a/code/datums/status_effects/debuffs/choke.dm
+++ b/code/datums/status_effects/debuffs/choke.dm
@@ -217,7 +217,7 @@
var/obj/item/bodypart/chest = carbon_victim.get_bodypart(BODY_ZONE_CHEST)
carbon_victim.cause_wound_of_type_and_severity(WOUND_BLUNT, chest, WOUND_SEVERITY_SEVERE, wound_source = "human force to the chest")
- playsound(owner, 'sound/creatures/crack_vomit.ogg', 120, extrarange = 5, falloff_exponent = 4)
+ playsound(owner, 'sound/mobs/humanoids/human/gag_vomit/crack_vomit.ogg', 120, extrarange = 5, falloff_exponent = 4)
vomit_up()
/datum/status_effect/choke/proc/mirror_dir(atom/source, old_dir, new_dir)
diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm
index 08f5ae101bf77..865e9869ebeea 100644
--- a/code/datums/status_effects/debuffs/debuffs.dm
+++ b/code/datums/status_effects/debuffs/debuffs.dm
@@ -488,7 +488,7 @@
wasting_effect.transform = owner.transform //if the owner has been stunned the overlay should inherit that position
wasting_effect.alpha = 255
animate(wasting_effect, alpha = 0, time = 32)
- playsound(owner, 'sound/effects/curse5.ogg', 20, TRUE, -1)
+ playsound(owner, 'sound/effects/curse/curse5.ogg', 20, TRUE, -1)
owner.adjustFireLoss(0.75)
if(effect_last_activation <= world.time)
effect_last_activation = world.time + effect_cooldown
@@ -511,7 +511,7 @@
/datum/status_effect/necropolis_curse/proc/grasp(turf/spawn_turf)
set waitfor = FALSE
new/obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, owner.dir)
- playsound(spawn_turf, 'sound/effects/curse2.ogg', 80, TRUE, -1)
+ playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1)
var/obj/projectile/curse_hand/C = new (spawn_turf)
C.preparePixelProjectile(owner, spawn_turf)
C.fire()
diff --git a/code/datums/status_effects/debuffs/genetic_damage.dm b/code/datums/status_effects/debuffs/genetic_damage.dm
index 91cfc593fcc41..21b6f1db2185c 100644
--- a/code/datums/status_effects/debuffs/genetic_damage.dm
+++ b/code/datums/status_effects/debuffs/genetic_damage.dm
@@ -46,15 +46,20 @@
qdel(src)
return
-/datum/status_effect/genetic_damage/proc/on_healthscan(datum/source, list/render_list, advanced)
+/datum/status_effect/genetic_damage/proc/on_healthscan(datum/source, list/render_list, advanced, mob/user, mode, tochat)
SIGNAL_HANDLER
+ var/message = ""
if(advanced)
- render_list += "Genetic damage: [round(total_damage / minimum_before_tox_damage * 100, 0.1)]%\n"
+ message = "Genetic damage: [round(total_damage / minimum_before_tox_damage * 100, 0.1)]%"
else if(total_damage >= minimum_before_tox_damage)
- render_list += "Severe genetic damage detected.\n"
+ message = "Severe genetic damage detected."
else
- render_list += "Minor genetic damage detected.\n"
+ message = "Minor genetic damage detected."
+
+ if(message)
+ render_list += conditional_tooltip("[message]", "Irreparable under normal circumstances - will decay over time.", tochat)
+ render_list += " "
#undef GORILLA_MUTATION_CHANCE_PER_SECOND
#undef GORILLA_MUTATION_MINIMUM_DAMAGE
diff --git a/code/datums/status_effects/debuffs/hallucination.dm b/code/datums/status_effects/debuffs/hallucination.dm
index 5d67acc789ed3..0d8875c6b23dd 100644
--- a/code/datums/status_effects/debuffs/hallucination.dm
+++ b/code/datums/status_effects/debuffs/hallucination.dm
@@ -38,13 +38,13 @@
))
/// Signal proc for [COMSIG_LIVING_HEALTHSCAN]. Show we're hallucinating to (advanced) scanners.
-/datum/status_effect/hallucination/proc/on_health_scan(datum/source, list/render_list, advanced, mob/user, mode)
+/datum/status_effect/hallucination/proc/on_health_scan(datum/source, list/render_list, advanced, mob/user, mode, tochat)
SIGNAL_HANDLER
if(!advanced)
return
-
- render_list += "Subject is hallucinating.\n"
+ render_list += conditional_tooltip("Subject is hallucinating.", "Supply antipsychotic medication.", tochat)
+ render_list += " "
/// Signal proc for [COMSIG_CARBON_CHECKING_BODYPART],
/// checking bodyparts while hallucinating can cause them to appear more damaged than they are
diff --git a/code/datums/status_effects/debuffs/slime/slime_food.dm b/code/datums/status_effects/debuffs/slime/slime_food.dm
index aa711bb878f75..538e62e27c597 100644
--- a/code/datums/status_effects/debuffs/slime/slime_food.dm
+++ b/code/datums/status_effects/debuffs/slime/slime_food.dm
@@ -54,12 +54,3 @@
/datum/status_effect/slime_food/on_remove()
feeder = null
-
-/datum/status_effect/slime_food/update_particles()
- if(particle_effect)
- return
-
- particle_effect = new(owner, /particles/pollen)
-
- //particle coloured like the "pheromones" of the feeder
- particle_effect.particles.color = "[feeder.chat_color]a0"
diff --git a/code/datums/status_effects/debuffs/slime/slimed.dm b/code/datums/status_effects/debuffs/slime/slimed.dm
index 6c2c0fb5be342..2540c4df5136c 100644
--- a/code/datums/status_effects/debuffs/slime/slimed.dm
+++ b/code/datums/status_effects/debuffs/slime/slimed.dm
@@ -101,17 +101,6 @@
))
to_chat(owner, span_userdanger("[feedback_text] as the layer of slime eats away at you!"))
-/datum/status_effect/slimed/update_particles()
- if(particle_effect)
- return
-
- // taste the rainbow
- var/particle_type = rainbow ? /particles/slime/rainbow : /particles/slime
- particle_effect = new(owner, particle_type)
-
- if(!rainbow)
- particle_effect.particles.color = "[slime_color]a0"
-
/datum/status_effect/slimed/get_examine_text()
return span_warning("[owner.p_They()] [owner.p_are()] covered in bubbling slime!")
diff --git a/code/datums/status_effects/debuffs/staggered.dm b/code/datums/status_effects/debuffs/staggered.dm
index 1291da1307a61..88dd91c00e0d2 100644
--- a/code/datums/status_effects/debuffs/staggered.dm
+++ b/code/datums/status_effects/debuffs/staggered.dm
@@ -24,8 +24,6 @@
/datum/status_effect/staggered/on_remove()
UnregisterSignal(owner, COMSIG_LIVING_DEATH)
owner.remove_movespeed_modifier(/datum/movespeed_modifier/staggered)
- // Resetting both X on remove so we're back to normal
- animate(owner, pixel_x = owner.base_pixel_x, time = 0.2 SECONDS, flags = ANIMATION_PARALLEL)
/// Signal proc that self deletes our staggered effect
/datum/status_effect/staggered/proc/clear_staggered(datum/source)
@@ -45,11 +43,12 @@
/// Helper proc that causes the mob to do a stagger animation.
/// Doesn't change significantly, just meant to represent swaying back and forth
/mob/living/proc/do_stagger_animation()
- animate(src, pixel_x = 4, time = 0.2 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
- sleep(0.2 SECONDS)
- animate(src, pixel_x = -8, time = 0.2 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
- sleep(0.2 SECONDS)
- animate(src, pixel_x = 4, time = 0.2 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
+ var/normal_pos = base_pixel_x + body_position_pixel_x_offset
+ var/jitter_right = normal_pos + 4
+ var/jitter_left = normal_pos - 4
+ animate(src, pixel_x = jitter_left, 0.2 SECONDS, flags = ANIMATION_PARALLEL)
+ animate(pixel_x = jitter_right, time = 0.4 SECONDS)
+ animate(pixel_x = normal_pos, time = 0.2 SECONDS)
/// Status effect specifically for instances where someone is vulnerable to being stunned when shoved.
/datum/status_effect/next_shove_stuns
diff --git a/code/datums/status_effects/debuffs/terrified.dm b/code/datums/status_effects/debuffs/terrified.dm
index 6ed79372d01aa..61a6ecd4eda3b 100644
--- a/code/datums/status_effects/debuffs/terrified.dm
+++ b/code/datums/status_effects/debuffs/terrified.dm
@@ -55,7 +55,7 @@
owner.adjust_jitter_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS)
if(terror_buildup >= TERROR_PANIC_THRESHOLD) //If you reach this amount of buildup in an engagement, it's time to start looking for a way out.
- owner.playsound_local(get_turf(owner), 'sound/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
+ owner.playsound_local(get_turf(owner), 'sound/effects/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
owner.add_fov_trait(id, FOV_270_DEGREES) //Terror induced tunnel vision
owner.adjust_eye_blur_up_to(10 SECONDS * seconds_between_ticks, 10 SECONDS)
if(prob(5)) //We have a little panic attack. Consider it GENTLE ENCOURAGEMENT to start running away.
diff --git a/code/datums/status_effects/debuffs/tower_of_babel.dm b/code/datums/status_effects/debuffs/tower_of_babel.dm
index b3c1ae0c477c7..a56ea1ac6d9a9 100644
--- a/code/datums/status_effects/debuffs/tower_of_babel.dm
+++ b/code/datums/status_effects/debuffs/tower_of_babel.dm
@@ -41,7 +41,7 @@
return
owner.emote("mumble")
- owner.playsound_local(get_turf(owner), 'sound/magic/magic_block_mind.ogg', 75, vary = TRUE) // sound of creepy whispers
+ owner.playsound_local(get_turf(owner), 'sound/effects/magic/magic_block_mind.ogg', 75, vary = TRUE) // sound of creepy whispers
to_chat(owner, span_reallybig(span_hypnophrase("You feel a magical force affecting your speech patterns!")))
/datum/status_effect/tower_of_babel/magical/on_remove()
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 3d4bd7e93655c..6fd10943b7edf 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -119,7 +119,7 @@
/datum/status_effect/bounty/on_apply()
to_chat(owner, span_boldnotice("You hear something behind you talking... \"You have been marked for death by [rewarded]. If you die, they will be rewarded.\""))
- playsound(owner, 'sound/weapons/gun/shotgun/rack.ogg', 75, FALSE)
+ playsound(owner, 'sound/items/weapons/gun/shotgun/rack.ogg', 75, FALSE)
return ..()
/datum/status_effect/bounty/tick(seconds_between_ticks)
@@ -130,7 +130,7 @@
/datum/status_effect/bounty/proc/rewards()
if(rewarded && rewarded.mind && rewarded.stat != DEAD)
to_chat(owner, span_boldnotice("You hear something behind you talking... \"Bounty claimed.\""))
- playsound(owner, 'sound/weapons/gun/shotgun/shot.ogg', 75, FALSE)
+ playsound(owner, 'sound/items/weapons/gun/shotgun/shot.ogg', 75, FALSE)
to_chat(rewarded, span_greentext("You feel a surge of mana flow into you!"))
for(var/datum/action/cooldown/spell/spell in rewarded.actions)
spell.reset_spell_cooldown()
diff --git a/code/datums/status_effects/song_effects.dm b/code/datums/status_effects/song_effects.dm
index f61253c987d77..d846f47f169db 100644
--- a/code/datums/status_effects/song_effects.dm
+++ b/code/datums/status_effects/song_effects.dm
@@ -25,7 +25,7 @@
/datum/status_effect/song/antimagic/on_apply()
ADD_TRAIT(owner, TRAIT_ANTIMAGIC, MAGIC_TRAIT)
- playsound(owner, 'sound/weapons/fwoosh.ogg', 75, FALSE)
+ playsound(owner, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
return ..()
/datum/status_effect/song/antimagic/on_remove()
@@ -45,7 +45,7 @@
/datum/status_effect/song/light/on_apply()
mob_light_obj = owner.mob_light(3, 1.5, color = LIGHT_COLOR_DIM_YELLOW)
- playsound(owner, 'sound/weapons/fwoosh.ogg', 75, FALSE)
+ playsound(owner, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
return TRUE
/datum/status_effect/song/light/on_remove()
diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm
index e5a7f3ee0f5a8..e7122f4b355d7 100644
--- a/code/datums/storage/storage.dm
+++ b/code/datums/storage/storage.dm
@@ -974,7 +974,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
if(user.active_storage == src && user.client)
seeing += user
else
- is_using -= user
+ hide_contents(user)
return seeing
/**
@@ -1032,8 +1032,6 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
* * mob/to_hide - the mob to hide the storage from
*/
/datum/storage/proc/hide_contents(mob/to_hide)
- if(!to_hide.client)
- return TRUE
if(to_hide.active_storage == src)
to_hide.active_storage = null
@@ -1046,8 +1044,9 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
is_using -= to_hide
- to_hide.client.screen -= storage_interfaces[to_hide].list_ui_elements()
- to_hide.client.screen -= real_location.contents
+ if(to_hide.client)
+ to_hide.client.screen -= storage_interfaces[to_hide].list_ui_elements()
+ to_hide.client.screen -= real_location.contents
QDEL_NULL(storage_interfaces[to_hide])
storage_interfaces -= to_hide
@@ -1078,7 +1077,9 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
var/columns = clamp(max_slots, 1, screen_max_columns)
var/rows = clamp(CEILING(adjusted_contents / columns, 1) + additional_row, 1, screen_max_rows)
- for (var/ui_user in storage_interfaces)
+ for (var/mob/ui_user as anything in storage_interfaces)
+ if (isnull(storage_interfaces[ui_user]))
+ continue
storage_interfaces[ui_user].update_position(screen_start_x, screen_pixel_x, screen_start_y, screen_pixel_y, columns, rows)
var/current_x = screen_start_x
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index 16ffb326f8a86..df2518b4322c6 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -13,7 +13,7 @@
/// description of weather
var/desc = "Heavy gusts of wind blanket the area, periodically knocking down anyone caught in the open."
/// The message displayed in chat to foreshadow the weather's beginning
- var/telegraph_message = "The wind begins to pick up."
+ var/telegraph_message = span_warning("The wind begins to pick up.")
/// In deciseconds, how long from the beginning of the telegraph until the weather begins
var/telegraph_duration = 300
/// The sound file played to everyone on an affected z-level
@@ -22,7 +22,7 @@
var/telegraph_overlay
/// Displayed in chat once the weather begins in earnest
- var/weather_message = "The wind begins to blow ferociously!"
+ var/weather_message = span_userdanger("The wind begins to blow ferociously!")
/// In deciseconds, how long the weather lasts once it begins
var/weather_duration = 1200
/// See above - this is the lowest possible duration
@@ -37,7 +37,7 @@
var/weather_color = null
/// Displayed once the weather is over
- var/end_message = "The wind relents its assault."
+ var/end_message = span_danger("The wind relents its assault.")
/// In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely
var/end_duration = 300
/// Sound that plays while weather is ending
diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm
index bb4e5af63f3ad..7d432c1e488da 100644
--- a/code/datums/weather/weather_types/ash_storm.dm
+++ b/code/datums/weather/weather_types/ash_storm.dm
@@ -3,16 +3,16 @@
name = "ash storm"
desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected."
- telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter."
+ telegraph_message = span_boldwarning("An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter.")
telegraph_duration = 300
telegraph_overlay = "light_ash"
- weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!"
+ weather_message = span_userdanger("Smoldering clouds of scorching ash billow down around you! Get inside!")
weather_duration_lower = 600
weather_duration_upper = 1200
weather_overlay = "ash_storm"
- end_message = "The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now."
+ end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.")
end_duration = 300
end_overlay = "light_ash"
@@ -81,10 +81,10 @@
name = "emberfall"
desc = "A passing ash storm blankets the area in harmless embers."
- weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..."
+ weather_message = span_notice("Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by...")
weather_overlay = "light_ash"
- end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet."
+ end_message = span_notice("The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet.")
end_sound = null
aesthetic = TRUE
diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm
index 03ed0c68c311a..25037d433b5eb 100644
--- a/code/datums/weather/weather_types/floor_is_lava.dm
+++ b/code/datums/weather/weather_types/floor_is_lava.dm
@@ -3,15 +3,15 @@
name = "the floor is lava"
desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor."
- telegraph_message = "You feel the ground beneath you getting hot. Waves of heat distort the air."
+ telegraph_message = span_warning("You feel the ground beneath you getting hot. Waves of heat distort the air.")
telegraph_duration = 150
- weather_message = "The floor is lava! Get on top of something!"
+ weather_message = span_userdanger("The floor is lava! Get on top of something!")
weather_duration_lower = 300
weather_duration_upper = 600
weather_overlay = "lava"
- end_message = "The ground cools and returns to its usual form."
+ end_message = span_danger("The ground cools and returns to its usual form.")
end_duration = 0
area_type = /area
diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm
index 9bf17c7a9dc76..8acf8be4b9e66 100644
--- a/code/datums/weather/weather_types/radiation_storm.dm
+++ b/code/datums/weather/weather_types/radiation_storm.dm
@@ -4,17 +4,17 @@
desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
telegraph_duration = 400
- telegraph_message = "The air begins to grow warm."
+ telegraph_message = span_danger("The air begins to grow warm.")
- weather_message = "You feel waves of heat wash over you! Find shelter!"
+ weather_message = span_userdanger("You feel waves of heat wash over you! Find shelter!")
weather_overlay = "ash_storm"
weather_duration_lower = 600
weather_duration_upper = 1500
weather_color = "green"
- weather_sound = 'sound/misc/bloblarm.ogg'
+ weather_sound = 'sound/announcer/alarm/bloblarm.ogg'
end_duration = 100
- end_message = "The air seems to be cooling off again."
+ end_message = span_notice("The air seems to be cooling off again.")
area_type = /area
protected_areas = list(/area/station/maintenance, /area/station/ai_monitored/turret_protected/ai_upload, /area/station/ai_monitored/turret_protected/ai_upload_foyer,
diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm
index c98ee9636a7aa..2b749cdbc84d1 100644
--- a/code/datums/weather/weather_types/snow_storm.dm
+++ b/code/datums/weather/weather_types/snow_storm.dm
@@ -3,18 +3,18 @@
desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path."
probability = 90
- telegraph_message = "Drifting particles of snow begin to dust the surrounding area.."
+ telegraph_message = span_warning("Drifting particles of snow begin to dust the surrounding area..")
telegraph_duration = 300
telegraph_overlay = "light_snow"
- weather_message = "Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!"
+ weather_message = span_userdanger("Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!")
weather_overlay = "snow_storm"
weather_duration_lower = 600
weather_duration_upper = 1500
use_glow = FALSE
end_duration = 100
- end_message = "The snowfall dies down, it should be safe to go outside again."
+ end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.")
area_type = /area
protect_indoors = TRUE
diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm
index fa939d5b5607c..d7f98f07debd9 100644
--- a/code/datums/wires/syndicatebomb.dm
+++ b/code/datums/wires/syndicatebomb.dm
@@ -48,7 +48,7 @@
if(WIRE_PROCEED)
holder.visible_message(span_danger("[icon2html(B, viewers(holder))] The bomb buzzes ominously!"))
- playsound(B, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(B, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
var/seconds = B.seconds_remaining()
if(seconds >= 61) // Long fuse bombs can suddenly become more dangerous if you tinker with them.
B.detonation_timer = world.time + 600
diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm
index fe6c83d8169e9..5e5258c86deb9 100644
--- a/code/datums/wounds/_wounds.dm
+++ b/code/datums/wounds/_wounds.dm
@@ -23,6 +23,8 @@
var/desc = ""
/// The basic treatment suggested by health analyzers
var/treat_text = ""
+ /// Even more basic treatment
+ var/treat_text_short = ""
/// What the limb looks like on a cursory examine
var/examine_desc = "is badly hurt"
@@ -643,22 +645,42 @@
return span_bold("[desc]!")
return "[desc]."
+/**
+ * Prints the details about the wound for the wound scanner on simple mode
+ */
/datum/wound/proc/get_scanner_description(mob/user)
- return "Type: [name]\nSeverity: [severity_text(simple = FALSE)]\nDescription: [desc]\nRecommended Treatment: [treat_text]"
+ return "Type: [name] \
+ Severity: [severity_text()] \
+ Description: [desc] \
+ Recommended Treatment: [treat_text]"
+/**
+ * Prints the details about the wound for the wound scanner on complex mode
+ */
/datum/wound/proc/get_simple_scanner_description(mob/user)
- return "[name] detected!\nRisk: [severity_text(simple = TRUE)]\nDescription: [simple_desc ? simple_desc : desc]\nTreatment Guide: [simple_treat_text]\nHomemade Remedies: [homemade_treat_text]"
+ var/severity_text_formatted = severity_text()
+ for(var/i in 1 to severity)
+ severity_text_formatted += "!"
-/datum/wound/proc/severity_text(simple = FALSE)
+ return "[name] detected! \
+ Risk: [severity_text_formatted] \
+ Description: [simple_desc || desc] \
+ Treatment Guide: [simple_treat_text] \
+ Homemade Remedies: [homemade_treat_text]"
+
+/**
+ * Returns what text describes this wound
+ */
+/datum/wound/proc/severity_text()
switch(severity)
if(WOUND_SEVERITY_TRIVIAL)
return "Trivial"
if(WOUND_SEVERITY_MODERATE)
- return "Moderate" + (simple ? "!" : "")
+ return "Moderate"
if(WOUND_SEVERITY_SEVERE)
- return "Severe" + (simple ? "!!" : "")
+ return "Severe"
if(WOUND_SEVERITY_CRITICAL)
- return "Critical" + (simple ? "!!!" : "")
+ return "Critical"
/// Returns TRUE if our limb is the head or chest, FALSE otherwise.
/// Essential in the sense of "we cannot live without it".
diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm
index 19793643727e8..3e8c49c2d5944 100644
--- a/code/datums/wounds/bones.dm
+++ b/code/datums/wounds/bones.dm
@@ -209,7 +209,9 @@
/datum/wound/blunt/bone/moderate
name = "Joint Dislocation"
desc = "Patient's limb has been unset from socket, causing pain and reduced motor function."
- treat_text = "Recommended application of bonesetter to affected limb, though manual relocation by applying an aggressive grab to the patient and helpfully interacting with afflicted limb may suffice."
+ treat_text = "Apply Bonesetter to the affected limb. \
+ Manual relocation by via an aggressive grab and a tight hug to the affected limb may also suffice."
+ treat_text_short = "Apply Bonesetter, or manually relocate the limb."
examine_desc = "is awkwardly janked out of place"
occur_text = "janks violently and becomes unseated"
severity = WOUND_SEVERITY_MODERATE
@@ -344,7 +346,9 @@
/datum/wound/blunt/bone/severe
name = "Hairline Fracture"
desc = "Patient's bone has suffered a crack in the foundation, causing serious pain and reduced limb functionality."
- treat_text = "Recommended light surgical application of bone gel, though a sling of medical gauze will prevent worsening situation."
+ treat_text = "Repair surgically. In the event of an emergency, an application of bone gel over the affected area will fix over time. \
+ A splint or sling of medical gauze can also be used to prevent the fracture from worsening."
+ treat_text_short = "Repair surgically, or apply bone gel. A splint or gauze sling can also be used."
examine_desc = "appears grotesquely swollen, jagged bumps hinting at chips in the bone"
occur_text = "sprays chips of bone and develops a nasty looking bruise"
@@ -377,8 +381,11 @@
/// Compound Fracture (Critical Blunt)
/datum/wound/blunt/bone/critical
name = "Compound Fracture"
- desc = "Patient's bones have suffered multiple gruesome fractures, causing significant pain and near uselessness of limb."
- treat_text = "Immediate binding of affected limb, followed by surgical intervention ASAP."
+ desc = "Patient's bones have suffered multiple fractures, \
+ couped with a break in the skin, causing significant pain and near uselessness of limb."
+ treat_text = "Immediately bind the affected limb with gauze or a splint. Repair surgically. \
+ In the event of an emergency, bone gel and surgical tape can be applied to the affected area to fix over a long period of time."
+ treat_text_short = "Repair surgically, or apply bone gel and surgical tape. A splint or gauze sling should also be used."
examine_desc = "is thoroughly pulped and cracked, exposing shards of bone to open air"
occur_text = "cracks apart, exposing broken bones to open air"
diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm
index 394486fef9a24..a4ef3bd7b7df7 100644
--- a/code/datums/wounds/burns.dm
+++ b/code/datums/wounds/burns.dm
@@ -41,7 +41,7 @@
return
. = ..()
- if(strikes_to_lose_limb == 0) // we've already hit sepsis, nothing more to do
+ if(strikes_to_lose_limb <= 0) // we've already hit sepsis, nothing more to do
victim.adjustToxLoss(0.25 * seconds_per_tick)
if(SPT_PROB(0.5, seconds_per_tick))
victim.visible_message(span_danger("The infection on the remnants of [victim]'s [limb.plaintext_zone] shift and bubble nauseatingly!"), span_warning("You can feel the infection on the remnants of your [limb.plaintext_zone] coursing through your veins!"), vision_distance = COMBAT_MESSAGE_RANGE)
@@ -135,6 +135,13 @@
threshold_penalty = 120 // piss easy to destroy
set_disabling(TRUE)
+/datum/wound/burn/flesh/set_disabling(new_value)
+ . = ..()
+ if(new_value && strikes_to_lose_limb <= 0)
+ treat_text_short = "Amputate or augment limb immediately, or place the patient into cryogenics."
+ else
+ treat_text_short = initial(treat_text_short)
+
/datum/wound/burn/flesh/get_wound_description(mob/user)
if(strikes_to_lose_limb <= 0)
return span_deadsay("[victim.p_Their()] [limb.plaintext_zone] has locked up completely and is non-functional.")
@@ -168,9 +175,25 @@
return "[condition.Join()]"
+/datum/wound/burn/flesh/severity_text(simple = FALSE)
+ . = ..()
+ . += " Burn / "
+ switch(infestation)
+ if(-INFINITY to WOUND_INFECTION_MODERATE)
+ . += "No"
+ if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE)
+ . += "Moderate"
+ if(WOUND_INFECTION_SEVERE to WOUND_INFECTION_CRITICAL)
+ . += "Severe"
+ if(WOUND_INFECTION_CRITICAL to WOUND_INFECTION_SEPTIC)
+ . += "Critical"
+ if(WOUND_INFECTION_SEPTIC to INFINITY)
+ . += "Total"
+ . += " Infection"
+
/datum/wound/burn/flesh/get_scanner_description(mob/user)
if(strikes_to_lose_limb <= 0) // Unclear if it can go below 0, best to not take the chance
- var/oopsie = "Type: [name]\nSeverity: [severity_text()]"
+ var/oopsie = "Type: [name] Severity: [severity_text()]"
oopsie += "
Infection Level: [span_deadsay("The body part has suffered complete sepsis and must be removed. Amputate or augment limb immediately, or place the patient in a cryotube.")]
"
return oopsie
@@ -249,7 +272,7 @@
// people complained about burns not healing on stasis beds, so in addition to checking if it's cured, they also get the special ability to very slowly heal on stasis beds if they have the healing effects stored
/datum/wound/burn/flesh/on_stasis(seconds_per_tick, times_fired)
. = ..()
- if(strikes_to_lose_limb == 0) // we've already hit sepsis, nothing more to do
+ if(strikes_to_lose_limb <= 0) // we've already hit sepsis, nothing more to do
if(SPT_PROB(0.5, seconds_per_tick))
victim.visible_message(span_danger("The infection on the remnants of [victim]'s [limb.plaintext_zone] shift and bubble nauseatingly!"), span_warning("You can feel the infection on the remnants of your [limb.plaintext_zone] coursing through your veins!"), vision_distance = COMBAT_MESSAGE_RANGE)
return
@@ -280,7 +303,8 @@
/datum/wound/burn/flesh/moderate
name = "Second Degree Burns"
desc = "Patient is suffering considerable burns with mild skin penetration, weakening limb integrity and increased burning sensations."
- treat_text = "Recommended application of topical ointment or regenerative mesh to affected region."
+ treat_text = "Apply topical ointment or regenerative mesh to the wound."
+ treat_text_short = "Apply healing aid such as regenerative mesh."
examine_desc = "is badly burned and breaking out in blisters"
occur_text = "breaks out with violent red burns"
severity = WOUND_SEVERITY_MODERATE
@@ -304,7 +328,11 @@
/datum/wound/burn/flesh/severe
name = "Third Degree Burns"
desc = "Patient is suffering extreme burns with full skin penetration, creating serious risk of infection and greatly reduced limb integrity."
- treat_text = "Recommended immediate disinfection and excision of any infected skin, followed by bandaging and ointment. If the limb has locked up, it must be amputated, augmented or treated with cryogenics."
+ treat_text = "Swiftly apply healing aids such as Synthflesh or regenerative mesh to the wound. \
+ Disinfect the wound and surgically debride any infected skin, and wrap in clean gauze / use ointment to prevent further infection. \
+ If the limb has locked up, it must be amputated, augmented or treated with cryogenics."
+ treat_text_short = "Apply healing aid such as regenerative mesh, Synthflesh, or cryogenics and disinfect / debride. \
+ Clean gauze or ointment will slow infection rate."
examine_desc = "appears seriously charred, with aggressive red splotches"
occur_text = "chars rapidly, exposing ruined tissue and spreading angry red burns"
severity = WOUND_SEVERITY_SEVERE
@@ -330,7 +358,11 @@
/datum/wound/burn/flesh/critical
name = "Catastrophic Burns"
desc = "Patient is suffering near complete loss of tissue and significantly charred muscle and bone, creating life-threatening risk of infection and negligible limb integrity."
- treat_text = "Immediate surgical debriding of any infected skin, followed by potent tissue regeneration formula and bandaging. If the limb has locked up, it must be amputated, augmented or treated with cryogenics."
+ treat_text = "Immediately apply healing aids such as Synthflesh or regenerative mesh to the wound. \
+ Disinfect the wound and surgically debride any infected skin, and wrap in clean gauze / use ointment to prevent further infection. \
+ If the limb has locked up, it must be amputated, augmented or treated with cryogenics."
+ treat_text_short = "Apply healing aid such as regenerative mesh, Synthflesh, or cryogenics and disinfect / debride. \
+ Clean gauze or ointment will slow infection rate."
examine_desc = "is a ruined mess of blanched bone, melted fat, and charred tissue"
occur_text = "vaporizes as flesh, bone, and fat melt together in a horrifying mess"
severity = WOUND_SEVERITY_CRITICAL
diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm
index df973d3bdec90..8feebe8d2b624 100644
--- a/code/datums/wounds/cranial_fissure.dm
+++ b/code/datums/wounds/cranial_fissure.dm
@@ -29,7 +29,8 @@
/datum/wound/cranial_fissure
name = "Cranial Fissure"
desc = "Patient's crown is agape, revealing severe damage to the skull."
- treat_text = "Immediate surgical reconstruction of the skull."
+ treat_text = "Surgical reconstruction of the skull is necessary."
+ treat_text_short = "Surgical reconstruction required."
examine_desc = "is split open"
occur_text = "is split into two separated chunks"
@@ -95,7 +96,7 @@
victim.balloon_alert(user, "no eyes to take!")
return TRUE
- playsound(victim, 'sound/surgery/organ2.ogg', 50, TRUE)
+ playsound(victim, 'sound/items/handling/surgery/organ2.ogg', 50, TRUE)
victim.balloon_alert(user, "pulling out eyes...")
user.visible_message(
span_boldwarning("[user] reaches inside [victim]'s skull..."),
@@ -115,7 +116,7 @@
log_combat(user, victim, "pulled out the eyes of")
- playsound(victim, 'sound/surgery/organ1.ogg', 75, TRUE)
+ playsound(victim, 'sound/items/handling/surgery/organ1.ogg', 75, TRUE)
user.visible_message(
span_boldwarning("[user] rips out [victim]'s eyes!"),
span_boldwarning("You rip out [victim]'s eyes!"),
diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm
index da4d51c0aa20f..ac0e004d5c42c 100644
--- a/code/datums/wounds/pierce.dm
+++ b/code/datums/wounds/pierce.dm
@@ -6,7 +6,7 @@
/datum/wound/pierce/bleed
name = "Piercing Wound"
- sound_effect = 'sound/weapons/slice.ogg'
+ sound_effect = 'sound/items/weapons/slice.ogg'
processes = TRUE
treatable_by = list(/obj/item/stack/medical/suture)
treatable_tools = list(TOOL_CAUTERY)
@@ -202,7 +202,10 @@
/datum/wound/pierce/bleed/moderate
name = "Minor Skin Breakage"
desc = "Patient's skin has been broken open, causing severe bruising and minor internal bleeding in affected area."
- treat_text = "Treat affected site with bandaging or exposure to extreme cold. In dire cases, brief exposure to vacuum may suffice." // space is cold in ss13, so it's like an ice pack!
+ treat_text = "Apply bandaging or suturing to the wound, make use of blood clotting agents, \
+ cauterization, or in extreme circumstances, exposure to extreme cold or vaccuum. \
+ Follow with food and a rest period."
+ treat_text_short = "Apply bandaging or suturing."
examine_desc = "has a small, circular hole, gently bleeding"
occur_text = "spurts out a thin stream of blood"
sound_effect = 'sound/effects/wounds/pierce1.ogg'
@@ -233,7 +236,10 @@
/datum/wound/pierce/bleed/severe
name = "Open Puncture"
desc = "Patient's internal tissue is penetrated, causing sizeable internal bleeding and reduced limb stability."
- treat_text = "Repair punctures in skin by suture or cautery, extreme cold may also work."
+ treat_text = "Swiftly apply bandaging or suturing to the wound, make use of blood clotting agents or saline-glucose, \
+ cauterization, or in extreme circumstances, exposure to extreme cold or vaccuum. \
+ Follow with iron supplements and a rest period."
+ treat_text_short = "Apply bandaging, suturing, clotting agents, or cauterization."
examine_desc = "is pierced clear through, with bits of tissue obscuring the open hole"
occur_text = "looses a violent spray of blood, revealing a pierced wound"
sound_effect = 'sound/effects/wounds/pierce2.ogg'
@@ -263,7 +269,10 @@
/datum/wound/pierce/bleed/critical
name = "Ruptured Cavity"
desc = "Patient's internal tissue and circulatory system is shredded, causing significant internal bleeding and damage to internal organs."
- treat_text = "Surgical repair of puncture wound, followed by supervised resanguination."
+ treat_text = "Immediately apply bandaging or suturing to the wound, make use of blood clotting agents or saline-glucose, \
+ cauterization, or in extreme circumstances, exposure to extreme cold or vaccuum. \
+ Follow with supervised resanguination."
+ treat_text_short = "Apply bandaging, suturing, clotting agents, or cauterization."
examine_desc = "is ripped clear through, barely held together by exposed bone"
occur_text = "blasts apart, sending chunks of viscera flying in all directions"
sound_effect = 'sound/effects/wounds/pierce3.ogg'
diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm
index dd41d48620e99..fd3cb4bd7b2b1 100644
--- a/code/datums/wounds/slash.dm
+++ b/code/datums/wounds/slash.dm
@@ -5,7 +5,7 @@
/datum/wound/slash
name = "Slashing (Cut) Wound"
- sound_effect = 'sound/weapons/slice.ogg'
+ sound_effect = 'sound/items/weapons/slice.ogg'
/datum/wound_pregen_data/flesh_slash
abstract = TRUE
@@ -321,7 +321,9 @@
/datum/wound/slash/flesh/moderate
name = "Rough Abrasion"
desc = "Patient's skin has been badly scraped, generating moderate blood loss."
- treat_text = "Application of clean bandages or first-aid grade sutures, followed by food and rest."
+ treat_text = "Apply bandaging or suturing to the wound. \
+ Follow up with food and a rest period."
+ treat_text_short = "Apply bandaging or suturing."
examine_desc = "has an open cut"
occur_text = "is cut open, slowly leaking blood"
sound_effect = 'sound/effects/wounds/blood1.ogg'
@@ -350,7 +352,10 @@
/datum/wound/slash/flesh/severe
name = "Open Laceration"
desc = "Patient's skin is ripped clean open, allowing significant blood loss."
- treat_text = "Speedy application of first-aid grade sutures and clean bandages, followed by vitals monitoring to ensure recovery."
+ treat_text = "Swiftly apply bandaging or suturing to the wound, \
+ or make use of blood clotting agents or cauterization. \
+ Follow up with iron supplements or saline-glucose and a rest period."
+ treat_text_short = "Apply bandaging, suturing, clotting agents, or cauterization."
examine_desc = "has a severe cut"
occur_text = "is ripped open, veins spurting blood"
sound_effect = 'sound/effects/wounds/blood2.ogg'
@@ -380,7 +385,10 @@
/datum/wound/slash/flesh/critical
name = "Weeping Avulsion"
desc = "Patient's skin is completely torn open, along with significant loss of tissue. Extreme blood loss will lead to quick death without intervention."
- treat_text = "Immediate bandaging and either suturing or cauterization, followed by supervised resanguination."
+ treat_text = "Immediately apply bandaging or suturing to the wound, \
+ or make use of blood clotting agents or cauterization. \
+ Follow up supervised resanguination."
+ treat_text_short = "Apply bandaging, suturing, clotting agents, or cauterization."
examine_desc = "is carved down to the bone, spraying blood wildly"
occur_text = "is torn open, spraying blood wildly"
sound_effect = 'sound/effects/wounds/blood3.ogg'
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 04d26a5e50a5a..b988fa0b6daa8 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -91,7 +91,7 @@
///Does this area immediately play an ambience track upon enter?
var/forced_ambience = FALSE
///The background droning loop that plays 24/7
- var/ambient_buzz = 'sound/ambience/shipambience.ogg'
+ var/ambient_buzz = 'sound/ambience/general/shipambience.ogg'
///The volume of the ambient buzz
var/ambient_buzz_vol = 35
///Used to decide what the minimum time between ambience is
diff --git a/code/game/area/areas/ai_monitored.dm b/code/game/area/areas/ai_monitored.dm
index a6964d70f6ae0..4e63479987e85 100644
--- a/code/game/area/areas/ai_monitored.dm
+++ b/code/game/area/areas/ai_monitored.dm
@@ -23,9 +23,9 @@
// Turret protected
/area/station/ai_monitored/turret_protected
- ambientsounds = list('sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambitech.ogg', 'sound/ambience/engineering/ambitech2.ogg', 'sound/ambience/engineering/ambiatmos.ogg', 'sound/ambience/engineering/ambiatmos2.ogg')
///Some sounds (like the space jam) are terrible when on loop. We use this variable to add it to other AI areas, but override it to keep it from the AI's core.
- var/ai_will_not_hear_this = list('sound/ambience/ambimalf.ogg')
+ var/ai_will_not_hear_this = list('sound/ambience/misc/ambimalf.ogg')
airlock_wires = /datum/wires/airlock/ai
/area/station/ai_monitored/turret_protected/Initialize(mapload)
diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm
index 5e2219ef857e0..5ff0143c0a1a9 100644
--- a/code/game/area/areas/away_content.dm
+++ b/code/game/area/areas/away_content.dm
@@ -23,7 +23,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
base_lighting_alpha = 200
base_lighting_color = "#FFF4AA"
sound_environment = SOUND_ENVIRONMENT_PLAIN
- ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg')
+ ambientsounds = list('sound/ambience/beach/shore.ogg', 'sound/ambience/misc/ambiodd.ogg','sound/ambience/medical/ambinice.ogg')
/area/awaymission/museum/cafeteria
name = "Nanotrasen Museum Cafeteria"
diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm
index 031a6dd5039d7..be6db4e077fec 100644
--- a/code/game/area/areas/mining.dm
+++ b/code/game/area/areas/mining.dm
@@ -4,7 +4,7 @@
icon_state = "mining"
has_gravity = STANDARD_GRAVITY
area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED | CULT_PERMITTED
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
/area/mine/lobby
name = "Mining Station"
@@ -134,7 +134,7 @@
flags_1 = NONE
area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED
sound_environment = SOUND_AREA_LAVALAND
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
/area/lavaland/surface
name = "Lavaland"
@@ -195,7 +195,7 @@
area_flags = UNIQUE_AREA | FLORA_ALLOWED
ambience_index = AMBIENCE_ICEMOON
sound_environment = SOUND_AREA_ICEMOON
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
/area/icemoon/surface
name = "Icemoon"
diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm
index f9c57510132f6..4e806bf1c1030 100644
--- a/code/game/area/areas/ruins/lavaland.dm
+++ b/code/game/area/areas/ruins/lavaland.dm
@@ -8,7 +8,7 @@
/area/ruin/powered/clownplanet
name = "\improper Clown Biodome"
- ambientsounds = list('sound/ambience/clown.ogg')
+ ambientsounds = list('sound/music/lobby_music/clown.ogg')
/area/ruin/unpowered/gaia
name = "\improper Patch of Eden"
@@ -38,7 +38,7 @@
/area/ruin/syndicate_lava_base
name = "\improper Secret Base"
ambience_index = AMBIENCE_DANGER
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
/area/ruin/unpowered/cultaltar
name = "\improper Cult Altar"
@@ -49,7 +49,7 @@
name = "\improper The Lizard's Gas"
icon_state = "lizardgas"
sound_environment = SOUND_ENVIRONMENT_ROOM
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
//Syndicate lavaland base
@@ -94,11 +94,11 @@
power_environ = FALSE
power_equip = FALSE
power_light = FALSE
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
//ash walker nest
/area/ruin/unpowered/ash_walkers
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
/area/ruin/unpowered/ratvar
outdoors = TRUE
- ambient_buzz = 'sound/ambience/magma.ogg'
+ ambient_buzz = 'sound/ambience/lavaland/magma.ogg'
diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm
index 5eac7addb4ec2..ac687d6024a88 100644
--- a/code/game/area/areas/ruins/space.dm
+++ b/code/game/area/areas/ruins/space.dm
@@ -55,7 +55,7 @@
/area/ruin/space/has_grav/powered/aesthetic
name = "Aesthetic"
- ambientsounds = list('sound/ambience/ambivapor1.ogg')
+ ambientsounds = list('sound/ambience/misc/ambivapor1.ogg')
//Ruin of Hotel
@@ -335,7 +335,7 @@
/area/ruin/space/ancientstation/delta/ai
name = "\improper Delta Station AI Core"
icon_state = "os_delta_ai"
- ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg')
+ ambientsounds = list('sound/ambience/misc/ambimalf.ogg', 'sound/ambience/engineering/ambitech.ogg', 'sound/ambience/engineering/ambitech2.ogg', 'sound/ambience/engineering/ambiatmos.ogg', 'sound/ambience/engineering/ambiatmos2.ogg')
/area/ruin/space/ancientstation/delta/storage
name = "\improper Delta Station Storage"
@@ -546,14 +546,14 @@
/area/ruin/space/abandoned_tele
name = "\improper Abandoned Teleporter"
- ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/signal.ogg')
+ ambientsounds = list('sound/ambience/misc/ambimalf.ogg', 'sound/ambience/misc/signal.ogg')
//OLD AI SAT
/area/ruin/space/tcommsat_oldaisat // Since tcommsat was moved to /area/station/, this turf doesn't inhereit its properties anymore
name = "\improper Abandoned Satellite"
- ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen9.ogg', 'sound/ambience/ambitech.ogg',\
- 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambisin2.ogg', 'sound/ambience/misc/signal.ogg', 'sound/ambience/misc/signal.ogg', 'sound/ambience/general/ambigen9.ogg', 'sound/ambience/engineering/ambitech.ogg',\
+ 'sound/ambience/engineering/ambitech2.ogg', 'sound/ambience/engineering/ambitech3.ogg', 'sound/ambience/misc/ambimystery.ogg')
airlock_wires = /datum/wires/airlock/engineering
// CRASHED PRISON SHUTTLE
@@ -592,7 +592,7 @@
// The planet of the clowns
/area/ruin/space/has_grav/powered/clownplanet
name = "\improper Clown Planet"
- ambientsounds = list('sound/ambience/clown.ogg')
+ ambientsounds = list('sound/music/lobby_music/clown.ogg')
//DERELICT SULACO
/area/ruin/space/has_grav/derelictsulaco
@@ -671,7 +671,7 @@
icon = 'icons/area/areas_ruins.dmi'
icon_state = "ruins"
requires_power = FALSE
- ambientsounds = list('sound/ambience/ambigen12.ogg','sound/ambience/ambigen13.ogg','sound/ambience/ambinice.ogg')
+ ambientsounds = list('sound/ambience/general/ambigen12.ogg','sound/ambience/general/ambigen13.ogg','sound/ambience/medical/ambinice.ogg')
// the outlet
/area/ruin/space/has_grav/the_outlet/storefront
diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm
index 504efe0742ad1..f128805924fe8 100644
--- a/code/game/area/areas/shuttles.dm
+++ b/code/game/area/areas/shuttles.dm
@@ -123,7 +123,7 @@
if(SSshuttle.arrivals?.mode == SHUTTLE_CALL)
var/atom/movable/screen/splash/Spl = new(null, boarder.client, TRUE)
Spl.Fade(TRUE)
- boarder.playsound_local(get_turf(boarder), 'sound/voice/ApproachingTG.ogg', 25)
+ boarder.playsound_local(get_turf(boarder), 'sound/announcer/ApproachingTG.ogg', 25)
boarder.update_parallax_teleport()
diff --git a/code/game/area/areas/station/command.dm b/code/game/area/areas/station/command.dm
index 23f2c7c61c0fc..ee4325d94aef8 100644
--- a/code/game/area/areas/station/command.dm
+++ b/code/game/area/areas/station/command.dm
@@ -2,7 +2,7 @@
name = "Command"
icon_state = "command"
ambientsounds = list(
- 'sound/ambience/signal.ogg',
+ 'sound/ambience/misc/signal.ogg',
)
airlock_wires = /datum/wires/airlock/command
sound_environment = SOUND_AREA_STANDARD_STATION
diff --git a/code/game/area/areas/station/maintenance.dm b/code/game/area/areas/station/maintenance.dm
index 53e6da606d085..5e636719e7a09 100644
--- a/code/game/area/areas/station/maintenance.dm
+++ b/code/game/area/areas/station/maintenance.dm
@@ -5,7 +5,7 @@
airlock_wires = /datum/wires/airlock/maint
sound_environment = SOUND_AREA_TUNNEL_ENCLOSED
forced_ambience = TRUE
- ambient_buzz = 'sound/ambience/source_corridor2.ogg'
+ ambient_buzz = 'sound/ambience/maintenance/source_corridor2.ogg'
ambient_buzz_vol = 20
/*
diff --git a/code/game/area/areas/station/medical.dm b/code/game/area/areas/station/medical.dm
index fc6c6ff3a7564..b45a1492b290f 100644
--- a/code/game/area/areas/station/medical.dm
+++ b/code/game/area/areas/station/medical.dm
@@ -11,7 +11,7 @@
name = "\improper Abandoned Medbay"
icon_state = "abandoned_medbay"
ambientsounds = list(
- 'sound/ambience/signal.ogg',
+ 'sound/ambience/misc/signal.ogg',
)
sound_environment = SOUND_AREA_SMALL_ENCLOSED
@@ -124,5 +124,5 @@
mood_bonus = 3
mood_message = "I feel at ease here."
ambientsounds = list(
- 'sound/ambience/aurora_caelus_short.ogg',
+ 'sound/ambience/aurora_caelus/aurora_caelus_short.ogg',
)
diff --git a/code/game/area/areas/station/security.dm b/code/game/area/areas/station/security.dm
index 93629f35628c2..ca158e69df87b 100644
--- a/code/game/area/areas/station/security.dm
+++ b/code/game/area/areas/station/security.dm
@@ -79,8 +79,8 @@
name = "\improper Detective's Office"
icon_state = "detective"
ambientsounds = list(
- 'sound/ambience/ambidet1.ogg',
- 'sound/ambience/ambidet2.ogg',
+ 'sound/ambience/security/ambidet1.ogg',
+ 'sound/ambience/security/ambidet2.ogg',
)
/area/station/security/detectives_office/private_investigators_office
diff --git a/code/game/area/areas/station/telecomm.dm b/code/game/area/areas/station/telecomm.dm
index 78ec16a59bf29..02101c28c1a90 100644
--- a/code/game/area/areas/station/telecomm.dm
+++ b/code/game/area/areas/station/telecomm.dm
@@ -5,14 +5,14 @@
/area/station/tcommsat
icon_state = "tcomsatcham"
ambientsounds = list(
- 'sound/ambience/ambisin2.ogg',
- 'sound/ambience/signal.ogg',
- 'sound/ambience/signal.ogg',
- 'sound/ambience/ambigen9.ogg',
- 'sound/ambience/ambitech.ogg',
- 'sound/ambience/ambitech2.ogg',
- 'sound/ambience/ambitech3.ogg',
- 'sound/ambience/ambimystery.ogg',
+ 'sound/ambience/engineering/ambisin2.ogg',
+ 'sound/ambience/misc/signal.ogg',
+ 'sound/ambience/misc/signal.ogg',
+ 'sound/ambience/general/ambigen9.ogg',
+ 'sound/ambience/engineering/ambitech.ogg',
+ 'sound/ambience/engineering/ambitech2.ogg',
+ 'sound/ambience/engineering/ambitech3.ogg',
+ 'sound/ambience/misc/ambimystery.ogg',
)
airlock_wires = /datum/wires/airlock/engineering
diff --git a/code/game/atom/atom_defense.dm b/code/game/atom/atom_defense.dm
index 4a762e4de8b49..ce31eb81246f1 100644
--- a/code/game/atom/atom_defense.dm
+++ b/code/game/atom/atom_defense.dm
@@ -108,11 +108,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/weapons/smash.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/smash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
///Called to get the damage that hulks will deal to the atom.
/atom/proc/hulk_damage()
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 0928ff220df7b..f4ba6dd1968cb 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -33,8 +33,10 @@
var/speech_span
///Are we moving with inertia? Mostly used as an optimization
var/inertia_moving = FALSE
- ///Delay in deciseconds between inertia based movement
- var/inertia_move_delay = 5
+ ///Multiplier for inertia based movement in space
+ var/inertia_move_multiplier = 1
+ ///Object "weight", higher weight reduces acceleration applied to the object
+ var/inertia_force_weight = 1
///The last time we pushed off something
///This is a hack to get around dumb him him me scenarios
var/last_pushoff
@@ -107,6 +109,9 @@
/// The pitch adjustment that this movable uses when speaking.
var/pitch = 0
+ /// Datum that keeps all data related to zero-g drifting and handles related code/comsigs
+ var/datum/drift_handler/drift_handler
+
/// The filter to apply to the voice when processing the TTS audio message.
var/voice_filter = ""
@@ -201,6 +206,7 @@
/atom/movable/Destroy(force)
QDEL_NULL(language_holder)
QDEL_NULL(em_block)
+ QDEL_NULL(drift_handler)
unbuckle_all_mobs(force = TRUE)
@@ -771,7 +777,7 @@
if(!. && set_dir_on_move && update_dir && !face_mouse) // DOPPLER SHIFT EDIT : ORIGINAL : if(!. && set_dir_on_move && update_dir)
setDir(first_step_dir)
else if(!inertia_moving)
- newtonian_move(direct)
+ newtonian_move(dir2angle(direct))
if(client_mobs_in_contents)
update_parallax_contents()
moving_diagonally = 0
@@ -845,8 +851,8 @@
/atom/movable/proc/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
SHOULD_CALL_PARENT(TRUE)
- if (!inertia_moving && momentum_change)
- newtonian_move(movement_dir)
+ if (!moving_diagonally && !inertia_moving && momentum_change && movement_dir)
+ newtonian_move(dir2angle(movement_dir))
// If we ain't moving diagonally right now, update our parallax
// We don't do this all the time because diag movements should trigger one call to this, not two
// Waste of cpu time, and it fucks the animate
@@ -1265,15 +1271,19 @@
/// Only moves the object if it's under no gravity
/// Accepts the direction to move, if the push should be instant, and an optional parameter to fine tune the start delay
-/atom/movable/proc/newtonian_move(direction, instant = FALSE, start_delay = 0)
- if(!isturf(loc) || Process_Spacemove(direction, continuous_move = TRUE))
+/// Drift force determines how much acceleration should be applied. Controlled cap, if set, will ensure that if the object was moving slower than the cap before, it cannot accelerate past the cap from this move.
+/atom/movable/proc/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1 NEWTONS, controlled_cap = null)
+ if(!isturf(loc) || Process_Spacemove(angle2dir(inertia_angle), continuous_move = TRUE))
return FALSE
- if(SEND_SIGNAL(src, COMSIG_MOVABLE_NEWTONIAN_MOVE, direction, start_delay) & COMPONENT_MOVABLE_NEWTONIAN_BLOCK)
- return TRUE
-
- AddComponent(/datum/component/drift, direction, instant, start_delay)
+ if (!isnull(drift_handler))
+ if (drift_handler.newtonian_impulse(inertia_angle, start_delay, drift_force, controlled_cap))
+ return TRUE
+ new /datum/drift_handler(src, inertia_angle, instant, start_delay, drift_force)
+ // Something went wrong and it failed to create itself, most likely we have a higher priority loop already
+ if (QDELETED(drift_handler))
+ return FALSE
return TRUE
/atom/movable/set_explosion_block(explosion_block)
@@ -1454,6 +1464,7 @@
return
/atom/movable/proc/get_spacemove_backup()
+ var/atom/secondary_backup
for(var/checked_range in orange(1, get_turf(src)))
if(isarea(checked_range))
continue
@@ -1461,12 +1472,18 @@
var/turf/turf = checked_range
if(!turf.density)
continue
- return turf
+ if (get_dir(src, turf) in GLOB.cardinals)
+ return turf
+ secondary_backup = turf
+ continue
var/atom/movable/checked_atom = checked_range
if(checked_atom.density || !checked_atom.CanPass(src, get_dir(src, checked_atom)))
if(checked_atom.last_pushoff == world.time)
continue
- return checked_atom
+ if (get_dir(src, checked_atom) in GLOB.cardinals)
+ return checked_atom
+ secondary_backup = checked_atom
+ return secondary_backup
///called when a mob resists while inside a container that is itself inside something.
/atom/movable/proc/relay_container_resist_act(mob/living/user, obj/container)
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index c9e66c89c9576..07c12c28760ff 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -150,7 +150,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
return
if(machine_stat & BROKEN)
visible_message(span_warning("[src] buzzes."), span_hear("You hear a faint buzz."))
- playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/machines/buzz/buzz-two.ogg', 50, TRUE)
return
switch(action)
if("ArrivalText")
diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm
index 40670a22f44c4..72de51d034fe8 100644
--- a/code/game/machinery/bank_machine.dm
+++ b/code/game/machinery/bank_machine.dm
@@ -73,7 +73,7 @@
end_siphon()
return
- playsound(src, 'sound/items/poster_being_created.ogg', 100, TRUE)
+ playsound(src, 'sound/items/poster/poster_being_created.ogg', 100, TRUE)
syphoning_credits += siphon_am
synced_bank_account.adjust_money(-siphon_am)
if(next_warning < world.time && prob(15))
diff --git a/code/game/machinery/barsigns.dm b/code/game/machinery/barsigns.dm
index 11dc005269b7b..0f33028aa9a76 100644
--- a/code/game/machinery/barsigns.dm
+++ b/code/game/machinery/barsigns.dm
@@ -102,9 +102,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32)
/obj/machinery/barsign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src.loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/barsign/attack_ai(mob/user)
return attack_hand(user)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index e2f5d16cc572f..f3760fda0319a 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -366,7 +366,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0)
else
visible_message(span_danger("\The [src] [change_msg]!"))
- playsound(src, 'sound/items/wirecutter.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/wirecutter.ogg', 100, TRUE)
update_appearance() //update Initialize() if you remove this.
// now disconnect anyone using the camera
diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm
index 7760a646d9fae..d8c8a98caef77 100644
--- a/code/game/machinery/civilian_bounties.dm
+++ b/code/game/machinery/civilian_bounties.dm
@@ -76,11 +76,11 @@
return FALSE
if(!inserted_scan_id)
status_report = "Please insert your ID first."
- playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
return FALSE
if(!inserted_scan_id.registered_account.civilian_bounty)
status_report = "Please accept a new civilian bounty first."
- playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
return FALSE
status_report = "Civilian Bounty: "
var/obj/machinery/piratepad/civilian/pad = pad_ref?.resolve()
@@ -89,10 +89,10 @@
continue
if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM))
status_report += "Target Applicable."
- playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_yes.ogg', 30 , TRUE)
return
status_report += "Not Applicable."
- playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
/**
* This fully rewrites base behavior in order to only check for bounty objects, and no other types of objects like pirate-pads do.
@@ -135,7 +135,7 @@
pad.visible_message(span_notice("[pad] activates!"))
flick(pad.sending_state,pad)
pad.icon_state = pad.idle_state
- playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_yes.ogg', 30 , TRUE)
sending = FALSE
///Here is where cargo bounties are added to the player's bank accounts, then adjusted and scaled into a civilian bounty.
@@ -164,7 +164,7 @@
*/
/obj/machinery/computer/piratepad_control/civilian/proc/pick_bounty(datum/bounty/choice)
if(!inserted_scan_id || !inserted_scan_id.registered_account || !inserted_scan_id.registered_account.bounties || !inserted_scan_id.registered_account.bounties[choice])
- playsound(loc, 'sound/machines/synth_no.ogg', 40 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_no.ogg', 40 , TRUE)
return
inserted_scan_id.registered_account.civilian_bounty = inserted_scan_id.registered_account.bounties[choice]
inserted_scan_id.registered_account.bounties = null
@@ -242,13 +242,13 @@
if(target)
if(holder_item && inserting_item.InsertID(target))
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
else
id_eject(user, target)
user.visible_message(span_notice("[user] inserts \the [card_to_insert] into \the [src]."),
span_notice("You insert \the [card_to_insert] into \the [src]."))
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
ui_interact(user)
return TRUE
@@ -263,7 +263,7 @@
user.put_in_hands(target)
user.visible_message(span_notice("[user] gets \the [target] from \the [src]."), \
span_notice("You get \the [target] from \the [src]."))
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
inserted_scan_id = null
return TRUE
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 6e1009def324f..8fdd5556e3b8b 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -75,16 +75,16 @@
if(machine_stat & BROKEN)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
else
- playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src.loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/computer/atom_break(damage_flag)
if(!circuit) //no circuit, no breaking
return
. = ..()
if(.)
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
set_light(0)
/obj/machinery/computer/proc/imprint_gps(gps_tag) // Currently used by the upload computers and communications console
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index e0a7f36460041..0b28775a5b869 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -58,7 +58,7 @@
if("PRG_beginReconstruction")
if(occupier?.health < 100)
to_chat(usr, span_notice("Reconstruction in progress. This will take several minutes."))
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 25, FALSE)
restoring = TRUE
occupier.notify_revival("Your core files are being restored!", source = src)
. = TRUE
diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm
index 97bf368d3e25e..efb3f4480330e 100644
--- a/code/game/machinery/computer/apc_control.dm
+++ b/code/game/machinery/computer/apc_control.dm
@@ -57,7 +57,7 @@
return
if(active_apc)
disconnect_apc()
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
apc.connect_remote_access(user)
user.log_message("remotely accessed [apc] from [src].", LOG_GAME)
log_activity("[auth_id] remotely accessed APC in [get_area_name(apc.area, TRUE)]")
@@ -134,18 +134,18 @@
authenticated = TRUE
auth_id = "[ID.registered_name] ([ID.assignment]):"
log_activity("[auth_id] logged in to the terminal")
- playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
else
auth_id = "[ID.registered_name] ([ID.assignment]):"
log_activity("[auth_id] attempted to log into the terminal")
- playsound(src, 'sound/machines/terminal_error.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 50, FALSE)
say("ID rejected, access denied!")
return
auth_id = "Unknown (Unknown):"
log_activity("[auth_id] attempted to log into the terminal")
if("log-out")
log_activity("[auth_id] logged out of the terminal")
- playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 50, FALSE)
authenticated = FALSE
auth_id = "\[NULL\]"
if("toggle-logs")
diff --git a/code/game/machinery/computer/arcade/_arcade.dm b/code/game/machinery/computer/arcade/_arcade.dm
index 69994634fc3b1..053ec907f3e63 100644
--- a/code/game/machinery/computer/arcade/_arcade.dm
+++ b/code/game/machinery/computer/arcade/_arcade.dm
@@ -78,7 +78,7 @@
/obj/machinery/computer/arcade/proc/prizevend(mob/living/user, prizes = 1)
SEND_SIGNAL(src, COMSIG_ARCADE_PRIZEVEND, user, prizes)
if(user.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && HAS_TRAIT(user, TRAIT_GAMERGOD))
- visible_message("[user] inputs an intense cheat code!",\
+ visible_message(span_notice("[user] inputs an intense cheat code!"),\
span_notice("You hear a flurry of buttons being pressed."))
say("CODE ACTIVATED: EXTRA PRIZES.")
prizes *= 2
diff --git a/code/game/machinery/computer/arcade/amputation.dm b/code/game/machinery/computer/arcade/amputation.dm
index 84a02af387ad2..d20a5de2b2812 100644
--- a/code/game/machinery/computer/arcade/amputation.dm
+++ b/code/game/machinery/computer/arcade/amputation.dm
@@ -17,19 +17,19 @@
user.played_game()
var/obj/item/bodypart/chopchop = user.get_active_hand()
if(do_after(user, 5 SECONDS, target = src, extra_checks = CALLBACK(src, PROC_REF(do_they_still_have_that_hand), user, chopchop)))
- playsound(src, 'sound/weapons/slice.ogg', 25, TRUE, -1)
+ playsound(src, 'sound/items/weapons/slice.ogg', 25, TRUE, -1)
to_chat(user, span_userdanger("The guillotine drops on your arm, and the machine sucks it in!"))
chopchop.dismember()
qdel(chopchop)
user.mind?.adjust_experience(/datum/skill/gaming, 100)
user.won_game()
- playsound(src, 'sound/arcade/win.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/arcade/win.ogg', 50, TRUE)
new /obj/item/stack/arcadeticket((get_turf(src)), rand(6,10))
to_chat(user, span_notice("[src] dispenses a handful of tickets!"))
return
if(!do_they_still_have_that_hand(user, chopchop))
to_chat(user, span_warning("The guillotine drops, but your hand seems to be gone already!"))
- playsound(src, 'sound/weapons/slice.ogg', 25, TRUE, -1)
+ playsound(src, 'sound/items/weapons/slice.ogg', 25, TRUE, -1)
else
to_chat(user, span_notice("You (wisely) decide against putting your hand in the machine."))
user.lost_game()
diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm
index 9733759b5caf4..169104d6c2fe3 100644
--- a/code/game/machinery/computer/arcade/battle.dm
+++ b/code/game/machinery/computer/arcade/battle.dm
@@ -226,7 +226,7 @@
user.mind?.adjust_experience(/datum/skill/gaming, exp_gained)
user.won_game()
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal")))
- playsound(loc, 'sound/arcade/win.ogg', 40)
+ playsound(loc, 'sound/machines/arcade/win.ogg', 40)
if(ui_panel != UI_PANEL_WORLD_MAP) //we havent been booted to world map, we're still going.
ui_panel = UI_PANEL_BETWEEN_FIGHTS
@@ -250,11 +250,11 @@
ui_panel = UI_PANEL_GAMEOVER
feedback_message = "GAME OVER."
say("You have been crushed! GAME OVER.")
- playsound(loc, 'sound/arcade/lose.ogg', 40, TRUE)
+ playsound(loc, 'sound/machines/arcade/lose.ogg', 40, TRUE)
lose_game(user)
else
feedback_message = "User took [damage_taken] damage!"
- playsound(loc, 'sound/arcade/hit.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/hit.ogg', 40, TRUE, extrarange = -3)
SStgui.update_uis(src)
///Called when you attack the enemy.
@@ -270,17 +270,17 @@
if(BATTLE_ARCADE_PLAYER_COUNTERATTACK)
feedback_message = "User prepares to counterattack!"
process_enemy_turn(user, defending_flags = BATTLE_ATTACK_FLAG_COUNTERATTACK)
- playsound(loc, 'sound/arcade/mana.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/mana.ogg', 40, TRUE, extrarange = -3)
if(BATTLE_ARCADE_PLAYER_DEFEND)
feedback_message = "User pulls up their shield!"
process_enemy_turn(user, defending_flags = BATTLE_ATTACK_FLAG_DEFEND)
- playsound(loc, 'sound/arcade/mana.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/mana.ogg', 40, TRUE, extrarange = -3)
if(!damage_dealt)
return
enemy_hp -= round(max(0, damage_dealt), 1)
feedback_message = "[enemy_name] took [damage_dealt] damage!"
- playsound(loc, 'sound/arcade/hit.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/hit.ogg', 40, TRUE, extrarange = -3)
process_enemy_turn(user)
///Called when you successfully counterattack the enemy.
@@ -289,7 +289,7 @@
var/damage_dealt = (rand(20, 30) * (!isnull(weapon) ? weapon.bonus_modifier : 1))
enemy_hp -= round(max(0, damage_dealt), 1)
feedback_message = "User counterattacked for [damage_dealt] damage!"
- playsound(loc, 'sound/arcade/boom.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/boom.ogg', 40, TRUE, extrarange = -3)
if(enemy_hp <= 0)
on_battle_win(user)
SStgui.update_uis(src)
@@ -334,7 +334,7 @@
enemy_hp = round(min(enemy_max_hp, enemy_hp + healed_amount), 1)
enemy_mp -= round(max(0, 10), 1)
feedback_message = "[enemy_name] healed for [healed_amount] health points!"
- playsound(loc, 'sound/arcade/heal.ogg', 40, TRUE, extrarange = -3)
+ playsound(loc, 'sound/machines/arcade/heal.ogg', 40, TRUE, extrarange = -3)
SStgui.update_uis(src)
return
if(player_current_mp >= 5) //minimum to steal
@@ -342,7 +342,7 @@
player_current_mp -= round(max(0, healed_amount), 1)
enemy_mp += healed_amount
feedback_message = "[enemy_name] stole [healed_amount] MP from you!"
- playsound(loc, 'sound/arcade/steal.ogg', 40, TRUE)
+ playsound(loc, 'sound/machines/arcade/steal.ogg', 40, TRUE)
SStgui.update_uis(src)
return
//we couldn't heal ourselves or steal MP, we'll just attack instead.
@@ -437,7 +437,7 @@
say("You don't have enough gold to rest!")
return TRUE
player_gold -= DEFAULT_ITEM_PRICE / 2
- playsound(loc, 'sound/mecha/skyfall_power_up.ogg', 40)
+ playsound(loc, 'sound/vehicles/mecha/skyfall_power_up.ogg', 40)
player_current_hp = PLAYER_MAX_HP
player_current_mp = PLAYER_MAX_MP
return TRUE
@@ -476,11 +476,11 @@
return TRUE
if("continue_with_rest")
if(prob(60))
- playsound(loc, 'sound/mecha/skyfall_power_up.ogg', 40)
+ playsound(loc, 'sound/vehicles/mecha/skyfall_power_up.ogg', 40)
player_current_hp = PLAYER_MAX_HP
player_current_mp = PLAYER_MAX_MP
else
- playsound(loc, 'sound/machines/defib_zap.ogg', 40)
+ playsound(loc, 'sound/machines/defib/defib_zap.ogg', 40)
if(prob(40))
//You got robbed, and now have to go to your next fight.
player_gold /= 2
diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm
index 3300370d18e49..a6685e4782ccd 100644
--- a/code/game/machinery/computer/arcade/orion.dm
+++ b/code/game/machinery/computer/arcade/orion.dm
@@ -421,7 +421,7 @@
var/sheriff = remove_crewmember(target) //I shot the sheriff
if(target)
killed_crew += 1 //if there was no suspected lings, this is just plain murder
- playsound(loc,'sound/weapons/gun/pistol/shot.ogg', 100, TRUE)
+ playsound(loc,'sound/items/weapons/gun/pistol/shot.ogg', 100, TRUE)
if(!settlers.len || !alive)
say("The last crewmember [sheriff], shot themselves, GAME OVER!")
if(obj_flags & EMAGGED)
@@ -535,7 +535,7 @@
time_for_next_level = 3 SECONDS
if(2)
say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-")
- playsound(loc, 'sound/machines/buzz-sigh.ogg', 25, TRUE)
+ playsound(loc, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE)
time_for_next_level = 0.36 SECONDS
if(3 to INFINITY)
visible_message(span_userdanger("[src] explodes!"))
diff --git a/code/game/machinery/computer/arcade/orion_event.dm b/code/game/machinery/computer/arcade/orion_event.dm
index 7ab2f3b98b3b0..d39766200dc52 100644
--- a/code/game/machinery/computer/arcade/orion_event.dm
+++ b/code/game/machinery/computer/arcade/orion_event.dm
@@ -67,8 +67,8 @@
text = "Oh no! The engine has broken down! \
You can repair it with an engine part, or you \
can make repairs for 3 days."
- emag_message = "You hear some large object lurch to a halt right behind you! When you go to look, nothing's there..."
- emag_sound = 'sound/effects/creak1.ogg'
+ emag_message = span_warning("You hear some large object lurch to a halt right behind you! When you go to look, nothing's there...")
+ emag_sound = 'sound/effects/creak/creak1.ogg'
weight = 2
event_responses = list()
@@ -170,7 +170,7 @@
/datum/orion_event/hull_part/proc/fix_floor(obj/machinery/computer/arcade/orion_trail/game)
game.say("A new floor suddenly appears around [game]. What the hell?")
- playsound(game, 'sound/weapons/genhit.ogg', 100, TRUE)
+ playsound(game, 'sound/items/weapons/genhit.ogg', 100, TRUE)
for(var/turf/open/space/fixed in orange(1, game))
fixed.place_on_top(/turf/open/floor/plating)
@@ -264,7 +264,7 @@
else
to_chat(usr, span_userdanger("Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..."))
gamer.take_bodypart_damage(30)
- playsound(game, 'sound/weapons/genhit2.ogg', 100, TRUE)
+ playsound(game, 'sound/items/weapons/genhit2.ogg', 100, TRUE)
/datum/orion_event/illness
name = "Space Illness"
@@ -321,7 +321,7 @@
gamer.Paralyze(60)
game.say("A sudden gust of powerful wind slams [gamer] into the floor!")
gamer.take_bodypart_damage(25)
- playsound(game, 'sound/weapons/genhit.ogg', 100, TRUE)
+ playsound(game, 'sound/items/weapons/genhit.ogg', 100, TRUE)
/datum/orion_event/changeling_infiltration
name = "Changeling Infiltration"
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 2d8fd7e7dcaed..21f5ed3db7bab 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -67,7 +67,7 @@
concurrent_users += user_ref
// Turn on the console
if(length(concurrent_users) == 1 && is_living)
- playsound(src, 'sound/machines/terminal_on.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 25, FALSE)
use_energy(active_power_usage)
// Register map objects
cam_screen.display_to(user)
@@ -171,7 +171,7 @@
if(length(concurrent_users) == 0 && is_living)
active_camera = null
last_camera_turf = null
- playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE)
/obj/machinery/computer/security/proc/show_camera_static()
cam_screen.vis_contents.Cut()
diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm
index 0e47a752b01d2..6640f5582fa20 100644
--- a/code/game/machinery/computer/camera_advanced.dm
+++ b/code/game/machinery/computer/camera_advanced.dm
@@ -118,7 +118,7 @@
eyeobj.eye_user = null
user.remote_control = null
current_user = null
- playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE)
/obj/machinery/computer/camera_advanced/on_set_is_operational(old_value)
if(!is_operational)
@@ -296,7 +296,7 @@
continue
T["[netcam.c_tag][netcam.can_use() ? null : " (Deactivated)"]"] = netcam
- playsound(origin, 'sound/machines/terminal_prompt.ogg', 25, FALSE)
+ playsound(origin, 'sound/machines/terminal/terminal_prompt.ogg', 25, FALSE)
var/camera = tgui_input_list(usr, "Camera to view", "Cameras", T)
if(isnull(camera))
return
@@ -305,12 +305,12 @@
var/obj/machinery/camera/final = T[camera]
playsound(src, SFX_TERMINAL_TYPE, 25, FALSE)
if(final)
- playsound(origin, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE)
+ playsound(origin, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 25, FALSE)
remote_eye.setLoc(get_turf(final))
owner.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
owner.clear_fullscreen("flash", 3) //Shorter flash than normal since it's an ~~advanced~~ console!
else
- playsound(origin, 'sound/machines/terminal_prompt_deny.ogg', 25, FALSE)
+ playsound(origin, 'sound/machines/terminal/terminal_prompt_deny.ogg', 25, FALSE)
/datum/action/innate/camera_multiz_up
name = "Move up a floor"
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index d7b9ac03dae6d..76701eca0d852 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -130,7 +130,7 @@
battlecruiser_called = TRUE
caller_card.use_charge(user)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(summon_battlecruiser), caller_card.team), rand(20 SECONDS, 1 MINUTES))
- playsound(src, 'sound/machines/terminal_alert.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE)
return TRUE
if(obj_flags & EMAGGED)
@@ -139,7 +139,7 @@
if (authenticated)
authorize_access = SSid_access.get_region_access_list(list(REGION_ALL_STATION))
balloon_alert(user, "routing circuits scrambled")
- playsound(src, 'sound/machines/terminal_alert.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE)
return TRUE
/obj/machinery/computer/communications/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
@@ -193,11 +193,11 @@
var/obj/item/card/id/id_card = held_item?.GetID()
if (!istype(id_card))
to_chat(user, span_warning("You need to swipe your ID!"))
- playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_deny.ogg', 50, FALSE)
return
if (!(ACCESS_CAPTAIN in id_card.access))
to_chat(user, span_warning("You are not authorized to do this!"))
- playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_deny.ogg', 50, FALSE)
return
var/new_sec_level = SSsecurity_level.text_level_to_number(params["newSecurityLevel"])
@@ -209,7 +209,7 @@
SSsecurity_level.set_level(new_sec_level)
to_chat(user, span_notice("Authorization confirmed. Modifying security level."))
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
// Only notify people if an actual change happened
user.log_message("changed the security level to [params["newSecurityLevel"]] with [src].", LOG_GAME)
@@ -234,7 +234,7 @@
if (!COOLDOWN_FINISHED(src, important_action_cooldown))
return
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
var/message = trim(html_encode(params["message"]), MAX_MESSAGE_LEN)
var/emagged = obj_flags & EMAGGED
@@ -300,7 +300,7 @@
to_chat(user, span_notice("Request sent."))
user.log_message("has requested the nuclear codes from CentCom with reason \"[reason]\"", LOG_SAY)
priority_announce("The codes for the on-station nuclear self-destruct have been requested by [user]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self-Destruct Codes Requested", SSstation.announcer.get_rand_report_sound())
- playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt.ogg', 50, FALSE)
COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN)
if ("restoreBackupRoutingData")
if (!authenticated_as_non_silicon_captain(user))
@@ -308,7 +308,7 @@
if (!(obj_flags & EMAGGED))
return
to_chat(user, span_notice("Backup routing data restored."))
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
obj_flags &= ~EMAGGED
if ("sendToOtherSector")
if (!authenticated_as_non_silicon_captain(user))
@@ -336,7 +336,7 @@
log_admin_private("[key_name(user)] has passed the soft filter for \"[soft_filter_result[CHAT_FILTER_INDEX_WORD]]\". They may be using a disallowed term for a cross-station message. Increasing delay time to reject.\n\n Message: \"[message]\"")
GLOB.communications_controller.soft_filtering = TRUE
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
var/destination = params["destination"]
@@ -389,7 +389,7 @@
authenticated = FALSE
authorize_access = null
authorize_name = null
- playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 50, FALSE)
return
if (obj_flags & EMAGGED)
@@ -397,7 +397,7 @@
authorize_access = SSid_access.get_region_access_list(list(REGION_ALL_STATION))
authorize_name = "Unknown"
to_chat(user, span_warning("[src] lets out a quiet alarm as its login is overridden."))
- playsound(src, 'sound/machines/terminal_alert.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 25, FALSE)
else if(isliving(user))
var/mob/living/L = user
var/obj/item/card/id/id_card = L.get_idcard(hand_first = TRUE)
@@ -407,7 +407,7 @@
authorize_name = "[id_card.registered_name] - [id_card.assignment]"
state = STATE_MAIN
- playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
imprint_gps(gps_tag = "Encrypted Communications Channel")
if ("toggleEmergencyAccess")
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index c50a073cab59b..910489999e04c 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -1347,7 +1347,7 @@
// However, if this is the case, we can't make a complete injector and
// this catches that edge case
if(!buffer_slot["name"] || !buffer_slot["UF"] || !buffer_slot["blood_type"])
- to_chat(usr,"Genetic data corrupted, unable to create injector.")
+ to_chat(usr,span_warning("Genetic data corrupted, unable to create injector."))
return
I = new /obj/item/dnainjector/timed(loc)
@@ -1731,7 +1731,7 @@
// However, if this is the case, we can't make a complete injector and
// this catches that edge case
if(!buffer_slot["UF"])
- to_chat(usr,"Genetic data corrupted, unable to apply genetic data.")
+ to_chat(usr,span_warning("Genetic data corrupted, unable to apply genetic data."))
return FALSE
COOLDOWN_START(src, enzyme_copy_timer, ENZYME_COPY_BASE_COOLDOWN)
scanner_occupant.dna.unique_features = buffer_slot["UF"]
diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm
index 050f3447a8ce4..7590e690d07a6 100644
--- a/code/game/machinery/computer/mechlaunchpad.dm
+++ b/code/game/machinery/computer/mechlaunchpad.dm
@@ -66,7 +66,7 @@
/// A proc that makes random beeping sounds for a set amount of time, the sounds are separated by a random amount of time.
/obj/machinery/computer/mechpad/proc/random_beeps(mob/user, time = 0, mintime = 0, maxtime = 1)
- var/static/list/beep_sounds = list('sound/machines/terminal_prompt_confirm.ogg', 'sound/machines/terminal_prompt_deny.ogg', 'sound/machines/terminal_error.ogg', 'sound/machines/terminal_select.ogg', 'sound/machines/terminal_success.ogg')
+ var/static/list/beep_sounds = list('sound/machines/terminal/terminal_prompt_confirm.ogg', 'sound/machines/terminal/terminal_prompt_deny.ogg', 'sound/machines/terminal/terminal_error.ogg', 'sound/machines/terminal/terminal_select.ogg', 'sound/machines/terminal/terminal_success.ogg')
var/time_to_spend = 0
var/orig_time = time
while(time > 0)
@@ -132,7 +132,7 @@
if(!can_launch(user, where))
return
flick("mechpad-launch", connected_mechpad)
- playsound(connected_mechpad, 'sound/machines/triple_beep.ogg', 50, TRUE)
+ playsound(connected_mechpad, 'sound/machines/beep/triple_beep.ogg', 50, TRUE)
addtimer(CALLBACK(src, PROC_REF(start_launch), user, where), 1 SECONDS)
/obj/machinery/computer/mechpad/proc/start_launch(mob/user, obj/machinery/mechpad/where)
diff --git a/code/game/machinery/computer/prisoner/_prisoner.dm b/code/game/machinery/computer/prisoner/_prisoner.dm
index 9777c1b209cdf..828d981bec644 100644
--- a/code/game/machinery/computer/prisoner/_prisoner.dm
+++ b/code/game/machinery/computer/prisoner/_prisoner.dm
@@ -35,7 +35,7 @@
return
contained_id = new_id
balloon_alert_to_viewers("id inserted")
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
/obj/machinery/computer/prisoner/proc/id_eject(mob/user)
if(isnull(contained_id))
@@ -48,7 +48,7 @@
contained_id.forceMove(drop_location())
balloon_alert_to_viewers("id ejected")
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
/obj/machinery/computer/prisoner/attackby(obj/item/weapon, mob/user, params)
if(istype(weapon, /obj/item/card/id/advanced/prisoner))
diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
index f03c08a8d821b..66440bb97c3fd 100644
--- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm
+++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
@@ -72,7 +72,7 @@
if(.)
return
if(isliving(usr))
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
if(!allowed(usr))
to_chat(usr, span_warning("Access denied."))
return
@@ -144,7 +144,7 @@
user.log_message("teleported [key_name(prisoner)] to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][contained_id.goal] points.", LOG_GAME)
prisoner.log_message("teleported to Labor Camp [COORD(beacon)] by [key_name(user)] for [id_goal_not_set ? "default goal of ":""][contained_id.goal] points.", LOG_GAME, log_globally = FALSE)
teleporter.handle_prisoner(contained_id, temporary_record)
- playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/items/weapons/emitter.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
prisoner.forceMove(get_turf(beacon))
prisoner.Paralyze(40) // small travel dizziness
to_chat(prisoner, span_warning("The teleportation makes you a little dizzy."))
diff --git a/code/game/machinery/computer/prisoner/management.dm b/code/game/machinery/computer/prisoner/management.dm
index 32c2ddba984df..a971dce2d9d02 100644
--- a/code/game/machinery/computer/prisoner/management.dm
+++ b/code/game/machinery/computer/prisoner/management.dm
@@ -52,20 +52,20 @@ GLOBAL_LIST_EMPTY_TYPED(tracked_implants, /obj/item/implant)
CRASH("[usr] potentially spoofed ui action [action] on prisoner console without the console being logged in.")
if(isliving(usr))
- playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
switch(action)
if("login")
if(allowed(usr))
authenticated = TRUE
- playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
else
- playsound(src, 'sound/machines/terminal_error.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 50, FALSE)
return TRUE
if("logout")
authenticated = FALSE
- playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 50, FALSE)
return TRUE
if("insert_id")
diff --git a/code/game/machinery/computer/records/records.dm b/code/game/machinery/computer/records/records.dm
index 7fd47887bc73d..a30c11c3abefa 100644
--- a/code/game/machinery/computer/records/records.dm
+++ b/code/game/machinery/computer/records/records.dm
@@ -57,7 +57,7 @@
expunge_record_info(target)
balloon_alert(user, "record expunged")
- playsound(src, 'sound/machines/terminal_eject.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 70, TRUE)
investigate_log("[key_name(user)] expunged the record of [target.name].", INVESTIGATE_RECORDS)
return TRUE
@@ -69,7 +69,7 @@
if("logout")
balloon_alert(user, "logged out")
- playsound(src, 'sound/machines/terminal_off.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 70, TRUE)
authenticated = FALSE
return TRUE
@@ -82,14 +82,14 @@
ui.close()
balloon_alert(user, "purging records...")
- playsound(src, 'sound/machines/terminal_alert.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 70, TRUE)
if(do_after(user, 5 SECONDS))
for(var/datum/record/crew/entry in GLOB.manifest.general)
expunge_record_info(entry)
balloon_alert(user, "records purged")
- playsound(src, 'sound/machines/terminal_off.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 70, TRUE)
investigate_log("[key_name(user)] purged all records.", INVESTIGATE_RECORDS)
else
balloon_alert(user, "interrupted!")
@@ -139,12 +139,12 @@
if(!authenticated && !allowed(user))
balloon_alert(user, "access denied")
- playsound(src, 'sound/machines/terminal_error.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 70, TRUE)
return FALSE
if(mugshot.picture.psize_x > world.icon_size || mugshot.picture.psize_y > world.icon_size)
balloon_alert(user, "photo too large!")
- playsound(src, 'sound/machines/terminal_error.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 70, TRUE)
return FALSE
var/trimmed = copytext(mugshot.name, 9, MAX_NAME_LEN) // Remove "photo - "
@@ -155,7 +155,7 @@
new /datum/record/crew(name = name, character_appearance = mugshot.picture.picture_image)
balloon_alert(user, "record created")
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 70, TRUE)
qdel(mugshot)
@@ -168,10 +168,10 @@
if(!allowed(user))
balloon_alert(user, "access denied")
- playsound(src, 'sound/machines/terminal_error.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 70, TRUE)
return FALSE
balloon_alert(user, "logged in")
- playsound(src, 'sound/machines/terminal_on.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 70, TRUE)
return TRUE
diff --git a/code/game/machinery/computer/records/security.dm b/code/game/machinery/computer/records/security.dm
index 8e0ee17eb158a..b2bc95e3fd060 100644
--- a/code/game/machinery/computer/records/security.dm
+++ b/code/game/machinery/computer/records/security.dm
@@ -209,13 +209,13 @@
var/input_name = strip_html_full(params["name"], MAX_CRIME_NAME_LEN)
if(!input_name)
to_chat(usr, span_warning("You must enter a name for the crime."))
- playsound(src, 'sound/machines/terminal_error.ogg', 75, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 75, TRUE)
return FALSE
var/max = CONFIG_GET(number/maxfine)
if(params["fine"] > max)
to_chat(usr, span_warning("The maximum fine is [max] credits."))
- playsound(src, 'sound/machines/terminal_error.ogg', 75, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 75, TRUE)
return FALSE
var/input_details
@@ -326,7 +326,7 @@
/// Finishes printing, resets the printer.
/obj/machinery/computer/records/security/proc/print_finish(obj/item/printable)
printing = FALSE
- playsound(src, 'sound/machines/terminal_eject.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 100, TRUE)
printable.forceMove(loc)
return TRUE
@@ -335,7 +335,7 @@
/obj/machinery/computer/records/security/proc/print_record(mob/user, datum/record/crew/target, list/params)
if(printing)
balloon_alert(user, "printer busy")
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
printing = TRUE
diff --git a/code/game/machinery/computer/warrant.dm b/code/game/machinery/computer/warrant.dm
index 3b73a8b75bfea..71455fc5a2e40 100644
--- a/code/game/machinery/computer/warrant.dm
+++ b/code/game/machinery/computer/warrant.dm
@@ -88,26 +88,26 @@
if(!isliving(user) || issilicon(user))
to_chat(user, span_warning("ACCESS DENIED"))
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
var/mob/living/player = user
var/obj/item/card/id/auth = player.get_idcard(TRUE)
if(!auth)
to_chat(user, span_warning("ACCESS DENIED: No ID card detected."))
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
var/datum/bank_account/account = auth.registered_account
if(!account?.account_holder || account.account_holder == "Unassigned")
to_chat(user, span_warning("ACCESS DENIED: No account linked to ID."))
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
var/amount = params["amount"]
if(!amount || !isnum(amount) || amount > warrant.fine || !account.adjust_money(-amount, "Paid fine for [target.name]"))
to_chat(user, span_warning("ACCESS DENIED: Invalid amount."))
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
account.bank_card_talk("You have paid [amount]cr towards [target.name]'s fine of [warrant.fine]cr.")
@@ -139,7 +139,7 @@
/// Finishes printing, resets the printer.
/obj/machinery/computer/warrant/proc/print_finish(obj/item/paper/bounty)
printing = FALSE
- playsound(src, 'sound/machines/terminal_eject.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 100, TRUE)
bounty.forceMove(loc)
return TRUE
@@ -148,7 +148,7 @@
/obj/machinery/computer/warrant/proc/print_bounty(mob/user, list/params)
if(printing)
balloon_alert(user, "printer busy")
- playsound(src, 'sound/machines/terminal_error.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 100, TRUE)
return FALSE
var/datum/record/crew/target = locate(params["crew_ref"]) in GLOB.manifest.general
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index d2e3c895ebd1d..43946538ac51b 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -50,11 +50,11 @@
return UI_CLOSE
if(!allowed(user))
to_chat(user,span_warning("Error: Access Denied."))
- user.playsound_local(src, 'sound/misc/compiler-failure.ogg', 25, TRUE)
+ user.playsound_local(src, 'sound/machines/compiler/compiler-failure.ogg', 25, TRUE)
return UI_CLOSE
if(!length(music_player.songs))
to_chat(user,span_warning("Error: No music tracks have been authorized for your station. Petition Central Command to resolve this issue."))
- user.playsound_local(src, 'sound/misc/compiler-failure.ogg', 25, TRUE)
+ user.playsound_local(src, 'sound/machines/compiler/compiler-failure.ogg', 25, TRUE)
return UI_CLOSE
return ..()
@@ -79,7 +79,7 @@
to_chat(usr, span_warning("Error: The device is still resetting from the last activation, \
it will be ready again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, jukebox_song_cd))]."))
if(COOLDOWN_FINISHED(src, jukebox_error_cd))
- playsound(src, 'sound/misc/compiler-failure.ogg', 33, TRUE)
+ playsound(src, 'sound/machines/compiler/compiler-failure.ogg', 33, TRUE)
COOLDOWN_START(src, jukebox_error_cd, 15 SECONDS)
return TRUE
@@ -134,7 +134,7 @@
if(!QDELING(src))
COOLDOWN_START(src, jukebox_song_cd, 10 SECONDS)
- playsound(src,'sound/machines/terminal_off.ogg',50,TRUE)
+ playsound(src,'sound/machines/terminal/terminal_off.ogg',50,TRUE)
update_use_power(IDLE_POWER_USE)
update_appearance(UPDATE_ICON_STATE)
return TRUE
diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm
index 74ca492657b6e..544e58bcabeea 100644
--- a/code/game/machinery/dish_drive.dm
+++ b/code/game/machinery/dish_drive.dm
@@ -75,7 +75,7 @@
LAZYREMOVE(dish_drive_contents, dish)
user.put_in_hands(dish)
balloon_alert(user, "[dish] taken")
- playsound(src, 'sound/items/pshoom.ogg', 50, TRUE)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 50, TRUE)
flick("synthesizer_beam", src)
/obj/machinery/dish_drive/wrench_act(mob/living/user, obj/item/tool)
@@ -89,7 +89,7 @@
return
LAZYADD(dish_drive_contents, dish)
balloon_alert(user, "[dish] placed in drive")
- playsound(src, 'sound/items/pshoom.ogg', 50, TRUE)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 50, TRUE)
flick("synthesizer_beam", src)
return
else if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), dish))
@@ -129,7 +129,7 @@
LAZYADD(dish_drive_contents, dish)
visible_message(span_notice("[src] beams up [dish]!"))
dish.forceMove(src)
- playsound(src, 'sound/items/pshoom.ogg', 50, TRUE)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 50, TRUE)
flick("synthesizer_beam", src)
else
step_towards(dish, src)
@@ -153,7 +153,7 @@
if(!bin)
if(manual)
visible_message(span_warning("[src] buzzes. There are no disposal bins in range!"))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
var/disposed = 0
for(var/obj/item/dish in dish_drive_contents)
@@ -166,8 +166,8 @@
disposed++
if (disposed)
visible_message(span_notice("[src] [pick("whooshes", "bwooms", "fwooms", "pshooms")] and beams [disposed] stored item\s into the nearby [bin.name]."))
- playsound(src, 'sound/items/pshoom.ogg', 50, TRUE)
- playsound(bin, 'sound/items/pshoom.ogg', 50, TRUE)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 50, TRUE)
+ playsound(bin, 'sound/items/pshoom/pshoom.ogg', 50, TRUE)
Beam(bin, icon_state = "rped_upgrade", time = 5)
bin.update_appearance()
flick("synthesizer_beam", src)
diff --git a/code/game/machinery/dna_infuser/dna_infuser.dm b/code/game/machinery/dna_infuser/dna_infuser.dm
index cc2641d32971e..961092c635b33 100644
--- a/code/game/machinery/dna_infuser/dna_infuser.dm
+++ b/code/game/machinery/dna_infuser/dna_infuser.dm
@@ -67,7 +67,7 @@
return
if(occupant && infusing_from)
if(!occupant.can_infuse(user))
- playsound(src, 'sound/machines/scanbuzz.ogg', 35, vary = TRUE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 35, vary = TRUE)
return
balloon_alert(user, "starting DNA infusion...")
start_infuse()
diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
index 45d5f3ddfd997..4f8d38aa99971 100644
--- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
@@ -130,7 +130,7 @@
. = ..()
if(prob(5))
owner.emote("squeaks")
- playsound(owner, 'sound/creatures/mousesqueek.ogg', 100)
+ playsound(owner, 'sound/mobs/non-humanoids/mouse/mousesqueek.ogg', 100)
#undef RAT_ORGAN_COLOR
#undef RAT_SCLERA_COLOR
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 68251b2c1eec3..8033c697bfa3d 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -125,12 +125,12 @@
var/normalspeed = TRUE
var/cutAiWire = FALSE
var/autoname = FALSE
- var/doorOpen = 'sound/machines/airlock.ogg'
- var/doorClose = 'sound/machines/airlockclose.ogg'
- var/doorDeni = 'sound/machines/deniedbeep.ogg' // i'm thinkin' Deni's
- var/boltUp = 'sound/machines/boltsup.ogg'
- var/boltDown = 'sound/machines/boltsdown.ogg'
- var/noPower = 'sound/machines/doorclick.ogg'
+ var/doorOpen = 'sound/machines/airlock/airlock.ogg'
+ var/doorClose = 'sound/machines/airlock/airlockclose.ogg'
+ var/doorDeni = 'sound/machines/beep/deniedbeep.ogg' // i'm thinkin' Deni's
+ var/boltUp = 'sound/machines/airlock/boltsup.ogg'
+ var/boltDown = 'sound/machines/airlock/boltsdown.ogg'
+ var/noPower = 'sound/machines/airlock/doorclick.ogg'
/// What airlock assembly mineral plating was applied to
var/previous_airlock = /obj/structure/door_assembly
/// Material of inner filling; if its an airlock with glass, this should be set to "glass"
@@ -1051,7 +1051,7 @@
to_chat(user, span_warning("[src] has already been sealed!"))
return
user.visible_message(span_notice("[user] begins sealing [src]."), span_notice("You begin sealing [src]."))
- playsound(src, 'sound/items/jaws_pry.ogg', 30, TRUE)
+ playsound(src, 'sound/items/tools/jaws_pry.ogg', 30, TRUE)
if(!do_after(user, airlockseal.seal_time, target = src))
return
if(!density)
@@ -1063,7 +1063,7 @@
if(!user.transferItemToLoc(airlockseal, src))
to_chat(user, span_warning("For some reason, you can't attach [airlockseal]!"))
return
- playsound(src, 'sound/machines/airlockforced.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockforced.ogg', 30, TRUE)
user.visible_message(span_notice("[user] finishes sealing [src]."), span_notice("You finish sealing [src]."))
seal = airlockseal
modify_max_integrity(max_integrity * AIRLOCK_SEAL_MULTIPLIER)
@@ -1137,12 +1137,12 @@
to_chat(user, span_warning("You don't have the dexterity to remove the seal!"))
return TRUE
user.visible_message(span_notice("[user] begins removing the seal from [src]."), span_notice("You begin removing [src]'s pneumatic seal."))
- playsound(src, 'sound/machines/airlockforced.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockforced.ogg', 30, TRUE)
if(!do_after(user, airlockseal.unseal_time, target = src))
return TRUE
if(!seal)
return TRUE
- playsound(src, 'sound/items/jaws_pry.ogg', 30, TRUE)
+ playsound(src, 'sound/items/tools/jaws_pry.ogg', 30, TRUE)
airlockseal.forceMove(get_turf(user))
user.visible_message(span_notice("[user] finishes removing the seal from [src]."), span_notice("You finish removing [src]'s pneumatic seal."))
seal = null
@@ -1202,7 +1202,7 @@
if(!prying_so_hard)
var/time_to_open = 50
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick?
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick?
prying_so_hard = TRUE
if(I.use_tool(src, user, time_to_open, volume = 100))
if(check_electrified && shock(user, 100))
@@ -1303,7 +1303,7 @@
return TRUE
if(BYPASS_DOOR_CHECKS) // No power usage, special sound, get it open.
- playsound(src, 'sound/machines/airlockforced.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockforced.ogg', 30, TRUE)
return TRUE
else
@@ -1381,7 +1381,7 @@
return TRUE
if(BYPASS_DOOR_CHECKS)
- playsound(src, 'sound/machines/airlockforced.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockforced.ogg', 30, TRUE)
return TRUE
else
@@ -1474,7 +1474,7 @@
var/time_to_open = 5 //half a second
if(hasPower())
time_to_open = 5 SECONDS //Powered airlocks take longer to open, and are loud.
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE)
if(do_after(user, time_to_open, src))
@@ -2374,7 +2374,7 @@
new /obj/effect/temp_visual/cult/sac(loc)
var/atom/throwtarget
throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src)))
- SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50))
+ SEND_SOUND(L, sound(pick('sound/effects/hallucinations/turn_around1.ogg','sound/effects/hallucinations/turn_around2.ogg'),0,1,50))
flash_color(L, flash_color=COLOR_CULT_RED, flash_time=20)
L.Paralyze(40)
L.throw_at(throwtarget, 5, 1)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index cd7d8201a9ec8..5449f7f7cee4c 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -210,7 +210,7 @@
if(!red_alert_access)
return
audible_message(span_notice("[src] whirr[p_s()] as [p_they()] automatically lift[p_s()] access requirements!"))
- playsound(src, 'sound/machines/boltsup.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/airlock/boltsup.ogg', 50, TRUE)
/obj/machinery/door/proc/try_safety_unlock(mob/user)
return FALSE
@@ -399,13 +399,13 @@
switch(damage_type)
if(BRUTE)
if(glass)
- playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
else if(damage_amount)
- playsound(loc, 'sound/weapons/smash.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/smash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/door/emp_act(severity)
. = ..()
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 2e5d909f3e952..858f2dffefff2 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -59,8 +59,8 @@
///Keeps track of if we're playing the alarm sound loop (as only one firelock per group should be). Used during power changes.
var/is_playing_alarm = FALSE
- var/knock_sound = 'sound/effects/glassknock.ogg'
- var/bash_sound = 'sound/effects/glassbash.ogg'
+ var/knock_sound = 'sound/effects/glass/glassknock.ogg'
+ var/bash_sound = 'sound/effects/glass/glassbash.ogg'
/datum/armor/door_firedoor
diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm
index bf27dfcffc23b..8d35f44b0d80c 100644
--- a/code/game/machinery/doors/passworddoor.dm
+++ b/code/game/machinery/doors/passworddoor.dm
@@ -20,7 +20,7 @@
/// Sound used upon closing.
var/door_close = 'sound/machines/blastdoor.ogg'
/// Sound used upon denying.
- var/door_deny = 'sound/machines/buzz-sigh.ogg'
+ var/door_deny = 'sound/machines/buzz/buzz-sigh.ogg'
/obj/machinery/door/password/voice
voice_activated = TRUE
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index ab18a63361c97..cb33ed6c14f5a 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -254,7 +254,7 @@
user.visible_message(span_warning("[user] begins prying open [src]."),\
span_noticealien("You begin digging your claws into [src] with all your might!"),\
span_warning("You hear groaning metal..."))
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE)
var/time_to_open = 5 SECONDS
if(hasPower())
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index a287aefeaa825..d093cc0d3556d 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -326,9 +326,9 @@
/obj/machinery/door/window/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(src, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(src, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/door/window/on_deconstruction(disassembled)
if(disassembled)
diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm
index af39257973cce..03a5c4c6cf93b 100644
--- a/code/game/machinery/droneDispenser.dm
+++ b/code/game/machinery/droneDispenser.dm
@@ -36,7 +36,7 @@
// ceasing production. Set to 0 for infinite.
var/maximum_idle = 3
- var/work_sound = 'sound/items/rped.ogg'
+ var/work_sound = 'sound/items/tools/rped.ogg'
var/create_sound = 'sound/items/deconstruct.ogg'
var/recharge_sound = 'sound/machines/ping.ogg'
diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm
index c93a0e4f7ea56..0652ab1605e5d 100644
--- a/code/game/machinery/fat_sucker.dm
+++ b/code/game/machinery/fat_sucker.dm
@@ -166,7 +166,7 @@
set_light(2, 1, "#ff0000")
else
say("Subject not fat enough.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
overlays += "[icon_state]_red" //throw a red light icon over it, to show that it won't work
/obj/machinery/fat_sucker/proc/stop()
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 94612b8c9db35..5853389ac80ff 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -108,7 +108,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26)
power_change()
return
- playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/flash.ogg', 100, TRUE)
flick("[base_icon_state]_flash", src)
flash_lighting_fx()
diff --git a/code/game/machinery/flatpacker.dm b/code/game/machinery/flatpacker.dm
index 01224ad8b00fa..56fcc8a8ae74c 100644
--- a/code/game/machinery/flatpacker.dm
+++ b/code/game/machinery/flatpacker.dm
@@ -268,7 +268,7 @@
if(!materials.has_materials(needed_mats, creation_efficiency))
say("Not enough materials to begin production.")
return
- playsound(src, 'sound/items/rped.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/rped.ogg', 50, TRUE)
busy = TRUE
flick_overlay_view(mutable_appearance('icons/obj/machines/lathes.dmi', "flatpacker_bar"), flatpack_time)
@@ -401,7 +401,7 @@
new /obj/effect/temp_visual/mook_dust(loc)
var/obj/machinery/new_machine = new board.build_path(loc)
loc.visible_message(span_warning("[src] deploys!"))
- playsound(src, 'sound/machines/terminal_eject.ogg', 70, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 70, TRUE)
new_machine.on_construction(user)
qdel(src)
return ITEM_INTERACT_SUCCESS
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 5fa999a690e9a..4949f53adfbfe 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -76,15 +76,15 @@
for(var/obj/item/abiotic_item in carbon_occupant.held_items + carbon_occupant.get_equipped_items())
if(!(HAS_TRAIT(abiotic_item, TRAIT_NODROP)))
say("Subject may not have abiotic items on.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
if(!(carbon_occupant.mob_biotypes & MOB_ORGANIC))
say("Subject is not organic.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
if(!allow_living && !(carbon_occupant.stat == DEAD || HAS_TRAIT(carbon_occupant, TRAIT_FAKEDEATH))) //I mean, the machines scanners arent advanced enough to tell you're alive
say("Subject is still alive.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
return TRUE
@@ -141,7 +141,7 @@
open_machine()
if (!success)
say("Protocol interrupted. Aborting harvest.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
else
say("Subject has been successfully harvested.")
playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, FALSE)
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 9744a65f53d03..d94a270cb95ce 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -522,7 +522,7 @@ Possible to do for anyone motivated enough:
if(outgoing_call)
holocall.Disconnect(src)//can't answer calls while calling
else
- playsound(src, 'sound/machines/twobeep.ogg', 100) //bring, bring!
+ playsound(src, 'sound/machines/beep/twobeep.ogg', 100) //bring, bring!
are_ringing = TRUE
if(ringing != are_ringing)
diff --git a/code/game/machinery/hypnochair.dm b/code/game/machinery/hypnochair.dm
index b5ec2c58b3870..a2895f6ae9fcd 100644
--- a/code/game/machinery/hypnochair.dm
+++ b/code/game/machinery/hypnochair.dm
@@ -91,11 +91,11 @@
/obj/machinery/hypnochair/proc/interrogate()
if(!trigger_phrase)
- playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE)
return
var/mob/living/carbon/C = occupant
if(!istype(C))
- playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE)
return
victim = C
if(C.get_eye_protection() <= 0)
@@ -114,13 +114,13 @@
interrupt_interrogation()
return
if(SPT_PROB(5, seconds_per_tick) && !(C.get_eye_protection() > 0))
- to_chat(C, "[pick(\
+ to_chat(C, span_hypnophrase(pick(\
"...blue... red... green... blue, red, green, blueredgreen[span_small("blueredgreen")]",\
"...pretty colors...",\
"...you keep hearing words, but you can't seem to understand them...",\
"...so peaceful...",\
"...an annoying buzz in your ears..."\
- )]")
+ )))
use_energy(active_power_usage * seconds_per_tick)
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index e1b10dae6e43e..437c2dbd168a6 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -256,7 +256,7 @@
// If the human is losing too much blood, beep.
if(attached_mob.blood_volume < BLOOD_VOLUME_SAFE && prob(5))
audible_message(span_hear("[src] beeps loudly."))
- playsound(loc, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(loc, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
var/atom/movable/target = use_internal_storage ? src : reagent_container
attached_mob.transfer_blood_to(target, amount)
update_appearance(UPDATE_ICON)
diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm
index 67ad91681506d..c2fb218d50a33 100644
--- a/code/game/machinery/launch_pad.dm
+++ b/code/game/machinery/launch_pad.dm
@@ -181,11 +181,11 @@
indicator_icon = "launchpad_pull"
update_indicator()
- playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/flash.ogg', 25, TRUE)
teleporting = TRUE
if(!hidden)
- playsound(target, 'sound/weapons/flash.ogg', 25, TRUE)
+ playsound(target, 'sound/items/weapons/flash.ogg', 25, TRUE)
var/datum/effect_system/spark_spread/quantum/spark_system = new /datum/effect_system/spark_spread/quantum()
spark_system.set_up(5, TRUE, target)
spark_system.start()
@@ -203,7 +203,7 @@
if(!hidden)
// Takes twice as long to make sure it properly fades out.
Beam(target, icon_state = teleport_beam, time = BEAM_FADE_TIME*2, beam_type = /obj/effect/ebeam/launchpad)
- playsound(target, 'sound/weapons/emitter2.ogg', 25, TRUE)
+ playsound(target, 'sound/items/weapons/emitter2.ogg', 25, TRUE)
// use a lot of power
use_energy(active_power_usage)
@@ -216,7 +216,7 @@
source = dest
dest = target
- playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/emitter2.ogg', 25, TRUE)
var/first = TRUE
for(var/atom/movable/ROI in source)
if(ROI == src)
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index cd36dcce09ad0..834d7115b0418 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -178,7 +178,7 @@
consumed_reagents_list[reagent_id] *= production_coefficient
if(!reagents.has_reagent(reagent_id, consumed_reagents_list[reagent_id]))
audible_message(span_notice("[src] buzzes."))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
power = max(active_power_usage, (power + consumed_reagents_list[reagent_id]))
@@ -207,7 +207,7 @@
for(var/reagent_id in modified_consumed_reagents_list)
if(!reagents.has_reagent(reagent_id, modified_consumed_reagents_list[reagent_id]))
audible_message(span_notice("The [src] buzzes."))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
break
reagents.remove_reagent(reagent_id, modified_consumed_reagents_list[reagent_id])
diff --git a/code/game/machinery/newscaster/newscaster_machine.dm b/code/game/machinery/newscaster/newscaster_machine.dm
index aced87bfe588a..18c3d9434d869 100644
--- a/code/game/machinery/newscaster/newscaster_machine.dm
+++ b/code/game/machinery/newscaster/newscaster_machine.dm
@@ -529,9 +529,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
if(machine_stat & BROKEN)
playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, TRUE)
else
- playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/newscaster/on_deconstruction(disassembled)
@@ -542,7 +542,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
/obj/machinery/newscaster/atom_break(damage_flag)
. = ..()
if(.)
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
/obj/machinery/newscaster/attack_paw(mob/living/user, list/modifiers)
@@ -623,7 +623,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
if(channel)
if(update_alert)
say("Breaking news from [channel]!")
- playsound(loc, 'sound/machines/twobeep_high.ogg', 75, TRUE)
+ playsound(loc, 'sound/machines/beep/twobeep_high.ogg', 75, TRUE)
alert = TRUE
update_appearance()
addtimer(CALLBACK(src, PROC_REF(remove_alert)), ALERT_DELAY, TIMER_UNIQUE|TIMER_OVERRIDE)
@@ -745,10 +745,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
*/
/obj/machinery/newscaster/proc/delete_bounty_request()
if(!active_request || !current_user)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
if(active_request?.owner != current_user.account_holder)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
say("Deleted current request.")
GLOB.request_list.Remove(active_request)
@@ -759,7 +759,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
*/
/obj/machinery/newscaster/proc/create_bounty()
if(!current_user || !bounty_text)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
for(var/datum/station_request/iterated_station_request as anything in GLOB.request_list)
if(iterated_station_request.req_number == current_user.account_id)
@@ -779,11 +779,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
say("No ID detected.")
return TRUE
if(current_user.account_holder == active_request.owner)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
for(var/new_apply in active_request?.applicants)
if(current_user.account_holder == active_request?.applicants[new_apply])
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
active_request.applicants += list(current_user)
@@ -794,7 +794,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30)
if(!current_user)
return TRUE
if(!current_user.has_money(active_request.value) || (current_user.account_holder != active_request.owner))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return TRUE
payment_target.transfer_money(current_user, active_request.value, "Bounty Request")
say("Paid out [active_request.value] credits.")
diff --git a/code/game/machinery/photobooth.dm b/code/game/machinery/photobooth.dm
index 321ae7efd6e76..d1244bcc85d47 100644
--- a/code/game/machinery/photobooth.dm
+++ b/code/game/machinery/photobooth.dm
@@ -130,7 +130,7 @@
if(obj_flags & EMAGGED)
var/mob/living/carbon/carbon_occupant = occupant
for(var/i in 1 to 5) //play a ton of sounds to mimic it blinding you
- playsound(src, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE)
+ playsound(src, pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 75, TRUE)
if(carbon_occupant)
carbon_occupant.flash_act(5)
sleep(0.2 SECONDS)
@@ -141,12 +141,12 @@
if(!do_after(occupant, 2 SECONDS, src, timed_action_flags = IGNORE_HELD_ITEM)) //gives them time to put their hand items away.
taking_pictures = FALSE
return
- playsound(src, 'sound/items/polaroid1.ogg', 75, TRUE)
+ playsound(src, 'sound/items/polaroid/polaroid1.ogg', 75, TRUE)
flash()
if(!do_after(occupant, 3 SECONDS, src, timed_action_flags = IGNORE_HELD_ITEM))
taking_pictures = FALSE
return
- playsound(src, 'sound/items/polaroid2.ogg', 75, TRUE)
+ playsound(src, 'sound/items/polaroid/polaroid2.ogg', 75, TRUE)
flash()
if(!do_after(occupant, 2 SECONDS, src, timed_action_flags = IGNORE_HELD_ITEM))
taking_pictures = FALSE
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 31fc68b31421f..e64e01bbcf246 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -747,8 +747,8 @@ DEFINE_BITFIELD(turret_flags, list(
mode = TURRET_LETHAL
stun_projectile = /obj/projectile/bullet
lethal_projectile = /obj/projectile/bullet
- lethal_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
- stun_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
+ stun_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
icon_state = "syndie_off"
base_icon_state = "syndie"
faction = list(ROLE_SYNDICATE)
@@ -769,9 +769,9 @@ DEFINE_BITFIELD(turret_flags, list(
icon_state = "standard_lethal"
base_icon_state = "standard"
stun_projectile = /obj/projectile/energy/electrode
- stun_projectile_sound = 'sound/weapons/taser.ogg'
+ stun_projectile_sound = 'sound/items/weapons/taser.ogg'
lethal_projectile = /obj/projectile/beam/laser
- lethal_projectile_sound = 'sound/weapons/laser.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/laser.ogg'
desc = "An energy blaster auto-turret."
armor_type = /datum/armor/syndicate_turret
@@ -788,14 +788,14 @@ DEFINE_BITFIELD(turret_flags, list(
icon_state = "standard_lethal"
base_icon_state = "standard"
stun_projectile = /obj/projectile/energy/electrode
- stun_projectile_sound = 'sound/weapons/taser.ogg'
+ stun_projectile_sound = 'sound/items/weapons/taser.ogg'
lethal_projectile = /obj/projectile/beam/laser/heavylaser
- lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/lasercannonfire.ogg'
desc = "An energy blaster auto-turret."
/obj/machinery/porta_turret/syndicate/energy/raven
stun_projectile = /obj/projectile/beam/laser
- stun_projectile_sound = 'sound/weapons/laser.ogg'
+ stun_projectile_sound = 'sound/items/weapons/laser.ogg'
faction = list(FACTION_NEUTRAL,FACTION_SILICON,FACTION_TURRET)
/obj/machinery/porta_turret/syndicate/pod
@@ -806,9 +806,9 @@ DEFINE_BITFIELD(turret_flags, list(
/obj/machinery/porta_turret/syndicate/irs
lethal_projectile = /obj/projectile/bullet/c10mm/ap
- lethal_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/gun/smg/shot.ogg'
stun_projectile = /obj/projectile/bullet/c10mm/ap
- stun_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
+ stun_projectile_sound = 'sound/items/weapons/gun/smg/shot.ogg'
armor_type = /datum/armor/syndicate_turret
faction = list(FACTION_PIRATE)
@@ -817,8 +817,8 @@ DEFINE_BITFIELD(turret_flags, list(
shot_delay = 3
stun_projectile = /obj/projectile/bullet/p50/penetrator/shuttle
lethal_projectile = /obj/projectile/bullet/p50/penetrator/shuttle
- lethal_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
- stun_projectile_sound = 'sound/weapons/gun/smg/shot.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/gun/smg/shot.ogg'
+ stun_projectile_sound = 'sound/items/weapons/gun/smg/shot.ogg'
armor_type = /datum/armor/syndicate_shuttle
/datum/armor/syndicate_shuttle
@@ -851,7 +851,7 @@ DEFINE_BITFIELD(turret_flags, list(
installation = null
uses_stored = FALSE
lethal_projectile = /obj/projectile/plasma/turret
- lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/plasma_cutter.ogg'
mode = TURRET_LETHAL //It would be useless in stun mode anyway
faction = list(FACTION_NEUTRAL,FACTION_SILICON,FACTION_TURRET) //Minebots, medibots, etc that should not be shot.
@@ -878,8 +878,8 @@ DEFINE_BITFIELD(turret_flags, list(
scan_range = 9
stun_projectile = /obj/projectile/beam/laser
lethal_projectile = /obj/projectile/beam/laser
- lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
- stun_projectile_sound = 'sound/weapons/plasma_cutter.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/plasma_cutter.ogg'
+ stun_projectile_sound = 'sound/items/weapons/plasma_cutter.ogg'
icon_state = "syndie_off"
base_icon_state = "syndie"
faction = list(FACTION_NEUTRAL,FACTION_SILICON,FACTION_TURRET)
@@ -904,6 +904,13 @@ DEFINE_BITFIELD(turret_flags, list(
lethal_projectile = /obj/projectile/beam/weak/penetrator
faction = list(FACTION_NEUTRAL,FACTION_SILICON,FACTION_TURRET)
+/obj/machinery/porta_turret/centcom_shuttle/weak/mining
+ name = "Old Mining Turret"
+ lethal_projectile = /obj/projectile/kinetic/miner
+ lethal_projectile_sound = 'sound/items/weapons/kinetic_accel.ogg'
+ stun_projectile = /obj/projectile/kinetic/miner
+ stun_projectile_sound = 'sound/items/weapons/kinetic_accel.ogg'
+
////////////////////////
//Turret Control Panel//
////////////////////////
diff --git a/code/game/machinery/portagrav.dm b/code/game/machinery/portagrav.dm
index c970fa5f8f1c6..62fc67b7c070a 100644
--- a/code/game/machinery/portagrav.dm
+++ b/code/game/machinery/portagrav.dm
@@ -229,7 +229,7 @@
. = ..()
if(.)
return
- playsound(src, 'sound/machines/terminal_button07.ogg', 45, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_button07.ogg', 45, TRUE)
switch(action)
if("adjust_grav")
var/adjustment = text2num(params["adjustment"])
diff --git a/code/game/machinery/prisongate.dm b/code/game/machinery/prisongate.dm
index b05b6dd90c4a1..88cb40dd50f79 100644
--- a/code/game/machinery/prisongate.dm
+++ b/code/game/machinery/prisongate.dm
@@ -51,7 +51,7 @@
for(var/mob/living/stowaway in cargobay.contents) //nice try bub
if(COOLDOWN_FINISHED(src, spam_cooldown_time))
say("Stowaway detected in internal contents. Access denied.")
- playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE)
COOLDOWN_START(src, spam_cooldown_time, SPAM_CD)
return FALSE
var/mob/living/carbon/the_toucher = gate_toucher
@@ -82,7 +82,7 @@
return TRUE
if(COOLDOWN_FINISHED(src, spam_cooldown_time))
say("Prison ID with ongoing sentence detected. Access denied.")
- playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE)
COOLDOWN_START(src, spam_cooldown_time, SPAM_CD)
return FALSE
if(COOLDOWN_FINISHED(src, spam_cooldown_time))
diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm
index f5f5851b7586e..635f567b8b310 100644
--- a/code/game/machinery/quantum_pad.dm
+++ b/code/game/machinery/quantum_pad.dm
@@ -132,7 +132,7 @@
/obj/machinery/quantumpad/proc/doteleport(mob/user = null, obj/machinery/quantumpad/target_pad = linked_pad)
if(!target_pad)
return
- playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/flash.ogg', 25, TRUE)
teleporting = TRUE
addtimer(CALLBACK(src, PROC_REF(teleport_contents), user, target_pad), teleport_speed)
@@ -156,9 +156,9 @@
target_pad.sparks()
flick("qpad-beam", src)
- playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/emitter2.ogg', 25, TRUE)
flick("qpad-beam", target_pad)
- playsound(get_turf(target_pad), 'sound/weapons/emitter2.ogg', 25, TRUE)
+ playsound(get_turf(target_pad), 'sound/items/weapons/emitter2.ogg', 25, TRUE)
for(var/atom/movable/ROI in get_turf(src))
if(QDELETED(ROI))
continue //sleeps in CHECK_TICK
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 8ce9265917d63..166410cfccf56 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -15,7 +15,7 @@
var/amount_produced = 50
var/crush_damage = 1000
var/eat_victim_items = TRUE
- var/item_recycle_sound = 'sound/items/welder.ogg'
+ var/item_recycle_sound = 'sound/items/tools/welder.ogg'
var/datum/component/material_container/materials
/obj/machinery/recycler/Initialize(mapload)
@@ -206,7 +206,7 @@
if(nom.len && sound)
playsound(src, item_recycle_sound, (50 + nom.len * 5), TRUE, nom.len, ignore_walls = (nom.len - 10)) // As a substitute for playing 50 sounds at once.
if(not_eaten)
- playsound(src, 'sound/machines/buzz-sigh.ogg', (50 + not_eaten * 5), FALSE, not_eaten, ignore_walls = (not_eaten - 10)) // Ditto.
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', (50 + not_eaten * 5), FALSE, not_eaten, ignore_walls = (not_eaten - 10)) // Ditto.
/obj/machinery/recycler/proc/recycle_item(obj/item/weapon)
. = FALSE
@@ -225,7 +225,7 @@
qdel(weapon)
/obj/machinery/recycler/proc/emergency_stop()
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
safety_mode = TRUE
update_appearance()
addtimer(CALLBACK(src, PROC_REF(reboot)), SAFETY_COOLDOWN)
@@ -239,7 +239,7 @@
L.forceMove(loc)
if(issilicon(L))
- playsound(src, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE)
else
playsound(src, 'sound/effects/splat.ogg', 50, TRUE)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 4a764872a8a2a..6124d15a7f4b7 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
var/mob/living/L = usr
message = L.treat_message(message)["message"]
- minor_announce(message, "[department] Announcement:", html_encode = FALSE, sound_override = 'sound/misc/announce_dig.ogg')
+ minor_announce(message, "[department] Announcement:", html_encode = FALSE, sound_override = 'sound/announcer/announcement/announce_dig.ogg')
GLOB.news_network.submit_article(message, department, "Station Announcements", null)
usr.log_talk(message, LOG_SAY, tag="station announcement from [src]")
message_admins("[ADMIN_LOOKUPFLW(usr)] has made a station announcement from [src] at [AREACOORD(usr)].")
@@ -217,7 +217,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
return
if(!reply_message)
has_mail_send_error = TRUE
- playsound(src, 'sound/machines/buzz-two.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, TRUE)
return TRUE
send_message(recipient, reply_message, REQ_NORMAL_MESSAGE_PRIORITY, REPLY_REQUEST)
@@ -273,9 +273,9 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
if(!silent)
if(has_mail_send_error)
- playsound(src, 'sound/machines/buzz-two.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, TRUE)
else
- playsound(src, 'sound/machines/twobeep.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep.ogg', 50, TRUE)
message_stamped_by = ""
message_verified_by = ""
@@ -350,7 +350,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
var/alert = new_message.get_alert()
if(!silent)
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
say(alert)
if(new_message.radio_freq)
diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm
index 3ef023ccb64d7..f0bc48916ae21 100644
--- a/code/game/machinery/roulette_machine.dm
+++ b/code/game/machinery/roulette_machine.dm
@@ -127,7 +127,7 @@
if(isidcard(W))
playsound(src, 'sound/machines/card_slide.ogg', 50, TRUE)
else
- playsound(src, 'sound/machines/terminal_success.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 50, TRUE)
if(machine_stat & MAINT || !on || locked)
to_chat(user, span_notice("The machine appears to be disabled."))
@@ -135,17 +135,17 @@
if(!player_card.registered_account)
say("You don't have a bank account!")
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
return FALSE
if(my_card)
if(IS_DEPARTMENTAL_CARD(player_card)) // Are they using a department ID
say("You cannot gamble with the department budget!")
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
return FALSE
if(player_card.registered_account.account_balance < chosen_bet_amount) //Does the player have enough funds
say("You do not have the funds to play! Lower your bet or get more money.")
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
return FALSE
if(!chosen_bet_amount || isnull(chosen_bet_type))
return FALSE
@@ -181,7 +181,7 @@
icon_state = "rolling" //Prepare the new icon state for rolling before hand.
flick("flick_up", src)
- playsound(src, 'sound/machines/piston_raise.ogg', 70)
+ playsound(src, 'sound/machines/piston/piston_raise.ogg', 70)
playsound(src, 'sound/machines/chime.ogg', 50)
addtimer(CALLBACK(src, PROC_REF(play), user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first
@@ -209,7 +209,7 @@
if(!my_card?.registered_account) // Something happened to my_card during the 0.4 seconds delay of the timed callback.
icon_state = "idle"
flick("flick_down", src)
- playsound(src, 'sound/machines/piston_lower.ogg', 70)
+ playsound(src, 'sound/machines/piston/piston_lower.ogg', 70)
return
var/payout = potential_payout
@@ -222,7 +222,7 @@
var/rolled_number = rand(0, 36)
- playsound(src, 'sound/machines/roulettewheel.ogg', 50)
+ playsound(src, 'sound/machines/roulette/roulettewheel.ogg', 50)
addtimer(CALLBACK(src, PROC_REF(finish_play), player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play
addtimer(CALLBACK(src, PROC_REF(finish_play_animation)), 3 SECONDS)
@@ -231,7 +231,7 @@
/obj/machinery/roulette/proc/finish_play_animation()
icon_state = "idle"
flick("flick_down", src)
- playsound(src, 'sound/machines/piston_lower.ogg', 70)
+ playsound(src, 'sound/machines/piston/piston_lower.ogg', 70)
///Ran after a while to check if the player won or not.
/obj/machinery/roulette/proc/finish_play(obj/item/card/id/player_id, bet_type, bet_amount, potential_payout, rolled_number)
@@ -249,7 +249,7 @@
if(!is_winner)
say("You lost! Better luck next time")
- playsound(src, 'sound/machines/synth_no.ogg', 50)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 50)
return FALSE
// Prevents money generation exploits. Doesn't prevent the owner being a scrooge and running away with the money.
@@ -257,7 +257,7 @@
potential_payout = (account_balance >= potential_payout) ? potential_payout : account_balance
say("You have won [potential_payout] credits! Congratulations!")
- playsound(src, 'sound/machines/synth_yes.ogg', 50)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 50)
dispense_prize(potential_payout)
@@ -362,7 +362,7 @@
if(my_card.registered_account.account_balance >= payout)
return TRUE //We got the betting amount
say("The bank account of [my_card.registered_account.account_holder] does not have enough funds to pay out the potential prize, contact them to fill up their account or lower your bet!")
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
return FALSE
/obj/machinery/roulette/update_overlays()
diff --git a/code/game/machinery/scanner_gate.dm b/code/game/machinery/scanner_gate.dm
index 85d816543926b..07df8db82c704 100644
--- a/code/game/machinery/scanner_gate.dm
+++ b/code/game/machinery/scanner_gate.dm
@@ -306,7 +306,7 @@
say("[detected_thing][reverse ? " not " : " "]detected!!")
COOLDOWN_START(src, next_beep, 2 SECONDS)
- playsound(source = src, soundin = 'sound/machines/scanbuzz.ogg', vol = 30, vary = FALSE, extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE, falloff_distance = 4)
+ playsound(source = src, soundin = 'sound/machines/scanner/scanbuzz.ogg', vol = 30, vary = FALSE, extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE, falloff_distance = 4)
set_scanline("alarm", 2 SECONDS)
/obj/machinery/scanner_gate/can_interact(mob/user)
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 41aa0876169ed..d3266df16f880 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -335,14 +335,14 @@
else
balloon_alert(user, "no luck!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50)
did_player_win = FALSE
if(did_player_win)
add_filter("jackpot_rays", 3, ray_filter)
animate(get_filter("jackpot_rays"), offset = 10, time = 3 SECONDS, loop = -1)
addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, remove_filter), "jackpot_rays"), 3 SECONDS)
- playsound(src, 'sound/machines/roulettejackpot.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/roulette/roulettejackpot.ogg', 50, TRUE)
/// Checks for a jackpot (5 matching icons in the middle row) with the given icon name
/obj/machinery/computer/slot_machine/proc/check_jackpot(name)
diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm
index bf33530b93e3e..49f00741895fe 100644
--- a/code/game/machinery/stasis.dm
+++ b/code/game/machinery/stasis.dm
@@ -34,9 +34,9 @@
if(last_stasis_sound != _running)
var/sound_freq = rand(5120, 8800)
if(_running)
- playsound(src, 'sound/machines/synth_yes.ogg', 50, TRUE, frequency = sound_freq)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 50, TRUE, frequency = sound_freq)
else
- playsound(src, 'sound/machines/synth_no.ogg', 50, TRUE, frequency = sound_freq)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 50, TRUE, frequency = sound_freq)
last_stasis_sound = _running
/obj/machinery/stasis/click_alt(mob/user)
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 9ff9c562aa04c..1eff3f6587080 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -506,7 +506,7 @@
locked = FALSE
if(uv_super)
visible_message(span_warning("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber."))
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 50, TRUE)
var/datum/effect_system/fluid_spread/smoke/bad/black/smoke = new
smoke.set_up(0, holder = src, location = src)
smoke.start()
@@ -523,7 +523,7 @@
else
visible_message(span_warning("[src]'s door slides open, barraging you with the nauseating smell of charred flesh."))
qdel(mob_occupant.GetComponent(/datum/component/irradiated))
- playsound(src, 'sound/machines/airlockclose.ogg', 25, TRUE)
+ playsound(src, 'sound/machines/airlock/airlockclose.ogg', 25, TRUE)
var/list/things_to_clear = list() //Done this way since using GetAllContents on the SSU itself would include circuitry and such.
if(suit)
things_to_clear += suit
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 0ac1f7ee44df8..25dc258a38d94 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -501,7 +501,7 @@
reactants += S.reagents
if(!chem_splash(get_turf(src), reagents, spread_range, reactants, temp_boost))
- playsound(loc, 'sound/items/screwdriver2.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/tools/screwdriver2.ogg', 50, TRUE)
return // The Explosion didn't do anything. No need to log, or disappear.
if(adminlog)
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index c92384aa4b6c1..8b982b4e3b953 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -105,7 +105,7 @@
if(params["value"])
if(length(params["value"]) > 32)
to_chat(current_user, span_warning("Error: Machine ID too long!"))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
else
id = params["value"]
@@ -115,7 +115,7 @@
if(params["value"])
if(length(params["value"]) > 15)
to_chat(current_user, span_warning("Error: Network name too long!"))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
else
for(var/obj/machinery/telecomms/linked_machine in links)
@@ -130,7 +130,7 @@
if("freq")
if(tempfreq in banned_frequencies)
to_chat(current_user, span_warning("Error: Interference preventing filtering frequency: \"[tempfreq / 10] kHz\""))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
else
if(!(tempfreq in freq_listening))
freq_listening.Add(tempfreq)
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 238994004ded0..45a91d7e5a6ec 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -84,7 +84,7 @@
return
if(!transform_dead && victim.stat == DEAD)
- playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src.loc, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
// Activate the cooldown
@@ -92,7 +92,7 @@
cooldown_timer = world.time + cooldown_duration
update_appearance()
- playsound(src.loc, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 50, TRUE)
victim.emote("scream") // It is painful
victim.adjustBruteLoss(max(0, 80 - victim.getBruteLoss())) // Hurt the human, don't try to kill them though.
diff --git a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
index d97966160233b..d722d90ed1172 100644
--- a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
+++ b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm
@@ -25,7 +25,7 @@
return
new /obj/effect/temp_visual/circle_wave/bioscrambler(get_turf(src))
- playsound(src, 'sound/magic/cosmic_energy.ogg', vol = 50, vary = TRUE)
+ playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50, vary = TRUE)
COOLDOWN_START(src, pulse_cooldown, pulse_delay)
for(var/mob/living/carbon/nearby in hearers(range, src))
nearby.bioscramble(name)
diff --git a/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm b/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm
index a9d2e0bcaa0c4..2d92eaabb929c 100644
--- a/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm
+++ b/code/game/objects/effects/anomalies/anomalies_dimensional_themes.dm
@@ -11,7 +11,7 @@
/// Typepath of custom material to use for objects.
var/datum/material/material
/// Sound to play when transforming a tile
- var/sound = 'sound/magic/blind.ogg'
+ var/sound = 'sound/effects/magic/blind.ogg'
/// Weighted list of turfs to replace the floor with.
var/list/replace_floors = list(/turf/open/floor/material = 1)
/// Typepath of turf to replace walls with.
@@ -255,7 +255,7 @@
icon = 'icons/obj/ore.dmi'
icon_state = "uranium"
material = /datum/material/uranium
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
/datum/dimension_theme/meat
name = "Meat"
@@ -468,4 +468,4 @@
/obj/item/reagent_containers/cup/glass/trophy = list(/obj/item/reagent_containers/cup/glass/trophy/bronze_cup = 1),
/obj/machinery/door/airlock = list(/obj/machinery/door/airlock/bronze = 1),
)
- sound = 'sound/magic/clockwork/fellowship_armory.ogg'
+ sound = 'sound/effects/magic/clockwork/fellowship_armory.ogg'
diff --git a/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm b/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm
index e6c3e855386b7..0998e3f803dec 100644
--- a/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm
+++ b/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm
@@ -132,11 +132,11 @@
icon_state = "anom"
anchored = TRUE
var/static/list/spooky_noises = list(
- 'sound/hallucinations/growl1.ogg',
- 'sound/hallucinations/growl2.ogg',
- 'sound/hallucinations/growl3.ogg',
- 'sound/hallucinations/veryfar_noise.ogg',
- 'sound/hallucinations/wail.ogg'
+ 'sound/effects/hallucinations/growl1.ogg',
+ 'sound/effects/hallucinations/growl2.ogg',
+ 'sound/effects/hallucinations/growl3.ogg',
+ 'sound/effects/hallucinations/veryfar_noise.ogg',
+ 'sound/effects/hallucinations/wail.ogg'
)
var/list/ghosts_spawned = list()
diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index f423f3644f0c8..1124e32983f31 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -359,7 +359,7 @@
decal_reagent = /datum/reagent/ants
reagent_amount = 5
/// Sound the ants make when biting
- var/bite_sound = 'sound/weapons/bite.ogg'
+ var/bite_sound = 'sound/items/weapons/bite.ogg'
/obj/effect/decal/cleanable/ants/Initialize(mapload)
if(mapload && reagent_amount > 2)
diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm
index 55cd7cd98d089..803555ae89a99 100644
--- a/code/game/objects/effects/decals/remains.dm
+++ b/code/game/objects/effects/decals/remains.dm
@@ -5,7 +5,7 @@
/obj/effect/decal/remains/acid_act()
visible_message(span_warning("[src] dissolve[gender == PLURAL?"":"s"] into a puddle of sizzling goop!"))
- playsound(src, 'sound/items/welder.ogg', 150, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 150, TRUE)
new /obj/effect/decal/cleanable/greenglow(drop_location())
qdel(src)
return TRUE
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index 4fdd4ac598ee0..6ddd65f12cfca 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -20,8 +20,8 @@ would spawn and follow the beaker, even if it is carried or thrown.
GLOB.cameranet.updateVisibility(src)
return ..()
-// Prevents effects from getting registered for SSspacedrift
-/obj/effect/particle_effect/newtonian_move(direction, instant = FALSE, start_delay = 0)
+// Prevents effects from getting registered for SSnewtonian_movement
+/obj/effect/particle_effect/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 0, controlled_cap = null)
return TRUE
/datum/effect_system
diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm
index 6d968574c686c..07383a0aa6f0b 100644
--- a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm
@@ -40,7 +40,7 @@
if(slippery_foam)
AddComponent(/datum/component/slippery, 100)
create_reagents(1000, REAGENT_HOLDER_INSTANT_REACT)
- playsound(src, 'sound/effects/bubbles2.ogg', 80, TRUE, -3)
+ playsound(src, 'sound/effects/bubbles/bubbles2.ogg', 80, TRUE, -3)
AddElement(/datum/element/atmos_sensitive, mapload)
SSfoam.start_processing(src)
@@ -324,7 +324,7 @@
return attack_hand(user, modifiers)
/obj/structure/foamedmetal/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
- playsound(src.loc, 'sound/weapons/tap.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/weapons/tap.ogg', 100, TRUE)
/obj/structure/foamedmetal/attack_hand(mob/user, list/modifiers)
. = ..()
@@ -333,7 +333,7 @@
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
to_chat(user, span_warning("You hit [src] but bounce off it!"))
- playsound(src.loc, 'sound/weapons/tap.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/weapons/tap.ogg', 100, TRUE)
/obj/structure/foamedmetal/attackby(obj/item/W, mob/user, params)
///A speed modifier for how fast the wall is build
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index e9a6263286e59..c98dfc2ddf78e 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -246,7 +246,7 @@ GLOBAL_VAR_INIT(glowshrooms, 0)
/obj/structure/glowshroom/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
if(damage_type == BURN && damage_amount)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/glowshroom/should_atmos_process(datum/gas_mixture/air, exposed_temperature)
return exposed_temperature > 300
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index f080035d54c2e..12c8c15b62eaf 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -275,7 +275,7 @@
if(active)
return
- playsound(src, 'sound/weapons/armbomb.ogg', 70, TRUE)
+ playsound(src, 'sound/items/weapons/armbomb.ogg', 70, TRUE)
to_chat(user, span_warning("You arm \the [src], causing it to shake! It will deploy in 3 seconds."))
active = TRUE
addtimer(CALLBACK(src, PROC_REF(deploy_mine)), 3 SECONDS)
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 255f34eff51dd..a43fee5608de3 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -66,7 +66,7 @@
return ..()
// Prevents portals spawned by jaunter/handtele from floating into space when relocated to an adjacent tile.
-/obj/effect/portal/newtonian_move(direction, instant = FALSE, start_delay = 0)
+/obj/effect/portal/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 0, controlled_cap = null)
return TRUE
/obj/effect/portal/attackby(obj/item/W, mob/user, params)
diff --git a/code/game/objects/effects/posters/poster.dm b/code/game/objects/effects/posters/poster.dm
index 4ced5babbbfa8..135887aafc83f 100644
--- a/code/game/objects/effects/posters/poster.dm
+++ b/code/game/objects/effects/posters/poster.dm
@@ -248,7 +248,7 @@
flick("poster_being_set", placed_poster)
placed_poster.forceMove(src) //deletion of the poster is handled in poster/Exited(), so don't have to worry about P anymore.
- playsound(src, 'sound/items/poster_being_created.ogg', 100, TRUE)
+ playsound(src, 'sound/items/poster/poster_being_created.ogg', 100, TRUE)
var/turf/user_drop_location = get_turf(user) //cache this so it just falls to the ground if they move. also no tk memes allowed.
if(!do_after(user, PLACE_SPEED, placed_poster, extra_checks = CALLBACK(placed_poster, TYPE_PROC_REF(/obj/structure/sign/poster, snowflake_closed_turf_check), src)))
@@ -266,7 +266,7 @@
/obj/structure/sign/poster/proc/tear_poster(mob/user)
visible_message(span_notice("[user] rips [src] in a single, decisive motion!") )
- playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/poster/poster_ripped.ogg', 100, TRUE)
spring_trap(user)
var/obj/structure/sign/poster/ripped/torn_poster = new(loc)
diff --git a/code/game/objects/effects/powerup.dm b/code/game/objects/effects/powerup.dm
index 3dc5db8de95de..8598d623fb0e5 100644
--- a/code/game/objects/effects/powerup.dm
+++ b/code/game/objects/effects/powerup.dm
@@ -59,7 +59,7 @@
icon_state = "backpack-medical"
respawn_time = 30 SECONDS
pickup_message = "Health restored!"
- pickup_sound = 'sound/magic/staff_healing.ogg'
+ pickup_sound = 'sound/effects/magic/staff_healing.ogg'
/// How much the pickup heals when picked up
var/heal_amount = 50
/// Does this pickup fully heal when picked up
@@ -89,7 +89,7 @@
icon_state = "ammobox"
respawn_time = 30 SECONDS
pickup_message = "Ammunition reloaded!"
- pickup_sound = 'sound/weapons/gun/shotgun/rack.ogg'
+ pickup_sound = 'sound/items/weapons/gun/shotgun/rack.ogg'
/obj/effect/powerup/ammo/trigger(mob/living/target)
. = ..()
@@ -110,7 +110,7 @@
name = "Lightning Orb"
desc = "You feel faster just looking at it."
icon_state = "speed"
- pickup_sound = 'sound/magic/lightningshock.ogg'
+ pickup_sound = 'sound/effects/magic/lightningshock.ogg'
/obj/effect/powerup/speed/trigger(mob/living/target)
. = ..()
diff --git a/code/game/objects/effects/rcd.dm b/code/game/objects/effects/rcd.dm
index 17ea3e44a10a1..03d77f0f84504 100644
--- a/code/game/objects/effects/rcd.dm
+++ b/code/game/objects/effects/rcd.dm
@@ -10,7 +10,7 @@
* * fade_time - The time for RCD holograms to fade
*/
/proc/rcd_scan(atom/source, scan_range = RCD_DESTRUCTIVE_SCAN_RANGE, fade_time = RCD_HOLOGRAM_FADE_TIME)
- playsound(source, 'sound/items/rcdscan.ogg', 50, vary = TRUE, pressure_affected = FALSE)
+ playsound(source, 'sound/items/tools/rcdscan.ogg', 50, vary = TRUE, pressure_affected = FALSE)
var/turf/source_turf = get_turf(source)
for(var/turf/open/surrounding_turf as anything in RANGE_TURFS(scan_range, source_turf))
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index 50497d531e76f..d05d5f039256b 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -4,7 +4,7 @@
var/sparks = 0 //whether sparks spread
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
- var/sound_to_play = 'sound/effects/blobattack.ogg'
+ var/sound_to_play = 'sound/effects/blob/blobattack.ogg'
var/sound_vol = 60
var/list/gibtypes = list() //typepaths of the gib decals to spawn
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
diff --git a/code/game/objects/effects/spiderwebs.dm b/code/game/objects/effects/spiderwebs.dm
index 2d0f1b9b14de2..49765c059865b 100644
--- a/code/game/objects/effects/spiderwebs.dm
+++ b/code/game/objects/effects/spiderwebs.dm
@@ -14,7 +14,7 @@
/obj/structure/spider/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
if(damage_type == BURN)//the stickiness of the web mutes all attack sounds except fire damage type
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/spider/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
if(damage_flag == MELEE)
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 9cb926fd19756..6e7df14b7c564 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -563,7 +563,7 @@
/obj/effect/constructing_effect/proc/attacked(mob/user)
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
user.changeNext_move(CLICK_CD_MELEE)
- playsound(loc, 'sound/weapons/egloves.ogg', vol = 80, vary = TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', vol = 80, vary = TRUE)
end()
/obj/effect/constructing_effect/attackby(obj/item/weapon, mob/user, params)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 99266b3787eb6..03f6754eb9951 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -102,8 +102,10 @@
var/equip_sound
///Sound uses when picking the item up (into your hands)
var/pickup_sound
- ///Sound uses when dropping the item, or when its thrown.
+ ///Sound uses when dropping the item, or when its thrown if a thrown sound isn't specified.
var/drop_sound
+ ///Sound used on impact when the item is thrown.
+ var/throw_drop_sound
///Do the drop and pickup sounds vary?
var/sound_vary = FALSE
///Whether or not we use stealthy audio levels for this item's attack sounds
@@ -285,7 +287,7 @@
if(!hitsound)
if(damtype == BURN)
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
if(damtype == BRUTE)
hitsound = SFX_SWING_HIT
@@ -887,7 +889,10 @@
/obj/item/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
if(!isliving(hit_atom)) //Living mobs handle hit sounds differently.
- playsound(src, drop_sound, YEET_SOUND_VOLUME, ignore_walls = FALSE)
+ if(throw_drop_sound)
+ playsound(src, throw_drop_sound, YEET_SOUND_VOLUME, ignore_walls = FALSE, vary = sound_vary)
+ return
+ playsound(src, drop_sound, YEET_SOUND_VOLUME, ignore_walls = FALSE, vary = sound_vary)
return
var/volume = get_volume_by_throwforce_and_or_w_class()
if (throwforce > 0 || HAS_TRAIT(src, TRAIT_CUSTOM_TAP_SOUND))
@@ -896,9 +901,9 @@
else if(hitsound)
playsound(hit_atom, hitsound, volume, TRUE, -1)
else
- playsound(hit_atom, 'sound/weapons/genhit.ogg',volume, TRUE, -1)
+ playsound(hit_atom, 'sound/items/weapons/genhit.ogg',volume, TRUE, -1)
else
- playsound(hit_atom, 'sound/weapons/throwtap.ogg', 1, volume, -1)
+ playsound(hit_atom, 'sound/items/weapons/throwtap.ogg', 1, volume, -1)
/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, gentle = FALSE, quickstart = TRUE)
if(HAS_TRAIT(src, TRAIT_NODROP))
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index 4adb8d28b8c8a..4c83923355261 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -46,7 +46,7 @@
R.add_fingerprint(user)
qdel(src)
user.forceMove(R)
- playsound(src, 'sound/items/zip.ogg', 15, TRUE, -3)
+ playsound(src, 'sound/items/zip/zip.ogg', 15, TRUE, -3)
return OXYLOSS
// Bluespace bodybag
diff --git a/code/game/objects/items/boxcutter.dm b/code/game/objects/items/boxcutter.dm
index 467bc666e6027..58be269bacddf 100644
--- a/code/game/objects/items/boxcutter.dm
+++ b/code/game/objects/items/boxcutter.dm
@@ -38,7 +38,7 @@
throwforce_on = 4, \
throw_speed_on = throw_speed, \
sharpness_on = SHARP_EDGED, \
- hitsound_on = 'sound/weapons/bladeslice.ogg', \
+ hitsound_on = 'sound/items/weapons/bladeslice.ogg', \
w_class_on = WEIGHT_CLASS_NORMAL, \
attack_verb_continuous_on = list("cuts", "stabs", "slashes"), \
attack_verb_simple_on = list("cut", "stab", "slash"), \
diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm
index fa849c51437da..32636b1a99c81 100644
--- a/code/game/objects/items/broom.dm
+++ b/code/game/objects/items/broom.dm
@@ -102,7 +102,7 @@
for (var/obj/item/garbage in items_to_sweep)
garbage.Move(new_item_loc, sweep_dir)
- playsound(current_item_loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1)
+ playsound(current_item_loc, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1)
/obj/item/pushbroom/cyborg
name = "cyborg push broom"
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index b49991b132a4e..960363685b1e8 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -49,7 +49,7 @@
if(!user.combat_mode || pushed_over || !isturf(loc))
return ..()
user.visible_message(span_warning("[user] pushes over [src]!"), span_danger("You push over [src]!"))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
push_over()
/obj/item/cardboard_cutout/equipped(mob/living/user, slot)
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index b28acce35d42d..2d1a16986fbe8 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -767,7 +767,7 @@
if(HAS_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD) && (user.is_holding(src) || (user.CanReach(src) && user.put_in_hands(src, ignore_animation = FALSE))))
ADD_TRAIT(src, TRAIT_NODROP, "psycho")
. += span_hypnophrase("Look at that subtle coloring... The tasteful thickness of it. Oh my God, it even has a watermark...")
- var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE)
+ var/sound/slowbeat = sound('sound/effects/health/slowbeat.ogg', repeat = TRUE)
user.playsound_local(get_turf(src), slowbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
if(isliving(user))
var/mob/living/living_user = user
@@ -810,7 +810,7 @@
if(registered_account.replaceable)
. += span_info("Alt-Right-Click the ID to change the linked bank account.")
if(registered_account.civilian_bounty)
- . += "There is an active civilian bounty."
+ . += span_info("There is an active civilian bounty.")
. += span_info("[registered_account.bounty_text()]")
. += span_info("Quantity: [registered_account.bounty_num()]")
. += span_info("Reward: [registered_account.bounty_value()]")
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm
index 5d5de16a4d12a..00ca25985bfee 100644
--- a/code/game/objects/items/chainsaw.dm
+++ b/code/game/objects/items/chainsaw.dm
@@ -47,13 +47,13 @@
/obj/item/chainsaw/suicide_act(mob/living/carbon/user)
if(on)
user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/weapons/chainsawhit.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/chainsawhit.ogg', 100, TRUE)
var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
if(myhead)
myhead.dismember()
else
user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/weapons/genhit1.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE)
return BRUTELOSS
/obj/item/chainsaw/attack_self(mob/user)
@@ -66,7 +66,7 @@
butchering.butchering_enabled = on
if(on)
- hitsound = 'sound/weapons/chainsawhit.ogg'
+ hitsound = 'sound/items/weapons/chainsawhit.ogg'
chainsaw_loop.start()
else
hitsound = SFX_SWING_HIT
@@ -88,14 +88,14 @@
speed = 3 SECONDS, \
effectiveness = 100, \
bonus_modifier = 0, \
- butcher_sound = 'sound/weapons/chainsawhit.ogg', \
+ butcher_sound = 'sound/items/weapons/chainsawhit.ogg', \
disabled = TRUE, \
)
AddComponent(/datum/component/two_handed, require_twohands=TRUE)
/obj/item/chainsaw/doomslayer
name = "THE GREAT COMMUNICATOR"
- desc = "VRRRRRRR!!!"
+ desc = span_warning("VRRRRRRR!!!")
armour_penetration = 100
force_on = 30
@@ -110,7 +110,7 @@
if (isnull(head))
return ..()
- playsound(user, 'sound/weapons/slice.ogg', vol = 80, vary = TRUE)
+ playsound(user, 'sound/items/weapons/slice.ogg', vol = 80, vary = TRUE)
target_mob.balloon_alert(user, "cutting off head...")
if (!do_after(user, 2 SECONDS, target_mob, extra_checks = CALLBACK(src, PROC_REF(has_same_head), target_mob, head)))
@@ -124,7 +124,7 @@
/obj/item/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == PROJECTILE_ATTACK)
owner.visible_message(span_danger("Ranged attacks just make [owner] angrier!"))
- playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ playsound(src, pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg'), 75, TRUE)
return TRUE
return FALSE
@@ -162,7 +162,7 @@
speed = 3 SECONDS, \
effectiveness = 100, \
bonus_modifier = 0, \
- butcher_sound = 'sound/weapons/chainsawhit.ogg', \
+ butcher_sound = 'sound/items/weapons/chainsawhit.ogg', \
disabled = TRUE, \
)
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index 1d1f8fad7cc56..6b4ae0f918394 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -69,8 +69,8 @@
if(!response_timer_id)
return
var/turf/T = get_turf(src)
- T.visible_message("The proposed changes disappear \
- from [src]; it looks like they've been rejected.")
+ T.visible_message(span_warning("The proposed changes disappear \
+ from [src]; it looks like they've been rejected."))
var/m = "[key_name(user)] has rejected the proposed station name."
message_admins(m)
diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm
index 6bd6472d9c8f1..aa51d71c5eda4 100644
--- a/code/game/objects/items/choice_beacon.dm
+++ b/code/game/objects/items/choice_beacon.dm
@@ -30,7 +30,7 @@
if(user.can_perform_action(src, FORBID_TELEKINESIS_REACH))
return TRUE
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, TRUE)
return FALSE
/// Opens a menu and allows the mob to pick an option from the list
@@ -162,7 +162,7 @@
// just drops the box at their feet, "quiet" and "sneaky"
/obj/item/choice_beacon/augments/spawn_option(obj/choice_path, mob/living/user)
new choice_path(get_turf(user))
- playsound(src, 'sound/weapons/emitter2.ogg', 50, extrarange = SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/items/weapons/emitter2.ogg', 50, extrarange = SILENCED_SOUND_EXTRARANGE)
/obj/item/choice_beacon/holy
name = "armaments beacon"
@@ -176,7 +176,7 @@
if(user.mind?.holy_role)
return ..()
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, TRUE)
return FALSE
// Overrides generate options so that we can show a neat radial instead
diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm
index 168817bf1ff9f..69b65149775ba 100644
--- a/code/game/objects/items/cigarettes.dm
+++ b/code/game/objects/items/cigarettes.dm
@@ -47,7 +47,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "match_lit"
damtype = BURN
force = 3
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
inhand_icon_state = "cigon"
name = "lit [initial(name)]"
desc = "A [initial(name)]. This one is lit."
@@ -132,6 +132,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "cigarette"
desc = "A roll of tobacco and nicotine. It is not food."
icon = 'icons/obj/cigarettes.dmi'
+ worn_icon = 'icons/mob/clothing/mask.dmi'
icon_state = "cigoff"
inhand_icon_state = "cigon" //gets overriden during intialize(), just have it for unit test sanity.
throw_speed = 0.5
@@ -346,7 +347,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
lit = TRUE
- playsound(src.loc, 'sound/items/cig_light.ogg', 100, 1)
+ playsound(src.loc, 'sound/items/lighter/cig_light.ogg', 100, 1)
make_cig_smoke()
if(!(flags_1 & INITIALIZED_1))
update_appearance(UPDATE_ICON)
@@ -354,7 +355,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
attack_verb_continuous = string_list(list("burns", "singes"))
attack_verb_simple = string_list(list("burn", "singe"))
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
damtype = BURN
force = 4
if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire
@@ -395,7 +396,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
STOP_PROCESSING(SSobj, src)
reagents.flags |= NO_REACT
lit = FALSE
- playsound(src.loc, 'sound/items/cig_snuff.ogg', 100, 1)
+ playsound(src.loc, 'sound/items/lighter/cig_snuff.ogg', 100, 1)
update_appearance(UPDATE_ICON)
if(ismob(loc))
to_chat(loc, span_notice("Your [name] goes out."))
@@ -677,6 +678,27 @@ CIGARETTE PACKETS ARE IN FANCY.DM
pixel_y = rand(-5, 5)
+/obj/item/cigarette/dart
+ name = "fat dart"
+ desc = "Chuff back this fat dart"
+ icon_state = "bigon"
+ icon_on = "bigon"
+ icon_off = "bigoff"
+ w_class = WEIGHT_CLASS_BULKY
+ smoketime = 18 MINUTES
+ chem_volume = 65
+ list_reagents = list(/datum/reagent/drug/nicotine = 45)
+ choke_time_max = 40 SECONDS
+ lung_harm = 2
+
+/obj/item/cigarette/dart/Initialize(mapload)
+ . = ..()
+ //the compiled icon state is how it appears when it's on.
+ //That's how we want it to show on orbies (little virtual PDA pets).
+ //However we should reset their appearance on runtime.
+ update_appearance(UPDATE_ICON_STATE)
+
+
////////////
// CIGARS //
////////////
diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm
index 552b5d5885011..f10a9db76704c 100644
--- a/code/game/objects/items/climbingrope.dm
+++ b/code/game/objects/items/climbingrope.dm
@@ -48,8 +48,8 @@
var/away_dir = get_dir(above, target)
user.visible_message(span_notice("[user] begins climbing upwards with [src]."), span_notice("You get to work on properly hooking [src] and going upwards."))
- playsound(target, 'sound/effects/picaxe1.ogg', 50) //plays twice so people above and below can hear
- playsound(user_turf, 'sound/effects/picaxe1.ogg', 50)
+ playsound(target, 'sound/effects/pickaxe/picaxe1.ogg', 50) //plays twice so people above and below can hear
+ playsound(user_turf, 'sound/effects/pickaxe/picaxe1.ogg', 50)
var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(target, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir))
// Our climbers athletics ability
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 58f2cb49a130a..1870b6dd2ba0f 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -209,7 +209,7 @@
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
worn_icon_state = "horn_air"
- sound_file = 'sound/items/airhorn2.ogg'
+ sound_file = 'sound/items/airhorn/airhorn2.ogg'
/datum/crafting_recipe/airhorn
name = "Air Horn"
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 2aa0c927bedc0..45b716997c16b 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -210,7 +210,7 @@
skinhead.set_facial_hairstyle("Shaved", update = TRUE)
else
skinhead.set_hairstyle("Skinhead", update = TRUE)
- playsound(loc, 'sound/items/welder2.ogg', 20, TRUE)
+ playsound(loc, 'sound/items/tools/welder2.ogg', 20, TRUE)
/obj/item/razor/attack(mob/target_mob, mob/living/user, params)
if(!ishuman(target_mob))
diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm
index 45bb25285ef24..630637316b355 100644
--- a/code/game/objects/items/crab17.dm
+++ b/code/game/objects/items/crab17.dm
@@ -79,7 +79,7 @@
var/throwtarget = get_step(user, get_dir(src, user))
user.safe_throw_at(throwtarget, 1, 1, force = MOVE_FORCE_EXTREMELY_STRONG)
- playsound(get_turf(src),'sound/magic/repulse.ogg', 100, TRUE)
+ playsound(get_turf(src),'sound/effects/magic/repulse.ogg', 100, TRUE)
return
@@ -126,7 +126,7 @@
sleep(3 SECONDS)
if(QDELETED(src))
return
- playsound(src,'sound/machines/twobeep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/twobeep.ogg',50,FALSE)
var/mutable_appearance/hologram = mutable_appearance(icon, "hologram")
hologram.pixel_y = 16
add_overlay(hologram)
@@ -158,7 +158,7 @@
sleep(0.5 SECONDS)
if(QDELETED(src))
return
- playsound(src,'sound/machines/triple_beep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/triple_beep.ogg',50,FALSE)
add_overlay("text")
sleep(1 SECONDS)
if(QDELETED(src))
@@ -247,7 +247,7 @@
dump = new /obj/structure/checkoutmachine(null, bogdanoff)
priority_announce("The spacecoin bubble has popped! Get to the credit deposit machine at [get_area(src)] and cash out before you lose all of your funds!", sender_override = "CRAB-17 Protocol")
animate(DF, pixel_z = -8, time = 5, , easing = LINEAR_EASING)
- playsound(src, 'sound/weapons/mortar_whistle.ogg', 70, TRUE, 6)
+ playsound(src, 'sound/items/weapons/mortar_whistle.ogg', 70, TRUE, 6)
addtimer(CALLBACK(src, PROC_REF(endLaunch)), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm
index 24f350f37907a..fb6400fc7b36c 100644
--- a/code/game/objects/items/debug_items.dm
+++ b/code/game/objects/items/debug_items.dm
@@ -168,7 +168,7 @@
return
if(!user.client.holder) //safety if the admin readmined to save their ass lol.
to_chat(user, span_reallybig("You shouldn't have done that..."))
- playsound(src, 'sound/voice/borg_deathsound.ogg')
+ playsound(src, 'sound/mobs/non-humanoids/cyborg/borg_deathsound.ogg')
sleep(3 SECONDS)
living_user.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
living_user.gib(DROP_ALL_REMAINS)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 491d48a66d392..9133068cb0027 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -258,10 +258,10 @@
if(cell)
if(cell.charge >= paddles.revivecost)
visible_message(span_notice("[src] beeps: Unit ready."))
- playsound(src, 'sound/machines/defib_ready.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_ready.ogg', 50, FALSE)
else
visible_message(span_notice("[src] beeps: Charge depleted."))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
paddles.cooldown = FALSE
paddles.update_appearance()
update_power()
@@ -399,7 +399,7 @@
/obj/item/shockpaddles/proc/finish_recharge()
var/turf/current_turf = get_turf(src)
current_turf.audible_message(span_notice("[src] beeps: Unit is recharged."))
- playsound(src, 'sound/machines/defib_ready.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_ready.ogg', 50, FALSE)
cooldown = FALSE
update_appearance()
@@ -418,7 +418,7 @@
user.visible_message(span_danger("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!"))
if(req_defib)
defib.deductcharge(revivecost)
- playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 50, TRUE, -1)
return OXYLOSS
/obj/item/shockpaddles/update_icon_state()
@@ -451,7 +451,7 @@
defib?.update_power()
if(req_defib && !defib.powered)
user.visible_message(span_warning("[defib] beeps: Not enough charge!"))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
return
if(!HAS_TRAIT(src, TRAIT_WIELDED))
if(iscyborg(user))
@@ -527,7 +527,7 @@
M.Knockdown(75)
M.set_jitter_if_lower(100 SECONDS)
M.apply_status_effect(/datum/status_effect/convulsing)
- playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 50, TRUE, -1)
if(HAS_TRAIT(M,MOB_ORGANIC))
M.emote("gasp")
log_combat(user, M, "zapped", src)
@@ -544,7 +544,7 @@
user.visible_message(span_notice("[user] places [src] on [H]'s chest."),
span_warning("You place [src] on [H]'s chest and begin to charge them."))
var/turf/T = get_turf(defib)
- playsound(src, 'sound/machines/defib_charge.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_charge.ogg', 50, FALSE)
if(req_defib)
T.audible_message(span_warning("\The [defib] lets out an urgent beep and lets out a steadily rising hum..."))
else
@@ -555,12 +555,12 @@
return
if(H && H.stat == DEAD)
to_chat(user, span_warning("[H] is dead."))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
do_cancel()
return
user.visible_message(span_boldannounce("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!"))
- playsound(src, 'sound/machines/defib_zap.ogg', 100, TRUE, -1)
- playsound(src, 'sound/weapons/egloves.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/items/weapons/egloves.ogg', 100, TRUE, -1)
H.emote("scream")
shock_pulling(45, H)
if(H.can_heartattack() && !H.undergoing_cardiac_arrest())
@@ -582,14 +582,14 @@
update_appearance()
if(do_after(user, 3 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process
user.visible_message(span_notice("[user] places [src] on [H]'s chest."), span_warning("You place [src] on [H]'s chest."))
- playsound(src, 'sound/machines/defib_charge.ogg', 75, FALSE)
+ playsound(src, 'sound/machines/defib/defib_charge.ogg', 75, FALSE)
var/obj/item/organ/internal/heart = H.get_organ_by_type(/obj/item/organ/internal/heart)
if(do_after(user, 2 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
if((!combat && !req_defib) || (req_defib && !defib.combat))
for(var/obj/item/clothing/C in H.get_equipped_items())
if((C.body_parts_covered & CHEST) && (C.clothing_flags & THICKMATERIAL)) //check to see if something is obscuring their chest.
user.audible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's chest is obscured. Operation aborted."))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
do_cancel()
return
if(SEND_SIGNAL(H, COMSIG_DEFIBRILLATOR_PRE_HELP_ZAP, user, src) & COMPONENT_DEFIB_STOP)
@@ -598,7 +598,7 @@
if(H.stat == DEAD)
H.visible_message(span_warning("[H]'s body convulses a bit."))
playsound(src, SFX_BODYFALL, 50, TRUE)
- playsound(src, 'sound/machines/defib_zap.ogg', 75, TRUE, -1)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 75, TRUE, -1)
shock_pulling(30, H)
var/defib_result = H.can_defib()
@@ -626,7 +626,7 @@
if(fail_reason)
user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - [fail_reason]"))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
else
var/total_brute = H.getBruteLoss()
var/total_burn = H.getFireLoss()
@@ -645,7 +645,7 @@
if(need_mob_update)
H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually.
user.visible_message(span_notice("[req_defib ? "[defib]" : "[src]"] pings: Resuscitation successful."))
- playsound(src, 'sound/machines/defib_success.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_success.ogg', 50, FALSE)
H.set_heartattack(FALSE)
if(defib_result == DEFIB_POSSIBLE)
H.grab_ghost()
@@ -662,9 +662,9 @@
return
else if (!H.get_organ_by_type(/obj/item/organ/internal/heart))
user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted."))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
else if(H.undergoing_cardiac_arrest())
- playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 50, TRUE, -1)
if(!(heart.organ_flags & ORGAN_FAILING))
H.set_heartattack(FALSE)
user.visible_message(span_notice("[req_defib ? "[defib]" : "[src]"] pings: Patient's heart is now beating again."))
@@ -673,7 +673,7 @@
else
user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient is not in a valid state. Operation aborted."))
- playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
do_cancel()
/obj/item/shockpaddles/proc/is_wielded()
diff --git a/code/game/objects/items/devices/aicard_evil.dm b/code/game/objects/items/devices/aicard_evil.dm
index 3e8c56ce940fd..852a105de350f 100644
--- a/code/game/objects/items/devices/aicard_evil.dm
+++ b/code/game/objects/items/devices/aicard_evil.dm
@@ -102,13 +102,13 @@
else
AI = locate() in A
if(!AI || AI.interaction_range == INFINITY)
- playsound(src,'sound/machines/buzz-sigh.ogg',50,FALSE)
+ playsound(src,'sound/machines/buzz/buzz-sigh.ogg',50,FALSE)
to_chat(user, span_notice("Error! Incompatible object!"))
return ..()
AI.interaction_range += 2
if(AI.interaction_range > 7)
AI.interaction_range = INFINITY
- playsound(src,'sound/machines/twobeep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/twobeep.ogg',50,FALSE)
to_chat(user, span_notice("You insert [src] into [AI]'s compartment, and it beeps as it processes the data."))
to_chat(AI, span_notice("You process [src], and find yourself able to manipulate electronics from up to [AI.interaction_range] meters!"))
qdel(src)
diff --git a/code/game/objects/items/devices/battle_royale.dm b/code/game/objects/items/devices/battle_royale.dm
index 70ae0a8f85b2d..5a6fe059cb6c4 100644
--- a/code/game/objects/items/devices/battle_royale.dm
+++ b/code/game/objects/items/devices/battle_royale.dm
@@ -238,7 +238,7 @@ GLOBAL_DATUM_INIT(battle_royale_master, /datum/battle_royale_master, new)
As a gesture of gratitude, we will be providing our premium broadcast to your entertainment monitors at no cost so that you can watch the excitement. \n\
Bystanders are advised not to intervene... but if you do, make it look good for the camera!",
title = "Rumble Royale Beginning",
- sound = 'sound/machines/alarm.ogg',
+ sound = 'sound/announcer/alarm/nuke_alarm.ogg',
has_important_message = TRUE,
sender_override = "Rumble Royale Pirate Broadcast Station",
color_override = "red",
@@ -268,7 +268,7 @@ GLOBAL_DATUM_INIT(battle_royale_master, /datum/battle_royale_master, new)
priority_announce(
text = message,
title = "Rumble Royale Casualty Report",
- sound = 'sound/misc/notice1.ogg',
+ sound = 'sound/announcer/notice/notice1.ogg',
has_important_message = TRUE,
sender_override = "Rumble Royale Pirate Broadcast Station",
color_override = "red",
@@ -302,7 +302,7 @@ GLOBAL_DATUM_INIT(battle_royale_master, /datum/battle_royale_master, new)
priority_announce(
text = message,
title = "Rumble Royale Winner",
- sound = 'sound/misc/notice1.ogg',
+ sound = 'sound/announcer/notice/notice1.ogg',
has_important_message = TRUE,
sender_override = "Rumble Royale Pirate Broadcast Station",
color_override = "red",
@@ -317,7 +317,7 @@ GLOBAL_DATUM_INIT(battle_royale_master, /datum/battle_royale_master, new)
priority_announce(
text = "We're halfway done folks! And bad news to anyone who hasn't made it to the [chosen_area]... you're out!",
title = "Rumble Royale Update",
- sound = 'sound/misc/notice1.ogg',
+ sound = 'sound/announcer/notice/notice1.ogg',
has_important_message = TRUE,
sender_override = "Rumble Royale Pirate Broadcast Station",
color_override = "red",
@@ -335,7 +335,7 @@ GLOBAL_DATUM_INIT(battle_royale_master, /datum/battle_royale_master, new)
We're sorry to announce that this edition of Royal Rumble has no winner. \n\
Better luck next time!",
title = "Rumble Royale Concluded",
- sound = 'sound/misc/notice1.ogg',
+ sound = 'sound/announcer/notice/notice1.ogg',
has_important_message = TRUE,
sender_override = "Rumble Royale Pirate Broadcast Station",
color_override = "red",
diff --git a/code/game/objects/items/devices/broadcast_camera.dm b/code/game/objects/items/devices/broadcast_camera.dm
index f2fc0192f5684..78868844e48cb 100644
--- a/code/game/objects/items/devices/broadcast_camera.dm
+++ b/code/game/objects/items/devices/broadcast_camera.dm
@@ -22,6 +22,8 @@
light_on = FALSE
/// Is camera streaming
var/active = FALSE
+ /// Is the microphone turned on
+ var/active_microphone = TRUE
/// The name of the broadcast
var/broadcast_name = "Curator News"
/// The networks it broadcasts to, default is CAMERANET_NETWORK_CURATOR
@@ -56,6 +58,7 @@
/obj/item/broadcast_camera/examine(mob/user)
. = ..()
. += span_notice("Broadcast name is [broadcast_name]")
+ . += span_notice("The microphone is [active_microphone ? "On" : "Off"]")
/obj/item/broadcast_camera/on_enter_storage(datum/storage/master_storage)
. = ..()
@@ -85,9 +88,11 @@
// INTERNAL RADIO
internal_radio = new(src)
+ /// Sets the state of the microphone
+ set_microphone_state()
set_light_on(TRUE)
- playsound(source = src, soundin = 'sound/machines/terminal_processing.ogg', vol = 20, vary = FALSE, ignore_walls = FALSE)
+ playsound(source = src, soundin = 'sound/machines/terminal/terminal_processing.ogg', vol = 20, vary = FALSE, ignore_walls = FALSE)
balloon_alert_to_viewers("live!")
/// When deactivating the camera
@@ -100,5 +105,20 @@
stop_broadcasting_network(camera_networks)
set_light_on(FALSE)
- playsound(source = src, soundin = 'sound/machines/terminal_prompt_deny.ogg', vol = 20, vary = FALSE, ignore_walls = FALSE)
+ playsound(source = src, soundin = 'sound/machines/terminal/terminal_prompt_deny.ogg', vol = 20, vary = FALSE, ignore_walls = FALSE)
balloon_alert_to_viewers("offline")
+
+/obj/item/broadcast_camera/click_alt(mob/user)
+ active_microphone = !active_microphone
+
+ /// Text popup for letting the user know that the microphone has changed state
+ balloon_alert(user, "turned [active_microphone ? "on" : "off"] the microphone.")
+
+ ///If the radio exists as an object, set its state accordingly
+ if(active)
+ set_microphone_state()
+
+ return CLICK_ACTION_SUCCESS
+
+/obj/item/broadcast_camera/proc/set_microphone_state()
+ internal_radio.set_broadcasting(active_microphone)
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index f0a934fc198cc..fbdf3bae40a88 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -68,7 +68,7 @@
return TRUE
/obj/item/chameleon/proc/make_copy(atom/target, mob/user)
- playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, TRUE, -6)
+ playsound(get_turf(src), 'sound/items/weapons/flash.ogg', 100, TRUE, -6)
to_chat(user, span_notice("Scanned [target]."))
var/obj/temp = new /obj()
temp.appearance = target.appearance
diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
index 5814101463ba4..cd0b42e0e8ac4 100644
--- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
+++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
@@ -44,7 +44,7 @@
if(!circuits)
to_chat(R, span_warning("You need more material. Use [src] on existing simple circuits to break them down."))
return
- playsound(R, 'sound/items/rped.ogg', 50, TRUE)
+ playsound(R, 'sound/items/tools/rped.ogg', 50, TRUE)
recharging = TRUE
circuits--
maptext = MAPTEXT(circuits)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 5e59ee700c6aa..657d054f11cc8 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -29,9 +29,9 @@
/// Can we toggle this light on and off (used for contexual screentips only)
var/toggle_context = TRUE
/// The sound the light makes when it's turned on
- var/sound_on = 'sound/weapons/magin.ogg'
+ var/sound_on = 'sound/items/weapons/magin.ogg'
/// The sound the light makes when it's turned off
- var/sound_off = 'sound/weapons/magout.ogg'
+ var/sound_off = 'sound/items/weapons/magout.ogg'
/// Should the flashlight start turned on?
var/start_on = FALSE
@@ -359,7 +359,7 @@
light_range = 5 // A little better than the standard flashlight.
light_power = 0.8
light_color = "#99ccff"
- hitsound = 'sound/weapons/genhit1.ogg'
+ hitsound = 'sound/items/weapons/genhit1.ogg'
// the desk lamps are a bit special
/obj/item/flashlight/lamp
@@ -428,7 +428,7 @@
if(light_on)
attack_verb_continuous = string_list(list("burns", "singes"))
attack_verb_simple = string_list(list("burn", "singe"))
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
force = on_damage
damtype = BURN
update_brightness()
@@ -455,7 +455,7 @@
name = "lit [initial(name)]"
attack_verb_continuous = string_list(list("burns", "singes"))
attack_verb_simple = string_list(list("burn", "singe"))
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
force = on_damage
damtype = BURN
diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm
index 91bd3040832e4..e41c346c9930d 100644
--- a/code/game/objects/items/devices/forcefieldprojector.dm
+++ b/code/game/objects/items/devices/forcefieldprojector.dm
@@ -59,7 +59,7 @@
return ITEM_INTERACT_BLOCKING
force_proj_busy = FALSE
- playsound(src,'sound/weapons/resonator_fire.ogg',50,TRUE)
+ playsound(src,'sound/items/weapons/resonator_fire.ogg',50,TRUE)
user.visible_message(span_warning("[user] projects a forcefield!"),span_notice("You project a forcefield."))
var/obj/structure/projected_forcefield/F = new(T, src)
current_fields += F
@@ -124,14 +124,14 @@
/obj/structure/projected_forcefield/Destroy()
visible_message(span_warning("[src] flickers and disappears!"))
- playsound(src,'sound/weapons/resonator_blast.ogg',25,TRUE)
+ playsound(src,'sound/items/weapons/resonator_blast.ogg',25,TRUE)
if(generator)
generator.current_fields -= src
generator = null
return ..()
/obj/structure/projected_forcefield/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
- playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 80, TRUE)
/obj/structure/projected_forcefield/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
if(sound_effect)
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index dae54ce9e7816..03e53a87db35e 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -99,7 +99,7 @@
var/obj/item/stock_parts/attack_diode = attack_item
if(crystal_lens && attack_diode.rating < 3) //only tier 3 and up are small enough to fit
to_chat(user, span_warning("You try to jam \the [attack_item.name] in place, but \the [crystal_lens.name] is in the way!"))
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 20)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 20)
if(do_after(user, 2 SECONDS, src))
var/atom/atom_to_teleport = pick(user, attack_item)
if(atom_to_teleport == user)
@@ -113,7 +113,7 @@
return
if(!user.transferItemToLoc(attack_item, src))
return
- playsound(src, 'sound/items/screwdriver.ogg', 30)
+ playsound(src, 'sound/items/tools/screwdriver.ogg', 30)
diode = attack_item
balloon_alert(user, "installed \the [diode.name]")
//we have a diode now, try starting a charge sequence in case the pointer was charging when we took out the diode
@@ -129,7 +129,7 @@
var/obj/item/stack/ore/bluespace_crystal/crystal_stack = attack_item
if(diode && diode.rating < 3) //only lasers of tier 3 and up can house a lens
to_chat(user, span_warning("You try to jam \the [crystal_stack.name] in front of the diode, but it's a bad fit!"))
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 20)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 20)
if(do_after(user, 2 SECONDS, src))
var/atom/atom_to_teleport = pick(user, src)
if(atom_to_teleport == user)
@@ -148,7 +148,7 @@
if(!user.transferItemToLoc(single_crystal, src))
return
crystal_lens = single_crystal
- playsound(src, 'sound/items/screwdriver2.ogg', 30)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 30)
balloon_alert(user, "installed \the [crystal_lens.name]")
to_chat(user, span_notice("You install a [crystal_lens.name] in [src]. \
It can now be used to shine through obstacles at the cost of double the energy drain."))
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 5ab635fda482b..e3c19dfde66f3 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -223,7 +223,7 @@
if(istype(target, /obj/machinery/light))
if(replace_light(target, user) && bluespace_toggle)
user.Beam(target, icon_state = "rped_upgrade", time = 0.5 SECONDS)
- playsound(src, 'sound/items/pshoom.ogg', 40, 1)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 40, 1)
return TRUE
// if we are attacking a floodlight frame finish it
@@ -233,7 +233,7 @@
new /obj/machinery/power/floodlight(frame.loc)
if(bluespace_toggle)
user.Beam(target, icon_state = "rped_upgrade", time = 0.5 SECONDS)
- playsound(src, 'sound/items/pshoom.ogg', 40, 1)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 40, 1)
to_chat(user, span_notice("You finish \the [frame] with a light tube."))
qdel(frame)
return TRUE
@@ -246,7 +246,7 @@
light_replaced = TRUE
if(light_replaced && bluespace_toggle)
user.Beam(target, icon_state = "rped_upgrade", time = 0.5 SECONDS)
- playsound(src, 'sound/items/pshoom.ogg', 40, 1)
+ playsound(src, 'sound/items/pshoom/pshoom.ogg', 40, 1)
return TRUE
return FALSE
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 8e29be708db6e..b9d8539562809 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -24,12 +24,12 @@
throwforce = 0
throw_range = 7
throw_speed = 3
- drop_sound = 'sound/items/handling/multitool_drop.ogg'
- pickup_sound = 'sound/items/handling/multitool_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/multitool_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/multitool_pickup.ogg'
custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.2)
custom_premium_price = PAYCHECK_COMMAND * 3
toolspeed = 1
- usesound = 'sound/weapons/empty.ogg'
+ usesound = 'sound/items/weapons/empty.ogg'
var/datum/buffer // simple machine buffer for device linkage
var/mode = 0
var/apc_scanner = TRUE
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 7a9a85cc66675..cd8535e8d2823 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -154,7 +154,7 @@
// A fully locked one will do nothing, as locked is intended to be used for stuff that should never be changed
if(RADIO_FREQENCY_LOCKED)
balloon_alert(user, "can't override frequency lock!")
- playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE, SILENCED_SOUND_EXTRARANGE)
return
// Emagging an unlocked one will do nothing, for now
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 7303eaf873803..93a131a9b468b 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -352,7 +352,7 @@
if(isliving(talking_movable))
var/mob/living/talking_living = talking_movable
if(radio_noise && !HAS_TRAIT(talking_living, TRAIT_DEAF) && talking_living.client?.prefs.read_preference(/datum/preference/toggle/radio_noise))
- SEND_SOUND(talking_living, 'sound/misc/radio_talk.ogg')
+ SEND_SOUND(talking_living, 'sound/items/radio/radio_talk.ogg')
// All radios make an attempt to use the subspace system first
signal.send_to_receivers()
@@ -435,10 +435,10 @@
var/list/spans = data["spans"]
if(COOLDOWN_FINISHED(src, audio_cooldown))
COOLDOWN_START(src, audio_cooldown, 0.5 SECONDS)
- SEND_SOUND(holder, 'sound/misc/radio_receive.ogg')
+ SEND_SOUND(holder, 'sound/items/radio/radio_receive.ogg')
if((SPAN_COMMAND in spans) && COOLDOWN_FINISHED(src, important_audio_cooldown))
COOLDOWN_START(src, important_audio_cooldown, 0.5 SECONDS)
- SEND_SOUND(holder, 'sound/misc/radio_important.ogg')
+ SEND_SOUND(holder, 'sound/items/radio/radio_important.ogg')
/obj/item/radio/ui_state(mob/user)
return GLOB.inventory_state
diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm
index e88b1a51187a3..342383380cf76 100644
--- a/code/game/objects/items/devices/reverse_bear_trap.dm
+++ b/code/game/objects/items/devices/reverse_bear_trap.dm
@@ -112,7 +112,7 @@
source = src,
header = "Reverse bear trap armed",
notify_flags = NOTIFY_CATEGORY_NOFLASH,
- ghost_sound = 'sound/machines/beep.ogg',
+ ghost_sound = 'sound/machines/beep/beep.ogg',
notify_volume = 75,
)
diff --git a/code/game/objects/items/devices/scanners/autopsy_scanner.dm b/code/game/objects/items/devices/scanners/autopsy_scanner.dm
index c5d33b7422656..a054b3c69d2ce 100644
--- a/code/game/objects/items/devices/scanners/autopsy_scanner.dm
+++ b/code/game/objects/items/devices/scanners/autopsy_scanner.dm
@@ -95,7 +95,7 @@
var/blood_type = scanned.dna.blood_type
if(blood_id != /datum/reagent/blood)
var/datum/reagent/reagents = GLOB.chemical_reagents_list[blood_id]
- blood_type = reagents ? reagents.name : blood_id
+ blood_type = reagents?.name || blood_id
autopsy_information += "Blood Type: [blood_type] "
autopsy_information += "Blood Volume: [scanned.blood_volume] cl ([blood_percent]%) "
@@ -108,10 +108,11 @@
for(var/datum/symptom/symptom as anything in advanced_disease.symptoms)
autopsy_information += "[symptom.name] - [symptom.desc] "
- var/obj/item/paper/autopsy_report = new(user.loc)
- autopsy_report.name = "Autopsy Report ([scanned.name])"
+ var/obj/item/paper/autopsy_report = new(user.drop_location())
+ autopsy_report.name = "autopsy report of [scanned] - [station_time_timestamp()])"
autopsy_report.add_raw_text(autopsy_information.Join("\n"))
- autopsy_report.update_appearance(UPDATE_ICON)
+ autopsy_report.color = "#99ccff"
+ autopsy_report.update_appearance()
user.put_in_hands(autopsy_report)
user.balloon_alert(user, "report printed")
return TRUE
diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index 7374254885251..270c070d6dc5e 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -60,8 +60,6 @@
/obj/item/healthanalyzer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(!user.can_read(src) || user.is_blind())
- return ITEM_INTERACT_BLOCKING
var/mob/living/M = interacting_with
@@ -71,38 +69,45 @@
// Clumsiness/brain damage check
if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50))
- user.visible_message(span_warning("[user] analyzes the floor's vitals!"), \
- span_notice("You stupidly try to analyze the floor's vitals!"))
- to_chat(user, "[span_info("Analyzing results for The floor: \tOverall status: Healthy")]\
- [span_info("Key: Suffocation/Toxin/Burn/Brute")]\
- [span_info("\tDamage specifics: 0-0-0-0")]\
- [span_info("Body temperature: ???")]")
+ var/turf/scan_turf = get_turf(user)
+ user.visible_message(
+ span_warning("[user] analyzes [scan_turf]'s vitals!"),
+ span_notice("You stupidly try to analyze [scan_turf]'s vitals!"),
+ )
+
+ var/floor_text = "Analyzing results for [scan_turf] ([station_time_timestamp()]): "
+ floor_text += "Overall status: Unknown "
+ floor_text += "Subject lacks a brain. "
+ floor_text += "Body temperature: [scan_turf?.return_air()?.return_temperature() || "???"] "
+
+ if(user.can_read(src) && !user.is_blind())
+ to_chat(user, examine_block(floor_text))
+ last_scan_text = floor_text
return
if(ispodperson(M) && !advanced)
- to_chat(user, "[M]'s biological structure is too complex for the health analyzer.")
+ to_chat(user, span_info("[M]'s biological structure is too complex for the health analyzer."))
return
user.visible_message(span_notice("[user] analyzes [M]'s vitals."))
balloon_alert(user, "analyzing vitals")
playsound(user.loc, 'sound/items/healthanalyzer.ogg', 50)
+ var/readability_check = user.can_read(src) && !user.is_blind()
switch (scanmode)
if (SCANMODE_HEALTH)
- healthscan(user, M, mode, advanced)
- last_scan_text = healthscan(user, M, mode, advanced, tochat = FALSE)
+ last_scan_text = healthscan(user, M, mode, advanced, tochat = readability_check)
if (SCANMODE_WOUND)
- woundscan(user, M, src)
+ if(readability_check)
+ woundscan(user, M, src)
add_fingerprint(user)
/obj/item/healthanalyzer/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
return NONE
- if(!user.can_read(src) || user.is_blind())
- return ITEM_INTERACT_BLOCKING
-
- chemscan(user, interacting_with)
+ if(user.can_read(src) && !user.is_blind())
+ chemscan(user, interacting_with)
return ITEM_INTERACT_SUCCESS
/obj/item/healthanalyzer/add_item_context(
@@ -139,37 +144,35 @@
return
// the final list of strings to render
- var/render_list = list()
+ var/list/render_list = list()
// Damage specifics
var/oxy_loss = target.getOxyLoss()
var/tox_loss = target.getToxLoss()
var/fire_loss = target.getFireLoss()
var/brute_loss = target.getBruteLoss()
- var/mob_status = (target.stat == DEAD ? span_alert("Deceased") : "[round(target.health/target.maxHealth,0.01)*100]% healthy")
+ var/mob_status = (!target.appears_alive() ? span_alert("Deceased") : "[round(target.health / target.maxHealth, 0.01) * 100]% healthy")
- if(HAS_TRAIT(target, TRAIT_FAKEDEATH) && !advanced)
- mob_status = span_alert("Deceased")
- oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss
+ if(HAS_TRAIT(target, TRAIT_FAKEDEATH) && target.stat != DEAD)
+ // if we don't appear to actually be in a "dead state", add fake oxyloss
+ if(oxy_loss + tox_loss + fire_loss + brute_loss < 200)
+ oxy_loss += 200 - (oxy_loss + tox_loss + fire_loss + brute_loss)
+ oxy_loss = clamp(oxy_loss, 0, 200)
- render_list += "[span_info("Analyzing results for [target]:")] Overall status: [mob_status] "
+ render_list += "[span_info("Analyzing results for [target] ([station_time_timestamp()]):")] Overall status: [mob_status] "
- if(ishuman(target))
- var/mob/living/carbon/human/humantarget = target
- if(humantarget.undergoing_cardiac_arrest() && humantarget.stat != DEAD)
- render_list += "Subject suffering from heart attack: Apply defibrillation or other electric shock immediately! "
- if(humantarget.has_reagent(/datum/reagent/inverse/technetium))
- advanced = TRUE
+ if(!advanced && target.has_reagent(/datum/reagent/inverse/technetium))
+ advanced = TRUE
- SEND_SIGNAL(target, COMSIG_LIVING_HEALTHSCAN, render_list, advanced, user, mode)
+ SEND_SIGNAL(target, COMSIG_LIVING_HEALTHSCAN, render_list, advanced, user, mode, tochat)
// Husk detection
if(HAS_TRAIT(target, TRAIT_HUSK))
if(advanced)
if(HAS_TRAIT_FROM(target, TRAIT_HUSK, BURN))
- render_list += "Subject has been husked by severe burns. "
+ render_list += "Subject has been husked by [conditional_tooltip("severe burns", "Tend burns and apply a de-husking agent, such as [/datum/reagent/medicine/c2/synthflesh::name].", tochat)]. "
else if (HAS_TRAIT_FROM(target, TRAIT_HUSK, CHANGELING_DRAIN))
- render_list += "Subject has been husked by dessication. "
+ render_list += "Subject has been husked by [conditional_tooltip("desiccation", "Irreparable. Under normal circumstances, revival can only proceed via brain transplant.", tochat)]. "
else
render_list += "Subject has been husked by mysterious causes. "
@@ -186,139 +189,156 @@
if(iscarbon(target))
var/mob/living/carbon/carbontarget = target
- if(LAZYLEN(carbontarget.get_traumas()))
- var/list/trauma_text = list()
- for(var/datum/brain_trauma/trauma in carbontarget.get_traumas())
- var/trauma_desc = ""
- switch(trauma.resilience)
- if(TRAUMA_RESILIENCE_SURGERY)
- trauma_desc += "severe "
- if(TRAUMA_RESILIENCE_LOBOTOMY)
- trauma_desc += "deep-rooted "
- if(TRAUMA_RESILIENCE_WOUND)
- trauma_desc += "fracture-derived "
- if(TRAUMA_RESILIENCE_MAGIC, TRAUMA_RESILIENCE_ABSOLUTE)
- trauma_desc += "permanent "
- trauma_desc += trauma.scan_desc
- trauma_text += trauma_desc
- render_list += "Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]. "
- if(carbontarget.quirks.len)
+ if(LAZYLEN(carbontarget.quirks))
render_list += "Subject Major Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MAJOR_DISABILITY, from_scan = TRUE)]. "
if(advanced)
render_list += "Subject Minor Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MINOR_DISABILITY, TRUE)]. "
- if (HAS_TRAIT(target, TRAIT_IRRADIATED))
- render_list += "Subject is irradiated. Supply toxin healing. "
-
- //Eyes and ears
- if(advanced && iscarbon(target))
- var/mob/living/carbon/carbontarget = target
-
- // Ear status
- var/obj/item/organ/internal/ears/ears = carbontarget.get_organ_slot(ORGAN_SLOT_EARS)
- if(istype(ears))
- if(HAS_TRAIT_FROM(carbontarget, TRAIT_DEAF, GENETIC_MUTATION))
- render_list += "Subject is genetically deaf. "
- else if(HAS_TRAIT_FROM(carbontarget, TRAIT_DEAF, EAR_DAMAGE))
- render_list += "Subject is deaf from ear damage. "
- else if(HAS_TRAIT(carbontarget, TRAIT_DEAF))
- render_list += "Subject is deaf. "
- else
- if(ears.damage)
- render_list += "Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage. "
- if(ears.deaf)
- render_list += "Subject is [ears.damage > ears.maxHealth ? "permanently": "temporarily"] deaf. "
-
- // Eye status
- var/obj/item/organ/internal/eyes/eyes = carbontarget.get_organ_slot(ORGAN_SLOT_EYES)
- if(istype(eyes))
- if(carbontarget.is_blind())
- render_list += "Subject is blind. "
- else if(carbontarget.is_nearsighted())
- render_list += "Subject is nearsighted. "
-
// Body part damage report
if(iscarbon(target))
var/mob/living/carbon/carbontarget = target
- var/list/damaged = carbontarget.get_damaged_bodyparts(1,1)
- if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0)
- var/dmgreport = "General status:\
-
"
+ // Follow same body zone list every time so it's consistent across all humans
+ for(var/zone in GLOB.all_body_zones)
+ var/obj/item/bodypart/limb = carbontarget.get_bodypart(zone)
+ if(isnull(limb))
+ dmgreport += "
"
+ dmgreport += "
[capitalize(parse_zone(zone))]:
"
+ dmgreport += "
-
"
+ dmgreport += "
-
"
+ dmgreport += "
"
+ dmgreport += "
↳ Physical trauma: [conditional_tooltip("Dismembered", "Reattach or replace surgically.", tochat)]
" // less lines than in woundscan() so we don't overload people trying to get basic med info
- render_list += ""
-
- //Diseases
- for(var/datum/disease/disease as anything in target.diseases)
- if(!(disease.visibility_flags & HIDDEN_SCANNER))
- render_list += "Warning: [disease.form] detected \
-
Name: [disease.name]. Type: [disease.spread_text]. Stage: [disease.stage]/[disease.max_stages]. Possible Cure: [disease.cure_text]
Health scan report. Time of retrieval: [station_time_timestamp()]
"
report_text += last_scan_text
report_paper.add_raw_text(report_text)
@@ -560,7 +562,7 @@
if(simple_scan)
var/obj/item/healthanalyzer/simple/simple_scanner = scanner
simple_scanner.show_emotion(AID_EMOTION_WARN)
- playsound(simple_scanner, 'sound/machines/twobeep.ogg', 50, FALSE)
+ playsound(simple_scanner, 'sound/machines/beep/twobeep.ogg', 50, FALSE)
/obj/item/healthanalyzer/simple
@@ -598,7 +600,7 @@
show_emotion(AID_EMOTION_ANGRY)
/obj/item/healthanalyzer/simple/proc/violence(mob/user)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
if(isliving(user))
var/mob/living/L = user
to_chat(L, span_warning("[src] makes a disappointed buzz and pricks your finger for being greedy. Ow!"))
@@ -623,7 +625,7 @@
)
if(!iscarbon(interacting_with))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
to_chat(user, span_notice("[src] makes a sad buzz and briefly displays an unhappy face, indicating it can't scan [interacting_with]."))
show_emotion(AI_EMOTION_SAD)
return ITEM_INTERACT_BLOCKING
@@ -715,7 +717,7 @@
else
to_chat(user, span_notice(render.Join("")))
scanner.emotion = AID_EMOTION_WARN
- playsound(scanner, 'sound/machines/twobeep.ogg', 50, FALSE)
+ playsound(scanner, 'sound/machines/beep/twobeep.ogg', 50, FALSE)
#undef SCANMODE_HEALTH
#undef SCANMODE_WOUND
diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm
index fc5a9d39f9742..da597fa595d63 100644
--- a/code/game/objects/items/devices/swapper.dm
+++ b/code/game/objects/items/devices/swapper.dm
@@ -51,9 +51,9 @@
if(QDELETED(linked_swapper))
to_chat(user, span_warning("[src] is not linked with another swapper."))
return
- playsound(src, 'sound/weapons/flash.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/flash.ogg', 25, TRUE)
to_chat(user, span_notice("You activate [src]."))
- playsound(linked_swapper, 'sound/weapons/flash.ogg', 25, TRUE)
+ playsound(linked_swapper, 'sound/items/weapons/flash.ogg', 25, TRUE)
if(ismob(linked_swapper.loc))
var/mob/holder = linked_swapper.loc
to_chat(holder, span_notice("[linked_swapper] starts buzzing."))
diff --git a/code/game/objects/items/devices/table_clock.dm b/code/game/objects/items/devices/table_clock.dm
index 37c1098759e98..d9c5e44fcf76c 100644
--- a/code/game/objects/items/devices/table_clock.dm
+++ b/code/game/objects/items/devices/table_clock.dm
@@ -37,7 +37,7 @@
. = ..()
if(attacking_item.force < 5 || broken)
return
- if(break_clock(break_sound = 'sound/magic/clockwork/ark_activation.ogg'))
+ if(break_clock(break_sound = 'sound/effects/magic/clockwork/ark_activation.ogg'))
user.visible_message(
span_warning("[user] smashes \the [src] so hard it stops breaking!"),
span_boldannounce("I can't stand this stupid machine anymore! Shut up already!"),
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index ee4a61b935157..a2fac2b50a44f 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -380,7 +380,7 @@ effective or pretty fucking useless.
COMBAT_MESSAGE_RANGE,
)
- playsound(src, 'sound/items/drill_use.ogg', 80, TRUE, -1)
+ playsound(src, 'sound/items/tools/drill_use.ogg', 80, TRUE, -1)
var/obj/machinery/porta_turret/syndicate/toolbox/turret = new(get_turf(loc))
set_faction(turret, user)
turret.toolbox = src
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 64ce9803657bb..aa98d325a7d46 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -507,8 +507,8 @@
to_summon,
get_turf(cast_on),
precision = 1,
- asoundin = 'sound/magic/wand_teleport.ogg',
- asoundout = 'sound/magic/wand_teleport.ogg',
+ asoundin = 'sound/effects/magic/wand_teleport.ogg',
+ asoundout = 'sound/effects/magic/wand_teleport.ogg',
channel = TELEPORT_CHANNEL_MAGIC,
)
diff --git a/code/game/objects/items/dna_probe.dm b/code/game/objects/items/dna_probe.dm
index 57718ca217e0b..9e3be2dce40c4 100644
--- a/code/game/objects/items/dna_probe.dm
+++ b/code/game/objects/items/dna_probe.dm
@@ -48,7 +48,7 @@
if(!our_vault)
dna_vault_ref = WEAKREF(target)//linking the dna vault with the probe
balloon_alert(user, "vault linked")
- playsound(src, 'sound/machines/terminal_success.ogg', 50)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 50)
return TRUE
return FALSE
@@ -70,14 +70,14 @@
target.animal_dna += stored_dna_animal
stored_dna_animal.Cut()
target.check_goal()
- playsound(target, 'sound/misc/compiler-stage1.ogg', 50)
+ playsound(target, 'sound/machines/compiler/compiler-stage1.ogg', 50)
to_chat(user, span_notice("[uploaded] new datapoints uploaded."))
return uploaded
/obj/item/dna_probe/proc/scan_dna(atom/target, mob/user)
var/obj/machinery/dna_vault/our_vault = dna_vault_ref?.resolve()
if(!our_vault)
- playsound(user, 'sound/machines/buzz-sigh.ogg', 50)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 50)
balloon_alert(user, "need database!")
return
if(istype(target, /obj/machinery/hydroponics))
@@ -94,7 +94,7 @@
to_chat(user, span_alert("Plant needs to be ready to harvest to perform full data scan.")) //Because space dna is actually magic
return
stored_dna_plants[hydro_tray.myseed.type] = TRUE
- playsound(src, 'sound/misc/compiler-stage2.ogg', 50)
+ playsound(src, 'sound/machines/compiler/compiler-stage2.ogg', 50)
balloon_alert(user, "data added")
return TRUE
else if(ishuman(target))
@@ -109,7 +109,7 @@
to_chat(user, span_alert("No compatible DNA detected."))
return .
stored_dna_human[human_target.dna.unique_identity] = TRUE
- playsound(src, 'sound/misc/compiler-stage2.ogg', 50)
+ playsound(src, 'sound/machines/compiler/compiler-stage2.ogg', 50)
balloon_alert(user, "data added")
return TRUE
@@ -131,7 +131,7 @@
to_chat(user, span_alert("No compatible DNA detected."))
return .
stored_dna_animal[living_target.type] = TRUE
- playsound(src, 'sound/misc/compiler-stage2.ogg', 50)
+ playsound(src, 'sound/machines/compiler/compiler-stage2.ogg', 50)
balloon_alert(user, "data added")
return TRUE
@@ -162,7 +162,7 @@
/obj/item/dna_probe/carp_scanner/scan_dna(atom/target, mob/user)
if(istype(target, /mob/living/basic/carp))
carp_dna_loaded = TRUE
- playsound(src, 'sound/misc/compiler-stage2.ogg', 50)
+ playsound(src, 'sound/machines/compiler/compiler-stage2.ogg', 50)
balloon_alert(user, "dna scanned")
else
return ..()
diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm
index d3e80cdf16de1..a3189c94cfb00 100644
--- a/code/game/objects/items/door_seal.dm
+++ b/code/game/objects/items/door_seal.dm
@@ -21,6 +21,6 @@
/obj/item/door_seal/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is sealing [user.p_them()]self off from the world with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/items/jaws_pry.ogg', 30, TRUE)
+ playsound(src, 'sound/items/tools/jaws_pry.ogg', 30, TRUE)
return BRUTELOSS
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 86b99e8c47e4e..b25765a302443 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -24,7 +24,7 @@
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
block_chance = 75
- block_sound = 'sound/weapons/block_blade.ogg'
+ block_sound = 'sound/items/weapons/block_blade.ogg'
max_integrity = 200
armor_type = /datum/armor/item_dualsaber
resistance_flags = FIRE_PROOF
@@ -47,8 +47,8 @@
AddComponent(/datum/component/two_handed, \
force_unwielded = force, \
force_wielded = two_hand_force, \
- wieldsound = 'sound/weapons/saberon.ogg', \
- unwieldsound = 'sound/weapons/saberoff.ogg', \
+ wieldsound = 'sound/items/weapons/saberon.ogg', \
+ unwieldsound = 'sound/items/weapons/saberoff.ogg', \
wield_callback = CALLBACK(src, PROC_REF(on_wield)), \
unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), \
)
@@ -60,7 +60,7 @@
to_chat(user, span_warning("You lack the grace to wield this!"))
return COMPONENT_TWOHANDED_BLOCK_WIELD
update_weight_class(w_class_on)
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
START_PROCESSING(SSobj, src)
set_light_on(TRUE)
diff --git a/code/game/objects/items/emags.dm b/code/game/objects/items/emags.dm
index f854ba1b90a0c..2adfeb585ae5f 100644
--- a/code/game/objects/items/emags.dm
+++ b/code/game/objects/items/emags.dm
@@ -183,7 +183,7 @@
/obj/item/card/emag/doorjack/proc/recharge(mob/user)
charges = min(charges+1, max_charges)
- playsound(src,'sound/machines/twobeep.ogg',10,TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
+ playsound(src,'sound/machines/beep/twobeep.ogg',10,TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
charge_timers.Remove(charge_timers[1])
/obj/item/card/emag/doorjack/examine(mob/user)
diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm
index c542048b49d98..9c4192116a003 100644
--- a/code/game/objects/items/extinguisher.dm
+++ b/code/game/objects/items/extinguisher.dm
@@ -5,7 +5,7 @@
icon_state = "fire_extinguisher0"
worn_icon_state = "fire_extinguisher"
inhand_icon_state = "fire_extinguisher"
- hitsound = 'sound/weapons/smash.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
obj_flags = CONDUCTS_ELECTRICITY
throwforce = 10
w_class = WEIGHT_CLASS_NORMAL
@@ -240,7 +240,7 @@
var/movementdirection = REVERSE_DIR(direction)
addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_chair), B, movementdirection), 0.1 SECONDS)
else
- user.newtonian_move(REVERSE_DIR(direction))
+ user.newtonian_move(dir2angle(REVERSE_DIR(direction)))
//Get all the turfs that can be shot at
var/turf/T = get_turf(interacting_with)
diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm
index 8a8f26b2c8995..265a05cfac74a 100644
--- a/code/game/objects/items/fireaxe.dm
+++ b/code/game/objects/items/fireaxe.dm
@@ -17,7 +17,7 @@
slot_flags = ITEM_SLOT_BACK
attack_verb_continuous = list("attacks", "chops", "cleaves", "tears", "lacerates", "cuts")
attack_verb_simple = list("attack", "chop", "cleave", "tear", "lacerate", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
armor_type = /datum/armor/item_fireaxe
resistance_flags = FIRE_PROOF
@@ -83,7 +83,7 @@
demolition_mod = 2
tool_behaviour = TOOL_CROWBAR
toolspeed = 1
- usesound = 'sound/items/crowbar.ogg'
+ usesound = 'sound/items/tools/crowbar.ogg'
//boarding axe
/obj/item/fireaxe/boardingaxe
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index ad03fe9ab4f10..cd41859307efb 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -32,8 +32,8 @@
var/create_full = FALSE
var/create_with_tank = FALSE
var/igniter_type = /obj/item/assembly/igniter
- var/acti_sound = 'sound/items/welderactivate.ogg'
- var/deac_sound = 'sound/items/welderdeactivate.ogg'
+ var/acti_sound = 'sound/items/tools/welderactivate.ogg'
+ var/deac_sound = 'sound/items/tools/welderdeactivate.ogg'
/obj/item/flamethrower/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/food/bread.dm b/code/game/objects/items/food/bread.dm
index 0f95aac6d8528..48e7a2a21b1ae 100644
--- a/code/game/objects/items/food/bread.dm
+++ b/code/game/objects/items/food/bread.dm
@@ -384,7 +384,7 @@
ADD_TRAIT(src, TRAIT_CUSTOM_TAP_SOUND, SWORDPLAY_TRAIT)
attack_verb_continuous = list("slashes", "cuts")
attack_verb_simple = list("slash", "cut")
- hitsound = 'sound/weapons/rapierhit.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
fake_swordplay = TRUE
RegisterSignal(src, COMSIG_ITEM_EQUIPPED, PROC_REF(on_sword_equipped))
@@ -418,7 +418,7 @@
/// Deadly bread used by a mime
/obj/item/food/baguette/combat
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
/// Force when wielded as a sword by a mime
var/active_force = 20
diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm
index eb73f4736b1c3..db493b341d16a 100644
--- a/code/game/objects/items/food/burgers.dm
+++ b/code/game/objects/items/food/burgers.dm
@@ -255,7 +255,7 @@
var/obj/machinery/light/light = locate(/obj/machinery/light) in view(4, src)
light?.flicker()
if(62 to 64)
- playsound(loc, pick('sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg'), 50, TRUE, ignore_walls = FALSE)
+ playsound(loc, pick('sound/effects/hallucinations/i_see_you1.ogg', 'sound/effects/hallucinations/i_see_you2.ogg'), 50, TRUE, ignore_walls = FALSE)
if(61)
visible_message("[src] spews out a glob of ectoplasm!")
new /obj/effect/decal/cleanable/greenglow/ecto(loc)
diff --git a/code/game/objects/items/food/cake.dm b/code/game/objects/items/food/cake.dm
index ec3e0a0390caa..b161410bc3f6f 100644
--- a/code/game/objects/items/food/cake.dm
+++ b/code/game/objects/items/food/cake.dm
@@ -267,7 +267,7 @@
desc = "Just enough calories for a whole nuclear operative squad."
icon_state = "energycake"
force = 5
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
food_reagents = list(
/datum/reagent/consumable/nutriment = 10,
/datum/reagent/consumable/sprinkles = 10,
@@ -285,7 +285,7 @@
/obj/item/food/cake/birthday/energy/proc/energy_bite(mob/living/user)
to_chat(user, "As you eat the cake, you accidentally hurt yourself on the embedded energy sword!")
user.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
- playsound(user, 'sound/weapons/blade1.ogg', 5, TRUE)
+ playsound(user, 'sound/items/weapons/blade1.ogg', 5, TRUE)
/obj/item/food/cake/birthday/energy/attack(mob/living/target_mob, mob/living/user)
. = ..()
@@ -298,7 +298,7 @@
desc = "For the traitor on the go."
icon_state = "energycakeslice"
force = 2
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/sprinkles = 2,
@@ -325,7 +325,7 @@
if(eater != feeder)
log_combat(feeder, eater, "fed an energy cake to", src)
eater.apply_damage(18, BRUTE, BODY_ZONE_HEAD)
- playsound(eater, 'sound/weapons/blade1.ogg', 5, TRUE)
+ playsound(eater, 'sound/items/weapons/blade1.ogg', 5, TRUE)
/obj/item/food/cake/apple
name = "apple cake"
diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm
index bcc61e721e211..d731d8c4978dc 100644
--- a/code/game/objects/items/food/egg.dm
+++ b/code/game/objects/items/food/egg.dm
@@ -340,4 +340,5 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
)
tastes = list("custard" = 1)
foodtypes = MEAT | VEGETABLES
+ venue_value = FOOD_PRICE_NORMAL
crafting_complexity = FOOD_COMPLEXITY_3
diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm
index a619be72062af..9bda586b2693f 100644
--- a/code/game/objects/items/food/meatdish.dm
+++ b/code/game/objects/items/food/meatdish.dm
@@ -290,6 +290,7 @@
tastes = list("rice and meat" = 4, "lettuce" = 2, "soy sauce" = 2)
trash_type = /obj/item/reagent_containers/cup/bowl
w_class = WEIGHT_CLASS_SMALL
+ venue_value = FOOD_PRICE_NORMAL
crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/fish_poke
@@ -306,6 +307,7 @@
tastes = list("rice and fish" = 4, "lettuce" = 2, "soy sauce" = 2)
trash_type = /obj/item/reagent_containers/cup/bowl
w_class = WEIGHT_CLASS_SMALL
+ venue_value = FOOD_PRICE_NORMAL
crafting_complexity = FOOD_COMPLEXITY_4
////////////////////////////////////////////MEATS AND ALIKE////////////////////////////////////////////
@@ -752,13 +754,22 @@
w_class = WEIGHT_CLASS_TINY
venue_value = FOOD_PRICE_CHEAP
crafting_complexity = FOOD_COMPLEXITY_1
+ var/meat_source = "\"chicken\""
/obj/item/food/nugget/Initialize(mapload)
. = ..()
var/shape = pick("lump", "star", "lizard", "corgi")
- desc = "A \"chicken\" nugget vaguely shaped like a [shape]."
+ desc = "A [meat_source] nugget vaguely shaped like a [shape]."
icon_state = "nugget_[shape]"
+///subtype harvested from fish caught from, you guess it, the deepfryer
+/obj/item/food/nugget/fish
+ name = "fish nugget"
+ tastes = list("fried fish" = 1)
+ foodtypes = MEAT|SEAFOOD|FRIED
+ venue_value = FOOD_PRICE_NORMAL
+ meat_source = "fish"
+
/obj/item/food/pigblanket
name = "pig in a blanket"
desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it."
diff --git a/code/game/objects/items/food/mexican.dm b/code/game/objects/items/food/mexican.dm
index fa66db1450c8f..3dc6adc107962 100644
--- a/code/game/objects/items/food/mexican.dm
+++ b/code/game/objects/items/food/mexican.dm
@@ -124,6 +124,7 @@
tastes = list("nachos" = 2, "hot pepper" = 1)
foodtypes = VEGETABLES | FRIED | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ venue_value = FOOD_PRICE_CHEAP
crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/taco
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index 54ec5ce019012..bfd26f534de23 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -328,7 +328,7 @@
throwforce = 15
block_chance = 55
armour_penetration = 80
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
wound_bonus = -50
attack_verb_continuous = list("slaps", "slathers")
attack_verb_simple = list("slap", "slather")
diff --git a/code/game/objects/items/food/pancakes.dm b/code/game/objects/items/food/pancakes.dm
index 52829ab4c3acd..488ba1e5eb5ad 100644
--- a/code/game/objects/items/food/pancakes.dm
+++ b/code/game/objects/items/food/pancakes.dm
@@ -52,7 +52,7 @@
/obj/item/food/pancakes/raw/examine(mob/user)
. = ..()
if(name == initial(name))
- . += "You can modify the pancake by adding blueberries or chocolate before finishing the griddle."
+ . += span_notice("You can modify the pancake by adding blueberries or chocolate before finishing the griddle.")
/obj/item/food/pancakes/blueberry
name = "blueberry pancake"
diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm
index 47a7b563e0895..e63127a6a219d 100644
--- a/code/game/objects/items/food/sandwichtoast.dm
+++ b/code/game/objects/items/food/sandwichtoast.dm
@@ -41,6 +41,7 @@
/datum/reagent/carbon = 4,
)
tastes = list("toast" = 2, "cheese" = 3, "butter" = 1)
+ venue_value = FOOD_PRICE_NORMAL
crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/jelly
diff --git a/code/game/objects/items/frog_statue.dm b/code/game/objects/items/frog_statue.dm
index e2477d2179aca..d1f65dc4b2ad5 100644
--- a/code/game/objects/items/frog_statue.dm
+++ b/code/game/objects/items/frog_statue.dm
@@ -76,7 +76,7 @@
SIGNAL_HANDLER
contained_frog = null
- playsound(src, 'sound/magic/demon_dies.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_dies.ogg', 50, TRUE)
UnregisterSignal(source, COMSIG_QDELETING)
/obj/item/frog_statue/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
diff --git a/code/game/objects/items/granters/_granters.dm b/code/game/objects/items/granters/_granters.dm
index b205a1f0ffa64..bfdb2013cfdac 100644
--- a/code/game/objects/items/granters/_granters.dm
+++ b/code/game/objects/items/granters/_granters.dm
@@ -18,9 +18,9 @@
var/reading_time = 5 SECONDS
/// The sounds played as the user's reading the book.
var/list/book_sounds = list(
- 'sound/effects/pageturn1.ogg',
- 'sound/effects/pageturn2.ogg',
- 'sound/effects/pageturn3.ogg',
+ 'sound/effects/page_turn/pageturn1.ogg',
+ 'sound/effects/page_turn/pageturn2.ogg',
+ 'sound/effects/page_turn/pageturn3.ogg',
)
/obj/item/book/granter/attack_self(mob/living/user)
diff --git a/code/game/objects/items/granters/martial_arts/cqc.dm b/code/game/objects/items/granters/martial_arts/cqc.dm
index b2191997586ba..7d3f7f2ef9e26 100644
--- a/code/game/objects/items/granters/martial_arts/cqc.dm
+++ b/code/game/objects/items/granters/martial_arts/cqc.dm
@@ -3,7 +3,7 @@
name = "old manual"
martial_name = "close quarters combat"
desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat."
- greet = "You've mastered the basics of CQC."
+ greet = span_boldannounce("You've mastered the basics of CQC.")
icon_state = "cqcmanual"
remarks = list(
"Kick... Slam...",
@@ -22,7 +22,7 @@
/obj/item/book/granter/martial/cqc/recoil(mob/living/user)
to_chat(user, span_warning("[src] explodes!"))
- playsound(src,'sound/effects/explosion1.ogg',40,TRUE)
+ playsound(src,'sound/effects/explosion/explosion1.ogg',40,TRUE)
user.flash_act(1, 1)
user.adjustBruteLoss(6)
user.adjustFireLoss(6)
diff --git a/code/game/objects/items/granters/martial_arts/plasma_fist.dm b/code/game/objects/items/granters/martial_arts/plasma_fist.dm
index dab85637da5b2..22b6b4aefa18e 100644
--- a/code/game/objects/items/granters/martial_arts/plasma_fist.dm
+++ b/code/game/objects/items/granters/martial_arts/plasma_fist.dm
@@ -3,8 +3,8 @@
name = "frayed scroll"
martial_name = "plasma fist"
desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism."
- greet = "You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
- the plasma fist, which when pulled off will make someone violently explode."
+ greet = span_boldannounce("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
+ the plasma fist, which when pulled off will make someone violently explode.")
icon = 'icons/obj/scrolls.dmi'
icon_state ="plasmafist"
remarks = list(
diff --git a/code/game/objects/items/granters/martial_arts/sleeping_carp.dm b/code/game/objects/items/granters/martial_arts/sleeping_carp.dm
index 3c66ce8affa15..88123439725f0 100644
--- a/code/game/objects/items/granters/martial_arts/sleeping_carp.dm
+++ b/code/game/objects/items/granters/martial_arts/sleeping_carp.dm
@@ -3,9 +3,9 @@
name = "mysterious scroll"
martial_name = "sleeping carp"
desc = "A scroll filled with strange markings. It seems to be drawings of some sort of martial art."
- greet = "You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
+ greet = span_sciradio("You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
directed toward you while in Combat Mode. Your body has also hardened itself, granting extra protection against lasting wounds that would otherwise mount during extended combat. \
- However, you are also unable to use any ranged weaponry. You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab."
+ However, you are also unable to use any ranged weaponry. You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab.")
icon = 'icons/obj/scrolls.dmi'
icon_state = "sleepingcarp"
worn_icon_state = "scroll"
diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm
index cbf604db63d0d..780311fa4d149 100644
--- a/code/game/objects/items/grenades/_grenade.dm
+++ b/code/game/objects/items/grenades/_grenade.dm
@@ -17,8 +17,8 @@
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT
max_integrity = 40
- pickup_sound = 'sound/items/grenade_pick_up.ogg'
- drop_sound = 'sound/items/grenade_drop.ogg'
+ pickup_sound = 'sound/items/handling/grenade/grenade_pick_up.ogg'
+ drop_sound = 'sound/items/handling/grenade/grenade_drop.ogg'
sound_vary = TRUE
/// Bitfields which prevent the grenade from detonating if set. Includes ([GRENADE_DUD]|[GRENADE_USED])
var/dud_flags = NONE
@@ -155,7 +155,7 @@
if(shrapnel_type && shrapnel_radius)
shrapnel_initialized = TRUE
AddComponent(/datum/component/pellet_cloud, projectile_type = shrapnel_type, magnitude = shrapnel_radius)
- playsound(src, 'sound/weapons/armbomb.ogg', volume, TRUE)
+ playsound(src, 'sound/items/weapons/armbomb.ogg', volume, TRUE)
if(istype(user))
user.add_mob_memory(/datum/memory/bomb_planted, antagonist = src)
active = TRUE
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index 5aadc9fbb3f23..c193b9ab73b9c 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -234,7 +234,7 @@
active = TRUE
update_icon_state()
- playsound(src, 'sound/weapons/armbomb.ogg', volume, TRUE)
+ playsound(src, 'sound/items/weapons/armbomb.ogg', volume, TRUE)
if(landminemode)
landminemode.activate()
return
diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm
index b27285e07861c..fe5666267e07f 100644
--- a/code/game/objects/items/grenades/clusterbuster.dm
+++ b/code/game/objects/items/grenades/clusterbuster.dm
@@ -13,7 +13,7 @@
var/base_state = "clusterbang"
var/payload = /obj/item/grenade/flashbang/cluster
var/payload_spawner = /obj/effect/payload_spawner
- var/prime_sound = 'sound/weapons/armbomb.ogg'
+ var/prime_sound = 'sound/items/weapons/armbomb.ogg'
var/min_spawned = 4
var/max_spawned = 8
var/segment_chance = 35
@@ -207,7 +207,7 @@
icon_state = "slimebang"
base_state = "slimebang"
payload_spawner = /obj/effect/payload_spawner/random_slime
- prime_sound = 'sound/effects/bubbles.ogg'
+ prime_sound = 'sound/effects/bubbles/bubbles.ogg'
/obj/item/grenade/clusterbuster/slime/volatile
payload_spawner = /obj/effect/payload_spawner/random_slime/volatile
diff --git a/code/game/objects/items/grenades/festive.dm b/code/game/objects/items/grenades/festive.dm
index e9acdd6cfd631..87c8e554213bc 100644
--- a/code/game/objects/items/grenades/festive.dm
+++ b/code/game/objects/items/grenades/festive.dm
@@ -29,7 +29,7 @@
lit = TRUE
icon_state = "sparkler_on"
force = 6
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
name = "lit [initial(name)]"
attack_verb_continuous = list("burns")
attack_verb_simple = list("burn")
@@ -92,7 +92,7 @@
if(det_time)
det_time -= 10
to_chat(user, span_notice("You shorten the fuse of [src] with [item]."))
- playsound(src, 'sound/items/wirecutter.ogg', 20, TRUE)
+ playsound(src, 'sound/items/tools/wirecutter.ogg', 20, TRUE)
icon_state = initial(icon_state) + "_[det_time]"
update_appearance()
else
diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm
index 6817610bf76e7..c83801d81fc53 100644
--- a/code/game/objects/items/grenades/flashbang.dm
+++ b/code/game/objects/items/grenades/flashbang.dm
@@ -23,7 +23,7 @@
if(!flashbang_turf)
return
do_sparks(rand(5, 9), FALSE, src)
- playsound(flashbang_turf, 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9)
+ playsound(flashbang_turf, 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8, 0.9)
new /obj/effect/dummy/lighting_obj (flashbang_turf, flashbang_range + 2, 4, COLOR_WHITE, 2)
for(var/mob/living/living_mob in get_hearers_in_view(flashbang_range, flashbang_turf))
bang(get_turf(living_mob), living_mob)
@@ -91,7 +91,7 @@
if(!flashbang_turf)
return
do_sparks(rand(5, 9), FALSE, src)
- playsound(flashbang_turf, 'sound/weapons/flashbang.ogg', 50, TRUE, 8, 0.9)
+ playsound(flashbang_turf, 'sound/items/weapons/flashbang.ogg', 50, TRUE, 8, 0.9)
new /obj/effect/dummy/lighting_obj (flashbang_turf, flashbang_range + 2, 2, COLOR_WHITE, 1)
for(var/mob/living/living_mob in get_hearers_in_view(flashbang_range, flashbang_turf))
pop(get_turf(living_mob), living_mob)
diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm
index cf752bf82accb..93d4cd65f3452 100644
--- a/code/game/objects/items/hand_items.dm
+++ b/code/game/objects/items/hand_items.dm
@@ -187,7 +187,7 @@
log_combat(user, target, "given a noogie to", addition = "([damage] brute before armor)")
target.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
user.adjustStaminaLoss(iteration + 5)
- playsound(get_turf(user), pick('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg'), 50)
+ playsound(get_turf(user), pick('sound/effects/rustle/rustle1.ogg','sound/effects/rustle/rustle2.ogg','sound/effects/rustle/rustle3.ogg','sound/effects/rustle/rustle4.ogg','sound/effects/rustle/rustle5.ogg'), 50)
if(prob(33))
user.visible_message(span_danger("[user] continues noogie'ing [target]!"), span_warning("You continue giving [target] a noogie!"), vision_distance=COMBAT_MESSAGE_RANGE, ignored_mobs=target)
@@ -235,7 +235,7 @@
)
to_chat(slapped, span_userdanger("You see [user] scoff and pull back [user.p_their()] arm, then suddenly you're on the ground with an ungodly ringing in your ears!"))
slap_volume = 120
- SEND_SOUND(slapped, sound('sound/weapons/flash_ring.ogg'))
+ SEND_SOUND(slapped, sound('sound/items/weapons/flash_ring.ogg'))
shake_camera(slapped, 2, 2)
slapped.Paralyze(2.5 SECONDS)
slapped.adjust_confusion(7 SECONDS)
@@ -278,7 +278,7 @@
span_notice("You slap [slapped]!"),
span_hear("You hear a slap."),
)
- playsound(slapped, 'sound/weapons/slap.ogg', slap_volume, TRUE, -1)
+ playsound(slapped, 'sound/items/weapons/slap.ogg', slap_volume, TRUE, -1)
return
/obj/item/hand_item/slapper/pre_attack_secondary(atom/target, mob/living/user, params)
@@ -542,8 +542,8 @@
name = "kiss"
icon = 'icons/mob/simple/animal.dmi'
icon_state = "heart"
- hitsound = 'sound/effects/kiss.ogg'
- hitsound_wall = 'sound/effects/kiss.ogg'
+ hitsound = 'sound/effects/emotes/kiss.ogg'
+ hitsound_wall = 'sound/effects/emotes/kiss.ogg'
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
speed = 1.6
damage_type = BRUTE
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 9e8f1d7308860..e63085d65be52 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -48,8 +48,8 @@
breakouttime = 1 MINUTES
armor_type = /datum/armor/restraints_handcuffs
custom_price = PAYCHECK_COMMAND * 0.35
- pickup_sound = 'sound/items/handcuffs_pick_up.ogg'
- drop_sound = 'sound/items/handcuffs_drop.ogg'
+ pickup_sound = 'sound/items/handling/handcuffs/handcuffs_pick_up.ogg'
+ drop_sound = 'sound/items/handling/handcuffs/handcuffs_drop.ogg'
sound_vary = TRUE
///How long it takes to handcuff someone
@@ -57,7 +57,7 @@
///Multiplier for handcuff time
var/handcuff_time_mod = 1
///Sound that plays when starting to put handcuffs on someone
- var/cuffsound = 'sound/weapons/handcuffs.ogg'
+ var/cuffsound = 'sound/items/weapons/handcuffs.ogg'
///Sound that plays when restrain is successful
var/cuffsuccesssound = 'sound/items/handcuff_finish.ogg'
///If set, handcuffs will be destroyed on application and leave behind whatever this is set to.
@@ -200,7 +200,7 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.75)
breakouttime = 30 SECONDS
- cuffsound = 'sound/weapons/cablecuff.ogg'
+ cuffsound = 'sound/items/weapons/cablecuff.ogg'
pickup_sound = null
drop_sound = null
restraint_strength = HANDCUFFS_TYPE_WEAK
@@ -424,7 +424,7 @@
/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is sticking [user.p_their()] head in the [src.name]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/bladeslice.ogg', 50, TRUE, -1)
return BRUTELOSS
/obj/item/restraints/legcuffs/beartrap/attack_self(mob/user)
@@ -551,7 +551,7 @@
/obj/item/restraints/legcuffs/bola/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle = FALSE, quickstart = TRUE)
if(!..())
return
- playsound(src.loc,'sound/weapons/bolathrow.ogg', 75, TRUE)
+ playsound(src.loc,'sound/items/weapons/bolathrow.ogg', 75, TRUE)
/obj/item/restraints/legcuffs/bola/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed,
@@ -606,7 +606,7 @@
desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests."
icon_state = "ebola"
inhand_icon_state = "ebola"
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
w_class = WEIGHT_CLASS_SMALL
breakouttime = 6 SECONDS
custom_price = PAYCHECK_COMMAND * 0.35
diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm
index d1e128c0b5b10..b9dc441df724a 100644
--- a/code/game/objects/items/his_grace.dm
+++ b/code/game/objects/items/his_grace.dm
@@ -17,9 +17,9 @@
demolition_mod = 1.25
attack_verb_continuous = list("robusts")
attack_verb_simple = list("robust")
- hitsound = 'sound/weapons/smash.ogg'
- drop_sound = 'sound/items/handling/toolbox_drop.ogg'
- pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
var/awakened = FALSE
var/bloodthirst = HIS_GRACE_SATIATED
var/prev_bloodthirst = HIS_GRACE_SATIATED
@@ -133,8 +133,8 @@
if(!L.stat)
L.visible_message(span_warning("[src] lunges at [L]!"), "[src] lunges at you!")
do_attack_animation(L, null, src)
- playsound(L, 'sound/weapons/smash.ogg', 50, TRUE)
- playsound(L, 'sound/misc/desecration-01.ogg', 50, TRUE)
+ playsound(L, 'sound/items/weapons/smash.ogg', 50, TRUE)
+ playsound(L, 'sound/effects/desecration/desecration-01.ogg', 50, TRUE)
L.adjustBruteLoss(force)
adjust_bloodthirst(-5) //Don't stop attacking they're right there!
else
@@ -172,7 +172,7 @@
return
var/turf/T = get_turf(src)
T.visible_message(span_boldwarning("[src] slowly stops rattling and falls still, His latch snapping shut."))
- playsound(loc, 'sound/weapons/batonextend.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/weapons/batonextend.ogg', 100, TRUE)
name = initial(name)
desc = initial(desc)
animate(src, transform=matrix())
@@ -189,7 +189,7 @@
var/victims = 0
meal.visible_message(span_warning("[src] swings open and devours [meal]!"), "[src] consumes you!")
meal.adjustBruteLoss(200)
- playsound(meal, 'sound/misc/desecration-02.ogg', 75, TRUE)
+ playsound(meal, 'sound/effects/desecration/desecration-02.ogg', 75, TRUE)
playsound(src, 'sound/items/eatfood.ogg', 100, TRUE)
meal.forceMove(src)
force_bonus += HIS_GRACE_FORCE_BONUS
@@ -259,7 +259,7 @@
desc = "A legendary toolbox and a distant artifact from The Age of Three Powers. On its three latches engraved are the words \"The Sun\", \"The Moon\", and \"The Stars\". The entire toolbox has the words \"The World\" engraved into its sides."
ascended = TRUE
update_appearance()
- playsound(src, 'sound/effects/his_grace_ascend.ogg', 100)
+ playsound(src, 'sound/effects/his_grace/his_grace_ascend.ogg', 100)
if(istype(master))
master.update_held_items()
master.visible_message("Gods will be watching.")
diff --git a/code/game/objects/items/implants/implant_deathrattle.dm b/code/game/objects/items/implants/implant_deathrattle.dm
index 64f85c020c87a..f26eb4ab947c6 100644
--- a/code/game/objects/items/implants/implant_deathrattle.dm
+++ b/code/game/objects/items/implants/implant_deathrattle.dm
@@ -54,10 +54,10 @@
var/area = get_area_name(get_turf(owner))
// All "hearers" hear the same sound.
var/sound = pick(
- 'sound/items/knell1.ogg',
- 'sound/items/knell2.ogg',
- 'sound/items/knell3.ogg',
- 'sound/items/knell4.ogg',
+ 'sound/items/knell/knell1.ogg',
+ 'sound/items/knell/knell2.ogg',
+ 'sound/items/knell/knell3.ogg',
+ 'sound/items/knell/knell4.ogg',
)
diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm
index 50302173a796f..503a1a183e163 100644
--- a/code/game/objects/items/implants/implantchair.dm
+++ b/code/game/objects/items/implants/implantchair.dm
@@ -84,7 +84,7 @@
ready = FALSE
addtimer(CALLBACK(src, PROC_REF(set_ready)),injection_cooldown)
else
- playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE)
update_appearance()
/obj/machinery/implantchair/proc/implant_action(mob/living/M)
diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm
index 4aff1f03388ab..c22bf5d2ac60d 100644
--- a/code/game/objects/items/inspector.dm
+++ b/code/game/objects/items/inspector.dm
@@ -121,7 +121,7 @@
return ITEM_INTERACT_BLOCKING
if(contraband_scan(interacting_with, user))
- playsound(src, 'sound/machines/uplinkerror.ogg', 40)
+ playsound(src, 'sound/machines/uplink/uplinkerror.ogg', 40)
balloon_alert(user, "contraband detected!")
return ITEM_INTERACT_SUCCESS
else
@@ -195,10 +195,10 @@
*/
/obj/item/inspector/proc/print_report(mob/user)
if(!cell)
- to_chat(user, "\The [src] doesn't seem to be on... It feels quite light. Perhaps it lacks a power cell?")
+ to_chat(user, span_info("\The [src] doesn't seem to be on... It feels quite light. Perhaps it lacks a power cell?"))
return
if(cell.charge == 0)
- to_chat(user, "\The [src] doesn't seem to be on... Perhaps it ran out of power?")
+ to_chat(user, span_info("\The [src] doesn't seem to be on... Perhaps it ran out of power?"))
return
if(!cell.use(energy_per_print))
if(cell.use(ENERGY_TO_SPEAK))
@@ -389,7 +389,7 @@
if(cell.use(ENERGY_TO_SPEAK))
say("ERROR! OUT OF PAPER! MAXIMUM PRINTING SPEED UNAVAIBLE! SWITCH TO A SLOWER SPEED TO OR PROVIDE PAPER!")
else
- to_chat(user, "\The [src] doesn't seem to be on... Perhaps it ran out of power?")
+ to_chat(user, span_info("\The [src] doesn't seem to be on... Perhaps it ran out of power?"))
return
paper_charges--
return ..()
diff --git a/code/game/objects/items/janitor_key.dm b/code/game/objects/items/janitor_key.dm
index 8f96205984b42..d18ac7bd20db5 100644
--- a/code/game/objects/items/janitor_key.dm
+++ b/code/game/objects/items/janitor_key.dm
@@ -82,6 +82,6 @@
investigate_log("Access to the [department_access] department on [src] has expired.]", INVESTIGATE_ACCESSCHANGES)
department_access = null
say("Access revoked, time ran out.")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE)
#undef ACCESS_TIMER_LIMIT
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index 9a55b1cd57464..24506e006d81f 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -30,7 +30,7 @@
obj_flags = CONDUCTS_ELECTRICITY
attack_verb_continuous = list("attacks", "stabs", "pokes")
attack_verb_simple = list("attack", "stab", "poke")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
armor_type = /datum/armor/kitchen_fork
sharpness = SHARP_POINTY
var/datum/reagent/forkload //used to eat omelette
@@ -110,7 +110,7 @@
force = 0
throwforce = 0
sharpness = SHARP_EDGED
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("prods", "whiffs", "scratches", "pokes")
attack_verb_simple = list("prod", "whiff", "scratch", "poke")
tool_behaviour = TOOL_KNIFE
@@ -123,7 +123,7 @@
. += " It's fitted with a [tool_behaviour] head."
/obj/item/knife/kitchen/silicon/attack_self(mob/user)
- playsound(get_turf(user), 'sound/items/change_drill.ogg', 50, TRUE)
+ playsound(get_turf(user), 'sound/items/tools/change_drill.ogg', 50, TRUE)
if(tool_behaviour != TOOL_ROLLINGPIN)
tool_behaviour = TOOL_ROLLINGPIN
to_chat(user, span_notice("You attach the rolling pin bit to the [src]."))
@@ -140,7 +140,7 @@
icon_state = "sili_knife"
force = 0
sharpness = SHARP_EDGED
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("prods", "whiffs", "scratches", "pokes")
attack_verb_simple = list("prod", "whiff", "scratch", "poke")
diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm
index 848058a6a279e..e089a5bc55d7d 100644
--- a/code/game/objects/items/knives.dm
+++ b/code/game/objects/items/knives.dm
@@ -13,7 +13,7 @@
demolition_mod = 0.75
w_class = WEIGHT_CLASS_SMALL
throwforce = 10
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
throw_speed = 3
throw_range = 6
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
@@ -145,7 +145,7 @@
. = ..()
if(user.get_item_by_slot(ITEM_SLOT_MASK) == src && !user.has_status_effect(/datum/status_effect/choke) && prob(20))
user.apply_damage(5, BRUTE, BODY_ZONE_HEAD)
- playsound(user, 'sound/weapons/slice.ogg', 50, TRUE)
+ playsound(user, 'sound/items/weapons/slice.ogg', 50, TRUE)
user.visible_message(span_danger("[user] accidentally cuts [user.p_them()]self while pulling [src] out of [user.p_them()] teeth! What a doofus!"), span_userdanger("You accidentally cut your mouth with [src]!"))
/obj/item/knife/combat/equipped(mob/living/user, slot, initial = FALSE)
diff --git a/code/game/objects/items/lighter.dm b/code/game/objects/items/lighter.dm
index a0613450b28d6..a27db91909c3d 100644
--- a/code/game/objects/items/lighter.dm
+++ b/code/game/objects/items/lighter.dm
@@ -69,7 +69,7 @@
/obj/item/lighter/suicide_act(mob/living/carbon/user)
if (lit)
user.visible_message(span_suicide("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE)
return FIRELOSS
else
user.visible_message(span_suicide("[user] begins whacking [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
@@ -99,15 +99,15 @@
if(lit)
force = 5
damtype = BURN
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
attack_verb_continuous = string_list(list("burns", "singes"))
attack_verb_simple = string_list(list("burn", "singe"))
heat = heat_while_on
START_PROCESSING(SSobj, src)
if(fancy)
- playsound(src.loc , 'sound/items/zippo_on.ogg', 100, 1)
+ playsound(src.loc , 'sound/items/lighter/zippo_on.ogg', 100, 1)
else
- playsound(src.loc, 'sound/items/lighter_on.ogg', 100, 1)
+ playsound(src.loc, 'sound/items/lighter/lighter_on.ogg', 100, 1)
if(isliving(loc))
var/mob/living/male_model = loc
if(male_model.fire_stacks && !(male_model.on_fire))
@@ -120,9 +120,9 @@
attack_verb_simple = null
STOP_PROCESSING(SSobj, src)
if(fancy)
- playsound(src.loc , 'sound/items/zippo_off.ogg', 100, 1)
+ playsound(src.loc , 'sound/items/lighter/zippo_off.ogg', 100, 1)
else
- playsound(src.loc , 'sound/items/lighter_off.ogg', 100, 1)
+ playsound(src.loc , 'sound/items/lighter/lighter_off.ogg', 100, 1)
set_light_on(lit)
update_appearance()
diff --git a/code/game/objects/items/machine_wand.dm b/code/game/objects/items/machine_wand.dm
index 7d8b4a0697d67..a4e1be08ee450 100644
--- a/code/game/objects/items/machine_wand.dm
+++ b/code/game/objects/items/machine_wand.dm
@@ -61,7 +61,7 @@
/obj/item/machine_remote/ui_interact(mob/user, datum/tgui/ui)
if(!COOLDOWN_FINISHED(src, timeout_time))
- playsound(src, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
say("Remote control disabled temporarily. Please try again soon.")
return FALSE
if(!controlling_machine_or_bot)
@@ -92,7 +92,7 @@
/obj/item/machine_remote/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!COOLDOWN_FINISHED(src, timeout_time))
- playsound(src, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
say("Remote control disabled temporarily. Please try again soon.")
return ITEM_INTERACT_BLOCKING
if(!ismachinery(interacting_with) && !isbot(interacting_with))
diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm
index 26cefd6eeedbd..e11310b57e868 100644
--- a/code/game/objects/items/mail.dm
+++ b/code/game/objects/items/mail.dm
@@ -107,7 +107,7 @@
var/tag = uppertext(GLOB.TAGGERLOCATIONS[destination_tag.currTag])
to_chat(user, span_notice("*[tag]*"))
sort_tag = destination_tag.currTag
- playsound(loc, 'sound/machines/twobeep_high.ogg', vol = 100, vary = TRUE)
+ playsound(loc, 'sound/machines/beep/twobeep_high.ogg', vol = 100, vary = TRUE)
/obj/item/mail/multitool_act(mob/living/user, obj/item/tool)
if(user.get_inactive_held_item() == src)
@@ -145,7 +145,7 @@
user.put_in_hands(stuff)
else
stuff.forceMove(drop_location())
- playsound(loc, 'sound/items/poster_ripped.ogg', vol = 50, vary = TRUE)
+ playsound(loc, 'sound/items/poster/poster_ripped.ogg', vol = 50, vary = TRUE)
qdel(src)
return TRUE
@@ -402,7 +402,7 @@
/obj/item/mail/traitor/after_unwrap(mob/user)
user.temporarilyRemoveItemFromInventory(src, force = TRUE)
- playsound(loc, 'sound/items/poster_ripped.ogg', vol = 50, vary = TRUE)
+ playsound(loc, 'sound/items/poster/poster_ripped.ogg', vol = 50, vary = TRUE)
for(var/obj/item/stuff as anything in contents) // Mail and envelope actually can have more than 1 item.
if(user.put_in_hands(stuff) && armed)
var/whomst = made_by_cached_name ? "[made_by_cached_name] ([made_by_cached_ckey])" : "no one in particular"
@@ -419,7 +419,7 @@
if(!do_after(user, 2 SECONDS, target = src))
return FALSE
balloon_alert(user, "disarmed")
- playsound(src, 'sound/machines/defib_ready.ogg', vol = 100, vary = TRUE)
+ playsound(src, 'sound/machines/defib/defib_ready.ogg', vol = 100, vary = TRUE)
armed = FALSE
return TRUE
else
@@ -430,7 +430,7 @@
return FALSE
if(prob(50))
balloon_alert(user, "disarmed something...?")
- playsound(src, 'sound/machines/defib_ready.ogg', vol = 100, vary = TRUE)
+ playsound(src, 'sound/machines/defib/defib_ready.ogg', vol = 100, vary = TRUE)
armed = FALSE
return TRUE
else
diff --git a/code/game/objects/items/maintenance_loot.dm b/code/game/objects/items/maintenance_loot.dm
index 74d908732a562..9d1c4fe676b84 100644
--- a/code/game/objects/items/maintenance_loot.dm
+++ b/code/game/objects/items/maintenance_loot.dm
@@ -20,8 +20,9 @@
wound_bonus = 20
demolition_mod = 1.25
grind_results = list(/datum/reagent/lead = 20)
- pickup_sound = 'sound/items/lead_pipe_pickup.ogg'
- drop_sound = 'sound/items/lead_pipe_drop.ogg'
+ pickup_sound = 'sound/items/handling/lead_pipe/lead_pipe_pickup.ogg'
+ drop_sound = 'sound/items/handling/materials/metal_drop.ogg'
+ throw_drop_sound = 'sound/items/handling/lead_pipe/lead_pipe_drop.ogg'
hitsound = 'sound/items/lead_pipe_hit.ogg'
//A good battery early in the shift. Source of lead & sulfuric acid reagents.
diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm
index 0fd63321519c0..01e5983b7d7aa 100644
--- a/code/game/objects/items/melee/baton.dm
+++ b/code/game/objects/items/melee/baton.dm
@@ -177,7 +177,7 @@
/obj/item/melee/baton/proc/check_parried(mob/living/carbon/human/human_target, mob/living/user)
if (human_target.check_block(src, 0, "[user]'s [name]", MELEE_ATTACK))
- playsound(human_target, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(human_target, 'sound/items/weapons/genhit.ogg', 50, TRUE)
return TRUE
return FALSE
@@ -327,7 +327,7 @@
drop_sound = 'sound/items/baton/telescopic_baton_folded_drop.ogg'
sound_vary = TRUE
/// The sound effecte played when our baton is extended.
- var/on_sound = 'sound/weapons/batonextend.ogg'
+ var/on_sound = 'sound/items/weapons/batonextend.ogg'
/// The inhand iconstate used when our baton is extended.
var/on_inhand_icon_state = "nullrod"
/// The force on extension.
@@ -407,12 +407,12 @@
stamina_damage = 85
clumsy_knockdown_time = 24 SECONDS
affect_cyborg = TRUE
- on_stun_sound = 'sound/effects/contractorbatonhit.ogg'
+ on_stun_sound = 'sound/items/weapons/contractor_baton/contractorbatonhit.ogg'
unfolded_drop_sound = 'sound/items/baton/contractor_baton_unfolded_pickup.ogg'
unfolded_pickup_sound = 'sound/items/baton/contractor_baton_unfolded_pickup.ogg'
on_inhand_icon_state = "contractor_baton_on"
- on_sound = 'sound/weapons/contractorbatonextend.ogg'
+ on_sound = 'sound/items/weapons/contractorbatonextend.ogg'
active_force = 16
/obj/item/melee/baton/telescopic/contractor_baton/get_wait_description()
@@ -442,7 +442,7 @@
knockdown_time = 5 SECONDS
clumsy_knockdown_time = 15 SECONDS
cooldown = 2.5 SECONDS
- on_stun_sound = 'sound/weapons/egloves.ogg'
+ on_stun_sound = 'sound/items/weapons/egloves.ogg'
on_stun_volume = 50
active = FALSE
context_living_rmb_active = "Harmful Stun"
@@ -507,7 +507,7 @@
var/turf/source_turf = get_turf(src)
var/obj/item/melee/baton/baton = new (source_turf)
baton.alpha = 20
- playsound(source_turf, 'sound/items/drill_use.ogg', 80, TRUE, -1)
+ playsound(source_turf, 'sound/items/tools/drill_use.ogg', 80, TRUE, -1)
animate(src, alpha = 0, time = 1 SECONDS)
animate(baton, alpha = 255, time = 1 SECONDS)
qdel(item)
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index dd70bd08c2161..f78eec3898799 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -24,7 +24,7 @@
/// Sharpness while active.
var/active_sharpness = SHARP_EDGED
/// Hitsound played attacking while active.
- var/active_hitsound = 'sound/weapons/blade1.ogg'
+ var/active_hitsound = 'sound/items/weapons/blade1.ogg'
/// Weight class while active.
var/active_w_class = WEIGHT_CLASS_BULKY
/// The heat given off when active.
@@ -122,7 +122,7 @@
tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal!
if(user)
balloon_alert(user, "[name] [active ? "enabled":"disabled"]")
- playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE)
+ playsound(src, active ? 'sound/items/weapons/saberon.ogg' : 'sound/items/weapons/saberoff.ogg', 35, TRUE)
set_light_on(active)
update_appearance(UPDATE_ICON_STATE)
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -136,7 +136,7 @@
base_icon_state = "axe"
lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "chops", "cleaves", "tears", "lacerates", "cuts")
attack_verb_simple = list("attack", "chop", "cleave", "tear", "lacerate", "cut")
force = 40
@@ -188,7 +188,7 @@
throw_range = 5
armour_penetration = 35
block_chance = 50
- block_sound = 'sound/weapons/block_blade.ogg'
+ block_sound = 'sound/items/weapons/block_blade.ogg'
embed_type = /datum/embed_data/esword
/obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
@@ -227,7 +227,7 @@
desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "esaw"
- hitsound = 'sound/weapons/circsawhit.ogg'
+ hitsound = 'sound/items/weapons/circsawhit.ogg'
force = 18
hitcost = 0.075 * STANDARD_CELL_CHARGE // Costs more than a standard cyborg esword.
w_class = WEIGHT_CLASS_NORMAL
@@ -321,7 +321,7 @@
base_icon_state = "blade"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
force = 30
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 855484c3066d4..813ace6ced89e 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -21,7 +21,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("flogs", "whips", "lashes", "disciplines")
attack_verb_simple = list("flog", "whip", "lash", "discipline")
- hitsound = 'sound/weapons/chainhit.ogg'
+ hitsound = 'sound/items/weapons/chainhit.ogg'
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/melee/chainofcommand/suicide_act(mob/living/user)
@@ -39,7 +39,7 @@
w_class = WEIGHT_CLASS_HUGE
force = 20
throwforce = 10
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
sharpness = SHARP_EDGED
@@ -70,8 +70,8 @@
sharpness = SHARP_EDGED
attack_verb_continuous = list("slashes", "cuts")
attack_verb_simple = list("slash", "cut")
- block_sound = 'sound/weapons/parry.ogg'
- hitsound = 'sound/weapons/rapierhit.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
wound_bonus = 10
bare_wound_bonus = 25
@@ -182,8 +182,8 @@
sharpness = SHARP_EDGED
attack_verb_continuous = list("slashes", "cuts")
attack_verb_simple = list("slash", "cut")
- block_sound = 'sound/weapons/parry.ogg'
- hitsound = 'sound/weapons/rapierhit.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
custom_materials = null
wound_bonus = 5
bare_wound_bonus = 15
@@ -224,8 +224,8 @@
armour_penetration = 65
attack_verb_continuous = list("slashes", "stings", "prickles", "pokes")
attack_verb_simple = list("slash", "sting", "prickle", "poke")
- hitsound = 'sound/weapons/rapierhit.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
/obj/item/melee/beesword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == PROJECTILE_ATTACK || attack_type == LEAP_ATTACK)
@@ -370,7 +370,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("flogs", "whips", "lashes", "disciplines")
attack_verb_simple = list("flog", "whip", "lash", "discipline")
- hitsound = 'sound/weapons/whip.ogg'
+ hitsound = 'sound/items/weapons/whip.ogg'
/obj/item/melee/curator_whip/afterattack(atom/target, mob/user, click_parameters)
if(ishuman(target))
@@ -434,7 +434,7 @@
inhand_icon_state = active ? "nullrod" : null
if(user)
balloon_alert(user, "[active ? "extended" : "collapsed"] [src]")
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/melee/roastingstick/attackby(atom/target, mob/user)
@@ -475,7 +475,7 @@
return NONE
if (istype(interacting_with, /obj/singularity) && get_dist(user, interacting_with) < 10)
to_chat(user, span_notice("You send [held_sausage] towards [interacting_with]."))
- playsound(src, 'sound/items/rped.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/rped.ogg', 50, TRUE)
beam = user.Beam(interacting_with, icon_state = "rped_upgrade", time = 10 SECONDS)
return ITEM_INTERACT_SUCCESS
return NONE
@@ -486,21 +486,21 @@
if (!is_type_in_typecache(interacting_with, ovens))
return NONE
to_chat(user, span_notice("You extend [src] towards [interacting_with]."))
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
finish_roasting(user, interacting_with)
return ITEM_INTERACT_SUCCESS
/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target)
if(do_after(user, 10 SECONDS, target = user))
to_chat(user, span_notice("You finish roasting [held_sausage]."))
- playsound(src, 'sound/items/welder2.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder2.ogg', 50, TRUE)
held_sausage.add_atom_colour(rgb(103, 63, 24), FIXED_COLOUR_PRIORITY)
held_sausage.name = "[target.name]-roasted [held_sausage.name]"
held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]."
update_appearance()
else
QDEL_NULL(beam)
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
to_chat(user, span_notice("You put [src] away."))
/obj/item/melee/cleric_mace
@@ -524,7 +524,7 @@
w_class = WEIGHT_CLASS_BULKY
throwforce = 8
block_chance = 10
- block_sound = 'sound/weapons/genhit.ogg'
+ block_sound = 'sound/items/weapons/genhit.ogg'
armour_penetration = 50
attack_verb_continuous = list("smacks", "strikes", "cracks", "beats")
attack_verb_simple = list("smack", "strike", "crack", "beat")
diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm
index 7b9aa7ceefe08..0148076f529ec 100644
--- a/code/game/objects/items/pet_carrier.dm
+++ b/code/game/objects/items/pet_carrier.dm
@@ -57,14 +57,14 @@
/obj/item/pet_carrier/attack_self(mob/living/user)
if(open)
to_chat(user, span_notice("You close [src]'s door."))
- playsound(user, 'sound/effects/bin_close.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/bin/bin_close.ogg', 50, TRUE)
open = FALSE
else
if(locked)
to_chat(user, span_warning("[src] is locked!"))
return
to_chat(user, span_notice("You open [src]'s door."))
- playsound(user, 'sound/effects/bin_open.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/bin/bin_open.ogg', 50, TRUE)
open = TRUE
update_appearance()
@@ -74,9 +74,9 @@
locked = !locked
to_chat(user, span_notice("You flip the lock switch [locked ? "down" : "up"]."))
if(locked)
- playsound(user, 'sound/machines/boltsdown.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/airlock/boltsdown.ogg', 30, TRUE)
else
- playsound(user, 'sound/machines/boltsup.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/airlock/boltsup.ogg', 30, TRUE)
update_appearance()
return CLICK_ACTION_SUCCESS
@@ -129,7 +129,7 @@
loc.visible_message(span_warning("[user] flips the lock switch on [src] by reaching through!"), null, null, null, user)
to_chat(user, span_boldannounce("Bingo! The lock pops open!"))
locked = FALSE
- playsound(src, 'sound/machines/boltsup.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/airlock/boltsup.ogg', 30, TRUE)
update_appearance()
else
loc.visible_message(span_warning("[src] starts rattling as something pushes against the door!"), null, null, null, user)
diff --git a/code/game/objects/items/pillow.dm b/code/game/objects/items/pillow.dm
index b924983a4272f..af2096a9c2caa 100644
--- a/code/game/objects/items/pillow.dm
+++ b/code/game/objects/items/pillow.dm
@@ -51,9 +51,9 @@
if(!iscarbon(target_mob))
return
if(bricked || HAS_TRAIT(src, TRAIT_WIELDED))
- hit_sound = 'sound/items/pillow_hit2.ogg'
+ hit_sound = 'sound/items/pillow/pillow_hit2.ogg'
else
- hit_sound = 'sound/items/pillow_hit.ogg'
+ hit_sound = 'sound/items/pillow/pillow_hit.ogg'
user.apply_damage(5, STAMINA) //Had to be done so one person cannot keep multiple people stam critted
last_fighter = user
playsound(user, hit_sound, 80) //the basic 50 vol is barely audible
@@ -116,7 +116,7 @@
user.put_in_hands(pillow_trophy)
pillow_trophy = null
balloon_alert(user, "tag removed")
- playsound(user,'sound/items/poster_ripped.ogg', 50)
+ playsound(user,'sound/items/poster/poster_ripped.ogg', 50)
update_appearance()
return CLICK_ACTION_SUCCESS
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index 526b5ca2e985e..878fd0ad3bb77 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -44,7 +44,7 @@
/obj/item/pinpointer/proc/toggle_on()
active = !active
- playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, TRUE)
if(active)
START_PROCESSING(SSfastprocess, src)
else
diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm
index 63c4db34b3969..1ece740d4a6df 100644
--- a/code/game/objects/items/pitchfork.dm
+++ b/code/game/objects/items/pitchfork.dm
@@ -17,7 +17,7 @@
w_class = WEIGHT_CLASS_BULKY
attack_verb_continuous = list("attacks", "impales", "pierces")
attack_verb_simple = list("attack", "impale", "pierce")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
max_integrity = 200
armor_type = /datum/armor/item_pitchfork
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 93fd6cb947a5d..7c7f998251c12 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -393,7 +393,7 @@
inhand_icon_state = "carp_plushie"
attack_verb_continuous = list("bites", "eats", "fin slaps")
attack_verb_simple = list("bite", "eat", "fin slap")
- squeak_override = list('sound/weapons/bite.ogg'=1)
+ squeak_override = list('sound/items/weapons/bite.ogg'=1)
/obj/item/toy/plush/bubbleplush
name = "\improper Bubblegum plushie"
@@ -401,7 +401,7 @@
icon_state = "bubbleplush"
attack_verb_continuous = list("rents")
attack_verb_simple = list("rent")
- squeak_override = list('sound/magic/demon_attack1.ogg'=1)
+ squeak_override = list('sound/effects/magic/demon_attack1.ogg'=1)
/obj/item/toy/plush/ratplush
name = "\improper Ratvar plushie"
@@ -438,7 +438,7 @@
clash_target = null
P.clashing = FALSE
return
- playsound(src, 'sound/magic/clockwork/ratvar_attack.ogg', 50, TRUE, frequency = 2)
+ playsound(src, 'sound/effects/magic/clockwork/ratvar_attack.ogg', 50, TRUE, frequency = 2)
sleep(0.24 SECONDS)
if(QDELETED(src))
P.clashing = FALSE
@@ -457,7 +457,7 @@
if(QDELETED(P))
clash_target = null
return
- playsound(P, 'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE, frequency = 2)
+ playsound(P, 'sound/effects/magic/clockwork/narsie_attack.ogg', 50, TRUE, frequency = 2)
sleep(0.33 SECONDS)
if(QDELETED(src))
P.clashing = FALSE
@@ -476,16 +476,16 @@
if(a_winnar_is == src)
say(pick("DIE.", "ROT."))
P.say(pick("Nooooo...", "Not die. To y-", "Die. Ratv-", "Sas tyen re-"))
- playsound(src, 'sound/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE, frequency = 2)
- playsound(P, 'sound/magic/demon_dies.ogg', 50, TRUE, frequency = 2)
+ playsound(src, 'sound/effects/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE, frequency = 2)
+ playsound(P, 'sound/effects/magic/demon_dies.ogg', 50, TRUE, frequency = 2)
explosion(P, light_impact_range = 1)
qdel(P)
clash_target = null
else
say("NO! I will not be banished again...")
P.say(pick("Ha.", "Ra'sha fonn dest.", "You fool. To come here."))
- playsound(src, 'sound/magic/clockwork/anima_fragment_death.ogg', 62, TRUE, frequency = 2)
- playsound(P, 'sound/magic/demon_attack1.ogg', 50, TRUE, frequency = 2)
+ playsound(src, 'sound/effects/magic/clockwork/anima_fragment_death.ogg', 62, TRUE, frequency = 2)
+ playsound(P, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE, frequency = 2)
explosion(src, light_impact_range = 1)
qdel(src)
P.clashing = FALSE
@@ -511,7 +511,7 @@
greyscale_config = /datum/greyscale_config/plush_lizard
attack_verb_continuous = list("claws", "hisses", "tail slaps")
attack_verb_simple = list("claw", "hiss", "tail slap")
- squeak_override = list('sound/weapons/slash.ogg' = 1)
+ squeak_override = list('sound/items/weapons/slash.ogg' = 1)
/obj/item/toy/plush/lizard_plushie/Initialize(mapload)
. = ..()
@@ -559,7 +559,7 @@
inhand_icon_state = null
attack_verb_continuous = list("bites", "hisses", "tail slaps")
attack_verb_simple = list("bite", "hiss", "tail slap")
- squeak_override = list('sound/weapons/bite.ogg' = 1)
+ squeak_override = list('sound/items/weapons/bite.ogg' = 1)
/obj/item/toy/plush/nukeplushie
name = "operative plushie"
@@ -588,7 +588,7 @@
inhand_icon_state = null
attack_verb_continuous = list("blorbles", "slimes", "absorbs")
attack_verb_simple = list("blorble", "slime", "absorb")
- squeak_override = list('sound/effects/blobattack.ogg' = 1)
+ squeak_override = list('sound/effects/blob/blobattack.ogg' = 1)
gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy
// This is supposed to be only in the bus ruin, don't spawn it elsewhere
@@ -657,13 +657,13 @@
attack_verb_continuous = list("stings")
attack_verb_simple = list("sting")
gender = FEMALE
- squeak_override = list('sound/voice/moth/scream_moth.ogg'=1)
+ squeak_override = list('sound/mobs/humanoids/moth/scream_moth.ogg'=1)
/obj/item/toy/plush/goatplushie
name = "strange goat plushie"
icon_state = "goat"
desc = "Despite its cuddly appearance and plush nature, it will beat you up all the same. Goats never change."
- squeak_override = list('sound/weapons/punch1.ogg'=1)
+ squeak_override = list('sound/items/weapons/punch1.ogg'=1)
/// Whether or not this goat is currently taking in a monsterous doink
var/going_hard = FALSE
/// Whether or not this goat has been flattened like a funny pancake
@@ -724,7 +724,7 @@
inhand_icon_state = null
attack_verb_continuous = list("flutters", "flaps")
attack_verb_simple = list("flutter", "flap")
- squeak_override = list('sound/voice/moth/scream_moth.ogg'=1)
+ squeak_override = list('sound/mobs/humanoids/moth/scream_moth.ogg'=1)
///Used to track how many people killed themselves with item/toy/plush/moth
var/suicide_count = 0
@@ -737,7 +737,7 @@
desc = "A plushie depicting a creepy mothperson. It's killed [suicide_count] people! I don't think I want to hug it any more!"
divine = TRUE
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
- playsound(src, 'sound/hallucinations/wail.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/effects/hallucinations/wail.ogg', 50, TRUE, -1)
var/list/available_spots = get_adjacent_open_turfs(loc)
if(available_spots.len) //If the user is in a confined space the plushie will drop normally as the user dies, but in the open the plush is placed one tile away from the user to prevent squeak spam
var/turf/open/random_open_spot = pick(available_spots)
@@ -751,7 +751,7 @@
icon_state = "pkplush"
attack_verb_continuous = list("hugs", "squeezes")
attack_verb_simple = list("hug", "squeeze")
- squeak_override = list('sound/weapons/thudswoosh.ogg'=1)
+ squeak_override = list('sound/items/weapons/thudswoosh.ogg'=1)
/obj/item/toy/plush/rouny
name = "runner plushie"
@@ -770,7 +770,7 @@
inhand_icon_state = null
attack_verb_continuous = list("abducts", "probes")
attack_verb_continuous = list("abduct", "probe")
- squeak_override = list('sound/weather/ashstorm/inside/weak_end.ogg' = 1) //very faint sound since abductors are silent as far as "speaking" is concerned.
+ squeak_override = list('sound/ambience/weather/ashstorm/inside/weak_end.ogg' = 1) //very faint sound since abductors are silent as far as "speaking" is concerned.
/obj/item/toy/plush/abductor/agent
name = "abductor agent plushie"
@@ -780,8 +780,8 @@
attack_verb_continuous = list("abducts", "probes", "stuns")
attack_verb_continuous = list("abduct", "probe", "stun")
squeak_override = list(
- 'sound/weapons/egloves.ogg' = 2,
- 'sound/weapons/cablecuff.ogg' = 1,
+ 'sound/items/weapons/egloves.ogg' = 2,
+ 'sound/items/weapons/cablecuff.ogg' = 1,
)
/obj/item/toy/plush/shark
diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm
index b49fb7ec26051..f9e63d7ee3f74 100644
--- a/code/game/objects/items/pneumaticCannon.dm
+++ b/code/game/objects/items/pneumaticCannon.dm
@@ -39,7 +39,7 @@
var/charge_tick = 0
var/charge_type
var/selfcharge = FALSE
- var/fire_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ var/fire_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
var/spin_item = TRUE //Do the projectiles spin when launched?
trigger_guard = TRIGGER_GUARD_NORMAL
@@ -103,7 +103,7 @@
/obj/item/pneumatic_cannon/wrench_act(mob/living/user, obj/item/tool)
if(needs_air == FALSE)
return
- playsound(src, 'sound/items/ratchet.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/ratchet.ogg', 50, TRUE)
pressure_setting = pressure_setting >= HIGH_PRESSURE ? LOW_PRESSURE : pressure_setting + 1
balloon_alert(user, "output level set to [pressure_setting_to_text(pressure_setting)]")
return TRUE
diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm
index 0054520c957ee..77810ff3a89b6 100644
--- a/code/game/objects/items/powerfist.dm
+++ b/code/game/objects/items/powerfist.dm
@@ -117,7 +117,7 @@
if(!gas_used)
to_chat(user, span_warning("\The [src]'s tank is empty!"))
target.apply_damage((force / 5), BRUTE)
- playsound(loc, 'sound/weapons/punch1.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/punch1.ogg', 50, TRUE)
target.visible_message(span_danger("[user]'s powerfist lets out a dull thunk as [user.p_they()] punch[user.p_es()] [target.name]!"), \
span_userdanger("[user]'s punches you!"))
return
@@ -125,7 +125,7 @@
if(!molar_cmp_equals(gas_used.total_moles(), gas_per_fist * fist_pressure_setting))
our_turf.assume_air(gas_used)
to_chat(user, span_warning("\The [src]'s piston-ram lets out a weak hiss, it needs more gas!"))
- playsound(loc, 'sound/weapons/punch4.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/punch4.ogg', 50, TRUE)
target.apply_damage((force / 2), BRUTE)
target.visible_message(span_danger("[user]'s powerfist lets out a weak hiss as [user.p_they()] punch[user.p_es()] [target.name]!"), \
span_userdanger("[user]'s punch strikes with force!"))
@@ -135,8 +135,8 @@
span_userdanger("You cry out in pain as [user]'s punch flings you backwards!"))
new /obj/effect/temp_visual/kinetic_blast(target.loc)
target.apply_damage(force * fist_pressure_setting, BRUTE, wound_bonus = CANT_WOUND)
- playsound(src, 'sound/weapons/resonator_blast.ogg', 50, TRUE)
- playsound(src, 'sound/weapons/genhit2.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/resonator_blast.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit2.ogg', 50, TRUE)
if(!QDELETED(target))
var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm
index 335e7b3d5fbd7..a008acedb6d1c 100644
--- a/code/game/objects/items/puzzle_pieces.dm
+++ b/code/game/objects/items/puzzle_pieces.dm
@@ -305,7 +305,7 @@
visible_message(span_boldnotice("[src] becomes fully charged!"))
powered = TRUE
SEND_SIGNAL(src, COMSIG_PUZZLE_COMPLETED)
- playsound(src, 'sound/machines/synth_yes.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 100, TRUE)
//
// literally just buttons
@@ -363,7 +363,7 @@
used = single_use
update_icon_state()
visible_message(span_notice("[user] presses a button on [src]."), span_notice("You press a button on [src]."))
- playsound(src, 'sound/machines/terminal_button07.ogg', 45, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_button07.ogg', 45, TRUE)
on_puzzle_complete()
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/button, 32)
@@ -386,7 +386,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/button, 32)
return
used = TRUE
update_icon_state()
- playsound(src, 'sound/machines/beep.ogg', 45, TRUE)
+ playsound(src, 'sound/machines/beep/beep.ogg', 45, TRUE)
on_puzzle_complete()
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/keycardpad, 32)
@@ -419,11 +419,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/keycardpad, 32)
var/correct = pass_input == password
balloon_alert_to_viewers("[correct ? "correct" : "wrong"] password[correct ? "" : "!"]")
if(!correct)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 45, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 45, TRUE)
return
used = single_use
update_icon_state()
- playsound(src, 'sound/machines/terminal_button07.ogg', 45, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_button07.ogg', 45, TRUE)
on_puzzle_complete()
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/password, 32)
diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm
index 279bc91d622c5..961e0fff88afd 100644
--- a/code/game/objects/items/rcd/RCD.dm
+++ b/code/game/objects/items/rcd/RCD.dm
@@ -16,8 +16,8 @@
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
has_ammobar = TRUE
actions_types = list(/datum/action/item_action/rcd_scan)
- drop_sound = 'sound/items/handling/rcd_drop.ogg'
- pickup_sound = 'sound/items/handling/rcd_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
/// main category of currently selected design[Structures, Airlocks, Airlock Access]
@@ -426,9 +426,8 @@
interact_with_atom(target, user, modifiers)
/obj/item/construction/rcd/proc/detonate_pulse()
- audible_message("[src] begins to vibrate and \
- buzz loudly!","[src] begins \
- vibrating violently!")
+ audible_message(span_danger("[src] begins to vibrate and buzz loudly!"), \
+ span_danger("[src] begins vibrating violently!"))
// 5 seconds to get rid of it
addtimer(CALLBACK(src, PROC_REF(detonate_pulse_explode)), 5 SECONDS)
diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm
index 9c3aa6cffc284..07db9978e3e09 100644
--- a/code/game/objects/items/rcd/RPD.dm
+++ b/code/game/objects/items/rcd/RPD.dm
@@ -185,8 +185,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*37.5, /datum/material/glass=SHEET_MATERIAL_AMOUNT*18.75)
armor_type = /datum/armor/item_pipe_dispenser
resistance_flags = FIRE_PROOF
- drop_sound = 'sound/items/handling/rpd_drop.ogg'
- pickup_sound = 'sound/items/handling/rpd_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/rpd_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/rpd_pickup.ogg'
sound_vary = TRUE
///Sparks system used when changing device in the UI
var/datum/effect_system/spark_spread/spark_system
diff --git a/code/game/objects/items/rcd/RPLD.dm b/code/game/objects/items/rcd/RPLD.dm
index 4872dffde362e..a41e86584af81 100644
--- a/code/game/objects/items/rcd/RPLD.dm
+++ b/code/game/objects/items/rcd/RPLD.dm
@@ -12,8 +12,8 @@
banned_upgrades = RCD_ALL_UPGRADES & ~RCD_UPGRADE_SILO_LINK
matter = 200
max_matter = 200
- drop_sound = 'sound/items/handling/rcd_drop.ogg'
- pickup_sound = 'sound/items/handling/rcd_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
///category of design selected
diff --git a/code/game/objects/items/rcd/RTD.dm b/code/game/objects/items/rcd/RTD.dm
index 93e5147175e4e..1925b3e6ffc66 100644
--- a/code/game/objects/items/rcd/RTD.dm
+++ b/code/game/objects/items/rcd/RTD.dm
@@ -24,8 +24,8 @@
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
has_ammobar = TRUE
banned_upgrades = RCD_ALL_UPGRADES & ~RCD_UPGRADE_SILO_LINK
- drop_sound = 'sound/items/handling/rcd_drop.ogg'
- pickup_sound = 'sound/items/handling/rcd_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
/// main category for tile design
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index 77b087b8ac53d..ecf43fdfab776 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -75,7 +75,7 @@
inspired_human.AdjustImmobilized(-40)
inspired_human.AdjustParalyzed(-40)
inspired_human.AdjustUnconscious(-40)
- playsound(inspired_human, 'sound/magic/staff_healing.ogg', 25, FALSE)
+ playsound(inspired_human, 'sound/effects/magic/staff_healing.ogg', 25, FALSE)
/obj/item/banner/proc/special_inspiration(mob/living/carbon/human/H) //Any banner-specific inspiration effects go here
return
diff --git a/code/game/objects/items/robot/items/food.dm b/code/game/objects/items/robot/items/food.dm
index b7b018362c73c..3dd15b508cc97 100644
--- a/code/game/objects/items/robot/items/food.dm
+++ b/code/game/objects/items/robot/items/food.dm
@@ -112,7 +112,7 @@
gumball = new /obj/item/ammo_casing/gumball(src)
gumball.loaded_projectile.color = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
- playsound(src.loc, 'sound/weapons/bulletflyby3.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/items/weapons/bulletflyby3.ogg', 50, TRUE)
gumball.fire_casing(target, user, params, 0, 0, null, 0, src)
user.visible_message(span_warning("[user] shoots a high-velocity gumball at [target]!"))
check_amount()
diff --git a/code/game/objects/items/robot/items/generic.dm b/code/game/objects/items/robot/items/generic.dm
index a98d13770b7ab..385baa0381ae9 100644
--- a/code/game/objects/items/robot/items/generic.dm
+++ b/code/game/objects/items/robot/items/generic.dm
@@ -30,7 +30,7 @@
if(ishuman(attacked_mob))
var/mob/living/carbon/human/human = attacked_mob
if(human.check_block(src, 0, "[attacked_mob]'s [name]", MELEE_ATTACK))
- playsound(attacked_mob, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(attacked_mob, 'sound/items/weapons/genhit.ogg', 50, TRUE)
return FALSE
if(iscyborg(user))
var/mob/living/silicon/robot/robot_user = user
@@ -54,7 +54,7 @@
span_userdanger("[user] prods you with [src]!"),
)
- playsound(loc, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 50, TRUE, -1)
cooldown_check = world.time + cooldown
log_combat(user, attacked_mob, "stunned", src, "(Combat mode: [user.combat_mode ? "On" : "Off"])")
@@ -88,9 +88,9 @@
mode = HUG_MODE_NICE
switch(mode)
if(HUG_MODE_NICE)
- to_chat(user, "Power reset. Hugs!")
+ to_chat(user, span_infoplain("Power reset. Hugs!"))
if(HUG_MODE_HUG)
- to_chat(user, "Power increased!")
+ to_chat(user, span_infoplain("Power increased!"))
if(HUG_MODE_SHOCK)
to_chat(user, "BZZT. Electrifying arms...")
if(HUG_MODE_CRUSH)
@@ -114,7 +114,7 @@
span_notice("You playfully boop [attacked_mob] on the head!"),
)
user.do_attack_animation(attacked_mob, ATTACK_EFFECT_BOOP)
- playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/tap.ogg', 50, TRUE, -1)
else if(ishuman(attacked_mob))
if(user.body_position == LYING_DOWN)
user.visible_message(
@@ -133,7 +133,7 @@
span_notice("[user] pets [attacked_mob]!"),
span_notice("You pet [attacked_mob]!"),
)
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
if(HUG_MODE_HUG)
if(ishuman(attacked_mob))
attacked_mob.adjust_status_effects_on_shake_up()
@@ -160,7 +160,7 @@
span_warning("[user] bops [attacked_mob] on the head!"),
span_warning("You bop [attacked_mob] on the head!"),
)
- playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/tap.ogg', 50, TRUE, -1)
if(HUG_MODE_SHOCK)
if (!COOLDOWN_FINISHED(src, shock_cooldown))
return
@@ -184,7 +184,7 @@
span_userdanger("[user] shocks [attacked_mob]. It does not seem to have an effect"),
span_danger("You shock [attacked_mob] to no effect."),
)
- playsound(loc, 'sound/effects/sparks2.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/effects/sparks/sparks2.ogg', 50, TRUE, -1)
user.cell.use(0.5 * STANDARD_CELL_CHARGE, force = TRUE)
COOLDOWN_START(src, shock_cooldown, HUG_SHOCK_COOLDOWN)
if(HUG_MODE_CRUSH)
@@ -200,7 +200,7 @@
span_userdanger("[user] crushes [attacked_mob]!"),
span_danger("You crush [attacked_mob]!"),
)
- playsound(loc, 'sound/weapons/smash.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/smash.ogg', 50, TRUE, -1)
attacked_mob.adjustBruteLoss(15)
user.cell.use(0.3 * STANDARD_CELL_CHARGE, force = TRUE)
COOLDOWN_START(src, crush_cooldown, HUG_CRUSH_COOLDOWN)
@@ -378,7 +378,7 @@
carbon.adjust_confusion(6 SECONDS)
audible_message("HUMAN HARM")
- playsound(get_turf(src), 'sound/ai/harmalarm.ogg', 70, 3)
+ playsound(get_turf(src), 'sound/mobs/non-humanoids/cyborg/harmalarm.ogg', 70, 3)
COOLDOWN_START(src, alarm_cooldown, HARM_ALARM_SAFETY_COOLDOWN)
user.log_message("used a Cyborg Harm Alarm", LOG_ATTACK)
if(iscyborg(user))
diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm
index f16cd0844901d..beaca11b695b9 100644
--- a/code/game/objects/items/robot/items/tools.dm
+++ b/code/game/objects/items/robot/items/tools.dm
@@ -9,8 +9,8 @@
resistance_flags = FIRE_PROOF //if it's channeling a cyborg's excess heat, it's probably fireproof
force = 5
damtype = BURN
- usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') //the usesounds of a lit welder
- hitsound = 'sound/items/welder.ogg' //the hitsound of a lit welder
+ usesound = list('sound/items/tools/welder.ogg', 'sound/items/tools/welder2.ogg') //the usesounds of a lit welder
+ hitsound = 'sound/items/tools/welder.ogg' //the hitsound of a lit welder
//Peacekeeper Cyborg Projectile Dampenening Field
/obj/item/borg/projectile_dampen
@@ -247,7 +247,7 @@
if(initial(tool.tool_behaviour) == new_tool_behaviour)
reference = tool
update_appearance(UPDATE_ICON_STATE)
- playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/change_jaws.ogg', 50, TRUE)
break
/obj/item/borg/cyborg_omnitool/update_icon_state()
@@ -267,7 +267,7 @@
/obj/item/borg/cyborg_omnitool/proc/set_upgraded(upgrade)
upgraded = upgraded
- playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/change_jaws.ogg', 50, TRUE)
/obj/item/borg/cyborg_omnitool/medical
name = "surgical omni-toolset"
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 14a7c8a1d63a5..ce350ecb788f8 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -319,7 +319,7 @@
// This canonizes that MMI'd cyborgs have memories of their previous life
brainmob.add_mob_memory(/datum/memory/was_cyborged, protagonist = brainmob.mind, deuteragonist = user)
brainmob.mind.transfer_to(O)
- playsound(O.loc, 'sound/voice/liveagain.ogg', 75, TRUE)
+ playsound(O.loc, 'sound/mobs/non-humanoids/cyborg/liveagain.ogg', 75, TRUE)
if(O.mind && O.mind.special_role)
to_chat(O, span_userdanger("You have been robotized!"))
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 4727f16ee1dd2..4b210c47e9fca 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -607,7 +607,7 @@
smoke.start()
sleep(0.2 SECONDS)
for(var/i in 1 to 4)
- playsound(borg, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1)
+ playsound(borg, pick('sound/items/tools/drill_use.ogg', 'sound/items/tools/jaws_cut.ogg', 'sound/items/tools/jaws_pry.ogg', 'sound/items/tools/welder.ogg', 'sound/items/tools/ratchet.ogg'), 80, TRUE, -1)
sleep(1.2 SECONDS)
if(!prev_lockcharge)
borg.SetLockdown(FALSE)
@@ -827,7 +827,7 @@
if(borgo.mind)
borgo.mind.grab_ghost()
- playsound(loc, 'sound/voice/liveagain.ogg', 75, TRUE)
+ playsound(loc, 'sound/mobs/non-humanoids/cyborg/liveagain.ogg', 75, TRUE)
else
playsound(loc, 'sound/machines/ping.ogg', 75, TRUE)
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 73aaa7e75a1cb..acab30562cdaf 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -15,7 +15,7 @@
attack_verb_continuous = list("shoves", "bashes")
attack_verb_simple = list("shove", "bash")
armor_type = /datum/armor/item_shield
- block_sound = 'sound/weapons/block_shield.ogg'
+ block_sound = 'sound/items/weapons/block_shield.ogg'
/// makes beam projectiles pass through the shield
var/transparent = FALSE
/// if the shield will break by sustaining damage
@@ -163,11 +163,11 @@
custom_materials = list(/datum/material/glass= SHEET_MATERIAL_AMOUNT * 3.75, /datum/material/iron= HALF_SHEET_MATERIAL_AMOUNT)
transparent = TRUE
max_integrity = 75
- shield_break_sound = 'sound/effects/glassbr3.ogg'
+ shield_break_sound = 'sound/effects/glass/glassbr3.ogg'
shield_break_leftover = /obj/item/shard
armor_type = /datum/armor/item_shield/riot
- pickup_sound = 'sound/items/plastic_shield_pick_up.ogg'
- drop_sound = 'sound/items/plastic_shield_drop.ogg'
+ pickup_sound = 'sound/items/handling/shield/plastic_shield_pick_up.ogg'
+ drop_sound = 'sound/items/handling/shield/plastic_shield_drop.ogg'
/obj/item/shield/riot/Initialize(mapload)
. = ..()
@@ -305,7 +305,7 @@
throwforce = 3
throw_speed = 3
breakable_by_damage = FALSE
- block_sound = 'sound/weapons/block_blade.ogg'
+ block_sound = 'sound/items/weapons/block_blade.ogg'
is_bashable = FALSE // Gotta wait till it activates y'know
shield_bash_sound = 'sound/effects/energyshieldbash.ogg'
/// Force of the shield when active.
@@ -355,7 +355,7 @@
if(user)
balloon_alert(user, active ? "activated" : "deactivated")
- playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE)
+ playsound(src, active ? 'sound/items/weapons/saberon.ogg' : 'sound/items/weapons/saberoff.ogg', 35, TRUE)
is_bashable = !is_bashable
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -420,7 +420,7 @@
slot_flags = active ? ITEM_SLOT_BACK : null
if(user)
balloon_alert(user, active ? "extended" : "collapsed")
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/shield/riot/tele/proc/can_disarm_attack(datum/source, mob/living/victim, mob/living/user, send_message = TRUE)
@@ -472,6 +472,6 @@
max_integrity = 35
shield_break_leftover = /obj/item/stack/rods/two
armor_type = /datum/armor/item_shield/improvised
- block_sound = 'sound/items/trayhit2.ogg'
+ block_sound = 'sound/items/trayhit/trayhit2.ogg'
#undef BATON_BASH_COOLDOWN
diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm
index f0548fa66f404..6ad49bf836f4f 100644
--- a/code/game/objects/items/spear.dm
+++ b/code/game/objects/items/spear.dm
@@ -15,7 +15,7 @@
embed_type = /datum/embed_data/spear
armour_penetration = 10
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass= HALF_SHEET_MATERIAL_AMOUNT * 2)
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
sharpness = SHARP_EDGED // i know the whole point of spears is that they're pointy, but edged is more devastating at the moment so
diff --git a/code/game/objects/items/stacks/golem_food/golem_hand_actions.dm b/code/game/objects/items/stacks/golem_food/golem_hand_actions.dm
index e4b65e033975e..00606ba3e6d77 100644
--- a/code/game/objects/items/stacks/golem_food/golem_hand_actions.dm
+++ b/code/game/objects/items/stacks/golem_food/golem_hand_actions.dm
@@ -35,7 +35,7 @@
qdel(src)
return ITEM_INTERACT_BLOCKING
- playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/sonic_jackhammer.ogg', 50, TRUE)
held_gibtonite.forceMove(get_turf(src))
held_gibtonite.det_time = 2 SECONDS
held_gibtonite.GibtoniteReaction(user, "A [src] has targeted [interacting_with] with a thrown and primed")
diff --git a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
index bb40f176d0026..ccc5afb5981ed 100644
--- a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
+++ b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
@@ -215,7 +215,7 @@
/// Shoot a beam at the target atom
/datum/status_effect/golem/plasma/proc/zap_effect(atom/target)
owner.Beam(target, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS)
- playsound(owner, 'sound/magic/lightningshock.ogg', vol = 50, vary = TRUE)
+ playsound(owner, 'sound/effects/magic/lightningshock.ogg', vol = 50, vary = TRUE)
/// Makes you spaceproof
/datum/status_effect/golem/plasteel
@@ -313,8 +313,8 @@
arm.unarmed_attack_verbs = list("slash")
arm.grappled_attack_verb = "lacerate"
arm.unarmed_attack_effect = ATTACK_EFFECT_CLAW
- arm.unarmed_attack_sound = 'sound/weapons/slash.ogg'
- arm.unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ arm.unarmed_attack_sound = 'sound/items/weapons/slash.ogg'
+ arm.unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
RegisterSignal(arm, COMSIG_QDELETING, PROC_REF(on_arm_destroyed))
LAZYADD(modified_arms, arm)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index d76861b6c4932..cb3bb78f65683 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -133,7 +133,7 @@
if(!try_heal_checks(patient, user, heal_brute, heal_burn))
return FALSE
if(patient.heal_bodypart_damage((heal_brute * patient.maxHealth/100)))
- user.visible_message("[user] applies [src] on [patient].", "You apply [src] on [patient].")
+ user.visible_message(span_infoplain(span_green("[user] applies [src] on [patient].")), span_infoplain(span_green("You apply [src] on [patient].")))
return TRUE
patient.balloon_alert(user, "can't heal [patient]!")
return FALSE
@@ -279,7 +279,7 @@
if(!do_after(user, treatment_delay, target = patient))
return
- user.visible_message("[user] applies [src] to [patient]'s [limb.plaintext_zone].", "You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone].")
+ user.visible_message(span_infoplain(span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone].")), span_infoplain(span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone].")))
limb.apply_gauze(src)
/obj/item/stack/medical/gauze/twelve
@@ -436,7 +436,7 @@
is_open = TRUE
balloon_alert(user, "opened")
update_appearance()
- playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
+ playsound(src, 'sound/items/poster/poster_ripped.ogg', 20, TRUE)
return
return ..()
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 69dbe87cd5cc9..9e91ba2aaaca2 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -32,15 +32,15 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
max_amount = 50
attack_verb_continuous = list("hits", "bludgeons", "whacks")
attack_verb_simple = list("hit", "bludgeon", "whack")
- hitsound = 'sound/weapons/gun/general/grenade_launch.ogg'
+ hitsound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
embed_type = /datum/embed_data/rods
novariants = TRUE
matter_amount = 2
cost = HALF_SHEET_MATERIAL_AMOUNT
source = /datum/robot_energy_storage/material/iron
merge_type = /obj/item/stack/rods
- pickup_sound = 'sound/items/iron_rod_pick_up.ogg'
- drop_sound = 'sound/items/metal_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/iron_rod_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/metal_drop.ogg'
sound_vary = TRUE
/datum/embed_data/rods
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 19e290170f8af..8415ffa3f407f 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -32,8 +32,8 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
cost = SHEET_MATERIAL_AMOUNT
source = /datum/robot_energy_storage/material/glass
sniffable = TRUE
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/datum/armor/sheet_glass
fire = 50
@@ -104,8 +104,8 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
material_flags = NONE
tableVariant = /obj/structure/table/glass/plasmaglass
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/obj/item/stack/sheet/plasmaglass/fifty
amount = 50
@@ -164,8 +164,8 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
matter_amount = 6
tableVariant = /obj/structure/table/reinforced/rglass
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/obj/item/stack/sheet/rglass/fifty
amount = 50
@@ -204,8 +204,8 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
gulag_valid = TRUE
matter_amount = 8
tableVariant = /obj/structure/table/reinforced/plasmarglass
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/datum/armor/sheet_plasmarglass
melee = 20
@@ -236,8 +236,8 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/titaniumglass
tableVariant = /obj/structure/table/reinforced/titaniumglass
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/obj/item/stack/sheet/titaniumglass/fifty
amount = 50
@@ -268,8 +268,8 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/plastitaniumglass
tableVariant = /obj/structure/table/reinforced/plastitaniumglass
- pickup_sound = 'sound/items/glass_pick_up.ogg'
- drop_sound = 'sound/items/glass_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/glass_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/glass_drop.ogg'
/obj/item/stack/sheet/plastitaniumglass/fifty
amount = 50
@@ -296,7 +296,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
custom_materials = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT)
attack_verb_continuous = list("stabs", "slashes", "slices", "cuts")
attack_verb_simple = list("stab", "slash", "slice", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
resistance_flags = ACID_PROOF
armor_type = /datum/armor/item_shard
max_integrity = 40
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 9dff36dca2dde..3956051d89bc7 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -5,8 +5,8 @@
inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/animalhide
- pickup_sound = 'sound/items/skin_pick_up.ogg'
- drop_sound = 'sound/items/skin_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/skin_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/skin_drop.ogg'
/obj/item/stack/sheet/animalhide/human
name = "human skin"
@@ -193,8 +193,8 @@ GLOBAL_LIST_INIT(carp_recipes, list ( \
icon_state = "sheet-leather"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/leather
- pickup_sound = 'sound/items/skin_pick_up.ogg'
- drop_sound = 'sound/items/skin_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/skin_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/skin_drop.ogg'
GLOBAL_LIST_INIT(leather_recipes, list ( \
new/datum/stack_recipe("wallet", /obj/item/storage/wallet, 1, crafting_flags = NONE, category = CAT_CONTAINERS), \
@@ -326,7 +326,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
/obj/item/stack/sheet/animalhide/attackby(obj/item/W, mob/user, params)
if(W.get_sharpness())
- playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slice.ogg', 50, TRUE, -1)
user.visible_message(span_notice("[user] starts cutting hair off \the [src]."), span_notice("You start cutting the hair off \the [src]..."), span_hear("You hear the sound of a knife rubbing against flesh."))
if(do_after(user, 5 SECONDS, target = src))
to_chat(user, span_notice("You cut the hair from [src.name]."))
@@ -348,8 +348,8 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
icon_state = "sheet-hairlesshide"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/hairlesshide
- pickup_sound = 'sound/items/skin_pick_up.ogg'
- drop_sound = 'sound/items/skin_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/skin_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/skin_drop.ogg'
/obj/item/stack/sheet/hairlesshide/examine(mob/user)
. = ..()
@@ -363,8 +363,8 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
icon_state = "sheet-wetleather"
inhand_icon_state = null
merge_type = /obj/item/stack/sheet/wethide
- pickup_sound = 'sound/items/skin_pick_up.ogg'
- drop_sound = 'sound/items/skin_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/skin_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/skin_drop.ogg'
/// Reduced when exposed to high temperatures
var/wetness = 30
/// Kelvin to start drying
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 877460edfaf7a..c32919094391a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -385,8 +385,8 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
grind_results = list(/datum/reagent/cellulose = 20) //no lignocellulose or lignin reagents yet,
walltype = /turf/closed/wall/mineral/wood
stairs_type = /obj/structure/stairs/wood
- pickup_sound = 'sound/items/wood_pick_up.ogg'
- drop_sound = 'sound/items/wood_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/wood_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/wood_drop.ogg'
/datum/armor/mineral_wood
fire = 50
@@ -684,8 +684,8 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
merge_type = /obj/item/stack/sheet/cardboard
grind_results = list(/datum/reagent/cellulose = 10)
material_type = /datum/material/cardboard
- pickup_sound = 'sound/items/cardboard_pick_up.ogg'
- drop_sound = 'sound/items/cardboard_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/cardboard_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/cardboard_drop.ogg'
/obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt)
. = ..()
@@ -863,8 +863,8 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
throwforce = 7
material_type = /datum/material/plastic
merge_type = /obj/item/stack/sheet/plastic
- pickup_sound = 'sound/items/plastic_pick_up.ogg'
- drop_sound = 'sound/items/plastic_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/plastic_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/plastic_drop.ogg'
/obj/item/stack/sheet/plastic/fifty
amount = 50
diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm
index 110713d343612..b9a66202a16e3 100644
--- a/code/game/objects/items/stacks/sheets/sheets.dm
+++ b/code/game/objects/items/stacks/sheets/sheets.dm
@@ -13,8 +13,8 @@
attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "smash")
novariants = FALSE
material_flags = MATERIAL_EFFECTS
- pickup_sound = 'sound/items/metal_pick_up.ogg'
- drop_sound = 'sound/items/metal_drop.ogg'
+ pickup_sound = 'sound/items/handling/materials/metal_pick_up.ogg'
+ drop_sound = 'sound/items/handling/materials/metal_drop.ogg'
var/sheettype = null //this is used for girders in the creation of walls/false walls
///If true, this is worth points in the gulag labour stacker
var/gulag_valid = FALSE
diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm
index acfc59b64d037..a1394bbad4fd9 100644
--- a/code/game/objects/items/stacks/tape.dm
+++ b/code/game/objects/items/stacks/tape.dm
@@ -29,14 +29,14 @@
if(user.get_inactive_held_item() == src)
if(is_zero_amount(delete_if_zero = TRUE))
return
- playsound(user, 'sound/items/duct_tape_rip.ogg', 50, TRUE)
+ playsound(user, 'sound/items/duct_tape/duct_tape_rip.ogg', 50, TRUE)
if(!do_after(user, 1 SECONDS))
return
var/new_tape_gag = new tape_gag(src)
user.put_in_hands(new_tape_gag)
use(1)
to_chat(user, span_notice("You rip off a piece of tape."))
- playsound(user, 'sound/items/duct_tape_snap.ogg', 50, TRUE)
+ playsound(user, 'sound/items/duct_tape/duct_tape_snap.ogg', 50, TRUE)
return TRUE
return ..()
@@ -53,10 +53,10 @@
return ITEM_INTERACT_BLOCKING
user.visible_message(span_notice("[user] begins wrapping [target] with [src]."), span_notice("You begin wrapping [target] with [src]."))
- playsound(user, 'sound/items/duct_tape_rip.ogg', 50, TRUE)
+ playsound(user, 'sound/items/duct_tape/duct_tape_rip.ogg', 50, TRUE)
if(do_after(user, 3 SECONDS, target=target))
- playsound(user, 'sound/items/duct_tape_snap.ogg', 50, TRUE)
+ playsound(user, 'sound/items/duct_tape/duct_tape_snap.ogg', 50, TRUE)
use(1)
if(istype(target, /obj/item/clothing/gloves/fingerless))
var/obj/item/clothing/gloves/tackler/offbrand/O = new /obj/item/clothing/gloves/tackler/offbrand
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index b4855c52fae35..8d8b38c039294 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -83,7 +83,7 @@
return
target_plating = target_plating.place_on_top(placed_turf_path, flags = CHANGETURF_INHERIT_AIR)
target_plating.setDir(turf_dir)
- playsound(target_plating, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(target_plating, 'sound/items/weapons/genhit.ogg', 50, TRUE)
return target_plating // Most executions should end here.
// If we and the target tile share the same initial baseturf and they consent, replace em.
@@ -98,7 +98,7 @@
target_plating = target_plating.ChangeTurf(placed_turf_path, target_plating.baseturfs, CHANGETURF_INHERIT_AIR)
target_plating.setDir(turf_dir)
- playsound(target_plating, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(target_plating, 'sound/items/weapons/genhit.ogg', 50, TRUE)
return target_plating
/obj/item/stack/tile/handle_openspace_click(turf/target, mob/user, list/modifiers)
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index d1cbb7f1ce8a3..0b6c26899f21c 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -11,12 +11,28 @@
icon_state = "wrap_paper"
inhand_icon_state = "wrap_paper"
greyscale_config = /datum/greyscale_config/wrap_paper
- item_flags = NOBLUDGEON
amount = 25
max_amount = 25
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/wrapping_paper
singular_name = "wrapping paper"
+ throwforce = 0
+ w_class = WEIGHT_CLASS_TINY
+ throw_speed = 3
+ throw_range = 5
+ hitsound = 'sound/effects/bonk.ogg'
+
+/obj/item/stack/wrapping_paper/Initialize(mapload)
+ . = ..()
+ ADD_TRAIT(src, TRAIT_CUSTOM_TAP_SOUND, INNATE_TRAIT)
+
+/obj/item/stack/wrapping_paper/attack(mob/living/target_mob, mob/living/user, params)
+ . = ..()
+ user.visible_message(
+ span_warning("[user] baps [target_mob] on the head with [src]!"),
+ span_warning("You bap [target_mob] on the head with [src]!"),
+ )
+ target_mob.add_mood_event("roll", /datum/mood_event/bapped)
/obj/item/stack/wrapping_paper/Initialize(mapload)
. = ..()
@@ -155,7 +171,6 @@
else
balloon_alert(user, "not enough paper!")
return ITEM_INTERACT_BLOCKING
-
else if(istype(interacting_with, /obj/machinery/portable_atmospherics))
var/obj/machinery/portable_atmospherics/portable_atmospherics = interacting_with
if(portable_atmospherics.anchored)
@@ -203,3 +218,17 @@
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 5
+ hitsound = 'sound/effects/bonk.ogg'
+
+/obj/item/c_tube/Initialize(mapload)
+ . = ..()
+ ADD_TRAIT(src, TRAIT_CUSTOM_TAP_SOUND, INNATE_TRAIT)
+
+/obj/item/c_tube/attack(mob/living/target_mob, mob/living/user, params)
+ . = ..()
+ user.visible_message(
+ span_warning("[user] baps [target_mob] on the head with [src]!"),
+ span_warning("You bap [target_mob] on the head with [src]!"),
+ )
+ target_mob.add_mood_event("roll", /datum/mood_event/bapped)
+
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index a88da6537b64e..52c4d13def241 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -250,7 +250,7 @@
attack_verb_simple = list("MEAT", "MEAT MEAT")
custom_materials = list(/datum/material/meat = SHEET_MATERIAL_AMOUNT * 25) // MEAT
///Sounds used in the squeak component
- var/list/meat_sounds = list('sound/effects/blobattack.ogg' = 1)
+ var/list/meat_sounds = list('sound/effects/blob/blobattack.ogg' = 1)
///Reagents added to the edible component, ingested when you EAT the MEAT
var/list/meat_reagents = list(
/datum/reagent/consumable/nutriment/protein = 10,
@@ -417,11 +417,11 @@
// How much time it takes to zip up (close) the duffelbag
var/zip_up_duration = 0.5 SECONDS
// Audio played during zipup
- var/zip_up_sfx = 'sound/items/zip_up.ogg'
+ var/zip_up_sfx = 'sound/items/zip/zip_up.ogg'
// How much time it takes to unzip the duffel
var/unzip_duration = 2.1 SECONDS
// Audio played during unzip
- var/unzip_sfx = 'sound/items/un_zip.ogg'
+ var/unzip_sfx = 'sound/items/zip/un_zip.ogg'
/obj/item/storage/backpack/duffelbag/Initialize(mapload)
. = ..()
@@ -642,7 +642,7 @@
zip_slowdown = 0.3
// Faster unzipping. Utilizes the same noise as zipping up to fit the unzip duration.
unzip_duration = 0.5 SECONDS
- unzip_sfx = 'sound/items/zip_up.ogg'
+ unzip_sfx = 'sound/items/zip/zip_up.ogg'
/obj/item/storage/backpack/duffelbag/syndie/hitman
desc = "A large duffel bag for holding extra things. There is a Nanotrasen logo on the back."
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 095250fdcca52..864078c4b0839 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -396,9 +396,9 @@
do_scatter(tray_item)
if(prob(50))
- playsound(M, 'sound/items/trayhit1.ogg', 50, TRUE)
+ playsound(M, 'sound/items/trayhit/trayhit1.ogg', 50, TRUE)
else
- playsound(M, 'sound/items/trayhit2.ogg', 50, TRUE)
+ playsound(M, 'sound/items/trayhit/trayhit2.ogg', 50, TRUE)
if(ishuman(M))
if(prob(10))
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index b5bd602076e53..708f05a72b6ed 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -379,7 +379,7 @@
/obj/item/restraints/handcuffs,
/obj/item/restraints/legcuffs/bola,
))
- atom_storage.open_sound = 'sound/items/holster.ogg'
+ atom_storage.open_sound = 'sound/items/handling/holster_open.ogg'
atom_storage.open_sound_vary = TRUE
atom_storage.rustle_sound = FALSE
diff --git a/code/game/objects/items/storage/boxes/_boxes.dm b/code/game/objects/items/storage/boxes/_boxes.dm
index 9401527299689..58e68b4487ab7 100644
--- a/code/game/objects/items/storage/boxes/_boxes.dm
+++ b/code/game/objects/items/storage/boxes/_boxes.dm
@@ -8,8 +8,8 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
resistance_flags = FLAMMABLE
- drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
- pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
+ drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
/// What material do we get when we fold this box?
var/foldable_result = /obj/item/stack/sheet/cardboard
/// What drawing will we get on the face of the box?
@@ -19,8 +19,8 @@
. = ..()
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
update_appearance()
- atom_storage.open_sound = 'sound/items/cardboard_box_open.ogg'
- atom_storage.rustle_sound = 'sound/items/cardboard_box_rustle.ogg'
+ atom_storage.open_sound = 'sound/items/handling/cardboard_box/cardboard_box_open.ogg'
+ atom_storage.rustle_sound = 'sound/items/handling/cardboard_box/cardboard_box_rustle.ogg'
/obj/item/storage/box/suicide_act(mob/living/carbon/user)
var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm
index 767f351635d3a..f50629818ecab 100644
--- a/code/game/objects/items/storage/boxes/service_boxes.dm
+++ b/code/game/objects/items/storage/boxes/service_boxes.dm
@@ -47,7 +47,7 @@
/obj/item/storage/box/mousetraps
name = "box of Pest-B-Gon mousetraps"
- desc = "Keep out of reach of children."
+ desc = span_alert("Keep out of reach of children.")
illustration = "mousetrap"
/obj/item/storage/box/mousetraps/PopulateContents()
diff --git a/code/game/objects/items/storage/holsters.dm b/code/game/objects/items/storage/holsters.dm
index cc8a790c8ef34..010cc7ffd7f5a 100644
--- a/code/game/objects/items/storage/holsters.dm
+++ b/code/game/objects/items/storage/holsters.dm
@@ -33,7 +33,7 @@
/obj/item/gun/energy/laser/captain,
/obj/item/gun/energy/e_gun/hos,
))
- atom_storage.open_sound = 'sound/items/holster.ogg'
+ atom_storage.open_sound = 'sound/items/handling/holster_open.ogg'
atom_storage.open_sound_vary = TRUE
/obj/item/storage/belt/holster/energy
diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm
index e5db3d75855ea..643a1275b6f59 100644
--- a/code/game/objects/items/storage/medkit.dm
+++ b/code/game/objects/items/storage/medkit.dm
@@ -18,8 +18,8 @@
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
throw_speed = 3
throw_range = 7
- drop_sound = 'sound/items/medkit_drop.ogg'
- pickup_sound = 'sound/items/medkit_pick_up.ogg'
+ drop_sound = 'sound/items/handling/medkit/medkit_drop.ogg'
+ pickup_sound = 'sound/items/handling/medkit/medkit_pick_up.ogg'
sound_vary = TRUE
var/empty = FALSE
/// Defines damage type of the medkit. General ones stay null. Used for medibot healing bonuses
@@ -82,9 +82,9 @@
/obj/item/storage/medkit/Initialize(mapload)
. = ..()
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
- atom_storage.open_sound = 'sound/items/medkit_open.ogg'
+ atom_storage.open_sound = 'sound/items/handling/medkit/medkit_open.ogg'
atom_storage.open_sound_vary = TRUE
- atom_storage.rustle_sound = 'sound/items/medkit_rustle.ogg'
+ atom_storage.rustle_sound = 'sound/items/handling/medkit/medkit_rustle.ogg'
/obj/item/storage/medkit/regular
icon_state = "medkit"
diff --git a/code/game/objects/items/storage/sixpack.dm b/code/game/objects/items/storage/sixpack.dm
index a6e36bf05925f..f1a950f025b8c 100644
--- a/code/game/objects/items/storage/sixpack.dm
+++ b/code/game/objects/items/storage/sixpack.dm
@@ -42,9 +42,9 @@
new /obj/item/reagent_containers/cup/soda_cans/cola(src)
/obj/item/storage/cans/sixbeer
- name = "beer bottle ring"
- desc = "Holds six beer bottles. Remember to recycle when you're done!"
+ name = "beer can ring"
+ desc = "Holds six beers. Remember to recycle when you're done!"
/obj/item/storage/cans/sixbeer/PopulateContents()
for(var/i in 1 to 6)
- new /obj/item/reagent_containers/cup/glass/bottle/beer(src)
+ new /obj/item/reagent_containers/cup/soda_cans/beer(src)
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 873b45210cdec..c939e3d0dd9f4 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -16,9 +16,9 @@
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5)
attack_verb_continuous = list("robusts")
attack_verb_simple = list("robust")
- hitsound = 'sound/weapons/smash.ogg'
- drop_sound = 'sound/items/handling/toolbox_drop.ogg'
- pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR
var/latches = "single_latch"
var/has_latches = TRUE
@@ -33,8 +33,8 @@
if(prob(1))
latches = "triple_latch"
update_appearance()
- atom_storage.open_sound = 'sound/items/toolbox_open.ogg'
- atom_storage.rustle_sound = 'sound/items/toolbox_rustle.ogg'
+ atom_storage.open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg'
+ atom_storage.rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg'
AddElement(/datum/element/falling_hazard, damage = force, wound_bonus = wound_bonus, hardhat_safety = TRUE, crushes = FALSE, impact_sound = hitsound)
/obj/item/storage/toolbox/update_overlays()
diff --git a/code/game/objects/items/tail_pin.dm b/code/game/objects/items/tail_pin.dm
index 71bd50b1dda21..df191da845aa4 100644
--- a/code/game/objects/items/tail_pin.dm
+++ b/code/game/objects/items/tail_pin.dm
@@ -8,7 +8,7 @@
throwforce = 0
throw_speed = 1
custom_materials = list(/datum/material/iron= HALF_SHEET_MATERIAL_AMOUNT)
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("pokes", "jabs", "pins the tail on")
attack_verb_simple = list("poke", "jab")
sharpness = SHARP_POINTY
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index a7a577c77cf16..6976c936b665f 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -14,10 +14,16 @@
var/on = FALSE
/// If the jetpack will stop when you stop moving
var/stabilize = FALSE
+ /// If the jetpack will have a speedboost in space/nograv or not
+ var/full_speed = TRUE
/// If our jetpack is disabled, from getting EMPd
var/disabled = FALSE
/// Callback for the jetpack component
var/thrust_callback
+ /// How much force out jetpack can output per tick
+ var/drift_force = 1.5 NEWTONS
+ /// How much force this jetpack can output per tick to stabilize the user
+ var/stabilizer_force = 1.2 NEWTONS
/obj/item/tank/jetpack/Initialize(mapload)
. = ..()
@@ -35,19 +41,27 @@
* Arguments
* stabilize - Should this jetpack be stabalized
*/
-/obj/item/tank/jetpack/proc/configure_jetpack(stabilize)
+/obj/item/tank/jetpack/proc/configure_jetpack(stabilize, mob/user = null)
src.stabilize = stabilize
AddComponent( \
/datum/component/jetpack, \
src.stabilize, \
+ drift_force, \
+ stabilizer_force, \
COMSIG_JETPACK_ACTIVATED, \
COMSIG_JETPACK_DEACTIVATED, \
JETPACK_ACTIVATION_FAILED, \
thrust_callback, \
- /datum/effect_system/trail_follow/ion \
+ /datum/effect_system/trail_follow/ion, \
)
+ if (!isnull(user) && user.get_item_by_slot(slot_flags) == src)
+ if (!stabilize)
+ ADD_TRAIT(user, TRAIT_NOGRAV_ALWAYS_DRIFT, JETPACK_TRAIT)
+ else
+ REMOVE_TRAIT(user, TRAIT_NOGRAV_ALWAYS_DRIFT, JETPACK_TRAIT)
+
/obj/item/tank/jetpack/item_action_slot_check(slot)
if(slot & slot_flags)
return TRUE
@@ -73,7 +87,7 @@
cycle(user)
else if(istype(action, /datum/action/item_action/jetpack_stabilization))
if(on)
- configure_jetpack(!stabilize)
+ configure_jetpack(!stabilize, user)
to_chat(user, span_notice("You turn the jetpack stabilization [stabilize ? "on" : "off"]."))
else
toggle_internals(user)
@@ -105,12 +119,19 @@
return FALSE
on = TRUE
update_icon(UPDATE_ICON_STATE)
+ if(full_speed)
+ user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
+ if (!stabilize)
+ ADD_TRAIT(user, TRAIT_NOGRAV_ALWAYS_DRIFT, JETPACK_TRAIT)
return TRUE
/obj/item/tank/jetpack/proc/turn_off(mob/user)
SEND_SIGNAL(src, COMSIG_JETPACK_DEACTIVATED, user)
on = FALSE
update_icon(UPDATE_ICON_STATE)
+ if(user)
+ user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
+ REMOVE_TRAIT(user, TRAIT_NOGRAV_ALWAYS_DRIFT, JETPACK_TRAIT)
/obj/item/tank/jetpack/proc/allow_thrust(num, use_fuel = TRUE)
if(!ismob(loc))
@@ -168,6 +189,9 @@
worn_icon_state = "jetpack-improvised"
volume = 20 //normal jetpacks have 70 volume
gas_type = null //it starts empty
+ full_speed = FALSE
+ drift_force = 1 NEWTONS
+ stabilizer_force = 0.5 NEWTONS
/obj/item/tank/jetpack/improvised/allow_thrust(num)
if(!ismob(loc))
@@ -210,6 +234,8 @@
volume = 90
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //steal objective items are hard to destroy.
slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_SUITSTORE
+ drift_force = 2 NEWTONS
+ stabilizer_force = 2 NEWTONS
/obj/item/tank/jetpack/oxygen/security
name = "security jetpack (oxygen)"
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index 9c7138e00dee0..8a7f18ed2cc5d 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -21,9 +21,9 @@
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BACK
worn_icon = 'icons/mob/clothing/back.dmi' //since these can also get thrown into suit storage slots. if something goes on the belt, set this to null.
- hitsound = 'sound/weapons/smash.ogg'
- pickup_sound = 'sound/items/gas_tank_pick_up.ogg'
- drop_sound = 'sound/items/gas_tank_drop.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
+ pickup_sound = 'sound/items/handling/gas_tank/gas_tank_pick_up.ogg'
+ drop_sound = 'sound/items/handling/gas_tank/gas_tank_drop.ogg'
sound_vary = TRUE
pressure_resistance = ONE_ATMOSPHERE * 5
force = 5
@@ -86,13 +86,13 @@
/// Called by carbons after they connect the tank to their breathing apparatus.
/obj/item/tank/proc/after_internals_opened(mob/living/carbon/carbon_target)
breathing_mob = carbon_target
- playsound(loc, 'sound/items/internals_on.ogg', 15, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(loc, 'sound/items/internals/internals_on.ogg', 15, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
RegisterSignal(carbon_target, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
/// Called by carbons after they disconnect the tank from their breathing apparatus.
/obj/item/tank/proc/after_internals_closed(mob/living/carbon/carbon_target)
breathing_mob = null
- playsound(loc, 'sound/items/internals_off.ogg', 15, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(loc, 'sound/items/internals/internals_off.ogg', 15, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
UnregisterSignal(carbon_target, COMSIG_MOB_GET_STATUS_TAB_ITEMS)
/obj/item/tank/proc/get_status_tab_item(mob/living/source, list/items)
@@ -443,7 +443,7 @@
/obj/item/tank/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
audible_message(span_warning("[icon2html(src, hearers(src))] *beep* *beep* *beep*"))
- playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ playsound(src, 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
addtimer(CALLBACK(src, PROC_REF(ignite)), 1 SECONDS)
/// Attaches an assembly holder to the tank to create a bomb.
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 15db2a5d3edf2..1c23937d2b589 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -371,7 +371,7 @@
qdel(src)
// Please don't spacedrift thanks
-/obj/effect/resin_container/newtonian_move(direction, instant = FALSE, start_delay = 0)
+/obj/effect/resin_container/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 0, controlled_cap = null)
return TRUE
#undef EXTINGUISHER
diff --git a/code/game/objects/items/tcg/tcg.dm b/code/game/objects/items/tcg/tcg.dm
index 30650fcd69f7e..1f6c334c9921b 100644
--- a/code/game/objects/items/tcg/tcg.dm
+++ b/code/game/objects/items/tcg/tcg.dm
@@ -400,7 +400,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices)
new /obj/item/tcgcard(get_turf(user), series, template)
to_chat(user, span_notice("Wow! Check out these cards!"))
new /obj/effect/decal/cleanable/wrapping(get_turf(user))
- playsound(loc, 'sound/items/poster_ripped.ogg', 20, TRUE)
+ playsound(loc, 'sound/items/poster/poster_ripped.ogg', 20, TRUE)
if(prob(contains_coin))
to_chat(user, span_notice("...and it came with a flipper, too!"))
new /obj/item/coin/thunderdome(get_turf(user))
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index 6fa7e8d23b340..8634336504d54 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -365,7 +365,7 @@
if(ishuman(loc))
var/mob/living/carbon/human/holder = loc
balloon_alert(holder, "teleporter beeps")
- playsound(src, 'sound/machines/twobeep.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
+ playsound(src, 'sound/machines/beep/twobeep.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
/obj/item/syndicate_teleporter/emp_act(severity)
. = ..()
@@ -479,7 +479,7 @@
new /obj/effect/temp_visual/teleport_abductor/syndi_teleporter(destination)
playsound(mobloc, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
playsound(destination, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
- playsound(destination, 'sound/magic/disintegrate.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(destination, 'sound/effects/magic/disintegrate.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
if(!not_holding_tele)
to_chat(victim, span_userdanger("You teleport into [destination], [src] tries to save you, but..."))
else
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index d51130a4d21d2..a2efbe2d4beba 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -254,7 +254,7 @@
icon_state = "supermatter_scalpel"
toolspeed = 0.5
damtype = BURN
- usesound = 'sound/weapons/bladeslice.ogg'
+ usesound = 'sound/items/weapons/bladeslice.ogg'
var/usesLeft
/obj/item/scalpel/supermatter/Initialize(mapload)
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index 20e3846adefab..b98ace86cf006 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -6,8 +6,8 @@
inhand_icon_state = "crowbar"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
- usesound = 'sound/items/crowbar.ogg'
- operating_sound = 'sound/items/crowbar_prying.ogg'
+ usesound = 'sound/items/tools/crowbar.ogg'
+ operating_sound = 'sound/items/tools/crowbar_prying.ogg'
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT
force = 5
@@ -15,8 +15,8 @@
demolition_mod = 1.25
w_class = WEIGHT_CLASS_SMALL
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5)
- drop_sound = 'sound/items/handling/crowbar_drop.ogg'
- pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/crowbar_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/crowbar_pickup.ogg'
attack_verb_continuous = list("attacks", "bashes", "batters", "bludgeons", "whacks")
attack_verb_simple = list("attack", "bash", "batter", "bludgeon", "whack")
@@ -35,7 +35,7 @@
/obj/item/crowbar/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(loc, 'sound/weapons/genhit.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/genhit.ogg', 50, TRUE, -1)
return BRUTELOSS
/obj/item/crowbar/red
@@ -47,7 +47,7 @@
name = "alien crowbar"
desc = "A hard-light crowbar. It appears to pry by itself, without any effort required."
icon = 'icons/obj/antags/abductor.dmi'
- usesound = 'sound/weapons/sonic_jackhammer.ogg'
+ usesound = 'sound/items/weapons/sonic_jackhammer.ogg'
custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT)
icon_state = "crowbar"
belt_icon_state = "crowbar_alien"
@@ -115,7 +115,7 @@
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT*1.75)
- usesound = 'sound/items/jaws_pry.ogg'
+ usesound = 'sound/items/tools/jaws_pry.ogg'
force = 15
w_class = WEIGHT_CLASS_NORMAL
toolspeed = 0.7
@@ -152,7 +152,7 @@
tool_behaviour = (active ? TOOL_WIRECUTTER : TOOL_CROWBAR)
if(user)
balloon_alert(user, "attached [active ? "cutting" : "prying"]")
- playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/change_jaws.ogg', 50, TRUE)
if(tool_behaviour == TOOL_CROWBAR)
RemoveElement(/datum/element/cuffsnapping, snap_time_weak_handcuffs, snap_time_strong_handcuffs)
else
@@ -174,10 +174,10 @@
/obj/item/crowbar/power/suicide_act(mob/living/user)
if(tool_behaviour == TOOL_CROWBAR)
user.visible_message(span_suicide("[user] is putting [user.p_their()] head in [src], it looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(loc, 'sound/items/jaws_pry.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/tools/jaws_pry.ogg', 50, TRUE, -1)
else
user.visible_message(span_suicide("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!"))
- playsound(loc, 'sound/items/jaws_cut.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/tools/jaws_cut.ogg', 50, TRUE, -1)
if(iscarbon(user))
var/mob/living/carbon/suicide_victim = user
var/obj/item/bodypart/target_bodypart = suicide_victim.get_bodypart(BODY_ZONE_HEAD)
@@ -192,7 +192,7 @@
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_crowbar"
worn_icon_state = "toolkit_engiborg_crowbar" //error sprite - this shouldn't have been dropped
- usesound = 'sound/items/jaws_pry.ogg'
+ usesound = 'sound/items/tools/jaws_pry.ogg'
force = 10
toolspeed = 0.5
@@ -234,7 +234,7 @@
user.log_message("tried to pry open [mech], located at [loc_name(mech)], which is currently occupied by [mech.occupants.Join(", ")].", LOG_ATTACK)
var/mech_dir = mech.dir
mech.balloon_alert(user, "prying open...")
- playsound(mech, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+ playsound(mech, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE)
if(!use_tool(mech, user, (mech.mecha_flags & IS_ENCLOSED) ? 5 SECONDS : 3 SECONDS, volume = 0, extra_checks = CALLBACK(src, PROC_REF(extra_checks), mech, mech_dir)))
mech.balloon_alert(user, "interrupted!")
return
@@ -243,7 +243,7 @@
if(isAI(occupant))
continue
mech.mob_exit(occupant, randomstep = TRUE)
- playsound(mech, 'sound/machines/airlockforced.ogg', 75, TRUE)
+ playsound(mech, 'sound/machines/airlock/airlockforced.ogg', 75, TRUE)
/obj/item/crowbar/mechremoval/proc/extra_checks(obj/vehicle/sealed/mecha/mech, mech_dir)
return HAS_TRAIT(src, TRAIT_WIELDED) && LAZYLEN(mech.occupants) && mech.dir == mech_dir
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index b9e0d15e69f6e..8cf9005d19137 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -20,14 +20,14 @@
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.75)
attack_verb_continuous = list("stabs")
attack_verb_simple = list("stab")
- hitsound = 'sound/weapons/bladeslice.ogg'
- usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
- operating_sound = 'sound/items/screwdriver_operating.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
+ usesound = list('sound/items/tools/screwdriver.ogg', 'sound/items/tools/screwdriver2.ogg')
+ operating_sound = 'sound/items/tools/screwdriver_operating.ogg'
tool_behaviour = TOOL_SCREWDRIVER
toolspeed = 1
armor_type = /datum/armor/item_screwdriver
- drop_sound = 'sound/items/handling/screwdriver_drop.ogg'
- pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/screwdriver_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/screwdriver_pickup.ogg'
sharpness = SHARP_POINTY
greyscale_config = /datum/greyscale_config/screwdriver
greyscale_config_inhand_left = /datum/greyscale_config/screwdriver_inhand_left
@@ -68,7 +68,7 @@
icon_state = "screwdriver_a"
inhand_icon_state = "screwdriver_nuke"
custom_materials = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT*5, /datum/material/silver=SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT)
- usesound = 'sound/items/pshoom.ogg'
+ usesound = 'sound/items/pshoom/pshoom.ogg'
toolspeed = 0.1
random_color = FALSE
greyscale_config_inhand_left = null
@@ -93,8 +93,8 @@
throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far
attack_verb_continuous = list("drills", "screws", "jabs", "whacks")
attack_verb_simple = list("drill", "screw", "jab", "whack")
- hitsound = 'sound/items/drill_hit.ogg'
- usesound = 'sound/items/drill_use.ogg'
+ hitsound = 'sound/items/tools/drill_hit.ogg'
+ usesound = 'sound/items/tools/drill_use.ogg'
w_class = WEIGHT_CLASS_NORMAL
toolspeed = 0.7
random_color = FALSE
@@ -130,7 +130,7 @@
tool_behaviour = (active ? TOOL_WRENCH : TOOL_SCREWDRIVER)
if(user)
balloon_alert(user, "attached [active ? "bolt bit" : "screw bit"]")
- playsound(src, 'sound/items/change_drill.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/change_drill.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/screwdriver/power/examine()
@@ -142,7 +142,7 @@
user.visible_message(span_suicide("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!"))
else
user.visible_message(span_suicide("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(loc, 'sound/items/drill_use.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/tools/drill_use.ogg', 50, TRUE, -1)
return BRUTELOSS
/obj/item/screwdriver/cyborg
@@ -150,8 +150,8 @@
desc = "A powerful automated screwdriver, designed to be both precise and quick."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_screwdriver"
- hitsound = 'sound/items/drill_hit.ogg'
- usesound = 'sound/items/drill_use.ogg'
+ hitsound = 'sound/items/tools/drill_hit.ogg'
+ usesound = 'sound/items/tools/drill_use.ogg'
toolspeed = 0.5
random_color = FALSE
diff --git a/code/game/objects/items/tools/spess_knife.dm b/code/game/objects/items/tools/spess_knife.dm
index 9fd5dbb01582a..4019aa41c701d 100644
--- a/code/game/objects/items/tools/spess_knife.dm
+++ b/code/game/objects/items/tools/spess_knife.dm
@@ -68,7 +68,7 @@
update_tool_parameters()
update_appearance(UPDATE_ICON_STATE)
- playsound(src, 'sound/weapons/empty.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/empty.ogg', 50, TRUE)
/// Used to pick random tool behavior for the knife
/obj/item/spess_knife/proc/pick_tool()
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index dfc406437201b..41bcc25eba652 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -12,9 +12,9 @@
force = 3
throwforce = 5
hitsound = SFX_SWING_HIT
- usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg')
- drop_sound = 'sound/items/handling/weldingtool_drop.ogg'
- pickup_sound = 'sound/items/handling/weldingtool_pickup.ogg'
+ usesound = list('sound/items/tools/welder.ogg', 'sound/items/tools/welder2.ogg')
+ drop_sound = 'sound/items/handling/tools/weldingtool_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/weldingtool_pickup.ogg'
light_system = OVERLAY_LIGHT
light_range = 2
light_power = 1.5
@@ -46,8 +46,8 @@
/// When fuel was last removed.
var/burned_fuel_for = 0
- var/activation_sound = 'sound/items/welderactivate.ogg'
- var/deactivation_sound = 'sound/items/welderdeactivate.ogg'
+ var/activation_sound = 'sound/items/tools/welderactivate.ogg'
+ var/deactivation_sound = 'sound/items/tools/welderdeactivate.ogg'
/datum/armor/item_weldingtool
fire = 100
@@ -242,7 +242,7 @@
playsound(loc, activation_sound, 50, TRUE)
force = 15
damtype = BURN
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
update_appearance()
START_PROCESSING(SSobj, src)
else
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 7f2b11777d8f5..234f268ace29d 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -22,11 +22,11 @@
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8)
attack_verb_continuous = list("pinches", "nips")
attack_verb_simple = list("pinch", "nip")
- hitsound = 'sound/items/wirecutter.ogg'
- usesound = 'sound/items/wirecutter.ogg'
- operating_sound = 'sound/items/wirecutter_cut.ogg'
- drop_sound = 'sound/items/handling/wirecutter_drop.ogg'
- pickup_sound = 'sound/items/handling/wirecutter_pickup.ogg'
+ hitsound = 'sound/items/tools/wirecutter.ogg'
+ usesound = 'sound/items/tools/wirecutter.ogg'
+ operating_sound = 'sound/items/tools/wirecutter_cut.ogg'
+ drop_sound = 'sound/items/handling/tools/wirecutter_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/wirecutter_pickup.ogg'
tool_behaviour = TOOL_WIRECUTTER
toolspeed = 1
armor_type = /datum/armor/item_wirecutters
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index aa72b5d257ac6..41b4556ebace5 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -13,11 +13,11 @@
throwforce = 7
demolition_mod = 1.25
w_class = WEIGHT_CLASS_SMALL
- usesound = 'sound/items/ratchet.ogg'
- operating_sound = list('sound/items/ratchet_fast.ogg', 'sound/items/ratchet_slow.ogg')
+ usesound = 'sound/items/tools/ratchet.ogg'
+ operating_sound = list('sound/items/tools/ratchet_fast.ogg', 'sound/items/tools/ratchet_slow.ogg')
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*1.5)
- drop_sound = 'sound/items/handling/wrench_drop.ogg'
- pickup_sound = 'sound/items/handling/wrench_pickup.ogg'
+ drop_sound = 'sound/items/handling/tools/wrench_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/wrench_pickup.ogg'
attack_verb_continuous = list("bashes", "batters", "bludgeons", "whacks")
attack_verb_simple = list("bash", "batter", "bludgeon", "whack")
@@ -35,7 +35,7 @@
/obj/item/wrench/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(loc, 'sound/weapons/genhit.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/genhit.ogg', 50, TRUE, -1)
return BRUTELOSS
/obj/item/wrench/abductor
@@ -124,7 +124,7 @@
tool_behaviour = active ? TOOL_WRENCH : initial(tool_behaviour)
if(user)
balloon_alert(user, "[name] [active ? "active, woe!":"restrained"]")
- playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(src, active ? 'sound/items/weapons/saberon.ogg' : 'sound/items/weapons/saberoff.ogg', 5, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/wrench/bolter
diff --git a/code/game/objects/items/toy_mechs.dm b/code/game/objects/items/toy_mechs.dm
index d08deec62e316..9aa8ef8ea0259 100644
--- a/code/game/objects/items/toy_mechs.dm
+++ b/code/game/objects/items/toy_mechs.dm
@@ -129,7 +129,7 @@
to_chat(user, span_notice("You play with [src]."))
timer = world.time + cooldown
if(!quiet)
- playsound(user, 'sound/mecha/mechstep.ogg', 20, TRUE)
+ playsound(user, 'sound/vehicles/mecha/mechstep.ogg', 20, TRUE)
else
. = ..()
@@ -193,7 +193,7 @@
to_chat(user, span_notice("You telekinetically play with [src]."))
timer = world.time + cooldown
if(!quiet)
- playsound(user, 'sound/mecha/mechstep.ogg', 20, TRUE)
+ playsound(user, 'sound/vehicles/mecha/mechstep.ogg', 20, TRUE)
return COMPONENT_CANCEL_ATTACK_CHAIN
@@ -224,12 +224,12 @@
switch(i)
if(1, 3)
SpinAnimation(5, 0)
- playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechstep.ogg', 30, TRUE)
user.adjustBruteLoss(25)
user.adjustStaminaLoss(50)
if(2)
user.SpinAnimation(5, 0)
- playsound(user, 'sound/weapons/smash.ogg', 20, TRUE)
+ playsound(user, 'sound/items/weapons/smash.ogg', 20, TRUE)
combat_health-- //we scratched it!
if(4)
say(special_attack_cry + "!!")
@@ -330,7 +330,7 @@
span_danger("You begin charging [attacker]'s special attack!"))
else //just attack
attacker.SpinAnimation(5, 0)
- playsound(attacker, 'sound/mecha/mechstep.ogg', 30, TRUE)
+ playsound(attacker, 'sound/vehicles/mecha/mechstep.ogg', 30, TRUE)
combat_health--
attacker_controller.visible_message(span_danger("[attacker] devastates [src]!"), \
span_danger("You ram [attacker] into [src]!"), \
@@ -357,7 +357,7 @@
span_danger("[src] and [attacker] clash dramatically, causing sparks to fly!"), \
span_hear("You hear hard plastic rubbing against hard plastic."), COMBAT_MESSAGE_RANGE)
if(5) //both win
- playsound(attacker, 'sound/weapons/parry.ogg', 20, TRUE)
+ playsound(attacker, 'sound/items/weapons/parry.ogg', 20, TRUE)
if(prob(50))
attacker_controller.visible_message(span_danger("[src]'s attack deflects off of [attacker]."), \
span_danger("[src]'s attack deflects off of [attacker]."), \
@@ -374,7 +374,7 @@
span_danger("You begin charging [src]'s special attack!"))
else //just attack
SpinAnimation(5, 0)
- playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechstep.ogg', 30, TRUE)
attacker.combat_health--
src_controller.visible_message(span_danger("[src] smashes [attacker]!"), \
span_danger("You smash [src] into [attacker]!"), \
@@ -476,14 +476,14 @@
switch(special_attack_type)
if(SPECIAL_ATTACK_DAMAGE) //+2 damage
victim.combat_health-=2
- playsound(src, 'sound/weapons/marauder.ogg', 20, TRUE)
+ playsound(src, 'sound/items/weapons/marauder.ogg', 20, TRUE)
if(SPECIAL_ATTACK_HEAL) //+2 healing
combat_health+=2
- playsound(src, 'sound/mecha/mech_shield_raise.ogg', 20, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mech_shield_raise.ogg', 20, TRUE)
if(SPECIAL_ATTACK_UTILITY) //+1 heal, +1 damage
victim.combat_health--
combat_health++
- playsound(src, 'sound/mecha/mechmove01.ogg', 30, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechmove01.ogg', 30, TRUE)
if(SPECIAL_ATTACK_OTHER) //other
super_special_attack(victim)
else
@@ -571,7 +571,7 @@
special_attack_cry = "MEGA HORN"
/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim)
- playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE)
+ playsound(src, 'sound/mobs/non-humanoids/honkbot/honkbot_evil_laugh.ogg', 20, TRUE)
victim.special_attack_cooldown += 3 //Adds cooldown to the other mech and gives a minor self heal
combat_health++
@@ -605,7 +605,7 @@
special_attack_cry = "KILLER CLAMP"
/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim)
- playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 20, TRUE)
+ playsound(src, 'sound/items/weapons/sonic_jackhammer.ogg', 20, TRUE)
if(victim.combat_health < combat_health) //Instantly kills the other mech if its health is below ours.
say("EXECUTE!!")
victim.combat_health = 0
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 139a3fcb216f2..065f4929e4089 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -199,7 +199,7 @@
return ..()
/obj/item/toy/balloon/proc/pop_balloon(monkey_pop = FALSE)
- playsound(src, 'sound/effects/cartoon_pop.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/effects/cartoon_sfx/cartoon_pop.ogg', 50, vary = TRUE)
if(monkey_pop) // Monkeys make money from popping bloons
new /obj/item/coin/iron(get_turf(src))
qdel(src)
@@ -398,7 +398,7 @@
/obj/item/toy/captainsaid/attack_self(mob/living/user)
current_mode++
- playsound(src, 'sound/items/screwdriver2.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, vary = TRUE)
if (current_mode <= modes.len)
balloon_alert(user, "set to [current_mode]")
else
@@ -531,9 +531,9 @@
src.add_fingerprint(user)
if (src.bullets < 1)
user.show_message(span_warning("*click*"), MSG_AUDIBLE)
- playsound(src, 'sound/weapons/gun/revolver/dry_fire.ogg', 30, TRUE)
+ playsound(src, 'sound/items/weapons/gun/revolver/dry_fire.ogg', 30, TRUE)
return ITEM_INTERACT_SUCCESS
- playsound(user, 'sound/weapons/gun/revolver/shot.ogg', 100, TRUE)
+ playsound(user, 'sound/items/weapons/gun/revolver/shot.ogg', 100, TRUE)
src.bullets--
user.visible_message(span_danger("[user] fires [src] at [interacting_with]!"), \
span_danger("You fire [src] at [interacting_with]!"), \
@@ -606,7 +606,7 @@
if(user)
balloon_alert(user, "[active ? "flicked out":"pushed in"] [src]")
- playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 20, TRUE)
+ playsound(src, active ? 'sound/items/weapons/saberon.ogg' : 'sound/items/weapons/saberoff.ogg', 20, TRUE)
update_appearance(UPDATE_ICON)
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -697,9 +697,9 @@
inhand_icon_state = "artistic_toolbox"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
- hitsound = 'sound/weapons/smash.ogg'
- drop_sound = 'sound/items/handling/toolbox_drop.ogg'
- pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
attack_verb_continuous = list("robusts")
attack_verb_simple = list("robust")
var/active = FALSE
@@ -747,7 +747,7 @@
active = FALSE
update_appearance()
visible_message(span_warning("[src] slowly stops rattling and falls still, its latch snapping shut.")) //subtle difference
- playsound(loc, 'sound/weapons/batonextend.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/weapons/batonextend.ogg', 100, TRUE)
animate(src, transform = matrix())
/*
@@ -790,7 +790,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices")
attack_verb_simple = list("attack", "slash", "stab", "slice")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
/*
* Snap pops
@@ -963,7 +963,7 @@
cooldown = world.time + 600
user.audible_message(span_hear("You hear the click of a button."), self_message = span_notice("You activate [src], it plays a loud noise!"))
sleep(0.5 SECONDS)
- playsound(src, 'sound/machines/alarm.ogg', 20, FALSE)
+ playsound(src, 'sound/announcer/alarm/nuke_alarm.ogg', 20, FALSE)
sleep(14 SECONDS)
user.visible_message(span_alert("[src] violently explodes!"))
explosion(src, light_impact_range = 1)
@@ -973,7 +973,7 @@
user.visible_message(span_warning("[user] presses a button on [src]."), span_notice("You activate [src], it plays a loud noise!"), span_hear("You hear the click of a button."))
sleep(0.5 SECONDS)
icon_state = "nuketoy"
- playsound(src, 'sound/machines/alarm.ogg', 20, FALSE)
+ playsound(src, 'sound/announcer/alarm/nuke_alarm.ogg', 20, FALSE)
sleep(13.5 SECONDS)
icon_state = "nuketoycool"
sleep(cooldown - world.time)
@@ -1032,7 +1032,7 @@
if (cooldown < world.time)
cooldown = (world.time + 300) // Sets cooldown at 30 seconds
user.visible_message(span_warning("[user] presses the big red button."), span_notice("You press the button, it plays a loud noise!"), span_hear("The button clicks loudly."))
- playsound(src, 'sound/effects/explosionfar.ogg', 50, FALSE)
+ playsound(src, 'sound/effects/explosion/explosionfar.ogg', 50, FALSE)
for(var/mob/M in urange(10, src)) // Checks range
if(!M.stat && !isAI(M)) // Checks to make sure whoever's getting shaken is alive/not the AI
// Short delay to match up with the explosion sound
@@ -1104,7 +1104,7 @@
if (cooldown < world.time)
cooldown = world.time + 1800 //3 minutes
user.visible_message(span_warning("[user] rotates a cogwheel on [src]."), span_notice("You rotate a cogwheel on [src], it plays a loud noise!"), span_hear("You hear cogwheels turning."))
- playsound(src, 'sound/magic/clockwork/ark_activation.ogg', 50, FALSE)
+ playsound(src, 'sound/effects/magic/clockwork/ark_activation.ogg', 50, FALSE)
else
to_chat(user, span_alert("The cogwheels are already turning!"))
@@ -1143,7 +1143,7 @@
icon_state = "[initial(icon_state)]_used"
sleep(0.5 SECONDS)
audible_message(span_danger("[icon2html(src, viewers(src))] Hiss!"))
- var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg')
+ var/list/possible_sounds = list('sound/mobs/non-humanoids/hiss/hiss1.ogg', 'sound/mobs/non-humanoids/hiss/hiss2.ogg', 'sound/mobs/non-humanoids/hiss/hiss3.ogg', 'sound/mobs/non-humanoids/hiss/hiss4.ogg')
var/chosen_sound = pick(possible_sounds)
playsound(get_turf(src), chosen_sound, 50, TRUE)
addtimer(VARSET_CALLBACK(src, icon_state, "[initial(icon_state)]"), 4.5 SECONDS)
@@ -1215,7 +1215,7 @@
name = "\improper Cyborg action figure"
icon_state = "borg"
toysay = "I. LIVE. AGAIN."
- toysound = 'sound/voice/liveagain.ogg'
+ toysound = 'sound/mobs/non-humanoids/cyborg/liveagain.ogg'
/obj/item/toy/figure/botanist
name = "\improper Botanist action figure"
@@ -1358,7 +1358,7 @@
name = "\improper Wizard action figure"
icon_state = "wizard"
toysay = "EI NATH!"
- toysound = 'sound/magic/disintegrate.ogg'
+ toysound = 'sound/effects/magic/disintegrate.ogg'
/obj/item/toy/figure/rd
name = "\improper Research Director action figure"
@@ -1369,13 +1369,13 @@
name = "\improper Roboticist action figure"
icon_state = "roboticist"
toysay = "Big stompy mechs!"
- toysound = 'sound/mecha/mechstep.ogg'
+ toysound = 'sound/vehicles/mecha/mechstep.ogg'
/obj/item/toy/figure/scientist
name = "\improper Scientist action figure"
icon_state = "scientist"
toysay = "I call ordnance."
- toysound = 'sound/effects/explosionfar.ogg'
+ toysound = 'sound/effects/explosion/explosionfar.ogg'
/obj/item/toy/figure/syndie
name = "\improper Nuclear Operative action figure"
@@ -1460,7 +1460,7 @@
/obj/item/toy/braintoy/attack_self(mob/user)
if(cooldown <= world.time)
cooldown = (world.time + 10)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/effects/blobattack.ogg', 50, FALSE), 0.5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/effects/blob/blobattack.ogg', 50, FALSE), 0.5 SECONDS)
/*
* Eldritch Toys
@@ -1637,7 +1637,7 @@ GLOBAL_LIST_EMPTY(intento_players)
/obj/item/toy/intento/proc/boot()
say("Game starting!")
- playsound(src, 'sound/machines/synth_yes.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 50, FALSE)
state = STATE_STARTING
COOLDOWN_START(src, next_process, TIME_TO_BEGIN)
@@ -1716,7 +1716,7 @@ GLOBAL_LIST_EMPTY(intento_players)
user.client.give_award(/datum/award/score/intento_score, user, award_score)
say("GAME OVER. Your score was [score]!")
- playsound(src, 'sound/machines/synth_no.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 50, FALSE)
if(user && loc == user && obj_flags & EMAGGED)
ADD_TRAIT(src, TRAIT_NODROP, type)
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 821f994a1ed6f..7015e403141c4 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -67,7 +67,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
. = "A sacred weapon of the higher castes from the clown planet, used to strike fear into the hearts of their foes. Wield it with care."
/obj/item/balloon_mallet/attack(mob/living/target, mob/living/user)
- playsound(loc, 'sound/creatures/clown/hehe.ogg', 20)
+ playsound(loc, 'sound/mobs/non-humanoids/clown/hehe.ogg', 20)
if (!isliving(target))
return
switch(target.mob_mood.sanity)
@@ -94,7 +94,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 2
throwforce = 1
w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
@@ -111,7 +111,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
inhand_icon_state = "claymore"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
force = 40
@@ -120,7 +120,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
block_chance = 50
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
max_integrity = 200
armor_type = /datum/armor/item_claymore
@@ -332,7 +332,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
user.update_held_items()
name = new_name
- playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE)
+ playsound(user, 'sound/items/tools/screwdriver2.ogg', 50, TRUE)
/obj/item/claymore/highlander/robot //BLOODTHIRSTY BORGS NOW COME IN PLAID
icon = 'icons/obj/items_cyborg.dmi'
@@ -363,11 +363,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 40
throwforce = 10
w_class = WEIGHT_CLASS_HUGE
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
block_chance = 50
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
max_integrity = 200
armor_type = /datum/armor/item_katana
@@ -447,7 +447,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throw_speed = 3
throw_range = 6
custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 6)
- hitsound = 'sound/weapons/genhit.ogg'
+ hitsound = 'sound/items/weapons/genhit.ogg'
attack_verb_continuous = list("stubs", "pokes")
attack_verb_simple = list("stub", "poke")
resistance_flags = FIRE_PROOF
@@ -472,7 +472,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce_on = 23, \
throw_speed_on = throw_speed, \
sharpness_on = SHARP_EDGED, \
- hitsound_on = 'sound/weapons/bladeslice.ogg', \
+ hitsound_on = 'sound/items/weapons/bladeslice.ogg', \
w_class_on = WEIGHT_CLASS_NORMAL, \
attack_verb_continuous_on = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts"), \
attack_verb_simple_on = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut"), \
@@ -504,7 +504,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
w_class = WEIGHT_CLASS_SMALL
attack_verb_continuous = list("calls", "rings")
attack_verb_simple = list("call", "ring")
- hitsound = 'sound/weapons/ring.ogg'
+ hitsound = 'sound/items/weapons/ring.ogg'
/obj/item/phone/suicide_act(mob/living/user)
if(locate(/obj/structure/chair/stool) in user.loc)
@@ -518,7 +518,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
desc = "A long bamboo-made staff with steel-capped ends. It is rumoured that initiates of Spider Clan train with such before getting to learn how to use a katana."
force = 10
block_chance = 45
- block_sound = 'sound/weapons/genhit.ogg'
+ block_sound = 'sound/items/weapons/genhit.ogg'
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
hitsound = SFX_SWING_HIT
@@ -675,7 +675,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(user)
balloon_alert(user, active ? "extended" : "collapsed")
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/staff
@@ -892,7 +892,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
to_chat(user, span_warning("You're already ready to do a home run!"))
return ..()
to_chat(user, span_warning("You begin gathering strength..."))
- playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/lightning_chargeup.ogg', 65, TRUE)
if(do_after(user, 9 SECONDS, target = src))
to_chat(user, span_userdanger("You gather power! Time for a home run!"))
homerun_ready = TRUE
@@ -910,7 +910,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(!QDELETED(target))
target.throw_at(throw_target, rand(8,10), 14, user)
SSexplosions.medturf += throw_target
- playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/homerun.ogg', 100, TRUE)
homerun_ready = FALSE
return
else if(!QDELETED(target) && !target.anchored)
@@ -963,7 +963,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
return TRUE
/obj/item/melee/baseball_bat/proc/launch_back(atom/movable/target, mob/living/user, turf/target_turf, datum_throw_speed)
- playsound(target, 'sound/magic/tail_swing.ogg', 50, TRUE)
+ playsound(target, 'sound/effects/magic/tail_swing.ogg', 50, TRUE)
REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, type)
target.mouse_opacity = initial(target.mouse_opacity)
target.add_filter("baseball_launch", 3, motion_blur_filter(1, 3))
@@ -994,7 +994,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 20
throwforce = 20
mob_thrower = TRUE
- block_sound = 'sound/weapons/effects/batreflect.ogg'
+ block_sound = 'sound/items/weapons/effects/batreflect.ogg'
/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
return TRUE
@@ -1110,11 +1110,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
block_chance = 20
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
force = 14
throwforce = 12
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
@@ -1137,7 +1137,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
attack_speed = CLICK_CD_HYPER_RAPID
embed_type = /datum/embed_data/hfr_blade
block_chance = 25
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
@@ -1169,7 +1169,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(attack_type == PROJECTILE_ATTACK)
if(HAS_TRAIT(src, TRAIT_WIELDED) || prob(final_block_chance))
owner.visible_message(span_danger("[owner] deflects [attack_text] with [src]!"))
- playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ playsound(src, pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg'), 75, TRUE)
return TRUE
return FALSE
if(prob(final_block_chance * (HAS_TRAIT(src, TRAIT_WIELDED) ? 2 : 1)))
@@ -1210,8 +1210,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
previous_target = WEAKREF(target)
previous_x = x_slashed
previous_y = y_slashed
- playsound(src, 'sound/weapons/bladeslice.ogg', 100, vary = TRUE)
- playsound(src, 'sound/weapons/zapbang.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/items/weapons/bladeslice.ogg', 100, vary = TRUE)
+ playsound(src, 'sound/items/weapons/zapbang.ogg', 50, vary = TRUE)
if(isliving(target))
var/mob/living/living_target = target
living_target.apply_damage(force*damage_mod, BRUTE, sharpness = SHARP_EDGED, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, def_zone = user.zone_selected)
diff --git a/code/game/objects/items/wizard_weapons.dm b/code/game/objects/items/wizard_weapons.dm
index 34676e18bf02d..e5750c06bb2d4 100644
--- a/code/game/objects/items/wizard_weapons.dm
+++ b/code/game/objects/items/wizard_weapons.dm
@@ -66,7 +66,7 @@
if(isliving(target))
var/mob/living/smacked = target
smacked.take_bodypart_damage(20, 0)
- playsound(user, 'sound/weapons/marauder.ogg', 50, TRUE)
+ playsound(user, 'sound/items/weapons/marauder.ogg', 50, TRUE)
vortex(get_turf(target), user)
addtimer(VARSET_CALLBACK(src, charged, TRUE), 10 SECONDS)
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index ceaa0e0beb734..748af49a69489 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -68,7 +68,7 @@
/obj/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers)
if(attack_generic(user, 60, BRUTE, MELEE, 0))
- playsound(src.loc, 'sound/weapons/slash.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/weapons/slash.ogg', 100, TRUE)
/obj/attack_animal(mob/living/simple_animal/user, list/modifiers)
. = ..()
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index f0c855e7c74d9..120b91a40ffbc 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -24,12 +24,12 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', 100, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
if(damage_amount)
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/*
* Generic alien stuff, not related to the purple lizards but still alien-like
@@ -392,7 +392,7 @@
return
if(BURST)
to_chat(user, span_notice("You clear the hatched egg."))
- playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', 100, TRUE)
qdel(src)
return
if(GROWING)
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index 365e790ca48f5..131e08808fbdb 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -38,7 +38,7 @@
unbuckle_mob(captive)
add_fingerprint(hero)
return
-
+
captive.visible_message(span_warning("[captive.name] struggles to break free from the gelatinous resin!"),
span_notice("You struggle to break free from the gelatinous resin... (Stay still for about a minute and a half.)"),
span_hear("You hear squelching..."))
@@ -95,9 +95,9 @@
/obj/structure/bed/nest/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', 100, TRUE)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/bed/nest/attack_alien(mob/living/carbon/alien/user, list/modifiers)
if(!user.combat_mode)
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 73020ba93bbb7..b104e472dc2b2 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -79,7 +79,7 @@
to_chat(user, span_notice("You connect the shock kit to the [name], electrifying it "))
else
user.put_in_active_hand(input_shock_kit)
- to_chat(user, " You cannot fit the shock kit onto the [name]!")
+ to_chat(user, span_notice("You cannot fit the shock kit onto the [name]!"))
/obj/structure/chair/wrench_act_secondary(mob/living/user, obj/item/weapon)
@@ -328,7 +328,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
throwforce = 10
demolition_mod = 1.25
throw_range = 3
- hitsound = 'sound/items/trayhit1.ogg'
+ hitsound = 'sound/items/trayhit/trayhit1.ogg'
hit_reaction_chance = 50
custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT)
item_flags = SKIP_FANTASY_ON_SPAWN
@@ -418,7 +418,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
name = "bamboo stool"
icon_state = "bamboo_stool"
inhand_icon_state = "stool_bamboo"
- hitsound = 'sound/weapons/genhit1.ogg'
+ hitsound = 'sound/items/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/stool/bamboo
break_chance = 50 //Submissive and breakable unlike the chad iron stool
@@ -431,7 +431,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
inhand_icon_state = "woodenchair"
resistance_flags = FLAMMABLE
max_integrity = 70
- hitsound = 'sound/weapons/genhit1.ogg'
+ hitsound = 'sound/items/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/wood
custom_materials = null
break_chance = 50
diff --git a/code/game/objects/structures/cannons/cannon.dm b/code/game/objects/structures/cannons/cannon.dm
index 3a10cc17189f8..66c827442bf32 100644
--- a/code/game/objects/structures/cannons/cannon.dm
+++ b/code/game/objects/structures/cannons/cannon.dm
@@ -17,7 +17,7 @@
var/charge_ignited = FALSE
var/fire_delay = 15
var/charge_size = 15
- var/fire_sound = 'sound/weapons/gun/general/cannon.ogg'
+ var/fire_sound = 'sound/items/weapons/gun/general/cannon.ogg'
/obj/structure/cannon/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
index da27cdbdaf9df..f0fa9e27d7869 100644
--- a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
+++ b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
@@ -34,9 +34,9 @@
///If the gun shakes the camera when firing
var/firing_shakes_camera = TRUE
///sound of firing for all but last shot
- var/fire_sound = 'sound/weapons/gun/general/mountedgun.ogg'
+ var/fire_sound = 'sound/items/weapons/gun/general/mountedgun.ogg'
///sound of firing for last shot
- var/last_fire_sound = 'sound/weapons/gun/general/mountedgunend.ogg'
+ var/last_fire_sound = 'sound/items/weapons/gun/general/mountedgunend.ogg'
/obj/structure/mounted_gun/wrench_act(mob/living/user, obj/item/tool)
. = ..()
diff --git a/code/game/objects/structures/construction_console/construction_actions.dm b/code/game/objects/structures/construction_console/construction_actions.dm
index b9abfe70c3f71..1a6b5deeeae26 100644
--- a/code/game/objects/structures/construction_console/construction_actions.dm
+++ b/code/game/objects/structures/construction_console/construction_actions.dm
@@ -120,7 +120,7 @@
button_icon_state = "build_turret"
structure_name = "turrets"
structure_path = /obj/machinery/porta_turret/aux_base
- place_sound = 'sound/items/drill_use.ogg'
+ place_sound = 'sound/items/tools/drill_use.ogg'
/datum/action/innate/construction/place_structure/turret/after_place(obj/placed_structure, remaining)
var/obj/machinery/computer/auxiliary_base/turret_controller = locate() in get_area(placed_structure)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index c4740398d82d2..58e99dc8839aa 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -56,8 +56,8 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
var/mob_storage_capacity = 3 // how many human sized mob/living can fit together inside a closet.
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients.
var/cutting_tool = /obj/item/weldingtool
- var/open_sound = 'sound/machines/closet_open.ogg'
- var/close_sound = 'sound/machines/closet_close.ogg'
+ var/open_sound = 'sound/machines/closet/closet_open.ogg'
+ var/close_sound = 'sound/machines/closet/closet_close.ogg'
var/open_sound_volume = 35
var/close_sound_volume = 50
var/material_drop = /obj/item/stack/sheet/iron
@@ -331,15 +331,15 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
if(id_card)
. += span_notice("It can be [EXAMINE_HINT("marked")] with a pen.")
if(can_weld_shut && !welded)
- . += span_notice("Its can be [EXAMINE_HINT("welded")] shut.")
+ . += span_notice("It can be [EXAMINE_HINT("welded")] shut.")
if(welded)
- . += span_notice("Its [EXAMINE_HINT("welded")] shut.")
+ . += span_notice("It's [EXAMINE_HINT("welded")] shut.")
if(anchorable && !anchored)
. += span_notice("It can be [EXAMINE_HINT("bolted")] to the ground.")
if(anchored)
. += span_notice("It's [anchorable ? EXAMINE_HINT("bolted") : "attached firmly"] to the ground.")
if(length(paint_jobs))
- . += span_notice("It can be [EXAMINE_HINT("painted")] another texture.")
+ . += span_notice("It can be [EXAMINE_HINT("painted")] with another texture.")
if(HAS_TRAIT(user, TRAIT_SKITTISH) && divable)
. += span_notice("If you bump into [p_them()] while running, you will jump inside.")
diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
index 66950b0845f1d..0bb1b564eceb6 100644
--- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm
+++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
@@ -5,8 +5,8 @@
icon_state = "bodybag"
density = FALSE
mob_storage_capacity = 2
- open_sound = 'sound/items/zip.ogg'
- close_sound = 'sound/items/zip.ogg'
+ open_sound = 'sound/items/zip/zip.ogg'
+ close_sound = 'sound/items/zip/zip.ogg'
open_sound_volume = 15
close_sound_volume = 15
integrity_failure = 0
@@ -380,7 +380,7 @@
/obj/structure/closet/body_bag/environmental/hardlight/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
if(damage_type in list(BRUTE, BURN))
- playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(src, 'sound/items/weapons/egloves.ogg', 80, TRUE)
/obj/structure/closet/body_bag/environmental/prisoner/hardlight
name = "hardlight prisoner bodybag"
@@ -392,4 +392,4 @@
/obj/structure/closet/body_bag/environmental/prisoner/hardlight/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
if(damage_type in list(BRUTE, BURN))
- playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(src, 'sound/items/weapons/egloves.ogg', 80, TRUE)
diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
index 2f555ed84dea5..19eb438876483 100644
--- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
+++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
@@ -105,8 +105,8 @@
resistance_flags = NONE
move_speed_multiplier = 2
cutting_tool = /obj/item/weldingtool
- open_sound = 'sound/machines/crate_open.ogg'
- close_sound = 'sound/machines/crate_close.ogg'
+ open_sound = 'sound/machines/crate/crate_open.ogg'
+ close_sound = 'sound/machines/crate/crate_close.ogg'
open_sound_volume = 35
close_sound_volume = 50
material_drop = /obj/item/stack/sheet/plasteel
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index f2171b2e8b1b0..24e9c93bdb97c 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -3,8 +3,8 @@
desc = "Old will forever be in fashion."
icon_state = "cabinet"
resistance_flags = FLAMMABLE
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
max_integrity = 70
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
index ca931d4c6ab10..b9f43a2009f83 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
@@ -4,8 +4,8 @@
icon_state = "cabinet"
resistance_flags = FLAMMABLE
max_integrity = 70
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
door_anim_time = 0 // no animation
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 8002721335df3..355cf14651a4c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -50,8 +50,8 @@
req_access = list(ACCESS_PSYCHOLOGY)
icon_state = "cabinet"
door_anim_time = 0 // no animation
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
index d0487198d4c7c..f639df5f12866 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
@@ -40,8 +40,8 @@
icon_state = "cabinet"
resistance_flags = FLAMMABLE
max_integrity = 70
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
door_anim_time = 0 // no animation
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 553258bd360ea..e4488b0b7f436 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -151,8 +151,8 @@
resistance_flags = FLAMMABLE
max_integrity = 70
door_anim_time = 0 // no animation
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
req_access = list(ACCESS_DETECTIVE)
/obj/structure/closet/secure_closet/detective/PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 2fed72c5bab3b..a7415c951f2f9 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -10,8 +10,8 @@
allow_dense = TRUE
dense_when_open = TRUE
delivery_icon = "deliverycrate"
- open_sound = 'sound/machines/crate_open.ogg'
- close_sound = 'sound/machines/crate_close.ogg'
+ open_sound = 'sound/machines/crate/crate_open.ogg'
+ close_sound = 'sound/machines/crate/crate_close.ogg'
open_sound_volume = 35
close_sound_volume = 50
drag_slowdown = 0
@@ -121,7 +121,7 @@
if(elevation_open)
AddElement(/datum/element/elevation, pixel_shift = elevation_open)
if(!QDELETED(manifest))
- playsound(src, 'sound/items/poster_ripped.ogg', 75, TRUE)
+ playsound(src, 'sound/items/poster/poster_ripped.ogg', 75, TRUE)
manifest.forceMove(get_turf(src))
manifest = null
update_appearance()
@@ -148,7 +148,7 @@
///Removes the supply manifest from the closet
/obj/structure/closet/crate/proc/tear_manifest(mob/user)
to_chat(user, span_notice("You tear the manifest off of [src]."))
- playsound(src, 'sound/items/poster_ripped.ogg', 75, TRUE)
+ playsound(src, 'sound/items/poster/poster_ripped.ogg', 75, TRUE)
manifest.forceMove(loc)
if(ishuman(user))
@@ -169,8 +169,8 @@
max_integrity = 70
material_drop = /obj/item/stack/sheet/mineral/wood
material_drop_amount = 5
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
can_install_electronics = FALSE
diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm
index 8ff1e1aa21da8..dfe2eb8c43d47 100644
--- a/code/game/objects/structures/crates_lockers/crates/bins.dm
+++ b/code/game/objects/structures/crates_lockers/crates/bins.dm
@@ -3,8 +3,8 @@
name = "trash bin"
icon_state = "trashbin"
base_icon_state = "trashbin"
- open_sound = 'sound/effects/bin_open.ogg'
- close_sound = 'sound/effects/bin_close.ogg'
+ open_sound = 'sound/effects/bin/bin_open.ogg'
+ close_sound = 'sound/effects/bin/bin_close.ogg'
anchored = TRUE
horizontal = FALSE
delivery_icon = null
@@ -67,4 +67,4 @@
items_to_sweep.Cut()
to_chat(user, span_notice("You sweep the pile of garbage into [src]."))
- playsound(broom.loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1)
+ playsound(broom.loc, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1)
diff --git a/code/game/objects/structures/crates_lockers/crates/cardboard.dm b/code/game/objects/structures/crates_lockers/crates/cardboard.dm
index 12008cc4022bf..5d1418e397eb5 100644
--- a/code/game/objects/structures/crates_lockers/crates/cardboard.dm
+++ b/code/game/objects/structures/crates_lockers/crates/cardboard.dm
@@ -6,7 +6,7 @@
material_drop_amount = 4
icon_state = "cardboard"
base_icon_state = "cardboard"
- open_sound = 'sound/items/poster_ripped.ogg'
+ open_sound = 'sound/items/poster/poster_ripped.ogg'
close_sound = 'sound/machines/cardboard_box.ogg'
open_sound_volume = 25
close_sound_volume = 25
diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm
index d116a33d8ff75..052ca9cffb63b 100644
--- a/code/game/objects/structures/crates_lockers/crates/critter.dm
+++ b/code/game/objects/structures/crates_lockers/crates/critter.dm
@@ -9,8 +9,8 @@
material_drop = /obj/item/stack/sheet/mineral/wood
material_drop_amount = 4
delivery_icon = "deliverybox"
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
contents_pressure_protection = 0.8
diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm
index 667dd9b2ebb8b..b3cce9609c06f 100644
--- a/code/game/objects/structures/crates_lockers/crates/large.dm
+++ b/code/game/objects/structures/crates_lockers/crates/large.dm
@@ -9,8 +9,8 @@
material_drop_amount = 4
delivery_icon = "deliverybox"
integrity_failure = 0 //Makes the crate break when integrity reaches 0, instead of opening and becoming an invisible sprite.
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
can_install_electronics = FALSE
@@ -40,7 +40,7 @@
user.visible_message(span_notice("[user] pries \the [src] open."), \
span_notice("You pry open \the [src]."), \
span_hear("You hear splitting wood."))
- playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, TRUE)
+ playsound(src.loc, 'sound/items/weapons/slashmiss.ogg', 75, TRUE)
var/turf/T = get_turf(src)
for(var/i in 1 to material_drop_amount)
diff --git a/code/game/objects/structures/crates_lockers/crates/syndicrate.dm b/code/game/objects/structures/crates_lockers/crates/syndicrate.dm
index 8403f82213511..a686282f287c5 100644
--- a/code/game/objects/structures/crates_lockers/crates/syndicrate.dm
+++ b/code/game/objects/structures/crates_lockers/crates/syndicrate.dm
@@ -52,7 +52,7 @@
unlock_contents = list()
qdel(item)
to_chat(user, span_notice("You twist the key into both locks at once, opening the crate."))
- playsound(src, 'sound/machines/boltsup.ogg', 50, vary = FALSE)
+ playsound(src, 'sound/machines/airlock/boltsup.ogg', 50, vary = FALSE)
togglelock(user)
/obj/structure/closet/crate/secure/syndicrate/togglelock(mob/living/user, silent)
diff --git a/code/game/objects/structures/crates_lockers/crates/wooden.dm b/code/game/objects/structures/crates_lockers/crates/wooden.dm
index 5ff3c69aa6bed..5703cb6ddcb39 100644
--- a/code/game/objects/structures/crates_lockers/crates/wooden.dm
+++ b/code/game/objects/structures/crates_lockers/crates/wooden.dm
@@ -5,8 +5,8 @@
material_drop_amount = 6
icon_state = "wooden"
base_icon_state = "wooden"
- open_sound = 'sound/machines/wooden_closet_open.ogg'
- close_sound = 'sound/machines/wooden_closet_close.ogg'
+ open_sound = 'sound/machines/closet/wooden_closet_open.ogg'
+ close_sound = 'sound/machines/closet/wooden_closet_close.ogg'
open_sound_volume = 25
close_sound_volume = 50
paint_jobs = null
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index be4180b5fa177..a571009d0a6ca 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -81,11 +81,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE)
+ playsound(src.loc, 'sound/items/weapons/slash.ogg', 80, TRUE)
else
- playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 80, TRUE)
/obj/structure/curtain/bounty
icon_type = "bounty"
diff --git a/code/game/objects/structures/deployable_turret.dm b/code/game/objects/structures/deployable_turret.dm
index 6abb14294de5b..e9162294c8f42 100644
--- a/code/game/objects/structures/deployable_turret.dm
+++ b/code/game/objects/structures/deployable_turret.dm
@@ -27,9 +27,9 @@
var/warned = FALSE
var/list/calculated_projectile_vars
/// Sound to play at the end of a burst
- var/overheatsound = 'sound/weapons/sear.ogg'
+ var/overheatsound = 'sound/items/weapons/sear.ogg'
/// Sound to play when firing
- var/firesound = 'sound/weapons/gun/smg/shot.ogg'
+ var/firesound = 'sound/items/weapons/gun/smg/shot.ogg'
/// If using a wrench on the turret will start undeploying it
var/can_be_undeployed = FALSE
/// What gets spawned if the object is undeployed
@@ -70,7 +70,7 @@
//BUCKLE HOOKS
/obj/machinery/deployable_turret/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(src,'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
for(var/obj/item/I in buckled_mob.held_items)
if(istype(I, /obj/item/gun_control))
qdel(I)
@@ -103,7 +103,7 @@
M.pixel_y = 14
layer = ABOVE_MOB_LAYER
setDir(SOUTH)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(src,'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
set_anchored(TRUE)
if(M.client)
M.client.view_size.setTo(view_range)
@@ -221,8 +221,8 @@
number_of_shots = 3
cooldown_duration = 2 SECONDS
rate_of_fire = 2
- firesound = 'sound/weapons/gun/hmg/hmg.ogg'
- overheatsound = 'sound/weapons/gun/smg/smgrack.ogg'
+ firesound = 'sound/items/weapons/gun/hmg/hmg.ogg'
+ overheatsound = 'sound/items/weapons/gun/smg/smgrack.ogg'
can_be_undeployed = TRUE
spawned_on_undeploy = /obj/item/deployable_turret_folded
diff --git a/code/game/objects/structures/destructible_structures.dm b/code/game/objects/structures/destructible_structures.dm
index beffa5d4fd741..e64779c31ed1a 100644
--- a/code/game/objects/structures/destructible_structures.dm
+++ b/code/game/objects/structures/destructible_structures.dm
@@ -1,7 +1,7 @@
/obj/structure/destructible //a base for destructible structures
max_integrity = 100
- var/break_message = "The strange, admin-y structure breaks!" //The message shown when a structure breaks
- var/break_sound = 'sound/magic/clockwork/invoke_general.ogg' //The sound played when a structure breaks
+ var/break_message = span_warning("The strange, admin-y structure breaks!") //The message shown when a structure breaks
+ var/break_sound = 'sound/effects/magic/clockwork/invoke_general.ogg' //The sound played when a structure breaks
var/list/debris = null //Parts left behind when a structure breaks, takes the form of list(path = amount_to_spawn)
/obj/structure/destructible/atom_deconstruct(disassembled = TRUE)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 03957e2708bf0..d5e32af761e11 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -77,9 +77,9 @@
/obj/structure/displaycase/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(src, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/displaycase/atom_deconstruct(disassembled = TRUE)
dump()
@@ -387,7 +387,7 @@
/obj/structure/displaycase/trophy/proc/toggle_historian_mode(mob/user)
historian_mode = !historian_mode
balloon_alert(user, "[historian_mode ? "enabled" : "disabled"] historian mode.")
- playsound(src, 'sound/machines/twobeep.ogg', vary = 50)
+ playsound(src, 'sound/machines/beep/twobeep.ogg', vary = 50)
SStgui.update_uis(src)
/obj/structure/displaycase/trophy/toggle_lock(mob/user)
@@ -576,7 +576,7 @@
if(!potential_acc || !potential_acc.registered_account)
return
if(!check_access(potential_acc))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
toggle_lock()
if("Register")
@@ -585,13 +585,13 @@
if(!potential_acc || !potential_acc.registered_account)
return
if(!check_access(potential_acc))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
payments_acc = potential_acc.registered_account
playsound(src, 'sound/machines/click.ogg', 20, TRUE)
if("Adjust")
if(!check_access(potential_acc) || potential_acc.registered_account != payments_acc)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
var/new_price_input = tgui_input_number(usr, "Sale price for this vend-a-tray", "New Price", 10, 1000)
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index c2d67e6290145..5fc9bf674c144 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -219,7 +219,7 @@
if(!noglass)
if(!glass)
if(istype(G, /obj/item/stack/sheet/rglass) || istype(G, /obj/item/stack/sheet/glass))
- playsound(src, 'sound/items/crowbar.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/crowbar.ogg', 100, TRUE)
user.visible_message(span_notice("[user] adds [G.name] to the airlock assembly."), \
span_notice("You start to install [G.name] into the airlock assembly..."))
if(do_after(user, 4 SECONDS, target = src))
@@ -242,7 +242,7 @@
to_chat(user, span_warning("You cannot add [G] to [src]!"))
return
if(G.get_amount() >= 2)
- playsound(src, 'sound/items/crowbar.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/crowbar.ogg', 100, TRUE)
user.visible_message(span_notice("[user] adds [G.name] to the airlock assembly."), \
span_notice("You start to install [G.name] into the airlock assembly..."))
if(do_after(user, 4 SECONDS, target = src))
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 0564223a7c759..a4d35f02e0c09 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -130,7 +130,7 @@
if(tool)
tool.play_tool_sound(src, 100)
else
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
deconstruct(disassembled)
/obj/structure/falsewall/atom_deconstruct(disassembled = TRUE)
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index ab69b7bc7a41e..7af4dd0f6c0dc 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -95,9 +95,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
if(broken)
playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, TRUE)
else
- playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/fireaxecabinet/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = TRUE, attack_dir)
if(open)
@@ -111,7 +111,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
if(!broken)
update_appearance()
broken = TRUE
- playsound(src, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
new /obj/item/shard(loc)
new /obj/item/shard(loc)
diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm
index 180b085778abf..4e568a56f48b2 100644
--- a/code/game/objects/structures/fireplace.dm
+++ b/code/game/objects/structures/fireplace.dm
@@ -68,26 +68,25 @@
var/logs_used = min(space_for_logs, wood.amount)
wood.use(logs_used)
adjust_fuel_timer(LOG_BURN_TIMER * logs_used)
- user.visible_message("[user] tosses some \
- wood into [src].", "You add \
- some fuel to [src].")
- else if(istype(T, /obj/item/paper_bin))
+ user.visible_message(span_notice("[user] tosses some wood into [src]."), span_notice("You add some fuel to [src]."))
+ return
+
+ if(istype(T, /obj/item/paper_bin))
var/obj/item/paper_bin/paper_bin = T
- user.visible_message("[user] throws [T] into \
- [src].", "You add [T] to [src].\
- ")
+ user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You add [T] to [src]."))
adjust_fuel_timer(PAPER_BURN_TIMER * paper_bin.total_paper)
qdel(paper_bin)
- else if(istype(T, /obj/item/paper))
- user.visible_message("[user] throws [T] into \
- [src].", "You throw [T] into [src].\
- ")
+ return
+
+ if(istype(T, /obj/item/paper))
+ user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You throw [T] into [src]."))
adjust_fuel_timer(PAPER_BURN_TIMER)
qdel(T)
- else if(try_light(T,user))
return
- else
- . = ..()
+
+ if(try_light(T,user))
+ return
+ return ..()
/obj/structure/fireplace/update_overlays()
. = ..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index aa9af66868fdd..4aaba04bc1835 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -286,9 +286,9 @@
if(damage_amount)
playsound(src, 'sound/effects/grillehit.ogg', 80, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 80, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 80, TRUE)
/obj/structure/grille/atom_deconstruct(disassembled = TRUE)
@@ -359,7 +359,7 @@
return FALSE
var/obj/structure/cable/C = T.get_cable_node()
if(C)
- playsound(src, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
+ playsound(src, 'sound/effects/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
tesla_zap(source = src, zap_range = 3, power = C.newavail() * 0.01, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN | ZAP_ALLOW_DUPLICATES) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
C.add_delayedload(C.newavail() * 0.0375) // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock. // What do you mean by this?
return ..()
diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm
index a51e82498e2bc..f46caa48c7b8b 100644
--- a/code/game/objects/structures/guillotine.dm
+++ b/code/game/objects/structures/guillotine.dm
@@ -43,7 +43,7 @@
buckle_prevents_pull = TRUE
layer = ABOVE_MOB_LAYER
/// The sound the guillotine makes when it successfully cuts off a head
- var/drop_sound = 'sound/weapons/guillotine.ogg'
+ var/drop_sound = 'sound/items/weapons/guillotine.ogg'
/// The current state of the blade
var/blade_status = GUILLOTINE_BLADE_RAISED
/// How sharp the blade is
diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm
index 59ccf6f23c2c3..bba9e4f715c2a 100644
--- a/code/game/objects/structures/gym/punching_bag.dm
+++ b/code/game/objects/structures/gym/punching_bag.dm
@@ -7,13 +7,13 @@
layer = ABOVE_MOB_LAYER
///List of sounds that can be played when punched.
var/static/list/hit_sounds = list(
- 'sound/weapons/genhit1.ogg',
- 'sound/weapons/genhit2.ogg',
- 'sound/weapons/genhit3.ogg',
- 'sound/weapons/punch1.ogg',
- 'sound/weapons/punch2.ogg',
- 'sound/weapons/punch3.ogg',
- 'sound/weapons/punch4.ogg',
+ 'sound/items/weapons/genhit1.ogg',
+ 'sound/items/weapons/genhit2.ogg',
+ 'sound/items/weapons/genhit3.ogg',
+ 'sound/items/weapons/punch1.ogg',
+ 'sound/items/weapons/punch2.ogg',
+ 'sound/items/weapons/punch3.ogg',
+ 'sound/items/weapons/punch4.ogg',
)
/obj/structure/punching_bag/Initialize(mapload)
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 30983c5088d67..6d86b5f7a30d5 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -52,9 +52,9 @@
/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 80, TRUE)
if(BURN)
- playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 80, TRUE)
/obj/structure/holosign/proc/create_vis_overlay()
var/turf/our_turf = get_turf(src)
@@ -135,11 +135,11 @@
if(!opened)
density = FALSE
opened = TRUE
- playsound(src, 'sound/machines/door_open.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/door/door_open.ogg', 50, TRUE)
else
density = TRUE
opened = FALSE
- playsound(src, 'sound/machines/door_close.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/door/door_close.ogg', 50, TRUE)
update_icon_state()
COOLDOWN_START(src, cooldown_open, 1 SECONDS)
@@ -262,7 +262,7 @@
if(!COOLDOWN_FINISHED(src, virus_detected))
return
- playsound(get_turf(src),'sound/machines/buzz-sigh.ogg', 65, TRUE, 4)
+ playsound(get_turf(src),'sound/machines/buzz/buzz-sigh.ogg', 65, TRUE, 4)
COOLDOWN_START(src, virus_detected, 1 SECONDS)
icon_state = "holo_medical-deny"
update_icon_state()
diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm
index 6efa671875915..fb082b72456dc 100644
--- a/code/game/objects/structures/icemoon/cave_entrance.dm
+++ b/code/game/objects/structures/icemoon/cave_entrance.dm
@@ -49,7 +49,7 @@ GLOBAL_LIST_INIT(ore_probability, list(
*
*/
/obj/structure/spawner/ice_moon/proc/destroy_effect()
- playsound(loc,'sound/effects/explosionfar.ogg', 200, TRUE)
+ playsound(loc,'sound/effects/explosion/explosionfar.ogg', 200, TRUE)
visible_message(span_boldannounce("[src] collapses, sealing everything inside!\nOres fall out of the cave as it is destroyed!"))
/**
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 0d7d23191742c..0b55326130022 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -162,7 +162,7 @@
to_chat(user, span_warning("You need one floor tile to build atop [src]."))
return
to_chat(user, span_notice("You construct new plating with [src] as support."))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
var/turf/turf_we_place_on = get_turf(src)
turf_we_place_on.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm
index c269c5213e71a..8cb530e31b18a 100644
--- a/code/game/objects/structures/lavaland/gulag_vent.dm
+++ b/code/game/objects/structures/lavaland/gulag_vent.dm
@@ -47,4 +47,4 @@
new spawned_boulder(get_turf(living_user))
living_user.visible_message(span_notice("[living_user] hauls a boulder out of [src]."))
living_user.apply_damage(stamina_damage_to_inflict, STAMINA)
- playsound(src, 'sound/weapons/genhit.ogg', vol = 50, vary = TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', vol = 50, vary = TRUE)
diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm
index bf69b23238c61..b169868a85fb7 100644
--- a/code/game/objects/structures/lavaland/necropolis_tendril.dm
+++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm
@@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(tendrils, list())
/obj/effect/collapse/proc/collapse()
for(var/mob/M in range(7,src))
shake_camera(M, 15, 1)
- playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, TRUE)
+ playsound(get_turf(src),'sound/effects/explosion/explosionfar.ogg', 200, TRUE)
visible_message(span_boldannounce("The tendril falls inward, the ground around it widening into a yawning chasm!"))
for(var/turf/T in RANGE_TURFS(2,src))
if(HAS_TRAIT(T, TRAIT_NO_TERRAFORM))
diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm
index 1de24f030bf5e..adf888a2d9c42 100644
--- a/code/game/objects/structures/lavaland/ore_vent.dm
+++ b/code/game/objects/structures/lavaland/ore_vent.dm
@@ -121,7 +121,7 @@
for(var/i in 1 to 3)
if(do_after(user, boulder_size * 1 SECONDS, src))
user.apply_damage(20, STAMINA)
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
produce_boulder(TRUE)
visible_message(span_notice("You've successfully produced a boulder! Boy are your arms tired."))
@@ -263,39 +263,40 @@
* If the node drone is dead, the ore vent is not tapped and the wave defense can be reattempted.
*
* Also gives xp and mining points to all nearby miners in equal measure.
+ * Arguments:
+ * - force: Set to true if you want to just skip all checks and make the vent start producing boulders.
*/
-/obj/structure/ore_vent/proc/handle_wave_conclusion()
+/obj/structure/ore_vent/proc/handle_wave_conclusion(force = FALSE)
SIGNAL_HANDLER
SEND_SIGNAL(src, COMSIG_VENT_WAVE_CONCLUDED)
COOLDOWN_RESET(src, wave_cooldown)
particles = null
- if(!QDELETED(node))
- if(get_turf(node) != get_turf(src))
- visible_message(span_danger("The [node] detaches from the [src], and the vent closes back up!"))
- icon_state = initial(icon_state)
- update_appearance(UPDATE_ICON_STATE)
- UnregisterSignal(node, COMSIG_MOVABLE_MOVED)
- node.pre_escape(success = FALSE)
- node = null
- return //Start over!
-
- tapped = TRUE //The Node Drone has survived the wave defense, and the ore vent is tapped.
- SSore_generation.processed_vents += src
- log_game("Ore vent [key_name_and_tag(src)] was tapped")
- SSblackbox.record_feedback("tally", "ore_vent_completed", 1, type)
- balloon_alert_to_viewers("vent tapped!")
- icon_state = icon_state_tapped
- update_appearance(UPDATE_ICON_STATE)
- qdel(GetComponent(/datum/component/gps))
- UnregisterSignal(node, COMSIG_QDELETING)
- else
+ if(QDELETED(node) && !force)
visible_message(span_danger("\the [src] creaks and groans as the mining attempt fails, and the vent closes back up."))
icon_state = initial(icon_state)
update_appearance(UPDATE_ICON_STATE)
node = null
return //Bad end, try again.
+ else if(!QDELETED(node) && get_turf(node) != get_turf(src) && !force)
+ visible_message(span_danger("The [node] detaches from the [src], and the vent closes back up!"))
+ icon_state = initial(icon_state)
+ update_appearance(UPDATE_ICON_STATE)
+ UnregisterSignal(node, COMSIG_MOVABLE_MOVED)
+ node.pre_escape(success = FALSE)
+ node = null
+ return //Start over!
+
+ tapped = TRUE //The Node Drone has survived the wave defense, and the ore vent is tapped.
+ SSore_generation.processed_vents += src
+ log_game("Ore vent [key_name_and_tag(src)] was tapped")
+ SSblackbox.record_feedback("tally", "ore_vent_completed", 1, type)
+ balloon_alert_to_viewers("vent tapped!")
+ icon_state = icon_state_tapped
+ update_appearance(UPDATE_ICON_STATE)
+ qdel(GetComponent(/datum/component/gps))
+ UnregisterSignal(node, COMSIG_QDELETING)
for(var/mob/living/miner in range(7, src)) //Give the miners who are near the vent points and xp.
var/obj/item/card/id/user_id_card = miner.get_idcard(TRUE)
@@ -307,7 +308,7 @@
if(user_id_card.registered_account)
user_id_card.registered_account.mining_points += point_reward_val
user_id_card.registered_account.bank_card_talk("You have been awarded [point_reward_val] mining points for your efforts.")
- node.pre_escape() //Visually show the drone is done and flies away.
+ node?.pre_escape() //Visually show the drone is done and flies away.
node = null
add_overlay(mutable_appearance('icons/obj/mining_zones/terrain.dmi', "well", ABOVE_MOB_LAYER))
diff --git a/code/game/objects/structures/life_candle.dm b/code/game/objects/structures/life_candle.dm
index 7c9250ed9a246..d9eb81c783c35 100644
--- a/code/game/objects/structures/life_candle.dm
+++ b/code/game/objects/structures/life_candle.dm
@@ -22,7 +22,7 @@
var/datum/outfit/outfit
// How long until we respawn them after their death.
var/respawn_time = 50
- var/respawn_sound = 'sound/magic/staff_animation.ogg'
+ var/respawn_sound = 'sound/effects/magic/staff_animation.ogg'
/obj/structure/life_candle/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm
index a8de16271f36d..d3eb552c46b8b 100644
--- a/code/game/objects/structures/maintenance.dm
+++ b/code/game/objects/structures/maintenance.dm
@@ -84,7 +84,7 @@ at the cost of risking a vicious bite.**/
to_chat(user, span_danger("You feel a sharp pain as an unseen creature sinks its [pick("fangs", "beak", "proboscis")] into your arm!"))
if(affecting?.receive_damage(30))
bite_victim.update_damage_overlays()
- playsound(src,'sound/weapons/bite.ogg', 70, TRUE)
+ playsound(src,'sound/items/weapons/bite.ogg', 70, TRUE)
return
to_chat(user, span_warning("You find nothing of value..."))
@@ -122,8 +122,8 @@ at the cost of risking a vicious bite.**/
desc = "What is this? Who put it on this station? And why does it emanate strange energy?"
icon_state = "altar"
cult_examine_tip = "Even you don't understand the eldritch magic behind this."
- break_message = "The structure shatters, leaving only a demonic screech!"
- break_sound = 'sound/magic/demon_dies.ogg'
+ break_message = span_warning("The structure shatters, leaving only a demonic screech!")
+ break_sound = 'sound/effects/magic/demon_dies.ogg'
light_color = LIGHT_COLOR_BLOOD_MAGIC
light_range = 2
use_cooldown_duration = 1 MINUTES
@@ -188,7 +188,7 @@ at the cost of risking a vicious bite.**/
status = ALTAR_STAGEONE
update_icon()
visible_message(span_warning("[src] starts creating something..."))
- playsound(src, 'sound/magic/pantsaltar.ogg', 60)
+ playsound(src, 'sound/effects/magic/pantsaltar.ogg', 60)
addtimer(CALLBACK(src, PROC_REF(pants_stagetwo)), ALTAR_TIME)
/// Continues the creation, making every mob nearby nauseous.
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index b80cee093fc66..97e35d8f6f3f8 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -272,7 +272,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
update_morgue_status()
update_appearance(UPDATE_ICON_STATE)
if(morgue_state == MORGUE_HAS_REVIVABLE && beeper && COOLDOWN_FINISHED(src, next_beep))
- playsound(src, 'sound/weapons/gun/general/empty_alarm.ogg', 50, FALSE) //Revive them you blind fucks
+ playsound(src, 'sound/items/weapons/gun/general/empty_alarm.ogg', 50, FALSE) //Revive them you blind fucks
COOLDOWN_START(src, next_beep, beep_cooldown)
if(!connected || connected.loc != src)
diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm
index cb56cfe8ef120..0a0c9ca0a1017 100644
--- a/code/game/objects/structures/mystery_box.dm
+++ b/code/game/objects/structures/mystery_box.dm
@@ -121,8 +121,8 @@ GLOBAL_LIST_INIT(mystery_fishing, list(
max_integrity = 99999
damage_deflection = 100
- var/crate_open_sound = 'sound/machines/crate_open.ogg'
- var/crate_close_sound = 'sound/machines/crate_close.ogg'
+ var/crate_open_sound = 'sound/machines/crate/crate_open.ogg'
+ var/crate_close_sound = 'sound/machines/crate/crate_close.ogg'
var/open_sound = 'sound/effects/mysterybox/mbox_full.ogg'
var/grant_sound = 'sound/effects/mysterybox/mbox_end.ogg'
/// The box's current state, and whether it can be interacted with in different ways
diff --git a/code/game/objects/structures/pinatas.dm b/code/game/objects/structures/pinatas.dm
index 44d7a8b021594..56a258a45f7be 100644
--- a/code/game/objects/structures/pinatas.dm
+++ b/code/game/objects/structures/pinatas.dm
@@ -35,11 +35,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/weapons/slash.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/slash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/pinata/atom_deconstruct(disassembled)
new debris(get_turf(src))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 14e3b53680d15..b2796019f168b 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -234,7 +234,7 @@ FLOOR SAFES
if(!canhear)
return
if(current_tick == 2)
- to_chat(user, "The sounds from [src] are too fast and blend together.")
+ to_chat(user, span_italics("The sounds from [src] are too fast and blend together."))
if(total_ticks == 1 || prob(SOUND_CHANCE))
balloon_alert(user, pick(sounds))
diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm
index 743d76ef182b2..db4981aeac77a 100644
--- a/code/game/objects/structures/spawner.dm
+++ b/code/game/objects/structures/spawner.dm
@@ -53,7 +53,7 @@
to_chat(user, span_warning("[src] already has a holotag attached!"))
return
to_chat(user, span_notice("You affix a holotag to [src]."))
- playsound(src, 'sound/machines/twobeep.ogg', 100)
+ playsound(src, 'sound/machines/beep/twobeep.ogg', 100)
gps_tagged = TRUE
assigned_tag = "\[[mob_gps_id]-[rand(100,999)]\] " + spawner_gps_id
var/datum/component/gps/our_gps = GetComponent(/datum/component/gps)
@@ -221,7 +221,7 @@
/obj/structure/spawner/nether/process(seconds_per_tick)
for(var/mob/living/living_mob in contents)
if(living_mob)
- playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
living_mob.adjustBruteLoss(60 * seconds_per_tick)
new /obj/effect/gibspawner/generic(get_turf(living_mob), living_mob)
if(living_mob.stat == DEAD)
@@ -299,5 +299,5 @@
proteon.add_filter("sentient_proteon", 3, list("type" = "outline", "color" = COLOR_CULT_RED, "size" = 2, "alpha" = 40))
/obj/structure/spawner/sentient/proteon_spawner/handle_deconstruct(disassembled)
- playsound('sound/hallucinations/veryfar_noise.ogg', 125)
+ playsound('sound/effects/hallucinations/veryfar_noise.ogg', 125)
visible_message(span_cult_bold("[src] completely falls apart, the screams of the damned reaching a feverous pitch before slowly fading away into nothing."))
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 32e76bb2c83ee..834347cc84f4f 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -697,7 +697,7 @@
/obj/structure/table/bronze/tablepush(mob/living/user, mob/living/pushed_mob)
..()
- playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
/obj/structure/table/reinforced/rglass
name = "reinforced glass table"
@@ -913,9 +913,9 @@
if(damage_amount)
playsound(loc, 'sound/items/dodgeball.ogg', 80, TRUE)
else
- playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 40, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 40, TRUE)
/*
* Rack destruction
@@ -976,8 +976,7 @@
if(!user.temporarilyRemoveItemFromInventory(src))
return
var/obj/structure/rack/R = new /obj/structure/rack(get_turf(src))
- user.visible_message("[user] assembles \a [R].\
- ", span_notice("You assemble \a [R]."))
+ user.visible_message(span_notice("[user] assembles \a [R]."), span_notice("You assemble \a [R]."))
R.add_fingerprint(user)
qdel(src)
building = FALSE
diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm
index c1963ea38a3ef..e0bb6357a8a22 100644
--- a/code/game/objects/structures/training_machine.dm
+++ b/code/game/objects/structures/training_machine.dm
@@ -209,7 +209,7 @@
moving = FALSE
starting_turf = null
say(message)
- playsound(src,'sound/machines/synth_no.ogg',50,FALSE)
+ playsound(src,'sound/machines/synth/synth_no.ogg',50,FALSE)
STOP_PROCESSING(SSfastprocess, src)
/**
@@ -221,7 +221,7 @@
moving = TRUE
starting_turf = get_turf(src)
say("Beginning training simulation.")
- playsound(src,'sound/machines/triple_beep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/triple_beep.ogg',50,FALSE)
START_PROCESSING(SSfastprocess, src)
/**
@@ -285,7 +285,7 @@
do_attack_animation(target, null, attached_item)
if (obj_flags & EMAGGED)
target.apply_damage(attached_item.force, BRUTE, BODY_ZONE_CHEST, attacking_item = attached_item)
- playsound(src, 'sound/weapons/smash.ogg', 15, TRUE)
+ playsound(src, 'sound/items/weapons/smash.ogg', 15, TRUE)
COOLDOWN_START(src, attack_cooldown, rand(MIN_ATTACK_DELAY, MAX_ATTACK_DELAY))
/**
@@ -390,9 +390,9 @@
return FALSE
total_hits++
lap_hits++
- playsound(src,'sound/weapons/smash.ogg',50,FALSE)
+ playsound(src,'sound/items/weapons/smash.ogg',50,FALSE)
if (lap_hits % HITS_TO_KILL == 0)
- playsound(src,'sound/machines/twobeep.ogg',25,FALSE)
+ playsound(src,'sound/machines/beep/twobeep.ogg',25,FALSE)
return TRUE
/obj/item/training_toolbox/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm
index 8fc1426c5f36d..39a62204fa5d0 100644
--- a/code/game/objects/structures/transit_tubes/station.dm
+++ b/code/game/objects/structures/transit_tubes/station.dm
@@ -251,7 +251,7 @@
return
var/obj/structure/transit_tube_pod/dispensed/pod = new(loc)
AM.visible_message(span_notice("[pod] forms around [AM]."), span_notice("[pod] materializes around you."))
- playsound(src, 'sound/weapons/emitter2.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/emitter2.ogg', 50, TRUE)
pod.setDir(turn(src.dir, -90))
AM.forceMove(pod)
pod.update_appearance()
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index 0cf5ddf7c9130..a30a59e45a2c1 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -6,7 +6,7 @@
density = FALSE
anchored = TRUE
alpha = 30 //initially quite hidden when not "recharging"
- var/flare_message = "the trap flares brightly!"
+ var/flare_message = span_warning("the trap flares brightly!")
var/last_trigger = 0
var/time_between_triggers = 1 MINUTES
var/charges = INFINITY
@@ -20,7 +20,7 @@
/obj/structure/trap/Initialize(mapload)
. = ..()
- flare_message = "[src] flares brightly!"
+ flare_message = span_warning("[src] flares brightly!")
spark_system = new
spark_system.set_up(4,1,src)
spark_system.attach(src)
@@ -113,7 +113,7 @@
/obj/structure/trap/stun/hunter/Initialize(mapload)
. = ..()
time_between_triggers = 1 SECONDS
- flare_message = "[src] snaps shut!"
+ flare_message = span_warning("[src] snaps shut!")
/obj/structure/trap/stun/hunter/Destroy()
if(!QDELETED(stored_item))
diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm
index 7237cd03c5045..986d7eae4ea05 100644
--- a/code/game/objects/structures/water_structures/toilet.dm
+++ b/code/game/objects/structures/water_structures/toilet.dm
@@ -25,13 +25,9 @@
var/list/cistern_items
///Lazylist of fish in the toilet, not to be mixed with the items in the cistern. Max of 3
var/list/fishes
- ///Static toilet water overlay given to toilets that are facing a direction we can see the water in.
- var/static/mutable_appearance/toilet_water_overlay
/obj/structure/toilet/Initialize(mapload)
. = ..()
- if(isnull(toilet_water_overlay))
- toilet_water_overlay = mutable_appearance(icon, "[base_icon_state]-water")
cover_open = round(rand(0, 1))
update_appearance(UPDATE_ICON)
if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION))
@@ -176,8 +172,8 @@
/obj/structure/toilet/update_overlays()
. = ..()
- if(!flushing && cover_open && (dir & SOUTH))
- . += toilet_water_overlay
+ if(!flushing && cover_open)
+ . += "[base_icon_state]-water"
/obj/structure/toilet/atom_deconstruct(dissambled = TRUE)
for(var/obj/toilet_item in cistern_items)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index fdb5193035c84..5be22d5cb8632 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -28,9 +28,9 @@
var/glass_amount = 1
var/real_explosion_block //ignore this, just use explosion_block
var/break_sound = SFX_SHATTER
- var/knock_sound = 'sound/effects/glassknock.ogg'
- var/bash_sound = 'sound/effects/glassbash.ogg'
- var/hit_sound = 'sound/effects/glasshit.ogg'
+ var/knock_sound = 'sound/effects/glass/glassknock.ogg'
+ var/bash_sound = 'sound/effects/glass/glassbash.ogg'
+ var/hit_sound = 'sound/effects/glass/glasshit.ogg'
/// If some inconsiderate jerk has had their blood spilled on this window, thus making it cleanable
var/bloodied = FALSE
///Datum that the shard and debris type is pulled from for when the glass is broken.
@@ -321,9 +321,9 @@
if(damage_amount)
playsound(src, hit_sound, 75, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/window/atom_deconstruct(disassembled = TRUE)
@@ -450,7 +450,7 @@
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, forceMove), loc), time_to_go + time_to_return) //we back boys
addtimer(VARSET_CALLBACK(src, dramatically_disappearing, FALSE), time_to_go + time_to_return) //also set the var back
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), time_to_go + time_to_return)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(src), 'sound/effects/glass_reverse.ogg', 70, TRUE), time_to_go + time_to_return)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(src), 'sound/effects/glass/glass_reverse.ogg', 70, TRUE), time_to_go + time_to_return)
var/obj/structure/grille/grill = take_grill ? (locate(/obj/structure/grille) in loc) : null
if(grill)
@@ -899,9 +899,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw
resistance_flags = FLAMMABLE
armor_type = /datum/armor/none
knock_sound = SFX_PAGE_TURN
- bash_sound = 'sound/weapons/slashmiss.ogg'
- break_sound = 'sound/items/poster_ripped.ogg'
- hit_sound = 'sound/weapons/slashmiss.ogg'
+ bash_sound = 'sound/items/weapons/slashmiss.ogg'
+ break_sound = 'sound/items/poster/poster_ripped.ogg'
+ hit_sound = 'sound/items/weapons/slashmiss.ogg'
var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/structure_variations.dmi',icon_state = "paper-torn", layer = ABOVE_OBJ_LAYER - 0.1)
var/static/mutable_appearance/paper = mutable_appearance('icons/obj/smooth_structures/structure_variations.dmi',icon_state = "paper-whole", layer = ABOVE_OBJ_LAYER - 0.1)
diff --git a/code/game/sound.dm b/code/game/sound.dm
index 0b1984188dbec..fb9d70eb2cb03 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -208,83 +208,83 @@
soundin = get_sfx_doppler(soundin) // DOPPLER EDIT ADDITION - MODULAR SOUNDS
switch(soundin)
if(SFX_SHATTER)
- soundin = pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg')
+ soundin = pick('sound/effects/glass/glassbr1.ogg','sound/effects/glass/glassbr2.ogg','sound/effects/glass/glassbr3.ogg')
if(SFX_EXPLOSION)
- soundin = pick('sound/effects/explosion1.ogg','sound/effects/explosion2.ogg')
+ soundin = pick('sound/effects/explosion/explosion1.ogg','sound/effects/explosion/explosion2.ogg')
if(SFX_EXPLOSION_CREAKING)
- soundin = pick('sound/effects/explosioncreak1.ogg', 'sound/effects/explosioncreak2.ogg')
+ soundin = pick('sound/effects/explosion/explosioncreak1.ogg', 'sound/effects/explosion/explosioncreak2.ogg')
if(SFX_HULL_CREAKING)
- soundin = pick('sound/effects/creak1.ogg', 'sound/effects/creak2.ogg', 'sound/effects/creak3.ogg')
+ soundin = pick('sound/effects/creak/creak1.ogg', 'sound/effects/creak/creak2.ogg', 'sound/effects/creak/creak3.ogg')
if(SFX_SPARKS)
- soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg')
+ soundin = pick('sound/effects/sparks/sparks1.ogg','sound/effects/sparks/sparks2.ogg','sound/effects/sparks/sparks3.ogg','sound/effects/sparks/sparks4.ogg')
if(SFX_RUSTLE)
- soundin = pick('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg')
+ soundin = pick('sound/effects/rustle/rustle1.ogg','sound/effects/rustle/rustle2.ogg','sound/effects/rustle/rustle3.ogg','sound/effects/rustle/rustle4.ogg','sound/effects/rustle/rustle5.ogg')
if(SFX_BODYFALL)
- soundin = pick('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg')
+ soundin = pick('sound/effects/bodyfall/bodyfall1.ogg','sound/effects/bodyfall/bodyfall2.ogg','sound/effects/bodyfall/bodyfall3.ogg','sound/effects/bodyfall/bodyfall4.ogg')
if(SFX_PUNCH)
- soundin = pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg')
+ soundin = pick('sound/items/weapons/punch1.ogg','sound/items/weapons/punch2.ogg','sound/items/weapons/punch3.ogg','sound/items/weapons/punch4.ogg')
if(SFX_CLOWN_STEP)
soundin = pick('sound/effects/footstep/clownstep1.ogg','sound/effects/footstep/clownstep2.ogg')
if(SFX_SUIT_STEP)
soundin = pick('sound/effects/suitstep1.ogg','sound/effects/suitstep2.ogg')
if(SFX_SWING_HIT)
- soundin = pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg')
+ soundin = pick('sound/items/weapons/genhit1.ogg', 'sound/items/weapons/genhit2.ogg', 'sound/items/weapons/genhit3.ogg')
if(SFX_HISS)
- soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
+ soundin = pick('sound/mobs/non-humanoids/hiss/hiss1.ogg','sound/mobs/non-humanoids/hiss/hiss2.ogg','sound/mobs/non-humanoids/hiss/hiss3.ogg','sound/mobs/non-humanoids/hiss/hiss4.ogg')
if(SFX_PAGE_TURN)
- soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg')
+ soundin = pick('sound/effects/page_turn/pageturn1.ogg', 'sound/effects/page_turn/pageturn2.ogg','sound/effects/page_turn/pageturn3.ogg')
if(SFX_RICOCHET)
- soundin = pick( 'sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg')
+ soundin = pick( 'sound/items/weapons/effects/ric1.ogg', 'sound/items/weapons/effects/ric2.ogg','sound/items/weapons/effects/ric3.ogg','sound/items/weapons/effects/ric4.ogg','sound/items/weapons/effects/ric5.ogg')
if(SFX_TERMINAL_TYPE)
soundin = pick(list(
- 'sound/machines/terminal_button01.ogg',
- 'sound/machines/terminal_button02.ogg',
- 'sound/machines/terminal_button03.ogg',
- 'sound/machines/terminal_button04.ogg',
- 'sound/machines/terminal_button05.ogg',
- 'sound/machines/terminal_button06.ogg',
- 'sound/machines/terminal_button07.ogg',
- 'sound/machines/terminal_button08.ogg',
+ 'sound/machines/terminal/terminal_button01.ogg',
+ 'sound/machines/terminal/terminal_button02.ogg',
+ 'sound/machines/terminal/terminal_button03.ogg',
+ 'sound/machines/terminal/terminal_button04.ogg',
+ 'sound/machines/terminal/terminal_button05.ogg',
+ 'sound/machines/terminal/terminal_button06.ogg',
+ 'sound/machines/terminal/terminal_button07.ogg',
+ 'sound/machines/terminal/terminal_button08.ogg',
))
if(SFX_DESECRATION)
- soundin = pick('sound/misc/desecration-01.ogg', 'sound/misc/desecration-02.ogg', 'sound/misc/desecration-03.ogg')
+ soundin = pick('sound/effects/desecration/desecration-01.ogg', 'sound/effects/desecration/desecration-02.ogg', 'sound/effects/desecration/desecration-03.ogg')
if(SFX_IM_HERE)
- soundin = pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg')
+ soundin = pick('sound/effects/hallucinations/im_here1.ogg', 'sound/effects/hallucinations/im_here2.ogg')
if(SFX_CAN_OPEN)
- soundin = pick('sound/effects/can_open1.ogg', 'sound/effects/can_open2.ogg', 'sound/effects/can_open3.ogg')
+ soundin = pick('sound/effects/can/can_open1.ogg', 'sound/effects/can/can_open2.ogg', 'sound/effects/can/can_open3.ogg')
if(SFX_BULLET_MISS)
- soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg')
+ soundin = pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg')
if(SFX_REVOLVER_SPIN)
- soundin = pick('sound/weapons/gun/revolver/spin1.ogg', 'sound/weapons/gun/revolver/spin2.ogg', 'sound/weapons/gun/revolver/spin3.ogg')
+ soundin = pick('sound/items/weapons/gun/revolver/spin1.ogg', 'sound/items/weapons/gun/revolver/spin2.ogg', 'sound/items/weapons/gun/revolver/spin3.ogg')
if(SFX_LAW)
soundin = pick(list(
- 'sound/voice/beepsky/creep.ogg',
- 'sound/voice/beepsky/god.ogg',
- 'sound/voice/beepsky/iamthelaw.ogg',
- 'sound/voice/beepsky/insult.ogg',
- 'sound/voice/beepsky/radio.ogg',
- 'sound/voice/beepsky/secureday.ogg',
+ 'sound/mobs/non-humanoids/beepsky/creep.ogg',
+ 'sound/mobs/non-humanoids/beepsky/god.ogg',
+ 'sound/mobs/non-humanoids/beepsky/iamthelaw.ogg',
+ 'sound/mobs/non-humanoids/beepsky/insult.ogg',
+ 'sound/mobs/non-humanoids/beepsky/radio.ogg',
+ 'sound/mobs/non-humanoids/beepsky/secureday.ogg',
))
if(SFX_HONKBOT_E)
soundin = pick(list(
'sound/effects/pray.ogg',
- 'sound/effects/reee.ogg',
- 'sound/items/AirHorn.ogg',
- 'sound/items/AirHorn2.ogg',
+ 'sound/mobs/non-humanoids/frog/reee.ogg',
+ 'sound/items/airhorn/AirHorn.ogg',
+ 'sound/items/airhorn/AirHorn2.ogg',
'sound/items/bikehorn.ogg',
'sound/items/WEEOO1.ogg',
- 'sound/machines/buzz-sigh.ogg',
+ 'sound/machines/buzz/buzz-sigh.ogg',
'sound/machines/ping.ogg',
- 'sound/magic/Fireball.ogg',
+ 'sound/effects/magic/Fireball.ogg',
'sound/misc/sadtrombone.ogg',
- 'sound/voice/beepsky/creep.ogg',
- 'sound/voice/beepsky/iamthelaw.ogg',
- 'sound/voice/hiss1.ogg',
- 'sound/weapons/bladeslice.ogg',
- 'sound/weapons/flashbang.ogg',
+ 'sound/mobs/non-humanoids/beepsky/creep.ogg',
+ 'sound/mobs/non-humanoids/beepsky/iamthelaw.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss1.ogg',
+ 'sound/items/weapons/bladeslice.ogg',
+ 'sound/items/weapons/flashbang.ogg',
))
if(SFX_GOOSE)
- soundin = pick('sound/creatures/goose1.ogg', 'sound/creatures/goose2.ogg', 'sound/creatures/goose3.ogg', 'sound/creatures/goose4.ogg')
+ soundin = pick('sound/mobs/non-humanoids/goose/goose1.ogg', 'sound/mobs/non-humanoids/goose/goose2.ogg', 'sound/mobs/non-humanoids/goose/goose3.ogg', 'sound/mobs/non-humanoids/goose/goose4.ogg')
if(SFX_WARPSPEED)
soundin = 'sound/runtime/hyperspace/hyperspace_begin.ogg'
if(SFX_SM_CALM)
@@ -432,49 +432,49 @@
'sound/machines/sm/accent/delam/33.ogg',
))
if(SFX_CRUNCHY_BUSH_WHACK)
- soundin = pick('sound/effects/crunchybushwhack1.ogg', 'sound/effects/crunchybushwhack2.ogg', 'sound/effects/crunchybushwhack3.ogg')
+ soundin = pick('sound/effects/bush/crunchybushwhack1.ogg', 'sound/effects/bush/crunchybushwhack2.ogg', 'sound/effects/bush/crunchybushwhack3.ogg')
if(SFX_TREE_CHOP)
- soundin = pick('sound/effects/treechop1.ogg', 'sound/effects/treechop2.ogg', 'sound/effects/treechop3.ogg')
+ soundin = pick('sound/effects/treechop/treechop1.ogg', 'sound/effects/treechop/treechop2.ogg', 'sound/effects/treechop/treechop3.ogg')
if(SFX_ROCK_TAP)
- soundin = pick('sound/effects/rocktap1.ogg', 'sound/effects/rocktap2.ogg', 'sound/effects/rocktap3.ogg')
+ soundin = pick('sound/effects/rock/rocktap1.ogg', 'sound/effects/rock/rocktap2.ogg', 'sound/effects/rock/rocktap3.ogg')
if(SFX_SEAR)
- soundin = 'sound/weapons/sear.ogg'
+ soundin = 'sound/items/weapons/sear.ogg'
if(SFX_REEL)
soundin = pick(
- 'sound/items/reel1.ogg',
- 'sound/items/reel2.ogg',
- 'sound/items/reel3.ogg',
- 'sound/items/reel4.ogg',
- 'sound/items/reel5.ogg',
+ 'sound/items/reel/reel1.ogg',
+ 'sound/items/reel/reel2.ogg',
+ 'sound/items/reel/reel3.ogg',
+ 'sound/items/reel/reel4.ogg',
+ 'sound/items/reel/reel5.ogg',
)
if(SFX_RATTLE)
soundin = pick(
- 'sound/items/rattle1.ogg',
- 'sound/items/rattle2.ogg',
- 'sound/items/rattle3.ogg',
+ 'sound/items/rattle/rattle1.ogg',
+ 'sound/items/rattle/rattle2.ogg',
+ 'sound/items/rattle/rattle3.ogg',
)
if(SFX_PORTAL_CLOSE)
- soundin = 'sound/effects/portal_close.ogg'
+ soundin = 'sound/effects/portal/portal_close.ogg'
if(SFX_PORTAL_ENTER)
- soundin = 'sound/effects/portal_travel.ogg'
+ soundin = 'sound/effects/portal/portal_travel.ogg'
if(SFX_PORTAL_CREATED)
soundin = pick(
- 'sound/effects/portal_open_1.ogg',
- 'sound/effects/portal_open_2.ogg',
- 'sound/effects/portal_open_3.ogg',
+ 'sound/effects/portal/portal_open_1.ogg',
+ 'sound/effects/portal/portal_open_2.ogg',
+ 'sound/effects/portal/portal_open_3.ogg',
)
if(SFX_SCREECH)
soundin = pick(
- 'sound/creatures/monkey/monkey_screech_1.ogg',
- 'sound/creatures/monkey/monkey_screech_2.ogg',
- 'sound/creatures/monkey/monkey_screech_3.ogg',
- 'sound/creatures/monkey/monkey_screech_4.ogg',
- 'sound/creatures/monkey/monkey_screech_5.ogg',
- 'sound/creatures/monkey/monkey_screech_6.ogg',
- 'sound/creatures/monkey/monkey_screech_7.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_1.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_2.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_3.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_4.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_5.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_6.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_7.ogg',
)
if(SFX_TOOL_SWITCH)
- soundin = 'sound/items/handling/tool_switch.ogg'
+ soundin = 'sound/items/tools/tool_switch.ogg'
if(SFX_KEYBOARD_CLICKS)
soundin = pick(
'sound/machines/computer/keyboard_clicks_1.ogg',
@@ -509,12 +509,18 @@
'sound/effects/muffspeech/muffspeech9.ogg',
)
if(SFX_DEFAULT_FISH_SLAP)
- soundin = 'sound/creatures/fish/fish_slap1.ogg'
+ soundin = 'sound/mobs/non-humanoids/fish/fish_slap1.ogg'
if(SFX_ALT_FISH_SLAP)
- soundin = 'sound/creatures/fish/fish_slap2.ogg'
+ soundin = 'sound/mobs/non-humanoids/fish/fish_slap2.ogg'
if(SFX_FISH_PICKUP)
soundin = pick(
- 'sound/creatures/fish/fish_pickup1.ogg',
- 'sound/creatures/fish/fish_pickup2.ogg',
+ 'sound/mobs/non-humanoids/fish/fish_pickup1.ogg',
+ 'sound/mobs/non-humanoids/fish/fish_pickup2.ogg',
+ )
+ if(SFX_LIQUID_POUR)
+ soundin = pick(
+ 'sound/effects/liquid_pour/liquid_pour1.ogg',
+ 'sound/effects/liquid_pour/liquid_pour2.ogg',
+ 'sound/effects/liquid_pour/liquid_pour3.ogg',
)
return soundin
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index 0fbe774a7c5ae..f1297e4a02258 100644
--- a/code/game/turfs/closed/walls.dm
+++ b/code/game/turfs/closed/walls.dm
@@ -131,7 +131,7 @@
if(devastated)
devastate_wall()
else
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
var/newgirder = break_wall()
if(newgirder) //maybe we don't /want/ a girder!
transfer_fingerprints_to(newgirder)
@@ -234,7 +234,7 @@
return
user.changeNext_move(CLICK_CD_MELEE)
to_chat(user, span_notice("You push the wall but nothing happens!"))
- playsound(src, 'sound/weapons/genhit.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 25, TRUE)
add_fingerprint(user)
/turf/closed/wall/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm
index 01478f4d9f02b..b62de34f14690 100644
--- a/code/game/turfs/open/_open.dm
+++ b/code/game/turfs/open/_open.dm
@@ -435,7 +435,7 @@
if(used_rods.use(1))
qdel(catwalk_bait)
to_chat(user, span_notice("You construct a catwalk."))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
new /obj/structure/lattice/catwalk(src)
else
to_chat(user, span_warning("You need two rods to build a catwalk!"))
@@ -443,7 +443,7 @@
if(used_rods.use(1))
to_chat(user, span_notice("You construct a lattice."))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
new /obj/structure/lattice(src)
else
to_chat(user, span_warning("You need one rod to build a lattice."))
@@ -459,7 +459,7 @@
balloon_alert(user, "need a floor tile to build!")
return
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
var/turf/open/floor/plating/new_plating = place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
if(lattice)
qdel(lattice)
@@ -483,7 +483,7 @@
balloon_alert(user, "no tile!")
return
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
new used_tiles.tile_type(src)
/// Very similar to build_with_rods, this exists to allow building transport/tram girders on openspace
@@ -496,5 +496,5 @@
balloon_alert(user, "not enough titanium!")
return
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
new /obj/structure/girder/tram(src)
diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm
index 504e876d536ce..f81ac4c7f536e 100644
--- a/code/game/turfs/open/chasm.dm
+++ b/code/game/turfs/open/chasm.dm
@@ -65,7 +65,7 @@
to_chat(user, span_warning("You need one rod to build a lattice."))
return
to_chat(user, span_notice("You construct a lattice."))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
// Create a lattice, without reverting to our baseturf
new /obj/structure/lattice(src)
return
diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm
index 6e4834773c325..9c7cf01576178 100644
--- a/code/game/turfs/open/floor/plating.dm
+++ b/code/game/turfs/open/floor/plating.dm
@@ -148,10 +148,10 @@
if(L)
qdel(L)
to_chat(user, span_notice("You reinforce the foamed plating with tiling."))
- playsound(src, 'sound/weapons/Genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/Genhit.ogg', 50, TRUE)
ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR)
else
- playsound(src, 'sound/weapons/tap.ogg', 100, TRUE) //The attack sound is muffled by the foam itself
+ playsound(src, 'sound/items/weapons/tap.ogg', 100, TRUE) //The attack sound is muffled by the foam itself
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(prob(I.force * 20 - 25))
diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm
index c080e228438a5..eebb74b72897b 100644
--- a/code/game/turfs/open/lava.dm
+++ b/code/game/turfs/open/lava.dm
@@ -16,7 +16,7 @@
light_power = 0.75
light_color = LIGHT_COLOR_LAVA
light_on = FALSE
- bullet_bounce_sound = 'sound/items/welder2.ogg'
+ bullet_bounce_sound = 'sound/items/tools/welder2.ogg'
footstep = FOOTSTEP_LAVA
barefootstep = FOOTSTEP_LAVA
@@ -201,7 +201,7 @@
return
if(R.use(1))
to_chat(user, span_notice("You construct a lattice."))
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 50, TRUE)
new /obj/structure/lattice/lava(locate(x, y, z))
else
to_chat(user, span_warning("You need one rod to build a heatproof lattice."))
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 19356c2e32309..38976bcfdd6df 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -47,7 +47,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
var/requires_activation //add to air processing after initialize?
var/changing_turf = FALSE
- var/bullet_bounce_sound = 'sound/weapons/gun/general/mag_bullet_remove.ogg' //sound played when a shell casing is ejected ontop of the turf.
+ var/bullet_bounce_sound = 'sound/items/weapons/gun/general/mag_bullet_remove.ogg' //sound played when a shell casing is ejected ontop of the turf.
var/bullet_sizzle = FALSE //used by ammo_casing/bounce_away() to determine if the shell casing should make a sizzle sound when it's ejected over the turf
//IE if the turf is supposed to be water, set TRUE.
diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm
index ca7b45649d159..e348321326473 100644
--- a/code/modules/admin/antag_panel.dm
+++ b/code/modules/admin/antag_panel.dm
@@ -77,16 +77,16 @@ GLOBAL_VAR(antag_prototypes)
/datum/mind/proc/get_special_statuses()
var/list/result = LAZYCOPY(special_statuses)
if(!current)
- result += "No body!"
+ result += span_bad("No body!")
if(current && HAS_TRAIT(current, TRAIT_MINDSHIELD))
- result += "Mindshielded"
+ result += span_good("Mindshielded")
if(current && HAS_MIND_TRAIT(current, TRAIT_UNCONVERTABLE))
- result += "Unconvertable"
+ result += span_good("Unconvertable")
//Move these to mob
if(iscyborg(current))
var/mob/living/silicon/robot/robot = current
if (robot.emagged)
- result += "Emagged"
+ result += span_bad("Emagged")
return result.Join(" | ")
/datum/mind/proc/traitor_panel()
@@ -154,7 +154,7 @@ GLOBAL_VAR(antag_prototypes)
continue
else //Show removal and current one
priority_sections |= antag_category
- antag_header_parts += "[current_antag.name]"
+ antag_header_parts += span_bad("[current_antag.name]")
antag_header_parts += "Remove"
antag_header_parts += "Open VV"
diff --git a/code/modules/admin/smites/dock_pay.dm b/code/modules/admin/smites/dock_pay.dm
index 0ce91bbd4b701..a3828feb828dc 100644
--- a/code/modules/admin/smites/dock_pay.dm
+++ b/code/modules/admin/smites/dock_pay.dm
@@ -28,4 +28,4 @@
else
card.registered_account.account_balance = card.registered_account.account_balance - new_cost
card.registered_account.bank_card_talk("[new_cost] credits deducted from your account based on performance review.")
- SEND_SOUND(target, 'sound/machines/buzz-sigh.ogg')
+ SEND_SOUND(target, 'sound/machines/buzz/buzz-sigh.ogg')
diff --git a/code/modules/admin/smites/imaginary_friend_special.dm b/code/modules/admin/smites/imaginary_friend_special.dm
index e670e26fd1fa4..37425faf3b1c8 100644
--- a/code/modules/admin/smites/imaginary_friend_special.dm
+++ b/code/modules/admin/smites/imaginary_friend_special.dm
@@ -1,6 +1,8 @@
#define CHOICE_RANDOM_APPEARANCE "Random"
#define CHOICE_PREFS_APPEARANCE "Look-a-like"
+#define CHOICE_PICK_PLAYER "Pick player"
#define CHOICE_POLL_GHOSTS "Offer to ghosts"
+#define CHOICE_END_THEM "Do it!"
#define CHOICE_CANCEL "Cancel"
/**
@@ -15,10 +17,12 @@
**/
/datum/smite/custom_imaginary_friend
name = "Imaginary Friend (Special)"
- /// Who are we going to add to your head today?
- var/list/friend_candidates
/// Do we randomise friend appearances or not?
var/random_appearance
+ /// Are we polling for ghosts
+ var/ghost_polling
+ /// How many imaginary friends should be added when polling
+ var/polled_friend_count
/datum/smite/custom_imaginary_friend/configure(client/user)
var/appearance_choice = tgui_alert(user,
@@ -29,69 +33,99 @@
return FALSE
random_appearance = appearance_choice == CHOICE_RANDOM_APPEARANCE
- var/picked_client = tgui_input_list(user, "Pick the player to put in control", "New Imaginary Friend", list(CHOICE_POLL_GHOSTS) + sort_list(GLOB.clients))
- if(isnull(picked_client))
- return FALSE
-
- if(picked_client == CHOICE_POLL_GHOSTS)
- return poll_ghosts(user)
-
- var/client/friend_candidate_client = picked_client
- if(QDELETED(friend_candidate_client))
- to_chat(user, span_warning("Selected player no longer has a client, aborting."))
- return FALSE
+ var/client_selection_choice = tgui_alert(user,
+ "Do you want to pick a specific player, or poll for ghosts?",
+ "Imaginary Friend Selection?",
+ list(CHOICE_PICK_PLAYER, CHOICE_POLL_GHOSTS, CHOICE_CANCEL))
- if(isliving(friend_candidate_client.mob) && (tgui_alert(user, "This player already has a living mob ([friend_candidate_client.mob]). Do you still want to turn them into an Imaginary Friend?", "Remove player from mob?", list("Do it!", "Cancel")) != "Do it!"))
+ if(isnull(client_selection_choice) || client_selection_choice == CHOICE_CANCEL)
return FALSE
+ ghost_polling = client_selection_choice == CHOICE_POLL_GHOSTS
- if(QDELETED(friend_candidate_client))
- to_chat(user, span_warning("Selected player no longer has a client, aborting."))
- return FALSE
+ if(ghost_polling)
+ var/how_many = tgui_input_number(user, "How many imaginary friends should be added?", "Imaginary friend count", default = 1, min_value = 1)
+ if(isnull(how_many) || how_many < 1)
+ return FALSE
+ polled_friend_count = how_many
- friend_candidates = list(friend_candidate_client)
return TRUE
-/// Try to offer the role to ghosts
-/datum/smite/custom_imaginary_friend/proc/poll_ghosts(client/user)
- var/how_many = tgui_input_number(user, "How many imaginary friends should be added?", "Imaginary friend count", default = 1, min_value = 1)
- if (isnull(how_many) || how_many < 1)
- return FALSE
+/// Try to offer the role to ghosts
+/datum/smite/custom_imaginary_friend/proc/poll_ghosts(client/user, mob/living/target)
var/list/volunteers = SSpolling.poll_ghost_candidates(
check_jobban = ROLE_PAI,
poll_time = 10 SECONDS,
ignore_category = POLL_IGNORE_IMAGINARYFRIEND,
- role_name_text = "imaginary friend",
+ jump_target = target,
+ role_name_text = "an imaginary friend for [target.real_name]",
)
var/volunteer_count = length(volunteers)
- if (volunteer_count == 0)
+ if(volunteer_count == 0)
to_chat(user, span_warning("No candidates volunteered, aborting."))
- return FALSE
+ return
shuffle_inplace(volunteers)
- friend_candidates = list()
- while (how_many > 0 && length(volunteers) > 0)
+ var/list/friend_candidates = list()
+ while(polled_friend_count > 0 && length(volunteers) > 0)
var/mob/dead/observer/lucky_ghost = pop(volunteers)
if (!lucky_ghost.client)
continue
- how_many--
+ polled_friend_count--
friend_candidates += lucky_ghost.client
- return TRUE
+ return friend_candidates
+
+/// Pick client manually
+/datum/smite/custom_imaginary_friend/proc/pick_client(client/user)
+ var/picked_client = tgui_input_list(user, "Pick the player to put in control", "New Imaginary Friend", sort_list(GLOB.clients))
+ if(isnull(picked_client))
+ return
+
+ var/client/friend_candidate_client = picked_client
+ if(QDELETED(friend_candidate_client))
+ to_chat(user, span_warning("Selected player no longer has a client, aborting."))
+ return
+
+ if(isliving(friend_candidate_client.mob))
+ var/end_them_choice = tgui_alert(user,
+ "This player already has a living mob ([friend_candidate_client.mob]). Do you still want to turn them into an Imaginary Friend?",
+ "Remove player from mob?",
+ list(CHOICE_END_THEM, CHOICE_CANCEL))
+ if(end_them_choice == CHOICE_CANCEL)
+ return
+
+ if(QDELETED(friend_candidate_client))
+ to_chat(user, span_warning("Selected player no longer has a client, aborting."))
+ return
+
+ return list(friend_candidate_client)
+
/datum/smite/custom_imaginary_friend/effect(client/user, mob/living/target)
. = ..()
+ // Run this check before and after polling, we don't wanna poll for something which already stopped existing
+ if(QDELETED(target))
+ to_chat(user, span_warning("The target mob no longer exists, aborting."))
+ return
+
+ var/list/friend_candidates
+ if(ghost_polling)
+ friend_candidates = poll_ghosts(user, target)
+ else
+ friend_candidates = pick_client(user)
+
if(QDELETED(target))
to_chat(user, span_warning("The target mob no longer exists, aborting."))
return
- if(!length(friend_candidates))
+ if(isnull(friend_candidates) || !length(friend_candidates))
to_chat(user, span_warning("No provided imaginary friend candidates, aborting."))
return
var/list/final_clients = list()
- for (var/client/client as anything in friend_candidates)
- if (QDELETED(client))
+ for(var/client/client as anything in friend_candidates)
+ if(QDELETED(client))
continue
final_clients += client
@@ -99,7 +133,7 @@
to_chat(user, span_warning("No provided imaginary friend candidates had clients, aborting."))
return
- for (var/client/friend_candidate_client as anything in final_clients)
+ for(var/client/friend_candidate_client as anything in final_clients)
var/mob/client_mob = friend_candidate_client.mob
if(isliving(client_mob))
client_mob.ghostize()
@@ -114,5 +148,7 @@
#undef CHOICE_RANDOM_APPEARANCE
#undef CHOICE_PREFS_APPEARANCE
+#undef CHOICE_PICK_PLAYER
#undef CHOICE_POLL_GHOSTS
+#undef CHOICE_END_THEM
#undef CHOICE_CANCEL
diff --git a/code/modules/admin/smites/immerse.dm b/code/modules/admin/smites/immerse.dm
index fd330868e9940..9cdd8aca95ec8 100644
--- a/code/modules/admin/smites/immerse.dm
+++ b/code/modules/admin/smites/immerse.dm
@@ -5,5 +5,5 @@
/datum/smite/immerse/effect(client/user, mob/living/target)
. = ..()
immerse_player(target)
- SEND_SOUND(target, sound('sound/voice/roleplay.ogg'))
+ SEND_SOUND(target, sound('sound/misc/roleplay.ogg'))
to_chat(target, span_boldnotice("Please roleplay appropriately, okay?"))
diff --git a/code/modules/admin/smites/lightning.dm b/code/modules/admin/smites/lightning.dm
index 660af779f9b5c..6ffd8eb58695c 100644
--- a/code/modules/admin/smites/lightning.dm
+++ b/code/modules/admin/smites/lightning.dm
@@ -12,7 +12,7 @@
var/turf/lightning_source = get_step(get_step(user, NORTH), NORTH)
lightning_source.Beam(user, icon_state="lightning[rand(1,12)]", time = 5)
user.adjustFireLoss(LIGHTNING_BOLT_DAMAGE)
- playsound(get_turf(user), 'sound/magic/lightningbolt.ogg', 50, TRUE)
+ playsound(get_turf(user), 'sound/effects/magic/lightningbolt.ogg', 50, TRUE)
if(ishuman(user))
var/mob/living/carbon/human/human_target = user
human_target.electrocution_animation(LIGHTNING_BOLT_ELECTROCUTION_ANIMATION_LENGTH)
diff --git a/code/modules/admin/smites/nugget.dm b/code/modules/admin/smites/nugget.dm
index 4525f674f2c0d..18e5254e615f5 100644
--- a/code/modules/admin/smites/nugget.dm
+++ b/code/modules/admin/smites/nugget.dm
@@ -16,6 +16,6 @@
if (limb.body_part == HEAD || limb.body_part == CHEST)
continue
addtimer(CALLBACK(limb, TYPE_PROC_REF(/obj/item/bodypart/, dismember)), timer)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), carbon_target, 'sound/effects/cartoon_pop.ogg', 70), timer)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), carbon_target, 'sound/effects/cartoon_sfx/cartoon_pop.ogg', 70), timer)
addtimer(CALLBACK(carbon_target, TYPE_PROC_REF(/mob/living/, spin), 4, 1), timer - 0.4 SECONDS)
timer += 2 SECONDS
diff --git a/code/modules/admin/verbs/adminevents.dm b/code/modules/admin/verbs/adminevents.dm
index d2eeba90262cf..b3c61e8e787f2 100644
--- a/code/modules/admin/verbs/adminevents.dm
+++ b/code/modules/admin/verbs/adminevents.dm
@@ -168,7 +168,7 @@ ADMIN_VERB(disable_shuttle, R_ADMIN, "Disable Shuttle", "Those fuckers aren't ge
priority_announce(
text = "Emergency Shuttle uplink failure, shuttle disabled until further notice.",
title = "Uplink Failure",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "grey",
)
@@ -194,7 +194,7 @@ ADMIN_VERB(enable_shuttle, R_ADMIN, "Enable Shuttle", "Those fuckers ARE getting
priority_announce(
text = "Emergency Shuttle uplink reestablished, shuttle enabled.",
title = "Uplink Restored",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "green",
)
diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm
index c7acd1cba4624..c58d63581bd34 100644
--- a/code/modules/admin/verbs/adminfun.dm
+++ b/code/modules/admin/verbs/adminfun.dm
@@ -147,7 +147,7 @@ ADMIN_VERB(polymorph_all, R_ADMIN, "Polymorph All", "Applies the effects of the
continue
M.audible_message(span_hear("...wabbajack...wabbajack..."))
- playsound(M.loc, 'sound/magic/staff_change.ogg', 50, TRUE, -1)
+ playsound(M.loc, 'sound/effects/magic/staff_change.ogg', 50, TRUE, -1)
M.wabbajack()
@@ -187,7 +187,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(admin_smite, R_ADMIN|R_FUN, "Smite", "Smite a player
/proc/firing_squad(mob/living/carbon/target, turf/source_turf, body_zone, wound_bonus, damage)
if(!target.get_bodypart(body_zone))
return
- playsound(target, 'sound/weapons/gun/revolver/shot.ogg', 100)
+ playsound(target, 'sound/items/weapons/gun/revolver/shot.ogg', 100)
var/obj/projectile/bullet/smite/divine_wrath = new(source_turf)
divine_wrath.damage = damage
divine_wrath.wound_bonus = wound_bonus
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 8540ff99e5733..834e4741cdecf 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -103,7 +103,7 @@ ADMIN_VERB(cmd_admin_pm_panel, R_NONE, "Admin PM", "Show a list of clients to PM
if(length(recipient_interactions) == 1)
if(length(opening_interactions)) // Inform the admin that they aren't the first
var/printable_interators = english_list(opening_interactions)
- SEND_SOUND(src, sound('sound/machines/buzz-sigh.ogg', volume=30))
+ SEND_SOUND(src, sound('sound/machines/buzz/buzz-sigh.ogg', volume=30))
message_prompt += "\n\n**This ticket is already being responded to by: [printable_interators]**"
// add the admin who is currently responding to the list of people responding
LAZYADD(recipient_ticket.opening_responders, src)
diff --git a/code/modules/admin/verbs/anonymousnames.dm b/code/modules/admin/verbs/anonymousnames.dm
index 7f56155c9989a..2192428846709 100644
--- a/code/modules/admin/verbs/anonymousnames.dm
+++ b/code/modules/admin/verbs/anonymousnames.dm
@@ -268,7 +268,7 @@ GLOBAL_DATUM(current_anonymous_theme, /datum/anonymous_theme)
set_station_name("[pick(GLOB.first_names)] [pick(GLOB.last_names)]")
/datum/anonymous_theme/station/announce_to_all_players()
- priority_announce("Confirmed level 9 reality error event near [station_name()]. All personnel must try their best to carry on, as to not trigger more reality events by accident.", "Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg')
+ priority_announce("Confirmed level 9 reality error event near [station_name()]. All personnel must try their best to carry on, as to not trigger more reality events by accident.", "Central Command Higher Dimensional Affairs", 'sound/announcer/notice/notice1.ogg')
/datum/anonymous_theme/station/anonymous_name(mob/target)
return new_station_name()
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 20cdf3514598f..b6c5e10ca1d81 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -583,8 +583,8 @@ ADMIN_VERB(jump_to_ruin, R_DEBUG, "Jump to Ruin", "Displays a list of all placed
return
var/datum/map_template/ruin/template = landmark.ruin_template
user.mob.forceMove(get_turf(landmark))
- to_chat(user, span_name("[template.name]"), confidential = TRUE)
- to_chat(user, "[template.description]", confidential = TRUE)
+ to_chat(user, span_name(template.name), confidential = TRUE)
+ to_chat(user, span_italics(template.description), confidential = TRUE)
ADMIN_VERB_VISIBILITY(place_ruin, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG)
ADMIN_VERB(place_ruin, R_DEBUG, "Spawn Ruin", "Attempt to randomly place a specific ruin.", ADMIN_CATEGORY_MAPPING)
@@ -625,7 +625,7 @@ ADMIN_VERB(place_ruin, R_DEBUG, "Spawn Ruin", "Attempt to randomly place a speci
log_admin("[key_name(user)] randomly spawned ruin [ruinname] at [COORD(landmark)].")
user.mob.forceMove(get_turf(landmark))
to_chat(user, span_name("[template.name]"), confidential = TRUE)
- to_chat(user, "[template.description]", confidential = TRUE)
+ to_chat(user, span_italics("[template.description]"), confidential = TRUE)
else
to_chat(user, span_warning("Failed to place [template.name]."), confidential = TRUE)
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index 9012a8652bbff..368f6f4d6f45e 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -648,12 +648,12 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
/proc/portalAnnounce(announcement, playlightning)
set waitfor = FALSE
if (playlightning)
- sound_to_playing_players('sound/magic/lightning_chargeup.ogg')
+ sound_to_playing_players('sound/effects/magic/lightning_chargeup.ogg')
sleep(8 SECONDS)
priority_announce(replacetext(announcement, "%STATION%", station_name()))
if (playlightning)
sleep(2 SECONDS)
- sound_to_playing_players('sound/magic/lightningbolt.ogg')
+ sound_to_playing_players('sound/effects/magic/lightningbolt.ogg')
/// Spawns a portal storm that spawns in sentient/non sentient mobs
/// portal_appearance is a list in the form (turf's plane offset + 1) -> appearance to use
@@ -671,7 +671,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
H.equipOutfit(humanoutfit)
var/turf/T = get_step(loc, SOUTHWEST)
T.flick_overlay_static(portal_appearance[GET_TURF_PLANE_OFFSET(T) + 1], 15)
- playsound(T, 'sound/magic/lightningbolt.ogg', rand(80, 100), TRUE)
+ playsound(T, 'sound/effects/magic/lightningbolt.ogg', rand(80, 100), TRUE)
/datum/everyone_is_an_antag_controller
var/chosen_antag = ""
diff --git a/code/modules/admin/verbs/server.dm b/code/modules/admin/verbs/server.dm
index a8389ca0bc155..5ac9fd272b45c 100644
--- a/code/modules/admin/verbs/server.dm
+++ b/code/modules/admin/verbs/server.dm
@@ -98,7 +98,7 @@ ADMIN_VERB(start_now, R_SERVER, "Start Now", "Start the round RIGHT NOW.", ADMIN
SSticker.start_immediately = FALSE
SSticker.SetTimeLeft(3 MINUTES)
to_chat(world, span_big(span_notice("The game will start in 3 minutes.")))
- SEND_SOUND(world, sound('sound/ai/default/attention.ogg'))
+ SEND_SOUND(world, sound('sound/announcer/default/attention.ogg'))
message_admins(span_adminnotice("[key_name_admin(user)] has cancelled immediate game start. Game will start in 3 minutes."))
log_admin("[key_name(user)] has cancelled immediate game start.")
return
@@ -202,11 +202,11 @@ ADMIN_VERB(delay, R_SERVER, "Delay Pre-Game", "Delay the game start.", ADMIN_CAT
SSticker.SetTimeLeft(newtime)
SSticker.start_immediately = FALSE
if(newtime < 0)
- to_chat(world, "The game start has been delayed.", confidential = TRUE)
+ to_chat(world, span_infoplain("The game start has been delayed."), confidential = TRUE)
log_admin("[key_name(user)] delayed the round start.")
else
to_chat(world, span_infoplain(span_bold("The game will start in [DisplayTimeText(newtime)].")), confidential = TRUE)
- SEND_SOUND(world, sound('sound/ai/default/attention.ogg'))
+ SEND_SOUND(world, sound('sound/announcer/default/attention.ogg'))
log_admin("[key_name(user)] set the pre-game delay to [DisplayTimeText(newtime)].")
BLACKBOX_LOG_ADMIN_VERB("Delay Game Start")
diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index fc8bfa0de8486..f490095a019d9 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -415,7 +415,7 @@ GLOBAL_LIST_EMPTY(antagonists)
* Appears at start of roundend_catagory section.
*/
/datum/antagonist/proc/roundend_report_header()
- return "The [roundend_category] were: "
+ return span_header("The [roundend_category] were: ")
/**
* Proc that sends string data for the round-end report.
diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm
index da7c7e9e39cac..27c1fd5a0ea89 100644
--- a/code/modules/antagonists/_common/antag_spawner.dm
+++ b/code/modules/antagonists/_common/antag_spawner.dm
@@ -274,7 +274,7 @@
spawn_antag(chosen_one.client, get_turf(src), initial(demon_type.name), user.mind)
to_chat(user, shatter_msg)
to_chat(user, veil_msg)
- playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE)
+ playsound(user.loc, 'sound/effects/glass/glassbr1.ogg', 100, TRUE)
qdel(src)
else
to_chat(user, span_warning("The bottle's contents usually pop and boil constantly, but right now they're eerily still and calm. Perhaps you should try again later."))
diff --git a/code/modules/antagonists/_common/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm
index 29f94b040ec5f..527196c51c3ea 100644
--- a/code/modules/antagonists/_common/antag_team.dm
+++ b/code/modules/antagonists/_common/antag_team.dm
@@ -49,12 +49,12 @@ GLOBAL_LIST_EMPTY(antagonist_teams)
/datum/team/proc/roundend_report()
var/list/report = list()
- report += "\The [name]:"
+ report += span_header("\The [name]:")
report += "The [member_name]s were:"
report += printplayerlist(members)
if(objectives.len)
- report += "Team had following objectives:"
+ report += span_header("Team had following objectives:")
var/win = TRUE
var/objective_count = 1
for(var/datum/objective/objective as anything in objectives)
diff --git a/code/modules/antagonists/abductor/abductee/abductee.dm b/code/modules/antagonists/abductor/abductee/abductee.dm
index fa529a6504415..9b5421c0fd720 100644
--- a/code/modules/antagonists/abductor/abductee/abductee.dm
+++ b/code/modules/antagonists/abductor/abductee/abductee.dm
@@ -6,7 +6,7 @@
*/
/datum/antagonist/abductee
name = "\improper Abductee"
- stinger_sound = 'sound/ambience/antag/abductee.ogg'
+ stinger_sound = 'sound/music/antag/abductee.ogg'
roundend_category = "abductees"
antagpanel_category = ANTAG_GROUP_ABDUCTORS
antag_hud_name = "abductee"
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index cd56fcdaa5cdc..2ca46499a7db0 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -7,7 +7,7 @@
show_in_antagpanel = FALSE //should only show subtypes
show_to_ghosts = TRUE
suicide_cry = "FOR THE MOTHERSHIP!!" // They can't even talk but y'know
- stinger_sound = 'sound/ambience/antag/ayylien.ogg'
+ stinger_sound = 'sound/music/antag/ayylien.ogg'
var/datum/team/abductor_team/team
var/sub_role
var/outfit
@@ -171,7 +171,7 @@
else
result += "[name] team failed its mission."
- result += "The abductors of [name] were:"
+ result += span_header("The abductors of [name] were:")
for(var/datum/mind/abductor_mind in members)
result += printplayer(abductor_mind)
result += printobjectives(objectives)
diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
index ab1636b4dedfd..91107529721bc 100644
--- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
+++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
@@ -226,7 +226,7 @@
return
living_target.balloon_alert(living_target, "you hear a voice")
- to_chat(living_target, span_hear("You hear a voice in your head saying: [message]"))
+ to_chat(living_target, span_hear("You hear a voice in your head saying: [span_abductor(message)]"))
to_chat(user, span_notice("You send the message to your target."))
log_directed_talk(user, living_target, message, LOG_SAY, "abductor whisper")
@@ -235,7 +235,7 @@
name = "alien firing pin"
icon_state = "firing_pin_ayy"
desc = "This firing pin is slimy and warm; you can swear you feel it constantly trying to mentally probe you."
- fail_message = "Firing error, please contact Command."
+ fail_message = span_abductor("Firing error, please contact Command.")
/obj/item/firing_pin/abductor/pin_auth(mob/living/user)
. = isabductor(user)
@@ -306,7 +306,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
cooldown = 0 SECONDS
stamina_damage = 0
knockdown_time = 14 SECONDS
- on_stun_sound = 'sound/weapons/egloves.ogg'
+ on_stun_sound = 'sound/items/weapons/egloves.ogg'
affect_cyborg = TRUE
var/mode = BATON_STUN
@@ -339,7 +339,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
affect_cyborg = is_stun_mode
log_stun_attack = is_stun_mode // other modes have their own log entries.
stun_animation = is_stun_or_sleep
- on_stun_sound = is_stun_or_sleep ? 'sound/weapons/egloves.ogg' : null
+ on_stun_sound = is_stun_or_sleep ? 'sound/items/weapons/egloves.ogg' : null
to_chat(usr, span_notice("You switch the baton to [txt] mode."))
update_appearance()
@@ -422,7 +422,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
var/mob/living/carbon/carbon_victim = victim
if(!carbon_victim.handcuffed)
if(carbon_victim.canBeHandcuffed())
- playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2)
+ playsound(src, 'sound/items/weapons/cablecuff.ogg', 30, TRUE, -2)
carbon_victim.visible_message(span_danger("[user] begins restraining [carbon_victim] with [src]!"), \
span_userdanger("[user] begins shaping an energy field around your hands!"))
if(do_after(user, time_to_cuff, carbon_victim) && carbon_victim.canBeHandcuffed())
@@ -522,7 +522,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
..()
user.visible_message(span_notice("[user] places down [src] and activates it."), span_notice("You place down [src] and activate it."))
user.dropItemToGround(src)
- playsound(src, 'sound/machines/terminal_alert.ogg', 50)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50)
addtimer(CALLBACK(src, PROC_REF(try_spawn_machine)), 3 SECONDS)
/obj/item/abductor_machine_beacon/proc/try_spawn_machine()
@@ -539,7 +539,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
visible_message(span_notice("[new_machine] warps on top of the beacon!"))
qdel(src)
else
- playsound(src, 'sound/machines/buzz-two.ogg', 50)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50)
/obj/item/abductor_machine_beacon/chem_dispenser
name = "beacon - Reagent Synthesizer"
@@ -618,7 +618,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
inhand_icon_state = "silencer"
toolspeed = 0.25
tool_behaviour = null
- usesound = 'sound/items/pshoom.ogg'
+ usesound = 'sound/items/pshoom/pshoom.ogg'
///A list of all the tools we offer. Stored as "Tool" for the key, and the icon/icon_state as the value.
var/list/tool_list = list()
///Which toolset do we have active currently?
diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm
index 72b2c1e14ad1c..e0b3df0f19c32 100644
--- a/code/modules/antagonists/abductor/equipment/glands/electric.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm
@@ -23,4 +23,4 @@
/obj/item/organ/internal/heart/gland/electric/proc/zap()
tesla_zap(source = owner, zap_range = 4, power = 8e3, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
- playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, TRUE)
+ playsound(get_turf(owner), 'sound/effects/magic/lightningshock.ogg', 50, TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm
index 7f4462377654c..83ba7a7ffbdf2 100644
--- a/code/modules/antagonists/abductor/equipment/glands/heal.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm
@@ -183,7 +183,7 @@
owner.visible_message(span_warning("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!"),
span_userdanger("With a loud snap, your [parse_zone(body_zone)] rapidly grows back from your body!"),
span_warning("Your hear a loud snap."))
- playsound(owner, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(owner, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
owner.regenerate_limb(body_zone)
/obj/item/organ/internal/heart/gland/heal/proc/replace_blood()
@@ -212,7 +212,7 @@
/obj/item/organ/internal/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
if(!IS_ORGANIC_LIMB(chest))
owner.visible_message(span_warning("[owner]'s [chest.name] rapidly expels its mechanical components, replacing them with flesh!"), span_userdanger("Your [chest.name] rapidly expels its mechanical components, replacing them with flesh!"))
- playsound(owner, 'sound/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE)
+ playsound(owner, 'sound/effects/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE)
var/list/dirs = GLOB.alldirs.Copy()
for(var/i in 1 to 3)
var/obj/effect/decal/cleanable/robot_debris/debris = new(get_turf(owner))
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index 27093778c3116..c4e59c505bf04 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -169,7 +169,7 @@
credits += point_reward
return "Experiment successful! [point_reward] new data-points collected."
else
- playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return "Experiment failed! No replacement organ detected."
else
say("Brain activity nonexistent - disposing sample...")
diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm
index 827d929b0fbb5..fae4dd5059b16 100644
--- a/code/modules/antagonists/ashwalker/ashwalker.dm
+++ b/code/modules/antagonists/ashwalker/ashwalker.dm
@@ -65,9 +65,9 @@
objectives -= necropolis_objective //So we don't count it in the check for other objectives.
report += "The [name] was tasked with defending the Necropolis:"
if(necropolis_objective.check_completion())
- report += span_greentext("The nest stands! Glory to the Necropolis! ")
+ report += span_greentext(span_header("The nest stands! Glory to the Necropolis! "))
else
- report += span_redtext("The Necropolis was destroyed, the tribe has fallen... ")
+ report += span_redtext(span_header("The Necropolis was destroyed, the tribe has fallen... "))
if(length(objectives))
report += span_header("The [name]'s other objectives were:")
diff --git a/code/modules/antagonists/battlecruiser/battlecruiser.dm b/code/modules/antagonists/battlecruiser/battlecruiser.dm
index bcc2fc963309a..194034e31bbd2 100644
--- a/code/modules/antagonists/battlecruiser/battlecruiser.dm
+++ b/code/modules/antagonists/battlecruiser/battlecruiser.dm
@@ -20,7 +20,7 @@
antag_hud_name = "battlecruiser_crew"
antagpanel_category = ANTAG_GROUP_SYNDICATE
job_rank = ROLE_BATTLECRUISER_CREW
- stinger_sound = 'sound/ambience/antag/ops.ogg'
+ stinger_sound = 'sound/music/antag/ops.ogg'
/// Team to place the crewmember on.
var/datum/team/battlecruiser/battlecruiser_team
diff --git a/code/modules/antagonists/blob/blob_antag.dm b/code/modules/antagonists/blob/blob_antag.dm
index 9cad238bb0011..9f9d97fac8dde 100644
--- a/code/modules/antagonists/blob/blob_antag.dm
+++ b/code/modules/antagonists/blob/blob_antag.dm
@@ -6,7 +6,7 @@
show_in_antagpanel = FALSE
job_rank = ROLE_BLOB
ui_name = "AntagInfoBlob"
- stinger_sound = 'sound/ambience/antag/blobalert.ogg'
+ stinger_sound = 'sound/music/antag/blobalert.ogg'
/// Action to release a blob infection
var/datum/action/innate/blobpop/pop_action
/// Initial points for a human blob
@@ -133,13 +133,13 @@
owner.mind.transfer_to(blob_cam)
old_body.gib()
blob_cam.place_blob_core(placement_override, pop_override = TRUE)
- playsound(get_turf(blob_cam), 'sound/ambience/antag/blobalert.ogg', 50, FALSE)
+ playsound(get_turf(blob_cam), 'sound/music/antag/blobalert.ogg', 50, FALSE)
blobtag.has_already_popped = TRUE
notify_ghosts(
"A Blob host has burst in [get_area_name(blob_cam.blob_core)]",
source = blob_cam.blob_core,
- ghost_sound = 'sound/ambience/antag/blobalert.ogg',
+ ghost_sound = 'sound/music/antag/blobalert.ogg',
header = "Blob Awakening!",
notify_volume = 75,
)
diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm
index 65d2acb8bb905..99a27429e61a7 100644
--- a/code/modules/antagonists/blob/overmind.dm
+++ b/code/modules/antagonists/blob/overmind.dm
@@ -187,7 +187,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
blobstrain.on_sporedeath(spore)
/mob/camera/blob/proc/victory()
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
sleep(10 SECONDS)
for(var/mob/living/live_guy as anything in GLOB.mob_living_list)
var/turf/guy_turf = get_turf(live_guy)
diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm
index c7a2fc3a1107f..ce1b016dcb045 100644
--- a/code/modules/antagonists/blob/structures/_blob.dm
+++ b/code/modules/antagonists/blob/structures/_blob.dm
@@ -282,11 +282,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/blob/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
switch(damage_type)
diff --git a/code/modules/antagonists/brainwashing/brainwashing.dm b/code/modules/antagonists/brainwashing/brainwashing.dm
index 5d5cca3cb6de1..ebad949060a91 100644
--- a/code/modules/antagonists/brainwashing/brainwashing.dm
+++ b/code/modules/antagonists/brainwashing/brainwashing.dm
@@ -30,7 +30,7 @@
/datum/antagonist/brainwashed
name = "\improper Brainwashed Victim"
job_rank = ROLE_BRAINWASHED
- stinger_sound = 'sound/ambience/antag/brainwashed.ogg'
+ stinger_sound = 'sound/music/antag/brainwashed.ogg'
roundend_category = "brainwashed victims"
show_in_antagpanel = TRUE
antag_hud_name = "brainwashed"
diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm
index 4f535ece8cef0..80d14724170fe 100644
--- a/code/modules/antagonists/brother/brother.dm
+++ b/code/modules/antagonists/brother/brother.dm
@@ -9,7 +9,7 @@
suicide_cry = "FOR MY BROTHER!!"
antag_moodlet = /datum/mood_event/focused
hardcore_random_bonus = TRUE
- stinger_sound = 'sound/ambience/antag/tatoralert.ogg'
+ stinger_sound = 'sound/music/antag/traitor/tatoralert.ogg'
VAR_PRIVATE
datum/team/brother_team/team
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 505c103f9d09c..59610861756e6 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -14,7 +14,7 @@
can_assign_self_objectives = TRUE
default_custom_objective = "Consume the station's most valuable genomes."
hardcore_random_bonus = TRUE
- stinger_sound = 'sound/ambience/antag/ling_alert.ogg'
+ stinger_sound = 'sound/music/antag/ling_alert.ogg'
/// Whether to give this changeling objectives or not
var/give_objectives = TRUE
/// Weather we assign objectives which compete with other lings
@@ -59,7 +59,7 @@
/// The voice we're mimicing via the changeling voice ability.
var/mimicing = ""
/// Whether we can currently respec in the cellular emporium.
- var/can_respec = FALSE
+ var/can_respec = 0
/// The currently active changeling sting.
var/datum/action/changeling/sting/chosen_sting
@@ -442,7 +442,7 @@
to_chat(owner.current, span_notice("We have removed our evolutions from this form, and are now ready to readapt."))
remove_changeling_powers()
- can_respec = FALSE
+ can_respec -= 1
SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt")
log_changeling_power("[key_name(owner)] readapted their changeling powers")
return TRUE
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index d5ee0c2fc873a..71b1509ec816c 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -63,7 +63,7 @@
changeling.adjust_chemicals(10)
if (true_absorbtion)
- changeling.can_respec = TRUE
+ changeling.can_respec++
if(target.stat != DEAD)
target.investigate_log("has died from being changeling absorbed.", INVESTIGATE_DEATHS)
diff --git a/code/modules/antagonists/changeling/powers/defib_grasp.dm b/code/modules/antagonists/changeling/powers/defib_grasp.dm
index 867a595e17dcd..227b11c3a387b 100644
--- a/code/modules/antagonists/changeling/powers/defib_grasp.dm
+++ b/code/modules/antagonists/changeling/powers/defib_grasp.dm
@@ -38,12 +38,12 @@
changeling.set_resting(FALSE)
changeling.adjust_jitter(20 SECONDS)
changeling.emote("scream")
- playsound(changeling, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(changeling, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
// Mimics some real defib stuff (wish this was more generalized)
playsound(defib, SFX_BODYFALL, 50, TRUE)
- playsound(defib, 'sound/machines/defib_zap.ogg', 75, TRUE, -1)
- playsound(defib, 'sound/machines/defib_success.ogg', 50, FALSE) // I guess
+ playsound(defib, 'sound/machines/defib/defib_zap.ogg', 75, TRUE, -1)
+ playsound(defib, 'sound/machines/defib/defib_success.ogg', 50, FALSE) // I guess
defib.shock_pulling(30, changeling)
/// Removes the arms of the defibber if they're a carbon, and stuns them for a bit.
diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm
index 6f2781b20336c..b0149501e6679 100644
--- a/code/modules/antagonists/changeling/powers/fakedeath.dm
+++ b/code/modules/antagonists/changeling/powers/fakedeath.dm
@@ -108,7 +108,7 @@
if(!length(user.get_missing_limbs() - dont_regenerate))
return
- playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
user.visible_message(
span_warning("[user]'s missing limbs reform, making a loud, grotesque sound!"),
span_userdanger("Your limbs regrow, making a loud, crunchy sound and giving you great pain!"),
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index 0b7668260d769..c4f2376f755a0 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -4,7 +4,7 @@
helptext = "We will be placed in control of a small, fragile creature. We may attack a corpse like this to plant an egg which will slowly mature into a new form for us."
button_icon_state = "last_resort"
chemical_cost = 20
- dna_cost = 1
+ dna_cost = CHANGELING_POWER_INNATE
req_human = TRUE
req_stat = DEAD
ignores_fakedeath = TRUE
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 01d97f448cd60..f6b42bf19f212 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -53,8 +53,8 @@
if(istype(hand_item, weapon_type))
user.temporarilyRemoveItemFromInventory(hand_item, TRUE) //DROPDEL will delete the item
if(!silent)
- playsound(user, 'sound/effects/blobattack.ogg', 30, TRUE)
- user.visible_message(span_warning("With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!"), span_notice("We assimilate the [weapon_name_simple] back into our body."), "With a sickening crunch, \
- [target] reforms [target.p_their()] [blade.name] into an arm!",
- span_warning("[blade] reforms back to normal."),
- "= limit))
return
to_chat(owner,span_warning("You begin to carve unnatural symbols into your flesh!"))
- SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10))
+ SEND_SOUND(owner, sound('sound/items/weapons/slice.ogg',0,1,10))
if(!channeling)
channeling = TRUE
else
@@ -292,7 +292,7 @@
owner.visible_message(span_warning("Thin grey dust falls from [owner]'s hand!"), \
span_cult_italic("You invoke the veiling spell, hiding nearby runes."))
charges--
- SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25))
+ SEND_SOUND(owner, sound('sound/effects/magic/smoke.ogg',0,1,25))
owner.whisper(invocation, language = /datum/language/common)
for(var/obj/effect/rune/R in range(5,owner))
R.conceal()
@@ -312,7 +312,7 @@
span_cult_italic("You invoke the counterspell, revealing nearby runes."))
charges--
owner.whisper(invocation, language = /datum/language/common)
- SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25))
+ SEND_SOUND(owner, sound('sound/effects/magic/enter_blood.ogg',0,1,25))
for(var/obj/effect/rune/R in range(7,owner)) //More range in case you weren't standing in exactly the same spot
R.reveal()
for(var/obj/structure/destructible/cult/S in range(6,owner))
@@ -461,7 +461,7 @@
target.color = COLOR_HERETIC_GREEN
animate(target, color = old_color, time = 4 SECONDS, easing = EASE_IN)
target.mob_light(range = 1.5, power = 2.5, color = COLOR_HERETIC_GREEN, duration = 0.5 SECONDS)
- playsound(target, 'sound/magic/magic_block_mind.ogg', 150, TRUE) // insanely quiet
+ playsound(target, 'sound/effects/magic/magic_block_mind.ogg', 150, TRUE) // insanely quiet
to_chat(user, span_warning("An eldritch force intervenes as you touch [target], absorbing most of the effects!"))
to_chat(target, span_warning("As [user] touches you with vile magicks, the Mansus absorbs most of the effects!"))
@@ -559,7 +559,7 @@
/obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user)
if(!C.handcuffed)
- playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2)
+ playsound(loc, 'sound/items/weapons/cablecuff.ogg', 30, TRUE, -2)
C.visible_message(span_danger("[user] begins restraining [C] with dark magic!"), \
span_userdanger("[user] begins shaping dark magic shackles around your wrists!"))
if(do_after(user, 3 SECONDS, C))
@@ -642,7 +642,7 @@
if(candidate.mmi || candidate.shell)
channeling = TRUE
user.visible_message(span_danger("A dark cloud emanates from [user]'s hand and swirls around [candidate]!"))
- playsound(T, 'sound/machines/airlock_alien_prying.ogg', 80, TRUE)
+ playsound(T, 'sound/machines/airlock/airlock_alien_prying.ogg', 80, TRUE)
var/prev_color = candidate.color
candidate.color = "black"
if(!do_after(user, 9 SECONDS, target = candidate))
@@ -673,7 +673,7 @@
if(istype(target,/obj/machinery/door/airlock))
channeling = TRUE
- playsound(T, 'sound/machines/airlockforced.ogg', 50, TRUE)
+ playsound(T, 'sound/machines/airlock/airlockforced.ogg', 50, TRUE)
do_sparks(5, TRUE, target)
if(!do_after(user, 5 SECONDS, target = user) && !QDELETED(target))
channeling = FALSE
@@ -790,7 +790,7 @@
construct_thing.adjust_health(-uses)
construct_thing.visible_message(span_warning("[construct_thing] is partially healed by [user]'s blood magic!"))
uses = 0
- playsound(get_turf(construct_thing), 'sound/magic/staff_healing.ogg', 25)
+ playsound(get_turf(construct_thing), 'sound/effects/magic/staff_healing.ogg', 25)
user.Beam(construct_thing, icon_state="sendbeam", time = 1 SECONDS)
return TRUE
@@ -845,7 +845,7 @@
need_mob_update += human_bloodbag.adjustBruteLoss(damage_healed * (human_bloodbag.getBruteLoss() / overall_damage), updating_health = FALSE)
if(need_mob_update)
human_bloodbag.updatehealth()
- playsound(get_turf(human_bloodbag), 'sound/magic/staff_healing.ogg', 25)
+ playsound(get_turf(human_bloodbag), 'sound/effects/magic/staff_healing.ogg', 25)
new /obj/effect/temp_visual/cult/sparks(get_turf(human_bloodbag))
if (user != human_bloodbag) //Dont create beam from the user to the user
user.Beam(human_bloodbag, icon_state="sendbeam", time = 15)
@@ -866,7 +866,7 @@
human_bloodbag.blood_volume -= BLOOD_DRAIN_GAIN * USES_TO_BLOOD
uses += BLOOD_DRAIN_GAIN
user.Beam(human_bloodbag, icon_state="drainbeam", time = 1 SECONDS)
- playsound(get_turf(human_bloodbag), 'sound/magic/enter_blood.ogg', 50)
+ playsound(get_turf(human_bloodbag), 'sound/effects/magic/enter_blood.ogg', 50)
human_bloodbag.visible_message(span_danger("[user] drains some of [human_bloodbag]'s blood!"))
to_chat(user,span_cult_italic("Your blood rite gains 50 charges from draining [human_bloodbag]'s blood."))
new /obj/effect/temp_visual/cult/sparks(get_turf(human_bloodbag))
@@ -900,7 +900,7 @@
return
user.Beam(our_turf,icon_state="drainbeam", time = 15)
new /obj/effect/temp_visual/cult/sparks(get_turf(user))
- playsound(our_turf, 'sound/magic/enter_blood.ogg', 50)
+ playsound(our_turf, 'sound/effects/magic/enter_blood.ogg', 50)
to_chat(user, span_cult_italic("Your blood rite has gained [round(blood_to_gain)] charge\s from blood sources around you!"))
uses += max(1, round(blood_to_gain))
diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm
index 45c3aee695574..7a8e2fa535fd4 100644
--- a/code/modules/antagonists/cult/cult_comms.dm
+++ b/code/modules/antagonists/cult/cult_comms.dm
@@ -122,7 +122,7 @@
team_member.current.update_mob_action_buttons()
if(team_member.current.incapacitated)
continue
- SEND_SOUND(team_member.current, 'sound/hallucinations/im_here1.ogg')
+ SEND_SOUND(team_member.current, 'sound/effects/hallucinations/im_here1.ogg')
to_chat(team_member.current, span_cult_large("Acolyte [nominee] has asserted that [nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(poll_cultists_for_leader), nominee, team), 10 SECONDS)
@@ -143,7 +143,7 @@
for(var/datum/mind/team_member as anything in team.members)
if(!team_member.current || team_member.current == nominee || team_member.current.incapacitated)
continue
- SEND_SOUND(team_member.current, 'sound/magic/exit_blood.ogg')
+ SEND_SOUND(team_member.current, 'sound/effects/magic/exit_blood.ogg')
asked_cultists += team_member.current
var/list/yes_voters = SSpolling.poll_candidates(
@@ -244,7 +244,7 @@
new /obj/effect/temp_visual/dir_setting/cult/phase(mobloc, B.current.dir)
playsound(mobloc, SFX_PORTAL_ENTER, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
if(4)
- playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, TRUE)
+ playsound(mobloc, 'sound/effects/magic/exit_blood.ogg', 100, TRUE)
if(B.current != owner)
var/turf/final = pick(destinations)
if(istype(B.current.loc, /obj/item/soulstone))
@@ -268,13 +268,13 @@
owner.say("C'arta forbici!", language = /datum/language/common, forced = "cult invocation")
if(2)
owner.say("Pleggh e'ntrath!", language = /datum/language/common, forced = "cult invocation")
- playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/clockwork/narsie_attack.ogg', 50, TRUE)
if(3)
owner.say("Barhah hra zar'garis!", language = /datum/language/common, forced = "cult invocation")
- playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 75, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/clockwork/narsie_attack.ogg', 75, TRUE)
if(4)
owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common, forced = "cult invocation")
- playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/clockwork/narsie_attack.ogg', 100, TRUE)
/datum/action/innate/cult/master/cultmark
name = "Mark Target"
@@ -399,7 +399,7 @@
if(QDELETED(owner) || QDELETED(src))
return
- SEND_SOUND(owner, 'sound/magic/enter_blood.ogg')
+ SEND_SOUND(owner, 'sound/effects/magic/enter_blood.ogg')
to_chat(owner, span_cult_bold("Your previous mark is gone - you are now ready to create a new blood mark."))
build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON)
@@ -452,7 +452,7 @@
var/turf/throwee_turf = get_turf(throwee)
- playsound(throwee_turf, 'sound/magic/exit_blood.ogg')
+ playsound(throwee_turf, 'sound/effects/magic/exit_blood.ogg')
new /obj/effect/temp_visual/cult/sparks(throwee_turf, caller.dir)
throwee.visible_message(
span_warning("A pulse of magic whisks [throwee] away!"),
@@ -488,7 +488,7 @@
var/mob/living/living_clicked = clicked_on
if(!IS_CULTIST(living_clicked))
return FALSE
- SEND_SOUND(caller, sound('sound/weapons/thudswoosh.ogg'))
+ SEND_SOUND(caller, sound('sound/items/weapons/thudswoosh.ogg'))
to_chat(caller, span_cult_bold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!"))
throwee_ref = WEAKREF(clicked_on)
return TRUE
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 1c715036d37b5..ccfbf389700fe 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -26,7 +26,7 @@
wound_bonus = -10
bare_wound_bonus = 20
armour_penetration = 35
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
/obj/item/melee/cultblade/dagger/Initialize(mapload)
. = ..()
@@ -73,8 +73,8 @@ Striking a noncultist, however, will tear their flesh."}
block_chance = 50 // now it's officially a cult esword
wound_bonus = -50
bare_wound_bonus = 20
- hitsound = 'sound/weapons/bladeslice.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
/// If TRUE, it can be used at will by anyone, non-cultists included
@@ -285,7 +285,7 @@ Striking a noncultist, however, will tear their flesh."}
item_flags = NEEDS_PERMIT | DROPDEL
flags_1 = NONE
block_chance = 25 //these dweebs don't get full block chance, because they're free cultists
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
/obj/item/melee/cultblade/ghost/Initialize(mapload)
. = ..()
@@ -301,8 +301,8 @@ Striking a noncultist, however, will tear their flesh."}
desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target."
button_icon = 'icons/mob/actions/actions_cult.dmi'
button_icon_state = "phaseshift"
- dash_sound = 'sound/magic/enter_blood.ogg'
- recharge_sound = 'sound/magic/exit_blood.ogg'
+ dash_sound = 'sound/effects/magic/enter_blood.ogg'
+ recharge_sound = 'sound/effects/magic/exit_blood.ogg'
beam_effect = "sendbeam"
phasein = /obj/effect/temp_visual/dir_setting/cult/phase
phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out
@@ -717,7 +717,7 @@ Striking a noncultist, however, will tear their flesh."}
SSshuttle.block_recall(surplus)
totalcurses++
to_chat(user, span_danger("You shatter the orb! A dark essence spirals into the air, then disappears."))
- playsound(user.loc, 'sound/effects/glassbr1.ogg', 50, TRUE)
+ playsound(user.loc, 'sound/effects/glass/glassbr1.ogg', 50, TRUE)
if(!remaining_curses)
remaining_curses = strings(CULT_SHUTTLE_CURSE, "curse_announce")
@@ -725,7 +725,7 @@ Striking a noncultist, however, will tear their flesh."}
var/curse_message = pick_n_take(remaining_curses) || "Something has gone horrendously wrong..."
curse_message += " The shuttle will be delayed by three minutes."
- priority_announce("[curse_message]", "System Failure", 'sound/misc/notice1.ogg')
+ priority_announce("[curse_message]", "System Failure", 'sound/announcer/notice/notice1.ogg')
if(MAX_SHUTTLE_CURSES-totalcurses <= 0)
to_chat(user, span_danger(span_big("You sense that the emergency escape shuttle can no longer be cursed. It would be unwise to create more cursed orbs.")))
else if(MAX_SHUTTLE_CURSES-totalcurses == 1)
@@ -735,7 +735,7 @@ Striking a noncultist, however, will tear their flesh."}
if(totalcurses >= MAX_SHUTTLE_CURSES && (world.time < first_curse_time + SHUTTLE_CURSE_OMFG_TIMESPAN))
var/omfg_message = pick_list(CULT_SHUTTLE_CURSE, "omfg_announce") || "LEAVE US ALONE!"
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(priority_announce), omfg_message, "Priority Alert", 'sound/misc/announce_syndi.ogg', null, "Nanotrasen Department of Transportation: Central Command"), rand(2 SECONDS, 6 SECONDS))
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(priority_announce), omfg_message, "Priority Alert", 'sound/announcer/announcement/announce_syndi.ogg', null, "Nanotrasen Department of Transportation: Central Command"), rand(2 SECONDS, 6 SECONDS))
for(var/mob/iter_player as anything in GLOB.player_list)
if(IS_CULTIST(iter_player))
iter_player.client?.give_award(/datum/award/achievement/misc/cult_shuttle_omfg, iter_player)
@@ -953,8 +953,8 @@ Striking a noncultist, however, will tear their flesh."}
attack_verb_continuous = list("attacks", "slices", "shreds", "sunders", "lacerates", "cleaves")
attack_verb_simple = list("attack", "slice", "shred", "sunder", "lacerate", "cleave")
sharpness = SHARP_EDGED
- hitsound = 'sound/weapons/bladeslice.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
var/datum/action/innate/cult/halberd/halberd_act
/obj/item/melee/cultblade/halberd/Initialize(mapload)
@@ -984,7 +984,7 @@ Striking a noncultist, however, will tear their flesh."}
var/mob/living/target = hit_atom
if(IS_CULTIST(target) && target.put_in_active_hand(src))
- playsound(src, 'sound/weapons/throwtap.ogg', 50)
+ playsound(src, 'sound/items/weapons/throwtap.ogg', 50)
target.visible_message(span_warning("[target] catches [src] out of the air!"))
return
if(target.can_block_magic() || IS_CULTIST(target))
@@ -1004,7 +1004,7 @@ Striking a noncultist, however, will tear their flesh."}
T.visible_message(span_warning("[src] shatters and melts back into blood!"))
new /obj/effect/temp_visual/cult/sparks(T)
new /obj/effect/decal/cleanable/blood/splatter(T)
- playsound(T, 'sound/effects/glassbr3.ogg', 100)
+ playsound(T, 'sound/effects/glass/glassbr3.ogg', 100)
qdel(src)
/obj/item/melee/cultblade/halberd/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
@@ -1053,7 +1053,7 @@ Striking a noncultist, however, will tear their flesh."}
desc = "Blood for blood."
color = "#ff0000"
ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood
- fire_sound = 'sound/magic/wand_teleport.ogg'
+ fire_sound = 'sound/effects/magic/wand_teleport.ogg'
/obj/item/ammo_casing/magic/arcane_barrage/blood
projectile_type = /obj/projectile/magic/arcane_barrage/blood
@@ -1142,7 +1142,7 @@ Striking a noncultist, however, will tear their flesh."}
/obj/item/blood_beam/proc/charge(mob/user)
var/obj/O
- playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/magic/lightning_chargeup.ogg', 100, TRUE)
for(var/i in 1 to 12)
if(!charging)
break
@@ -1171,7 +1171,7 @@ Striking a noncultist, however, will tear their flesh."}
second = !second //Handles beam firing in pairs
if(!firing)
break
- playsound(src, 'sound/magic/exit_blood.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/magic/exit_blood.ogg', 75, TRUE)
new /obj/effect/temp_visual/dir_setting/cult/phase(user.loc, user.dir)
var/turf/temp_target = get_turf_in_angle(set_angle, targets_from, 40)
for(var/turf/T in get_line(targets_from,temp_target))
@@ -1199,7 +1199,7 @@ Striking a noncultist, however, will tear their flesh."}
if(L.density)
L.Paralyze(20)
L.adjustBruteLoss(45)
- playsound(L, 'sound/hallucinations/wail.ogg', 50, TRUE)
+ playsound(L, 'sound/effects/hallucinations/wail.ogg', 50, TRUE)
L.emote("scream")
user.Beam(temp_target, icon_state="blood_beam", time = 7, beam_type = /obj/effect/ebeam/blood)
@@ -1221,9 +1221,9 @@ Striking a noncultist, however, will tear their flesh."}
w_class = WEIGHT_CLASS_BULKY
attack_verb_continuous = list("bumps", "prods")
attack_verb_simple = list("bump", "prod")
- hitsound = 'sound/weapons/smash.ogg'
- block_sound = 'sound/weapons/effects/ric5.ogg'
- shield_bash_sound = 'sound/effects/glassknock.ogg'
+ hitsound = 'sound/items/weapons/smash.ogg'
+ block_sound = 'sound/items/weapons/effects/ric5.ogg'
+ shield_bash_sound = 'sound/effects/glass/glassknock.ogg'
var/illusions = 2
/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
@@ -1234,7 +1234,7 @@ Striking a noncultist, however, will tear their flesh."}
var/turf/T = get_turf(owner)
T.visible_message(span_warning("The sheer force from [hitby] shatters the mirror shield!"))
new /obj/effect/temp_visual/cult/sparks(T)
- playsound(T, 'sound/effects/glassbr3.ogg', 100)
+ playsound(T, 'sound/effects/glass/glassbr3.ogg', 100)
owner.Paralyze(25)
qdel(src)
return FALSE
@@ -1271,7 +1271,7 @@ Striking a noncultist, however, will tear their flesh."}
illusions++
if(illusions == initial(illusions) && isliving(loc))
var/mob/living/holder = loc
- to_chat(holder, "The shield's illusions are back at full strength!")
+ to_chat(holder, span_cult_italic("The shield's illusions are back at full strength!"))
/obj/item/shield/mirror/IsReflect()
if(prob(block_chance))
@@ -1286,13 +1286,13 @@ Striking a noncultist, however, will tear their flesh."}
target.visible_message(span_warning("[src] bounces off of [target], as if repelled by an unseen force!"))
return
if(IS_CULTIST(target) && target.put_in_active_hand(src))
- playsound(src, 'sound/weapons/throwtap.ogg', 50)
+ playsound(src, 'sound/items/weapons/throwtap.ogg', 50)
target.visible_message(span_warning("[target] catches [src] out of the air!"))
return
if(!..())
target.Paralyze(30)
new /obj/effect/temp_visual/cult/sparks(target)
- playsound(target, 'sound/effects/glassbr3.ogg', 100)
+ playsound(target, 'sound/effects/glass/glassbr3.ogg', 100)
qdel(src)
else
..()
diff --git a/code/modules/antagonists/cult/cult_structure_altar.dm b/code/modules/antagonists/cult/cult_structure_altar.dm
index e38591c0c0705..e3fcf645a2f0e 100644
--- a/code/modules/antagonists/cult/cult_structure_altar.dm
+++ b/code/modules/antagonists/cult/cult_structure_altar.dm
@@ -10,7 +10,7 @@
desc = "A bloodstained altar dedicated to Nar'Sie."
cult_examine_tip = "Can be used to create eldritch whetstones, construct shells, and flasks of unholy water."
icon_state = "talismanaltar"
- break_message = "The altar shatters, leaving only the wailing of the damned!"
+ break_message = span_warning("The altar shatters, leaving only the wailing of the damned!")
mansus_conversion_path = /obj/effect/heretic_rune
/obj/structure/destructible/cult/item_dispenser/altar/setup_options()
diff --git a/code/modules/antagonists/cult/cult_structure_archives.dm b/code/modules/antagonists/cult/cult_structure_archives.dm
index 9917d9505f7be..d4867659651f8 100644
--- a/code/modules/antagonists/cult/cult_structure_archives.dm
+++ b/code/modules/antagonists/cult/cult_structure_archives.dm
@@ -12,7 +12,7 @@
icon_state = "tomealtar"
light_range = 1.5
light_color = LIGHT_COLOR_FIRE
- break_message = "The books and tomes of the archives burn into ash as the desk shatters!"
+ break_message = span_warning("The books and tomes of the archives burn into ash as the desk shatters!")
mansus_conversion_path = /obj/item/codex_cicatrix
/obj/structure/destructible/cult/item_dispenser/archives/setup_options()
diff --git a/code/modules/antagonists/cult/cult_structure_forge.dm b/code/modules/antagonists/cult/cult_structure_forge.dm
index 12d15b9296ef4..2ba11b2905afe 100644
--- a/code/modules/antagonists/cult/cult_structure_forge.dm
+++ b/code/modules/antagonists/cult/cult_structure_forge.dm
@@ -12,7 +12,7 @@
icon_state = "forge"
light_range = 2
light_color = LIGHT_COLOR_LAVA
- break_message = "The forge breaks apart into shards with a howling scream!"
+ break_message = span_warning("The forge breaks apart into shards with a howling scream!")
mansus_conversion_path = /obj/structure/destructible/eldritch_crucible
/obj/structure/destructible/cult/item_dispenser/forge/setup_options()
diff --git a/code/modules/antagonists/cult/cult_structure_pylon.dm b/code/modules/antagonists/cult/cult_structure_pylon.dm
index e436601325d25..54151f1171e12 100644
--- a/code/modules/antagonists/cult/cult_structure_pylon.dm
+++ b/code/modules/antagonists/cult/cult_structure_pylon.dm
@@ -5,8 +5,8 @@
icon_state = "pylon"
light_range = 1.5
light_color = COLOR_SOFT_RED
- break_sound = 'sound/effects/glassbr2.ogg'
- break_message = "The blood-red crystal falls to the floor and shatters!"
+ break_sound = 'sound/effects/glass/glassbr2.ogg'
+ break_message = span_warning("The blood-red crystal falls to the floor and shatters!")
/// Length of the cooldown in between tile corruptions. Doubled if no turfs are found.
var/corruption_cooldown_duration = 5 SECONDS
/// The cooldown for corruptions.
diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm
index 511988fb5bcbb..5aae2a6ccbc22 100644
--- a/code/modules/antagonists/cult/cult_structures.dm
+++ b/code/modules/antagonists/cult/cult_structures.dm
@@ -1,7 +1,7 @@
// Cult buildings!
/obj/structure/destructible/cult
icon = 'icons/obj/antags/cult/structures.dmi'
- break_sound = 'sound/hallucinations/veryfar_noise.ogg'
+ break_sound = 'sound/effects/hallucinations/veryfar_noise.ogg'
density = TRUE
anchored = TRUE
light_power = 2
diff --git a/code/modules/antagonists/cult/datums/cult_team.dm b/code/modules/antagonists/cult/datums/cult_team.dm
index 4d77f65f588df..87ad2ab649101 100644
--- a/code/modules/antagonists/cult/datums/cult_team.dm
+++ b/code/modules/antagonists/cult/datums/cult_team.dm
@@ -55,7 +55,7 @@
if(ratio > CULT_RISEN && !cult_risen)
for(var/datum/mind/mind as anything in members)
if(mind.current)
- SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_eyes.ogg')
+ SEND_SOUND(mind.current, 'sound/music/antag/bloodcult/bloodcult_eyes.ogg')
to_chat(mind.current, span_cult_large(span_warning("The veil weakens as your cult grows, your eyes begin to glow...")))
mind.current.AddElement(/datum/element/cult_eyes)
cult_risen = TRUE
@@ -64,7 +64,7 @@
if(ratio > CULT_ASCENDENT && !cult_ascendent)
for(var/datum/mind/mind as anything in members)
if(mind.current)
- SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_halos.ogg')
+ SEND_SOUND(mind.current, 'sound/music/antag/bloodcult/bloodcult_halos.ogg')
to_chat(mind.current, span_cult_large(span_warning("Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!!")))
mind.current.AddElement(/datum/element/cult_halo)
cult_ascendent = TRUE
@@ -125,7 +125,7 @@
count++
if(members.len)
- parts += "The cultists were:"
+ parts += span_header("The cultists were:")
if(length(true_cultists))
parts += printplayerlist(true_cultists)
else
@@ -165,7 +165,7 @@
continue
to_chat(cultist.current, span_bold(span_cult_large("[marker] has marked [blood_target] in the [target_area.name] as the cult's top priority, get there immediately!")))
- SEND_SOUND(cultist.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'), 0, 1, 75))
+ SEND_SOUND(cultist.current, sound(pick('sound/effects/hallucinations/over_here2.ogg','sound/effects/hallucinations/over_here3.ogg'), 0, 1, 75))
cultist.current.client.images += blood_target_image
if(duration != INFINITY)
diff --git a/code/modules/antagonists/cult/datums/cultist.dm b/code/modules/antagonists/cult/datums/cultist.dm
index de415f59c7482..433c9ebedbef8 100644
--- a/code/modules/antagonists/cult/datums/cultist.dm
+++ b/code/modules/antagonists/cult/datums/cultist.dm
@@ -7,7 +7,7 @@
preview_outfit = /datum/outfit/cultist
job_rank = ROLE_CULTIST
antag_hud_name = "cult"
- stinger_sound = 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg'
+ stinger_sound = 'sound/music/antag/bloodcult/bloodcult_gain.ogg'
///The vote ability Cultists have to elect someone to be the leader.
var/datum/action/innate/cult/mastervote/vote_ability
@@ -256,7 +256,7 @@
var/area/current_area = get_area(owner.current)
for(var/datum/mind/cult_mind as anything in cult_team.members)
- SEND_SOUND(cult_mind, sound('sound/hallucinations/veryfar_noise.ogg'))
+ SEND_SOUND(cult_mind, sound('sound/effects/hallucinations/veryfar_noise.ogg'))
to_chat(cult_mind, span_cult_large("The Cult's Master, [owner.current.name], has fallen in \the [current_area]!"))
/datum/antagonist/cult/get_preview_icon()
diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm
index 3d791dbce44dc..be0e1e88ff8ed 100644
--- a/code/modules/antagonists/cult/rune_spawn_action.dm
+++ b/code/modules/antagonists/cult/rune_spawn_action.dm
@@ -67,7 +67,7 @@
var/scribe_mod = scribe_time
if(istype(T, /turf/open/floor/engine/cult))
scribe_mod *= 0.5
- playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE)
+ playsound(T, 'sound/effects/magic/enter_blood.ogg', 100, FALSE)
if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt)))
new rune_type(owner.loc, chosen_keyword)
else
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 985f5da950193..e7cde6d1425c2 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -386,14 +386,14 @@ structure_check() searches for nearby cultist structures required for the invoca
qdel(sacrificial)
return TRUE
if(sacrificial && (signal_result & DUST_SACRIFICE)) // No soulstone when dusted
- playsound(sacrificial, 'sound/magic/teleport_diss.ogg', 100, TRUE)
+ playsound(sacrificial, 'sound/effects/magic/teleport_diss.ogg', 100, TRUE)
sacrificial.investigate_log("has been sacrificially dusted by the cult.", INVESTIGATE_DEATHS)
sacrificial.dust(TRUE, FALSE, TRUE)
else if (sacrificial)
var/obj/item/soulstone/stone = new(loc)
if(sacrificial.mind && !HAS_TRAIT(sacrificial, TRAIT_SUICIDED))
stone.capture_soul(sacrificial, invokers[1], forced = TRUE)
- playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE)
+ playsound(sacrificial, 'sound/effects/magic/disintegrate.ogg', 100, TRUE)
sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS)
sacrificial.gib(DROP_ALL_REMAINS)
@@ -500,7 +500,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/turf/T = get_turf(src)
if(is_away_level(T.z))
- to_chat(user, "You are not in the right dimension!")
+ to_chat(user, span_cult_italic("You are not in the right dimension!"))
log_game("Teleport rune activated by [user] at [COORD(src)] failed - [user] is in away mission.")
fail_invoke()
return
@@ -771,7 +771,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
else
fail_invoke()
return
- SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg')
+ SEND_SOUND(mob_to_revive, 'sound/music/antag/bloodcult/bloodcult_gain.ogg')
to_chat(mob_to_revive, span_cult_large("\"PASNAR SAVRAE YAM'TOTH. Arise.\""))
mob_to_revive.visible_message(span_warning("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes."), \
span_cult_large("You awaken suddenly from the void. You're alive!"))
@@ -849,37 +849,37 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated)
return
if(isnull(cultist_to_summon))
- to_chat(user, "You require a summoning target!")
+ to_chat(user, span_cult_italic("You require a summoning target!"))
fail_logmsg += "no target."
log_game(fail_logmsg)
fail_invoke()
return
if(cultist_to_summon.stat == DEAD)
- to_chat(user, "[cultist_to_summon] has died!")
+ to_chat(user, span_cult_italic("[cultist_to_summon] has died!"))
fail_logmsg += "target died."
log_game(fail_logmsg)
fail_invoke()
return
if(cultist_to_summon.pulledby || cultist_to_summon.buckled)
- to_chat(user, "[cultist_to_summon] is being held in place!")
+ to_chat(user, span_cult_italic("[cultist_to_summon] is being held in place!"))
fail_logmsg += "target restrained."
log_game(fail_logmsg)
fail_invoke()
return
if(!IS_CULTIST(cultist_to_summon))
- to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!")
+ to_chat(user, span_cult_italic("[cultist_to_summon] is not a follower of the Geometer!"))
fail_logmsg += "target deconverted."
log_game(fail_logmsg)
fail_invoke()
return
if(is_away_level(cultist_to_summon.z))
- to_chat(user, "[cultist_to_summon] is not in our dimension!")
+ to_chat(user, span_cult_italic("[cultist_to_summon] is not in our dimension!"))
fail_logmsg += "target is in away mission."
log_game(fail_logmsg)
fail_invoke()
return
cultist_to_summon.visible_message(span_warning("[cultist_to_summon] suddenly disappears in a flash of red light!"), \
- "Overwhelming vertigo consumes you as you are hurled through the air!")
+ span_cult_italic("Overwhelming vertigo consumes you as you are hurled through the air!"))
..()
visible_message(span_warning("A foggy shape materializes atop [src] and solidifies into [cultist_to_summon]!"))
var/turf/old_turf = get_turf(cultist_to_summon)
@@ -969,12 +969,12 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
/obj/effect/rune/manifest/can_invoke(mob/living/user)
if(!(user in get_turf(src)))
- to_chat(user, "You must be standing on [src]!")
+ to_chat(user, span_cult_italic("You must be standing on [src]!"))
fail_invoke()
log_game("Manifest rune failed - user not standing on rune")
return list()
if(user.has_status_effect(/datum/status_effect/cultghost))
- to_chat(user, "Ghosts can't summon more ghosts!")
+ to_chat(user, span_cult_italic("Ghosts can't summon more ghosts!"))
fail_invoke()
log_game("Manifest rune failed - user is a ghost")
return list()
@@ -1021,7 +1021,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
new_human.set_invis_see(SEE_INVISIBLE_OBSERVER)
new_human.add_traits(list(TRAIT_NOBREATH, TRAIT_PERMANENTLY_MORTAL), INNATE_TRAIT) // permanently mortal can be removed once this is a bespoke kind of mob
ghosts++
- playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/exit_blood.ogg', 50, TRUE)
visible_message(span_warning("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man."))
to_chat(user, span_cult_italic("Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..."))
var/obj/structure/emergency_shield/cult/weak/N = new(T)
@@ -1136,7 +1136,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
intensity = max(60, 360 - (360*(intensity/length(GLOB.player_list) + 0.3)**2)) //significantly lower intensity for "winning" cults
var/duration = intensity*10
- playsound(T, 'sound/magic/enter_blood.ogg', 100, TRUE)
+ playsound(T, 'sound/effects/magic/enter_blood.ogg', 100, TRUE)
visible_message(span_warning("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!"))
for(var/mob/living/target in range(src, 3))
@@ -1157,7 +1157,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE)
addtimer(CALLBACK(M, TYPE_PROC_REF(/atom/, remove_alt_appearance),"human_apoc",TRUE), duration)
images += A
- SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult/bloodcult_gain.ogg'),sound('sound/voice/ghost_whisper.ogg'),sound('sound/misc/ghosty_wind.ogg')))
+ SEND_SOUND(M, pick(sound('sound/music/antag/bloodcult/bloodcult_gain.ogg'),sound('sound/music/antag/bloodcult/ghost_whisper.ogg'),sound('sound/music/antag/bloodcult/ghosty_wind.ogg')))
else
var/construct = pick("wraith","artificer","juggernaut")
var/image/B = image('icons/mob/nonhuman-player/cult.dmi',M,construct, ABOVE_MOB_LAYER)
diff --git a/code/modules/antagonists/cult/sword_fling.dm b/code/modules/antagonists/cult/sword_fling.dm
index 83238b0d8a2f4..d4c1530f06b98 100644
--- a/code/modules/antagonists/cult/sword_fling.dm
+++ b/code/modules/antagonists/cult/sword_fling.dm
@@ -56,7 +56,7 @@
new particle_to_spawn(get_turf(loccer))
loccer.shake_up_animation()
- playsound(loccer, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loccer, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
if(prob(resist_chance))
flinged_sword.forceMove(get_turf(loccer))
diff --git a/code/modules/antagonists/fugitive/hunters/hunter_gear.dm b/code/modules/antagonists/fugitive/hunters/hunter_gear.dm
index 2905dff3a0f58..8e2b62c8187a4 100644
--- a/code/modules/antagonists/fugitive/hunters/hunter_gear.dm
+++ b/code/modules/antagonists/fugitive/hunters/hunter_gear.dm
@@ -157,11 +157,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/item/paper/crumpled/fluff/fortune_teller
name = "scribbled note"
diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm
index 82a0f8ca6228f..4c9c25945c9e8 100644
--- a/code/modules/antagonists/heretic/heretic_antag.dm
+++ b/code/modules/antagonists/heretic/heretic_antag.dm
@@ -26,7 +26,7 @@
can_assign_self_objectives = TRUE
default_custom_objective = "Turn a department into a testament for your dark knowledge."
hardcore_random_bonus = TRUE
- stinger_sound = 'sound/ambience/antag/heretic/heretic_gain.ogg'
+ stinger_sound = 'sound/music/antag/heretic/heretic_gain.ogg'
/// Whether we give this antagonist objectives on gain.
var/give_objectives = TRUE
/// Whether we've ascended! (Completed one of the final rituals)
@@ -513,7 +513,7 @@
for(var/datum/mind/mind as anything in cult_team.members)
if(mind.current)
- SEND_SOUND(mind.current, 'sound/magic/clockwork/narsie_attack.ogg')
+ SEND_SOUND(mind.current, 'sound/effects/magic/clockwork/narsie_attack.ogg')
to_chat(mind.current, span_cult_large(span_warning("Arcane and forbidden knowledge floods your forges and archives. The cult has learned how to create the ")) + span_cult_large(span_hypnophrase("[result]!")))
return SILENCE_SACRIFICE_MESSAGE|DUST_SACRIFICE
diff --git a/code/modules/antagonists/heretic/heretic_monsters.dm b/code/modules/antagonists/heretic/heretic_monsters.dm
index 5bc7041cd461d..2cb3dd3bfa4d0 100644
--- a/code/modules/antagonists/heretic/heretic_monsters.dm
+++ b/code/modules/antagonists/heretic/heretic_monsters.dm
@@ -8,7 +8,7 @@
antag_hud_name = "heretic_beast"
suicide_cry = "MY MASTER SMILES UPON ME!!"
show_in_antagpanel = FALSE
- stinger_sound = 'sound/ambience/antag/heretic/heretic_gain.ogg'
+ stinger_sound = 'sound/music/antag/heretic/heretic_gain.ogg'
/// Our master (a heretic)'s mind.
var/datum/mind/master
diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm
index 3bd3ead7f6094..335279c9553a6 100644
--- a/code/modules/antagonists/heretic/items/corrupted_organs.dm
+++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm
@@ -2,7 +2,7 @@
/obj/item/organ/internal/eyes/corrupt
name = "corrupt orbs"
desc = "These eyes have seen something they shouldn't have."
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// The override images we are applying
var/list/hallucinations
@@ -40,7 +40,7 @@
/obj/item/organ/internal/tongue/corrupt
name = "corrupt tongue"
desc = "This one tells only lies."
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/obj/item/organ/internal/tongue/corrupt/Initialize(mapload)
. = ..()
@@ -67,7 +67,7 @@
/obj/item/organ/internal/liver/corrupt
name = "corrupt liver"
desc = "After what you've seen you could really go for a drink."
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How much extra ingredients to add?
var/amount_added = 5
/// What extra ingredients can we add?
@@ -111,7 +111,7 @@
/obj/item/organ/internal/stomach/corrupt
name = "corrupt stomach"
desc = "This parasite demands an unwholesome diet in order to be satisfied."
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// Do we have an unholy thirst?
var/thirst_satiated = FALSE
/// Timer for when we get thirsty again
@@ -177,7 +177,7 @@
/obj/item/organ/internal/heart/corrupt
name = "corrupt heart"
desc = "What corruption is this spreading along with the blood?"
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How long until the next heart?
COOLDOWN_DECLARE(hand_cooldown)
@@ -197,7 +197,7 @@
/obj/item/organ/internal/lungs/corrupt
name = "corrupt lungs"
desc = "Some things SHOULD be drowned in tar."
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How likely are we not to cough every time we take a breath?
var/cough_chance = 15
/// How much gas to emit?
@@ -232,7 +232,7 @@
/obj/item/organ/internal/appendix/corrupt
name = "corrupt appendix"
desc = "What kind of dark, cosmic force is even going to bother to corrupt an appendix?"
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
/// How likely are we to spawn worms?
var/worm_chance = 2
diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm
index 4d2636fa19e8c..ab98e1b9e4c7c 100644
--- a/code/modules/antagonists/heretic/items/heretic_blades.dm
+++ b/code/modules/antagonists/heretic/items/heretic_blades.dm
@@ -19,7 +19,7 @@
bare_wound_bonus = 15
toolspeed = 0.375
demolition_mod = 0.8
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
armour_penetration = 35
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
diff --git a/code/modules/antagonists/heretic/items/hunter_rifle.dm b/code/modules/antagonists/heretic/items/hunter_rifle.dm
index 53f1c1555861b..cb8636aed2b14 100644
--- a/code/modules/antagonists/heretic/items/hunter_rifle.dm
+++ b/code/modules/antagonists/heretic/items/hunter_rifle.dm
@@ -12,7 +12,7 @@
inhand_icon_state = "lionhunter"
worn_icon_state = "lionhunter"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/lionhunter
- fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg'
SET_BASE_PIXEL(-8, 0)
@@ -64,7 +64,7 @@
return TRUE
user.balloon_alert(user, "taking aim...")
- user.playsound_local(get_turf(user), 'sound/weapons/gun/general/chunkyrack.ogg', 100, TRUE)
+ user.playsound_local(get_turf(user), 'sound/items/weapons/gun/general/chunkyrack.ogg', 100, TRUE)
var/image/reticle = image(
icon = 'icons/mob/actions/actions_items.dmi',
diff --git a/code/modules/antagonists/heretic/items/labyrinth_handbook.dm b/code/modules/antagonists/heretic/items/labyrinth_handbook.dm
index e4f333260a88f..178b8b16da5b7 100644
--- a/code/modules/antagonists/heretic/items/labyrinth_handbook.dm
+++ b/code/modules/antagonists/heretic/items/labyrinth_handbook.dm
@@ -62,7 +62,7 @@
return ITEM_INTERACT_BLOCKING
turf_target.visible_message(span_warning("A storm of paper materializes!"))
new /obj/effect/temp_visual/paper_scatter(turf_target)
- playsound(turf_target, 'sound/magic/smoke.ogg', 30)
+ playsound(turf_target, 'sound/effects/magic/smoke.ogg', 30)
new barrier_type(turf_target, user)
uses--
if(uses <= 0)
diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
index 957a78a27269c..4f061ca2d6dda 100644
--- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
@@ -230,7 +230,7 @@
priority_announce(
text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_ash.ogg',
+ sound = 'sound/music/antag/heretic/ascend_ash.ogg',
color_override = "pink",
)
diff --git a/code/modules/antagonists/heretic/knowledge/blade_lore.dm b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
index 55db187ee73ba..dc76f242c018f 100644
--- a/code/modules/antagonists/heretic/knowledge/blade_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
@@ -98,7 +98,7 @@
target.AdjustParalyzed(1.5 SECONDS)
target.apply_damage(10, BRUTE, wound_bonus = CANT_WOUND)
target.balloon_alert(source, "backstab!")
- playsound(get_turf(target), 'sound/weapons/guillotine.ogg', 100, TRUE)
+ playsound(get_turf(target), 'sound/items/weapons/guillotine.ogg', 100, TRUE)
/// The cooldown duration between trigers of blade dance
#define BLADE_DANCE_COOLDOWN (20 SECONDS)
@@ -184,7 +184,7 @@
addtimer(CALLBACK(src, PROC_REF(reset_riposte), source), BLADE_DANCE_COOLDOWN)
/datum/heretic_knowledge/blade_dance/proc/counter_attack(mob/living/carbon/human/source, mob/living/target, obj/item/melee/sickly_blade/weapon, attack_text)
- playsound(get_turf(source), 'sound/weapons/parry.ogg', 100, TRUE)
+ playsound(get_turf(source), 'sound/items/weapons/parry.ogg', 100, TRUE)
source.balloon_alert(source, "riposte used")
source.visible_message(
span_warning("[source] leans into [attack_text] and delivers a sudden riposte back at [target]!"),
@@ -423,7 +423,7 @@
priority_announce(
text = "[generate_heretic_text()] Master of blades, the Torn Champion's disciple, [user.real_name] has ascended! Their steel is that which will cut reality in a maelstom of silver! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_blade.ogg',
+ sound = 'sound/music/antag/heretic/ascend_blade.ogg',
color_override = "pink",
)
ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, name)
diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
index dfc8aa39bef29..f6e364766f6ef 100644
--- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
@@ -191,7 +191,7 @@
combo_counter += 1
if(second_target_resolved)
new /obj/effect/temp_visual/cosmic_explosion(get_turf(second_target_resolved))
- playsound(get_turf(second_target_resolved), 'sound/magic/cosmic_energy.ogg', 25, FALSE)
+ playsound(get_turf(second_target_resolved), 'sound/effects/magic/cosmic_energy.ogg', 25, FALSE)
need_mob_update = FALSE
need_mob_update += second_target_resolved.adjustFireLoss(14, updating_health = FALSE)
need_mob_update += second_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 12)
@@ -199,7 +199,7 @@
second_target_resolved.updatehealth()
if(third_target_resolved)
new /obj/effect/temp_visual/cosmic_domain(get_turf(third_target_resolved))
- playsound(get_turf(third_target_resolved), 'sound/magic/cosmic_energy.ogg', 50, FALSE)
+ playsound(get_turf(third_target_resolved), 'sound/effects/magic/cosmic_energy.ogg', 50, FALSE)
need_mob_update = FALSE
need_mob_update += third_target_resolved.adjustFireLoss(28, updating_health = FALSE)
need_mob_update += third_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 14)
@@ -282,7 +282,7 @@
priority_announce(
text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_cosmic.ogg',
+ sound = 'sound/music/antag/heretic/ascend_cosmic.ogg',
color_override = "pink",
)
var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc)
diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
index 6f5b51d4eba4e..c0fd2b7bbe381 100644
--- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
@@ -329,7 +329,7 @@
priority_announce(
text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_flesh.ogg',
+ sound = 'sound/music/antag/heretic/ascend_flesh.ogg',
color_override = "pink",
)
diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
index 72eacf607de55..ea0b609ef5c13 100644
--- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
@@ -90,7 +90,7 @@
var/turf/target_turf = get_turf(target)
SEND_SIGNAL(target_turf, COMSIG_ATOM_MAGICALLY_UNLOCKED, src, source)
- playsound(target, 'sound/magic/hereticknock.ogg', 100, TRUE, -1)
+ playsound(target, 'sound/effects/magic/hereticknock.ogg', 100, TRUE, -1)
return COMPONENT_USE_HAND
@@ -240,7 +240,7 @@
priority_announce(
text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_knock.ogg',
+ sound = 'sound/music/antag/heretic/ascend_knock.ogg',
color_override = "pink",
)
diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
index 3c6b4e2109b69..99ee675c8ecab 100644
--- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
@@ -208,7 +208,7 @@
text = "[generate_heretic_text()] Laugh, for the ringleader [user.real_name] has ascended! \
The truth shall finally devour the lie! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_moon.ogg',
+ sound = 'sound/music/antag/heretic/ascend_moon.ogg',
color_override = "pink",
)
diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
index 8c5a4587928dd..c1c1e2a4a04c9 100644
--- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
@@ -255,7 +255,7 @@
priority_announce(
text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_rust.ogg',
+ sound = 'sound/music/antag/heretic/ascend_rust.ogg',
color_override = "pink",
)
trigger(loc)
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
index 30757e88a4b29..9c29d15ba67c6 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm
@@ -115,7 +115,7 @@
if (isnull(spawn_turf))
return
new /obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, victim.dir)
- playsound(spawn_turf, 'sound/effects/curse2.ogg', 80, TRUE, -1)
+ playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1)
var/obj/projectile/curse_hand/hel/hand = new (spawn_turf)
hand.preparePixelProjectile(victim, spawn_turf)
if (QDELETED(hand)) // safety check if above fails - above has a stack trace if it does fail
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 5919f9a40d12a..65e6b6b2470e7 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -223,7 +223,7 @@
if(prob(min(15 * rewards_given)) && (rewards_given <= 5))
for(var/datum/mind/mind as anything in cultist_datum.cult_team.members)
if(mind.current)
- SEND_SOUND(mind.current, 'sound/magic/clockwork/narsie_attack.ogg')
+ SEND_SOUND(mind.current, 'sound/effects/magic/clockwork/narsie_attack.ogg')
var/message = span_narsie("A vile heretic has ") + \
span_cult_large(span_hypnophrase("sacrificed")) + \
span_narsie(" one of our own. Destroy and sacrifice the infidel before it claims more!")
@@ -249,7 +249,7 @@
// Visible and audible encouragement!
to_chat(user, span_big(span_hypnophrase("A servant of the Sanguine Apostate!")))
to_chat(user, span_hierophant("Your patrons are rapturous!"))
- playsound(sacrifice, 'sound/magic/disintegrate.ogg', 75, TRUE)
+ playsound(sacrifice, 'sound/effects/magic/disintegrate.ogg', 75, TRUE)
// Drop all items and splatter them around messily.
var/list/dustee_items = sacrifice.unequip_everything()
@@ -281,7 +281,7 @@
return
// Remove the outline, we don't need it anymore.
rune?.remove_filter("reward_outline")
- playsound(loc, 'sound/magic/repulse.ogg', 75, TRUE)
+ playsound(loc, 'sound/effects/magic/repulse.ogg', 75, TRUE)
var/datum/antagonist/heretic/heretic_datum = GET_HERETIC(user)
ASSERT(heretic_datum)
// This list will be almost identical to unlocked_heretic_items, with the same keys, the difference being the values will be 1 to 5.
@@ -389,7 +389,7 @@
curse_organs(sac_target)
// Send 'em to the destination. If the teleport fails, just disembowel them and stop the chain
- if(!destination || !do_teleport(sac_target, destination, asoundin = 'sound/magic/repulse.ogg', asoundout = 'sound/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE))
+ if(!destination || !do_teleport(sac_target, destination, asoundin = 'sound/effects/magic/repulse.ogg', asoundout = 'sound/effects/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE))
disembowel_target(sac_target)
return
@@ -403,7 +403,7 @@
to_chat(sac_target, span_big(span_hypnophrase("Unnatural forces begin to claw at your every being from beyond the veil.")))
- playsound(sac_target, 'sound/ambience/antag/heretic/heretic_sacrifice.ogg', 50, FALSE) // play theme
+ playsound(sac_target, 'sound/music/antag/heretic/heretic_sacrifice.ogg', 50, FALSE) // play theme
sac_target.apply_status_effect(/datum/status_effect/unholy_determination, SACRIFICE_REALM_DURATION)
addtimer(CALLBACK(src, PROC_REF(after_target_wakes), sac_target), SACRIFICE_SLEEP_DURATION * 0.5) // Begin the minigame
@@ -525,7 +525,7 @@
safe_turf = get_turf(backup_loc)
stack_trace("[type] - return_target was unable to find a safe turf for [sac_target] to return to. Defaulting to observer start turf.")
- if(!do_teleport(sac_target, safe_turf, asoundout = 'sound/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE))
+ if(!do_teleport(sac_target, safe_turf, asoundout = 'sound/effects/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE))
safe_turf = get_turf(backup_loc)
sac_target.forceMove(safe_turf)
stack_trace("[type] - return_target was unable to teleport [sac_target] to the observer start turf. Forcemoving.")
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
index 5055d2d9628ce..07b126fe74f2f 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm
@@ -91,7 +91,7 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
/area/centcom/heretic_sacrifice/Initialize(mapload)
if(!ambientsounds)
- ambientsounds = GLOB.ambience_assoc[ambience_index] + 'sound/ambience/ambiatm1.ogg'
+ ambientsounds = GLOB.ambience_assoc[ambience_index] + 'sound/ambience/misc/ambiatm1.ogg'
return ..()
/area/centcom/heretic_sacrifice/ash //also, the default
diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
index ad48bb8fee331..2b5186bb55019 100644
--- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
@@ -109,27 +109,24 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
/datum/heretic_knowledge/living_heart/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
var/datum/antagonist/heretic/our_heretic = GET_HERETIC(user)
var/obj/item/organ/our_living_heart = user.get_organ_slot(our_heretic.living_heart_organ_slot)
- // Obviously you need a heart in your chest to do a ritual on your... heart
- if(!our_living_heart)
- loc.balloon_alert(user, "ritual failed, you have no [our_heretic.living_heart_organ_slot]!") // "you have no heart!"
- return FALSE
- // For sanity's sake, check if they've got a heart -
+ // For sanity's sake, check if they've got a living heart -
// even though it's not invokable if you already have one,
// they may have gained one unexpectantly in between now and then
- if(HAS_TRAIT(our_living_heart, TRAIT_LIVING_HEART))
- loc.balloon_alert(user, "ritual failed, already have a living heart!")
- return FALSE
+ if(!QDELETED(our_living_heart))
+ if(HAS_TRAIT(our_living_heart, TRAIT_LIVING_HEART))
+ loc.balloon_alert(user, "ritual failed, already have a living heart!")
+ return FALSE
- // By this point they are making a new heart
- // If their current heart is organic / not synthetic, we can continue the ritual as normal
- if(is_valid_heart(our_living_heart))
- return TRUE
+ // By this point they are making a new heart
+ // If their current heart is organic / not synthetic, we can continue the ritual as normal
+ if(is_valid_heart(our_living_heart))
+ return TRUE
- // If their current heart is not organic / is synthetic, they need an organic replacement
- // ...But if our organ-to-be-replaced is unremovable, we're screwed
- if(our_living_heart.organ_flags & ORGAN_UNREMOVABLE)
- loc.balloon_alert(user, "ritual failed, [our_heretic.living_heart_organ_slot] unremovable!") // "heart unremovable!"
- return FALSE
+ // If their current heart is not organic / is synthetic, they need an organic replacement
+ // ...But if our organ-to-be-replaced is unremovable, we're screwed
+ if(our_living_heart.organ_flags & ORGAN_UNREMOVABLE)
+ loc.balloon_alert(user, "ritual failed, [our_heretic.living_heart_organ_slot] unremovable!") // "heart unremovable!"
+ return FALSE
// Otherwise, seek out a replacement in our atoms
for(var/obj/item/organ/nearby_organ in atoms)
@@ -151,17 +148,21 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
// Our heart is robotic or synthetic - we need to replace it, and we fortunately should have one by here
if(!is_valid_heart(our_new_heart))
var/obj/item/organ/our_replacement_heart = locate(required_organ_type) in selected_atoms
- if(our_replacement_heart)
+ if(!our_replacement_heart)
+ CRASH("[type] required a replacement organic heart in on_finished_recipe, but did not find one.")
+ // Repair the organic heart, if needed, to just below the high threshold
+ if(our_replacement_heart.damage >= our_replacement_heart.high_threshold)
+ our_replacement_heart.set_organ_damage(our_replacement_heart.high_threshold - 1)
+ // And now, put our organic heart in its place
+ our_replacement_heart.Insert(user, TRUE, TRUE)
+ if(our_new_heart)
// Throw our current heart out of our chest, violently
user.visible_message(span_boldwarning("[user]'s [our_new_heart.name] bursts suddenly out of [user.p_their()] chest!"))
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream")
user.apply_damage(20, BRUTE, BODY_ZONE_CHEST)
- // And put our organic heart in its place
- our_replacement_heart.Insert(user, TRUE, TRUE)
+ selected_atoms -= our_new_heart // so we don't delete our old heart while we dramatically toss is out
our_new_heart.throw_at(get_edge_target_turf(user, pick(GLOB.alldirs)), 2, 2)
- our_new_heart = our_replacement_heart
- else
- CRASH("[type] required a replacement organic heart in on_finished_recipe, but did not find one.")
+ our_new_heart = our_replacement_heart
if(!our_new_heart)
CRASH("[type] somehow made it to on_finished_recipe without a heart. What?")
@@ -177,12 +178,12 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
// Make it the living heart
our_new_heart.AddComponent(/datum/component/living_heart)
to_chat(user, span_warning("You feel your [our_new_heart.name] begin pulse faster and faster as it awakens!"))
- playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
return TRUE
/// Checks if the passed heart is a valid heart to become a living heart
/datum/heretic_knowledge/living_heart/proc/is_valid_heart(obj/item/organ/new_heart)
- if(!new_heart)
+ if(QDELETED(new_heart))
return FALSE
if(!new_heart.useable)
return FALSE
@@ -233,7 +234,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
gain_text = "The occult leaves fragments of knowledge and power anywhere and everywhere. The Codex Cicatrix is one such example. \
Within the leather-bound faces and age old pages, a path into the Mansus is revealed."
required_atoms = list(
- /obj/item/book = 1,
+ list(/obj/item/toy/eldritch_book, /obj/item/book) = 1,
/obj/item/pen = 1,
list(/mob/living, /obj/item/stack/sheet/leather, /obj/item/stack/sheet/animalhide) = 1,
)
@@ -296,7 +297,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
var/obj/item/book/le_book = locate() in selected_atoms
if(!le_book)
stack_trace("Somehow, no book in codex cicatrix selected atoms! [english_list(selected_atoms)]")
- playsound(body, 'sound/items/poster_ripped.ogg', 100, TRUE)
+ playsound(body, 'sound/items/poster/poster_ripped.ogg', 100, TRUE)
body.do_jitter_animation()
body.visible_message(span_danger("An awful ripping sound is heard as [ripped_thing]'s [exterior_text] is ripped straight out, wrapping around [le_book || "the book"], turning into an eldritch shade of blue!"))
return ..()
@@ -328,7 +329,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
heretic_datum.feast_of_owls = TRUE
user.set_temp_blindness(reward * 1 SECONDS)
user.AdjustParalyzed(reward * 1 SECONDS)
- user.playsound_local(get_turf(user), 'sound/ambience/antag/heretic/heretic_gain_intense.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)
+ user.playsound_local(get_turf(user), 'sound/music/antag/heretic/heretic_gain_intense.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)
for(var/i in 1 to reward)
user.emote("scream")
playsound(loc, 'sound/items/eatfood.ogg', 100, TRUE)
diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm
index d2fd0efe8b570..cc7cc085364c0 100644
--- a/code/modules/antagonists/heretic/knowledge/void_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm
@@ -245,7 +245,7 @@
priority_announce(
text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]",
title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_void.ogg',
+ sound = 'sound/music/antag/heretic/ascend_void.ogg',
color_override = "pink",
)
user.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_NEGATES_GRAVITY, TRAIT_MOVE_FLYING, TRAIT_FREE_HYPERSPACE_MOVEMENT), MAGIC_TRAIT)
@@ -341,7 +341,7 @@
span_danger("The void storm surrounding [ascended_heretic] deflects [hitting_projectile]!"),
span_userdanger("The void storm protects you from [hitting_projectile]!"),
)
- playsound(ascended_heretic, pick('sound/magic/VoidDeflect01.ogg', 'sound/magic/VoidDeflect02.ogg', 'sound/magic/VoidDeflect03.ogg'), 75, TRUE)
+ playsound(ascended_heretic, pick('sound/effects/magic/VoidDeflect01.ogg', 'sound/effects/magic/VoidDeflect02.ogg', 'sound/effects/magic/VoidDeflect03.ogg'), 75, TRUE)
hitting_projectile.firer = ascended_heretic
if(prob(75))
hitting_projectile.set_angle(get_angle(hitting_projectile.firer, hitting_projectile.fired_from))
diff --git a/code/modules/antagonists/heretic/magic/aggressive_spread.dm b/code/modules/antagonists/heretic/magic/aggressive_spread.dm
index dfb4a94847406..77c6a6227deb8 100644
--- a/code/modules/antagonists/heretic/magic/aggressive_spread.dm
+++ b/code/modules/antagonists/heretic/magic/aggressive_spread.dm
@@ -5,7 +5,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "corrode"
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/ascended_shapeshift.dm b/code/modules/antagonists/heretic/magic/ascended_shapeshift.dm
index e792dc116da6f..a11c8d1d3a93a 100644
--- a/code/modules/antagonists/heretic/magic/ascended_shapeshift.dm
+++ b/code/modules/antagonists/heretic/magic/ascended_shapeshift.dm
@@ -20,7 +20,7 @@
if(!.)
return
//buff our forms so this ascension ability isnt shit
- playsound(caster, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(caster, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
var/mob/living/monster = .
monster.AddComponent(/datum/component/seethrough_mob)
monster.maxHealth *= 1.5
diff --git a/code/modules/antagonists/heretic/magic/ash_ascension.dm b/code/modules/antagonists/heretic/magic/ash_ascension.dm
index 2be30ea5b0c49..f4ed8686c1053 100644
--- a/code/modules/antagonists/heretic/magic/ash_ascension.dm
+++ b/code/modules/antagonists/heretic/magic/ash_ascension.dm
@@ -67,7 +67,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "fire_ring"
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/blood_siphon.dm b/code/modules/antagonists/heretic/magic/blood_siphon.dm
index 1e3d6258826d4..1801b6d9dbc9f 100644
--- a/code/modules/antagonists/heretic/magic/blood_siphon.dm
+++ b/code/modules/antagonists/heretic/magic/blood_siphon.dm
@@ -25,7 +25,7 @@
/datum/action/cooldown/spell/pointed/blood_siphon/cast(mob/living/cast_on)
. = ..()
- playsound(owner, 'sound/magic/demon_attack1.ogg', 75, TRUE)
+ playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 75, TRUE)
if(cast_on.can_block_magic())
owner.balloon_alert(owner, "spell blocked!")
cast_on.visible_message(
diff --git a/code/modules/antagonists/heretic/magic/caretaker.dm b/code/modules/antagonists/heretic/magic/caretaker.dm
index 86ff285001917..b882386329a89 100644
--- a/code/modules/antagonists/heretic/magic/caretaker.dm
+++ b/code/modules/antagonists/heretic/magic/caretaker.dm
@@ -8,7 +8,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "caretaker"
- sound = 'sound/effects/curse2.ogg'
+ sound = 'sound/effects/curse/curse2.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 1 MINUTES
diff --git a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
index 3fb197d392cb0..9baf3366f4ba8 100644
--- a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
+++ b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
@@ -7,7 +7,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "cosmic_domain"
- sound = 'sound/magic/cosmic_expansion.ogg'
+ sound = 'sound/effects/magic/cosmic_expansion.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 45 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/cosmic_runes.dm b/code/modules/antagonists/heretic/magic/cosmic_runes.dm
index 207b60ae9393a..1003920dfa9ad 100644
--- a/code/modules/antagonists/heretic/magic/cosmic_runes.dm
+++ b/code/modules/antagonists/heretic/magic/cosmic_runes.dm
@@ -7,7 +7,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "cosmic_rune"
- sound = 'sound/magic/forcewall.ogg'
+ sound = 'sound/effects/magic/forcewall.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS
@@ -99,8 +99,8 @@
get_turf(linked_rune_resolved),
no_effects = TRUE,
channel = TELEPORT_CHANNEL_MAGIC,
- asoundin = 'sound/magic/cosmic_energy.ogg',
- asoundout = 'sound/magic/cosmic_energy.ogg',
+ asoundin = 'sound/effects/magic/cosmic_energy.ogg',
+ asoundout = 'sound/effects/magic/cosmic_energy.ogg',
)
for(var/mob/living/person_on_rune in get_turf(src))
if(person_on_rune.has_status_effect(/datum/status_effect/star_mark))
diff --git a/code/modules/antagonists/heretic/magic/expand_sight.dm b/code/modules/antagonists/heretic/magic/expand_sight.dm
index e9715c9a77926..126a5a180ec2f 100644
--- a/code/modules/antagonists/heretic/magic/expand_sight.dm
+++ b/code/modules/antagonists/heretic/magic/expand_sight.dm
@@ -17,7 +17,7 @@
/datum/action/innate/expand_sight/Activate()
active = TRUE
owner.client?.view_size.setTo(boost_to)
- playsound(owner, pick('sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg'), 50, TRUE, ignore_walls = FALSE)
+ playsound(owner, pick('sound/effects/hallucinations/i_see_you1.ogg', 'sound/effects/hallucinations/i_see_you2.ogg'), 50, TRUE, ignore_walls = FALSE)
COOLDOWN_START(src, last_toggle, 8 SECONDS)
/datum/action/innate/expand_sight/Deactivate()
diff --git a/code/modules/antagonists/heretic/magic/fire_blast.dm b/code/modules/antagonists/heretic/magic/fire_blast.dm
index 4c17ca5ffc0de..104b4697cd2d0 100644
--- a/code/modules/antagonists/heretic/magic/fire_blast.dm
+++ b/code/modules/antagonists/heretic/magic/fire_blast.dm
@@ -7,7 +7,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "flames"
- sound = 'sound/magic/fireball.ogg'
+ sound = 'sound/effects/magic/fireball.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 45 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/flesh_surgery.dm b/code/modules/antagonists/heretic/magic/flesh_surgery.dm
index ff474f063198f..87d1927cc977c 100644
--- a/code/modules/antagonists/heretic/magic/flesh_surgery.dm
+++ b/code/modules/antagonists/heretic/magic/flesh_surgery.dm
@@ -96,7 +96,7 @@
var/organ_hp_to_heal = to_heal.maxHealth * organ_percent_healing
to_heal.set_organ_damage(max(0 , to_heal.damage - organ_hp_to_heal))
to_heal.balloon_alert(caster, "organ healed")
- playsound(to_heal, 'sound/magic/staff_healing.ogg', 30)
+ playsound(to_heal, 'sound/effects/magic/staff_healing.ogg', 30)
new /obj/effect/temp_visual/cult/sparks(get_turf(to_heal))
var/condition = (to_heal.damage > 0) ? "better" : "perfect"
caster.visible_message(
@@ -118,7 +118,7 @@
// while for human minions(ghouls), this will heal brute and burn like normal. So be careful adjusting to bigger numbers
to_heal.balloon_alert(caster, "[what_are_we] healed")
to_heal.heal_overall_damage(monster_brute_healing, monster_burn_healing)
- playsound(to_heal, 'sound/magic/staff_healing.ogg', 30)
+ playsound(to_heal, 'sound/effects/magic/staff_healing.ogg', 30)
new /obj/effect/temp_visual/cult/sparks(get_turf(to_heal))
caster.visible_message(
span_warning("[caster]'s hand glows a brilliant red as [caster.p_they()] restore[caster.p_s()] [to_heal] to good condition!"),
@@ -181,7 +181,7 @@
)
carbon_victim.balloon_alert(caster, "extracting [chosen_organ]...")
- playsound(victim, 'sound/weapons/slice.ogg', 50, TRUE)
+ playsound(victim, 'sound/items/weapons/slice.ogg', 50, TRUE)
carbon_victim.add_atom_colour(COLOR_DARK_RED, TEMPORARY_COLOUR_PRIORITY)
if(!do_after(caster, time_it_takes, carbon_victim, extra_checks = CALLBACK(src, PROC_REF(extraction_checks), picked_organ, hand, victim, caster)))
carbon_victim.balloon_alert(caster, "interrupted!")
diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm
index 0ab882a9289e1..d61ce5d1a3920 100644
--- a/code/modules/antagonists/heretic/magic/furious_steel.dm
+++ b/code/modules/antagonists/heretic/magic/furious_steel.dm
@@ -7,7 +7,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "furious_steel"
- sound = 'sound/weapons/guillotine.ogg'
+ sound = 'sound/items/weapons/guillotine.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 60 SECONDS
@@ -155,7 +155,7 @@
overlay_icon_state = "bg_cult_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "cursed_steel"
- sound = 'sound/weapons/guillotine.ogg'
+ sound = 'sound/items/weapons/guillotine.ogg'
cooldown_time = 40 SECONDS
invocation = "IA!"
diff --git a/code/modules/antagonists/heretic/magic/mansus_grasp.dm b/code/modules/antagonists/heretic/magic/mansus_grasp.dm
index 43dde25374f89..67df0f2be0468 100644
--- a/code/modules/antagonists/heretic/magic/mansus_grasp.dm
+++ b/code/modules/antagonists/heretic/magic/mansus_grasp.dm
@@ -5,7 +5,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "mansus_grasp"
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 10 SECONDS
@@ -56,7 +56,7 @@
carbon_hit.color = COLOR_CULT_RED
animate(carbon_hit, color = old_color, time = 4 SECONDS, easing = EASE_IN)
carbon_hit.mob_light(range = 1.5, power = 2.5, color = COLOR_CULT_RED, duration = 0.5 SECONDS)
- playsound(carbon_hit, 'sound/magic/curse.ogg', 50, TRUE)
+ playsound(carbon_hit, 'sound/effects/magic/curse.ogg', 50, TRUE)
to_chat(caster, span_warning("An unholy force intervenes as you grasp [carbon_hit], absorbing most of the effects!"))
to_chat(carbon_hit, span_warning("As [caster] grasps you with eldritch forces, your blood magic absorbs most of the effects!"))
diff --git a/code/modules/antagonists/heretic/magic/mind_gate.dm b/code/modules/antagonists/heretic/magic/mind_gate.dm
index c5a6e74452a61..7963c4d6c0266 100644
--- a/code/modules/antagonists/heretic/magic/mind_gate.dm
+++ b/code/modules/antagonists/heretic/magic/mind_gate.dm
@@ -7,7 +7,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "mind_gate"
- sound = 'sound/magic/curse.ogg'
+ sound = 'sound/effects/magic/curse.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 20 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/mirror_walk.dm b/code/modules/antagonists/heretic/magic/mirror_walk.dm
index b9029e1ab072d..93642c7f324d4 100644
--- a/code/modules/antagonists/heretic/magic/mirror_walk.dm
+++ b/code/modules/antagonists/heretic/magic/mirror_walk.dm
@@ -67,7 +67,7 @@
if(!do_after(jaunter, phase_out_time, nearby_reflection, IGNORE_USER_LOC_CHANGE|IGNORE_INCAPACITATED, hidden = TRUE))
return
- playsound(jaunter, 'sound/magic/ethereal_enter.ogg', 50, TRUE, -1)
+ playsound(jaunter, 'sound/effects/magic/ethereal_enter.ogg', 50, TRUE, -1)
jaunter.visible_message(
span_boldwarning("[jaunter] phases out of reality, vanishing before your very eyes!"),
span_notice("You jump into the reflection coming off of [nearby_reflection], entering the mirror's realm."),
@@ -107,7 +107,7 @@
/datum/action/cooldown/spell/jaunt/mirror_walk/on_jaunt_exited(obj/effect/dummy/phased_mob/jaunt, mob/living/unjaunter)
. = ..()
UnregisterSignal(jaunt, COMSIG_MOVABLE_MOVED)
- playsound(unjaunter, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(unjaunter, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
var/turf/phase_turf = get_turf(unjaunter)
// Chilly!
diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm
index 3b7f1d007cd6e..e6457a6a2b101 100644
--- a/code/modules/antagonists/heretic/magic/moon_parade.dm
+++ b/code/modules/antagonists/heretic/magic/moon_parade.dm
@@ -7,7 +7,7 @@
button_icon_state = "moon_parade"
ranged_mousepointer = 'icons/effects/mouse_pointers/moon_target.dmi'
- sound = 'sound/magic/cosmic_energy.ogg'
+ sound = 'sound/effects/magic/cosmic_energy.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm
index 35f2d77e3e6b6..63bcc4cc84831 100644
--- a/code/modules/antagonists/heretic/magic/moon_smile.dm
+++ b/code/modules/antagonists/heretic/magic/moon_smile.dm
@@ -8,7 +8,7 @@
button_icon_state = "moon_smile"
ranged_mousepointer = 'icons/effects/mouse_pointers/moon_target.dmi'
- sound = 'sound/magic/blind.ogg'
+ sound = 'sound/effects/magic/blind.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 20 SECONDS
@@ -35,7 +35,7 @@
to_chat(owner, span_warning("The moon does not smile upon them."))
return FALSE
- playsound(cast_on, 'sound/hallucinations/i_see_you1.ogg', 50, 1)
+ playsound(cast_on, 'sound/effects/hallucinations/i_see_you1.ogg', 50, 1)
to_chat(cast_on, span_warning("Your eyes cry out in pain, your ears bleed and your lips seal! THE MOON SMILES UPON YOU!"))
cast_on.adjust_temp_blindness(moon_smile_duration + 1 SECONDS)
cast_on.set_eye_blur_if_lower(moon_smile_duration + 2 SECONDS)
diff --git a/code/modules/antagonists/heretic/magic/realignment.dm b/code/modules/antagonists/heretic/magic/realignment.dm
index d3ddc03fbbef3..8ad6ce7829970 100644
--- a/code/modules/antagonists/heretic/magic/realignment.dm
+++ b/code/modules/antagonists/heretic/magic/realignment.dm
@@ -7,7 +7,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/hud/implants.dmi'
button_icon_state = "adrenal"
- // sound = 'sound/magic/whistlereset.ogg'
+ // sound = 'sound/effects/magic/whistlereset.ogg' I have no idea why this was commented out
school = SCHOOL_FORBIDDEN
cooldown_time = 6 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/rust_wave.dm b/code/modules/antagonists/heretic/magic/rust_wave.dm
index 0282a32b2b687..b109a068042b9 100644
--- a/code/modules/antagonists/heretic/magic/rust_wave.dm
+++ b/code/modules/antagonists/heretic/magic/rust_wave.dm
@@ -8,7 +8,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "entropic_plume"
- sound = 'sound/magic/forcewall.ogg'
+ sound = 'sound/effects/magic/forcewall.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
@@ -90,7 +90,7 @@
alpha = 180
damage = 30
damage_type = TOX
- hitsound = 'sound/weapons/punch3.ogg'
+ hitsound = 'sound/items/weapons/punch3.ogg'
trigger_range = 0
ignored_factions = list(FACTION_HERETIC)
range = 15
@@ -98,7 +98,7 @@
/obj/projectile/magic/aoe/rust_wave/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
. = ..()
- playsound(src, 'sound/items/welder.ogg', 75, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 75, TRUE)
var/list/turflist = list()
var/turf/T1
turflist += get_turf(src)
diff --git a/code/modules/antagonists/heretic/magic/shadow_cloak.dm b/code/modules/antagonists/heretic/magic/shadow_cloak.dm
index ad942c71a328a..ca0ca1fa15b05 100644
--- a/code/modules/antagonists/heretic/magic/shadow_cloak.dm
+++ b/code/modules/antagonists/heretic/magic/shadow_cloak.dm
@@ -7,7 +7,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_minor_antag.dmi'
button_icon_state = "ninja_cloak"
- sound = 'sound/effects/curse2.ogg'
+ sound = 'sound/effects/curse/curse2.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 6 SECONDS
@@ -36,12 +36,12 @@
/datum/action/cooldown/spell/shadow_cloak/before_cast(mob/living/cast_on)
. = ..()
sound = pick(
- 'sound/effects/curse1.ogg',
- 'sound/effects/curse2.ogg',
- 'sound/effects/curse3.ogg',
- 'sound/effects/curse4.ogg',
- 'sound/effects/curse5.ogg',
- 'sound/effects/curse6.ogg',
+ 'sound/effects/curse/curse1.ogg',
+ 'sound/effects/curse/curse2.ogg',
+ 'sound/effects/curse/curse3.ogg',
+ 'sound/effects/curse/curse4.ogg',
+ 'sound/effects/curse/curse5.ogg',
+ 'sound/effects/curse/curse6.ogg',
)
// We handle the CD on our own
return . | SPELL_NO_IMMEDIATE_COOLDOWN
@@ -66,7 +66,7 @@
StartCooldown(uncloak_timer / 3)
/datum/action/cooldown/spell/shadow_cloak/proc/cloak_mob(mob/living/cast_on)
- playsound(cast_on, 'sound/chemistry/ahaha.ogg', 50, TRUE, -1, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 0.5)
+ playsound(cast_on, 'sound/effects/chemistry/ahaha.ogg', 50, TRUE, -1, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 0.5)
cast_on.visible_message(
span_warning("[cast_on] disappears into the shadows!"),
span_notice("You disappear into the shadows, becoming unidentifiable."),
@@ -83,7 +83,7 @@
active_cloak = null
UnregisterSignal(cast_on, SIGNAL_REMOVETRAIT(TRAIT_ALLOW_HERETIC_CASTING))
- playsound(cast_on, 'sound/effects/curseattack.ogg', 50)
+ playsound(cast_on, 'sound/effects/curse/curseattack.ogg', 50)
if(show_message)
cast_on.visible_message(
span_warning("[cast_on] appears from the shadows!"),
diff --git a/code/modules/antagonists/heretic/magic/space_crawl.dm b/code/modules/antagonists/heretic/magic/space_crawl.dm
index 49b9ae96f3088..6a96403872f11 100644
--- a/code/modules/antagonists/heretic/magic/space_crawl.dm
+++ b/code/modules/antagonists/heretic/magic/space_crawl.dm
@@ -83,7 +83,7 @@
jaunter.put_in_hands(right_hand)
RegisterSignal(jaunter, SIGNAL_REMOVETRAIT(TRAIT_ALLOW_HERETIC_CASTING), PROC_REF(on_focus_lost))
- playsound(our_turf, 'sound/magic/cosmic_energy.ogg', 50, TRUE, -1)
+ playsound(our_turf, 'sound/effects/magic/cosmic_energy.ogg', 50, TRUE, -1)
our_turf.visible_message(span_warning("[jaunter] sinks into [our_turf]!"))
new /obj/effect/temp_visual/space_explosion(our_turf)
jaunter.extinguish_mob()
@@ -107,7 +107,7 @@
/datum/action/cooldown/spell/jaunt/space_crawl/on_jaunt_exited(obj/effect/dummy/phased_mob/jaunt, mob/living/unjaunter)
UnregisterSignal(jaunt, COMSIG_MOVABLE_MOVED)
UnregisterSignal(unjaunter, list(SIGNAL_REMOVETRAIT(TRAIT_ALLOW_HERETIC_CASTING)))
- playsound(get_turf(unjaunter), 'sound/magic/cosmic_energy.ogg', 50, TRUE, -1)
+ playsound(get_turf(unjaunter), 'sound/effects/magic/cosmic_energy.ogg', 50, TRUE, -1)
new /obj/effect/temp_visual/space_explosion(get_turf(unjaunter))
if(iscarbon(unjaunter))
for(var/obj/item/space_crawl/space_hand in unjaunter.held_items)
diff --git a/code/modules/antagonists/heretic/magic/star_blast.dm b/code/modules/antagonists/heretic/magic/star_blast.dm
index 3eb62b7ada814..e6f7a96811e40 100644
--- a/code/modules/antagonists/heretic/magic/star_blast.dm
+++ b/code/modules/antagonists/heretic/magic/star_blast.dm
@@ -6,7 +6,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "star_blast"
- sound = 'sound/magic/cosmic_energy.ogg'
+ sound = 'sound/effects/magic/cosmic_energy.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 20 SECONDS
@@ -46,7 +46,7 @@
nearby_mob.apply_status_effect(/datum/status_effect/star_mark, cast_on)
/obj/projectile/magic/star_ball/Destroy()
- playsound(get_turf(src), 'sound/magic/cosmic_energy.ogg', 50, FALSE)
+ playsound(get_turf(src), 'sound/effects/magic/cosmic_energy.ogg', 50, FALSE)
for(var/turf/cast_turf as anything in get_turfs())
new /obj/effect/forcefield/cosmic_field(cast_turf)
return ..()
diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm
index 89c5d02e7d498..d9cd5a05eab2b 100644
--- a/code/modules/antagonists/heretic/magic/star_touch.dm
+++ b/code/modules/antagonists/heretic/magic/star_touch.dm
@@ -10,7 +10,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "star_touch"
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS
invocation = "ST'R 'N'RG'!"
@@ -107,8 +107,8 @@
get_turf(star_gazer_mob),
no_effects = TRUE,
channel = TELEPORT_CHANNEL_MAGIC,
- asoundin = 'sound/magic/cosmic_energy.ogg',
- asoundout = 'sound/magic/cosmic_energy.ogg',
+ asoundin = 'sound/effects/magic/cosmic_energy.ogg',
+ asoundout = 'sound/effects/magic/cosmic_energy.ogg',
)
remove_hand_with_no_refund(user)
diff --git a/code/modules/antagonists/heretic/magic/void_conduit.dm b/code/modules/antagonists/heretic/magic/void_conduit.dm
index 07ca0cbe2ab0f..036415269c975 100644
--- a/code/modules/antagonists/heretic/magic/void_conduit.dm
+++ b/code/modules/antagonists/heretic/magic/void_conduit.dm
@@ -33,7 +33,7 @@
///List of tiles that we added an overlay to, so we can clear them when the conduit is deleted
var/list/overlayed_turfs = list()
///How many tiles far our effect is
- var/effect_range = 12
+ var/effect_range = 8
///id of the deletion timer
var/timerid
///Audio loop for the rift being alive
@@ -44,7 +44,12 @@
soundloop = new(src, start_immediately = TRUE)
timerid = QDEL_IN_STOPPABLE(src, 1 MINUTES)
START_PROCESSING(SSobj, src)
- for(var/turf/affected_turf as anything in RANGE_TURFS(effect_range, src))
+ build_view_turfs()
+
+/obj/structure/void_conduit/proc/build_view_turfs()
+ for(var/turf/affected_turf as anything in overlayed_turfs)
+ affected_turf.cut_overlay(void_overlay)
+ for(var/turf/affected_turf as anything in view(effect_range, src))
if(!isopenturf(affected_turf))
continue
affected_turf.add_overlay(void_overlay)
@@ -61,12 +66,13 @@
return ..()
/obj/structure/void_conduit/process(seconds_per_tick)
+ build_view_turfs()
do_conduit_pulse()
///Sends out a pulse
/obj/structure/void_conduit/proc/do_conduit_pulse()
var/list/turfs_to_affect = list()
- for(var/turf/affected_turf as anything in RANGE_TURFS(effect_range, loc))
+ for(var/turf/affected_turf as anything in view(effect_range, loc))
var/distance = get_dist(loc, affected_turf)
if(!turfs_to_affect["[distance]"])
turfs_to_affect["[distance]"] = list()
@@ -102,7 +108,7 @@
affected_structure.take_damage(rand(10, 20))
/datum/looping_sound/void_conduit
- mid_sounds = 'sound/ambience/ambiatm1.ogg'
+ mid_sounds = 'sound/ambience/misc/ambiatm1.ogg'
mid_length = 1 SECONDS
extra_range = 10
volume = 40
diff --git a/code/modules/antagonists/heretic/magic/void_phase.dm b/code/modules/antagonists/heretic/magic/void_phase.dm
index c6e367e87608c..473fa057cf54c 100644
--- a/code/modules/antagonists/heretic/magic/void_phase.dm
+++ b/code/modules/antagonists/heretic/magic/void_phase.dm
@@ -50,7 +50,7 @@
/// Does the AOE effect of the blinka t the passed turf
/datum/action/cooldown/spell/pointed/void_phase/proc/cause_aoe(turf/target_turf, effect_type = /obj/effect/temp_visual/voidin)
new effect_type(target_turf)
- playsound(target_turf, 'sound/magic/voidblink.ogg', 60, FALSE)
+ playsound(target_turf, 'sound/effects/magic/voidblink.ogg', 60, FALSE)
for(var/mob/living/living_mob in range(damage_radius, target_turf))
if(IS_HERETIC_OR_MONSTER(living_mob) || living_mob == owner)
continue
diff --git a/code/modules/antagonists/heretic/magic/void_prison.dm b/code/modules/antagonists/heretic/magic/void_prison.dm
index 211a747c8008e..cfd85c92b6e1c 100644
--- a/code/modules/antagonists/heretic/magic/void_prison.dm
+++ b/code/modules/antagonists/heretic/magic/void_prison.dm
@@ -8,7 +8,7 @@
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "voidball"
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'
- sound = 'sound/magic/voidblink.ogg'
+ sound = 'sound/effects/magic/voidblink.ogg'
cooldown_time = 1 MINUTES
cast_range = 3
diff --git a/code/modules/antagonists/heretic/magic/void_pull.dm b/code/modules/antagonists/heretic/magic/void_pull.dm
index 1db1c6601718e..4e73ff6f49bf9 100644
--- a/code/modules/antagonists/heretic/magic/void_pull.dm
+++ b/code/modules/antagonists/heretic/magic/void_pull.dm
@@ -6,7 +6,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "voidpull"
- sound = 'sound/magic/voidblink.ogg'
+ sound = 'sound/effects/magic/voidblink.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
diff --git a/code/modules/antagonists/heretic/magic/wave_of_desperation.dm b/code/modules/antagonists/heretic/magic/wave_of_desperation.dm
index 3b78b56ddc0ba..16e3440ebbeec 100644
--- a/code/modules/antagonists/heretic/magic/wave_of_desperation.dm
+++ b/code/modules/antagonists/heretic/magic/wave_of_desperation.dm
@@ -6,7 +6,7 @@
overlay_icon_state = "bg_heretic_border"
button_icon = 'icons/mob/actions/actions_ecult.dmi'
button_icon_state = "uncuff"
- sound = 'sound/magic/swap.ogg'
+ sound = 'sound/effects/magic/swap.ogg'
school = SCHOOL_FORBIDDEN
cooldown_time = 5 MINUTES
diff --git a/code/modules/antagonists/heretic/status_effects/buffs.dm b/code/modules/antagonists/heretic/status_effects/buffs.dm
index e4f5990040be4..d60129ae3d930 100644
--- a/code/modules/antagonists/heretic/status_effects/buffs.dm
+++ b/code/modules/antagonists/heretic/status_effects/buffs.dm
@@ -190,7 +190,7 @@
var/obj/effect/floating_blade/to_remove = blades[1]
- playsound(get_turf(source), 'sound/weapons/parry.ogg', 100, TRUE)
+ playsound(get_turf(source), 'sound/items/weapons/parry.ogg', 100, TRUE)
source.visible_message(
span_warning("[to_remove] orbiting [source] snaps in front of [attack_text], blocking it before vanishing!"),
span_warning("[to_remove] orbiting you snaps in front of [attack_text], blocking it before vanishing!"),
@@ -281,7 +281,7 @@
/datum/status_effect/caretaker_refuge/proc/nullrod_handler(datum/source, obj/item/weapon)
SIGNAL_HANDLER
- playsound(get_turf(owner), 'sound/effects/curse1.ogg', 80, TRUE)
+ playsound(get_turf(owner), 'sound/effects/curse/curse1.ogg', 80, TRUE)
owner.visible_message(span_warning("[weapon] repels the haze around [owner]!"))
owner.remove_status_effect(type)
diff --git a/code/modules/antagonists/heretic/status_effects/mark_effects.dm b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
index 4cbdbdf8c1ce1..2521794907231 100644
--- a/code/modules/antagonists/heretic/status_effects/mark_effects.dm
+++ b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
@@ -47,7 +47,7 @@
/datum/status_effect/eldritch/proc/on_effect()
SHOULD_CALL_PARENT(TRUE)
- playsound(owner, 'sound/magic/repulse.ogg', 75, TRUE)
+ playsound(owner, 'sound/effects/magic/repulse.ogg', 75, TRUE)
qdel(src) //what happens when this is procced.
//Each mark has different effects when it is destroyed that combine with the mansus grasp effect.
diff --git a/code/modules/antagonists/heretic/structures/carving_knife.dm b/code/modules/antagonists/heretic/structures/carving_knife.dm
index 70133e951af91..72b224d117dd4 100644
--- a/code/modules/antagonists/heretic/structures/carving_knife.dm
+++ b/code/modules/antagonists/heretic/structures/carving_knife.dm
@@ -11,7 +11,7 @@
wound_bonus = 20
force = 10
throwforce = 20
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
actions_types = list(/datum/action/item_action/rune_shatter)
@@ -152,7 +152,7 @@
if(!.)
return
- owner.playsound_local(get_turf(owner), 'sound/magic/blind.ogg', 50, TRUE)
+ owner.playsound_local(get_turf(owner), 'sound/effects/magic/blind.ogg', 50, TRUE)
var/obj/item/melee/rune_carver/target_sword = target
QDEL_LIST(target_sword.current_runes)
target_sword.SpinAnimation(5, 1)
@@ -203,7 +203,7 @@
var/mob/living/real_owner = owner?.resolve()
if(real_owner)
to_chat(real_owner, span_userdanger("[victim.real_name] has stepped foot on the alert rune in [get_area(src)]!"))
- real_owner.playsound_local(get_turf(real_owner), 'sound/magic/curse.ogg', 50, TRUE)
+ real_owner.playsound_local(get_turf(real_owner), 'sound/effects/magic/curse.ogg', 50, TRUE)
/obj/structure/trap/eldritch/tentacle
name = "grasping carving"
@@ -219,7 +219,7 @@
carbon_victim.Paralyze(5 SECONDS)
carbon_victim.apply_damage(20, BRUTE, BODY_ZONE_R_LEG)
carbon_victim.apply_damage(20, BRUTE, BODY_ZONE_L_LEG)
- playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/magic/demon_attack1.ogg', 75, TRUE)
/obj/structure/trap/eldritch/mad
name = "mad carving"
@@ -240,4 +240,4 @@
carbon_victim.set_dizzy_if_lower(40 SECONDS)
carbon_victim.adjust_temp_blindness(4 SECONDS)
carbon_victim.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
- playsound(src, 'sound/magic/blind.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/magic/blind.ogg', 75, TRUE)
diff --git a/code/modules/antagonists/heretic/structures/lock_final.dm b/code/modules/antagonists/heretic/structures/lock_final.dm
index 5512d6027ee5a..295ecbb3a2b91 100644
--- a/code/modules/antagonists/heretic/structures/lock_final.dm
+++ b/code/modules/antagonists/heretic/structures/lock_final.dm
@@ -47,7 +47,7 @@
/obj/structure/lock_tear/proc/end_madness(datum/former_master)
SIGNAL_HANDLER
var/turf/our_turf = get_turf(src)
- playsound(our_turf, 'sound/magic/castsummon.ogg', vol = 100, vary = TRUE)
+ playsound(our_turf, 'sound/effects/magic/castsummon.ogg', vol = 100, vary = TRUE)
visible_message(span_boldwarning("The rip in space spasms and disappears!"))
UnregisterSignal(former_master, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING)) // Just in case they die THEN delete
new /obj/effect/temp_visual/destabilising_tear(our_turf)
diff --git a/code/modules/antagonists/heretic/structures/mawed_crucible.dm b/code/modules/antagonists/heretic/structures/mawed_crucible.dm
index 2135ffa134ca5..ea962cbc5a4e1 100644
--- a/code/modules/antagonists/heretic/structures/mawed_crucible.dm
+++ b/code/modules/antagonists/heretic/structures/mawed_crucible.dm
@@ -6,7 +6,7 @@
icon = 'icons/obj/antags/eldritch.dmi'
icon_state = "crucible"
base_icon_state = "crucible"
- break_sound = 'sound/hallucinations/wail.ogg'
+ break_sound = 'sound/effects/hallucinations/wail.ogg'
light_power = 1
anchored = TRUE
density = TRUE
@@ -31,7 +31,7 @@
for(var/turf/nearby_turf as anything in get_adjacent_open_turfs(our_turf))
if(prob(10 * current_mass))
new /obj/effect/decal/cleanable/greenglow(nearby_turf)
- playsound(our_turf, 'sound/effects/bubbles2.ogg', 50, TRUE)
+ playsound(our_turf, 'sound/effects/bubbles/bubbles2.ogg', 50, TRUE)
return ..()
@@ -69,12 +69,6 @@
bite_the_hand(user)
return TRUE
- if(istype(weapon, /obj/item/codex_cicatrix) || istype(weapon, /obj/item/melee/touch_attack/mansus_fist))
- playsound(src, 'sound/items/deconstruct.ogg', 30, TRUE, ignore_walls = FALSE)
- set_anchored(!anchored)
- balloon_alert(user, "[anchored ? "":"un"]anchored")
- return TRUE
-
if(isbodypart(weapon))
var/obj/item/bodypart/consumed = weapon
@@ -99,6 +93,13 @@
return ..()
+/obj/structure/destructible/eldritch_crucible/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(istype(tool, /obj/item/codex_cicatrix) || istype(tool, /obj/item/melee/touch_attack/mansus_fist))
+ playsound(src, 'sound/items/deconstruct.ogg', 30, TRUE, ignore_walls = FALSE)
+ set_anchored(!anchored)
+ balloon_alert(user, "[anchored ? "":"un"]anchored")
+ return ITEM_INTERACT_SUCCESS
+
/obj/structure/destructible/eldritch_crucible/attack_hand(mob/user, list/modifiers)
. = ..()
if(.)
@@ -163,7 +164,7 @@
var/obj/item/spawned_pot = new spawned_type(drop_location())
- playsound(src, 'sound/misc/desecration-02.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/desecration/desecration-02.ogg', 75, TRUE)
visible_message(span_notice("[src]'s shining liquid drains into a flask, creating a [spawned_pot.name]!"))
balloon_alert(user, "potion created")
@@ -237,7 +238,7 @@
if(!iscarbon(user))
return
- playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 50, TRUE)
if(!IS_HERETIC_OR_MONSTER(user))
to_chat(user, span_danger("You down some of the liquid from [src]. The taste causes you to retch, and the glass vanishes."))
diff --git a/code/modules/antagonists/heretic/transmutation_rune.dm b/code/modules/antagonists/heretic/transmutation_rune.dm
index 3f7072201590f..02c27c353a90e 100644
--- a/code/modules/antagonists/heretic/transmutation_rune.dm
+++ b/code/modules/antagonists/heretic/transmutation_rune.dm
@@ -167,7 +167,7 @@
// This doesn't necessarily mean the ritual will succeed, but it's valid!
// Do the animations and associated feedback.
flick("[icon_state]_active", src)
- playsound(user, 'sound/magic/castsummon.ogg', 75, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_exponent = 10)
+ playsound(user, 'sound/effects/magic/castsummon.ogg', 75, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_exponent = 10)
// - We temporarily make all of our chosen atoms invisible, as some rituals may sleep,
// and we don't want people to be able to run off with ritual items.
diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm
index a1c31241e0b75..184ca9c4f77f4 100644
--- a/code/modules/antagonists/highlander/highlander.dm
+++ b/code/modules/antagonists/highlander/highlander.dm
@@ -43,8 +43,8 @@
. = ..()
/datum/antagonist/highlander/greet()
- to_chat(owner, "Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
- Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.")
+ to_chat(owner, span_boldannounce("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
+ Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
owner.announce_objectives()
@@ -88,8 +88,8 @@
name = "\improper highlander"
/datum/antagonist/highlander/robot/greet()
- to_chat(owner, "Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
- Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.")
+ to_chat(owner, span_boldannounce("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
+ Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
/datum/antagonist/highlander/robot/give_equipment()
var/mob/living/silicon/robot/robotlander = owner.current
diff --git a/code/modules/antagonists/hypnotized/hypnotized.dm b/code/modules/antagonists/hypnotized/hypnotized.dm
index fc1e5d7d5ad24..bde67390bf7fb 100644
--- a/code/modules/antagonists/hypnotized/hypnotized.dm
+++ b/code/modules/antagonists/hypnotized/hypnotized.dm
@@ -1,7 +1,7 @@
/// Antag datum associated with the hypnosis brain trauma, used for displaying objectives and antag hud
/datum/antagonist/hypnotized
name = "\improper Hypnotized Victim"
- stinger_sound = 'sound/ambience/antag/hypnotized.ogg'
+ stinger_sound = 'sound/music/antag/hypnotized.ogg'
job_rank = ROLE_HYPNOTIZED
roundend_category = "hypnotized victims"
antag_hud_name = "brainwashed"
diff --git a/code/modules/antagonists/malf_ai/malf_ai.dm b/code/modules/antagonists/malf_ai/malf_ai.dm
index dc92289f66bef..6220127f68794 100644
--- a/code/modules/antagonists/malf_ai/malf_ai.dm
+++ b/code/modules/antagonists/malf_ai/malf_ai.dm
@@ -21,7 +21,7 @@
///since the module purchasing is built into the antag info, we need to keep track of its compact mode here
var/module_picker_compactmode = FALSE
///malf on_gain sound effect. Set here so Infected AI can override
- var/malf_sound = 'sound/ambience/antag/malf.ogg'
+ var/malf_sound = 'sound/music/antag/malf.ogg'
/datum/antagonist/malf_ai/New(give_objectives = TRUE)
. = ..()
@@ -258,7 +258,7 @@
result += span_greentext("The [special_role_text] was successful!")
else
result += span_redtext("The [special_role_text] has failed!")
- SEND_SOUND(owner.current, 'sound/ambience/ambifailure.ogg')
+ SEND_SOUND(owner.current, 'sound/ambience/misc/ambifailure.ogg')
return result.Join(" ")
diff --git a/code/modules/antagonists/malf_ai/malf_ai_modules.dm b/code/modules/antagonists/malf_ai/malf_ai_modules.dm
index a9f84c51dad1a..f91d1b90ba46b 100644
--- a/code/modules/antagonists/malf_ai/malf_ai_modules.dm
+++ b/code/modules/antagonists/malf_ai/malf_ai_modules.dm
@@ -201,7 +201,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
return
- owner.playsound_local(owner, 'sound/misc/bloblarm.ogg', 50, 0, use_reverb = FALSE)
+ owner.playsound_local(owner, 'sound/announcer/alarm/bloblarm.ogg', 50, 0, use_reverb = FALSE)
to_chat(owner, span_userdanger("!!! UNAUTHORIZED SELF-DESTRUCT ACCESS !!!"))
to_chat(owner, span_boldannounce("This is a class-3 security violation. This incident will be reported to Central Command."))
for(var/i in 1 to 3)
@@ -227,7 +227,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
active = FALSE
return
to_chat(owner, span_boldnotice("Arm self-destruct device? (Y/N)"))
- owner.playsound_local(owner, 'sound/misc/compiler-stage1.ogg', 50, 0, use_reverb = FALSE)
+ owner.playsound_local(owner, 'sound/machines/compiler/compiler-stage1.ogg', 50, 0, use_reverb = FALSE)
sleep(2 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
@@ -238,7 +238,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
active = FALSE
return
to_chat(owner, span_boldnotice("Confirm arming of self-destruct device? (Y/N)"))
- owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
+ owner.playsound_local(owner, 'sound/machines/compiler/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
sleep(1 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
@@ -249,7 +249,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
active = FALSE
return
to_chat(owner, span_boldnotice("Please repeat password to confirm."))
- owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
+ owner.playsound_local(owner, 'sound/machines/compiler/compiler-stage2.ogg', 50, 0, use_reverb = FALSE)
sleep(1.4 SECONDS)
if(QDELETED(owner) || !isturf(owner_AI.loc))
active = FALSE
@@ -350,7 +350,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
var/sec_left = seconds_remaining()
if(!sec_left)
timing = FALSE
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(play_cinematic), /datum/cinematic/malf, world, CALLBACK(src, PROC_REF(trigger_doomsday))), 10 SECONDS)
else if(world.time >= next_announce)
@@ -381,7 +381,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
one_purchase = TRUE
power_type = /datum/action/innate/ai/lockdown
unlock_text = span_notice("You upload a sleeper trojan into the door control systems. You can send a signal to set it off at any time.")
- unlock_sound = 'sound/machines/boltsdown.ogg'
+ unlock_sound = 'sound/machines/airlock/boltsdown.ogg'
/datum/action/innate/ai/lockdown
name = "Lockdown"
@@ -430,7 +430,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
cost = 30
power_type = /datum/action/innate/ai/ranged/override_machine
unlock_text = span_notice("You procure a virus from the Space Dark Web and distribute it to the station's machines.")
- unlock_sound = 'sound/machines/airlock_alien_prying.ogg'
+ unlock_sound = 'sound/machines/airlock/airlock_alien_prying.ogg'
/datum/action/innate/ai/ranged/override_machine
name = "Override Machine"
@@ -503,7 +503,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
var/obj/item/construction/rcd/RCD = I
RCD.detonate_pulse()
to_chat(owner, span_danger("RCD detonation pulse emitted."))
- owner.playsound_local(owner, 'sound/machines/twobeep.ogg', 50, 0)
+ owner.playsound_local(owner, 'sound/machines/beep/twobeep.ogg', 50, 0)
/// Overload Machine: Allows the AI to overload a machine, detonating it after a delay. Two uses per purchase.
/datum/ai_module/malf/destructive/overload_machine
@@ -607,7 +607,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
cost = 20
power_type = /datum/action/innate/ai/honk
unlock_text = span_notice("You upload a sinister sound file into every intercom...")
- unlock_sound = 'sound/items/airhorn.ogg'
+ unlock_sound = 'sound/items/airhorn/airhorn.ogg'
/datum/action/innate/ai/honk
name = "Percussive Intercomm Interference"
@@ -622,7 +622,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
if(!found_intercom.is_on() || !found_intercom.get_listening() || found_intercom.wires.is_cut(WIRE_RX)) //Only operating intercoms play the honk
continue
found_intercom.audible_message(message = "[found_intercom] crackles for a split second.", hearing_distance = 3)
- playsound(found_intercom, 'sound/items/airhorn.ogg', 100, TRUE)
+ playsound(found_intercom, 'sound/items/airhorn/airhorn.ogg', 100, TRUE)
for(var/mob/living/carbon/honk_victim in ohearers(6, found_intercom))
var/turf/victim_turf = get_turf(honk_victim)
if(isspaceturf(victim_turf) && !victim_turf.Adjacent(found_intercom)) //Prevents getting honked in space
@@ -730,7 +730,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
continue
AA.obj_flags |= EMAGGED
to_chat(owner, span_notice("All air alarm safeties on the station have been overridden. Air alarms may now use extremely dangerous environmental modes."))
- owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0)
+ owner.playsound_local(owner, 'sound/machines/terminal/terminal_off.ogg', 50, 0)
/// Thermal Sensor Override: Unlocks the ability to disable all fire alarms from doing their job.
/datum/ai_module/malf/utility/break_fire_alarms
@@ -742,7 +742,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
power_type = /datum/action/innate/ai/break_fire_alarms
unlock_text = span_notice("You replace the thermal sensing capabilities of all fire alarms with a manual override, \
allowing you to turn them off at will.")
- unlock_sound = 'sound/machines/FireAlarm1.ogg'
+ unlock_sound = 'sound/machines/fire_alarm/FireAlarm1.ogg'
/datum/action/innate/ai/break_fire_alarms
name = "Override Thermal Sensors"
@@ -761,7 +761,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
continue
firelock.emag_act(owner_AI, src)
to_chat(owner, span_notice("All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized."))
- owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0)
+ owner.playsound_local(owner, 'sound/machines/terminal/terminal_off.ogg', 50, 0)
/// Disable Emergency Lights
/datum/ai_module/malf/utility/emergency_lights
@@ -799,7 +799,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
one_purchase = TRUE
power_type = /datum/action/innate/ai/reactivate_cameras
unlock_text = span_notice("You deploy nanomachines to the cameranet.")
- unlock_sound = 'sound/items/wirecutter.ogg'
+ unlock_sound = 'sound/items/tools/wirecutter.ogg'
/datum/action/innate/ai/reactivate_cameras
name = "Reactivate Cameras"
@@ -824,7 +824,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
fixed_cameras++
uses-- //Not adjust_uses() so it doesn't automatically delete or show a message
to_chat(owner, span_notice("Diagnostic complete! Cameras reactivated: [fixed_cameras]. Reactivations remaining: [uses]."))
- owner.playsound_local(owner, 'sound/items/wirecutter.ogg', 50, 0)
+ owner.playsound_local(owner, 'sound/items/tools/wirecutter.ogg', 50, 0)
adjust_uses(0, TRUE) //Checks the uses remaining
if(QDELETED(src) || !uses) //Not sure if not having src here would cause a runtime, so it's here to be safe
return
@@ -839,7 +839,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
cost = 35 //Decent price for omniscience!
upgrade = TRUE
unlock_text = span_notice("OTA firmware distribution complete! Cameras upgraded: CAMSUPGRADED. Light amplification system online.")
- unlock_sound = 'sound/items/rped.ogg'
+ unlock_sound = 'sound/items/tools/rped.ogg'
/datum/ai_module/malf/upgrade/upgrade_cameras/upgrade(mob/living/silicon/ai/AI)
// Sets up nightvision
@@ -876,7 +876,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
cost = 30
upgrade = TRUE
unlock_text = span_notice("You establish a power diversion to your turrets, upgrading their health and damage.")
- unlock_sound = 'sound/items/rped.ogg'
+ unlock_sound = 'sound/items/tools/rped.ogg'
/datum/ai_module/malf/upgrade/upgrade_turrets/upgrade(mob/living/silicon/ai/AI)
for(var/obj/machinery/porta_turret/ai/turret as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/porta_turret/ai))
@@ -884,7 +884,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
turret.max_integrity = 200
turret.repair_damage(200)
turret.lethal_projectile = /obj/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
- turret.lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
+ turret.lethal_projectile_sound = 'sound/items/weapons/lasercannonfire.ogg'
/// Enhanced Surveillance: Enables AI to hear conversations going on near its active vision.
/datum/ai_module/malf/upgrade/eavesdrop
@@ -894,7 +894,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
cost = 30
upgrade = TRUE
unlock_text = span_notice("OTA firmware distribution complete! Cameras upgraded: Enhanced surveillance package online.")
- unlock_sound = 'sound/items/rped.ogg'
+ unlock_sound = 'sound/items/tools/rped.ogg'
/datum/ai_module/malf/upgrade/eavesdrop/upgrade(mob/living/silicon/ai/AI)
if(AI.eyeobj)
@@ -910,7 +910,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
upgrade = TRUE
unlock_text = span_notice("Virus package compiled. Select a target mech at any time. You must remain on the station at all times. \
Loss of signal will result in total system lockout.")
- unlock_sound = 'sound/mecha/nominal.ogg'
+ unlock_sound = 'sound/vehicles/mecha/nominal.ogg'
/datum/ai_module/malf/upgrade/mecha_domination/upgrade(mob/living/silicon/ai/AI)
AI.can_dominate_mechs = TRUE //Yep. This is all it does. Honk!
@@ -922,7 +922,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
one_purchase = TRUE
power_type = /datum/action/innate/ai/voice_changer
unlock_text = span_notice("OTA firmware distribution complete! Voice changer online.")
- unlock_sound = 'sound/items/rped.ogg'
+ unlock_sound = 'sound/items/tools/rped.ogg'
/datum/action/innate/ai/voice_changer
name="Voice Changer"
diff --git a/code/modules/antagonists/nightmare/nightmare_equipment.dm b/code/modules/antagonists/nightmare/nightmare_equipment.dm
index 6fbe6c6097bec..52a687f9ac795 100644
--- a/code/modules/antagonists/nightmare/nightmare_equipment.dm
+++ b/code/modules/antagonists/nightmare/nightmare_equipment.dm
@@ -15,7 +15,7 @@
w_class = WEIGHT_CLASS_HUGE
sharpness = SHARP_EDGED
tool_behaviour = TOOL_MINING
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
wound_bonus = -30
bare_wound_bonus = 20
///If this is true, our next hit will be critcal, temporarily stunning our target
diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm
index 19328f20378de..4aaacb77e5f3e 100644
--- a/code/modules/antagonists/nightmare/nightmare_organs.dm
+++ b/code/modules/antagonists/nightmare/nightmare_organs.dm
@@ -85,7 +85,7 @@
span_warning("[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!"),
span_danger("[src] feels unnaturally cold in your hands. You raise [src] to your mouth and devour it!")
)
- playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
user.visible_message(
span_warning("Blood erupts from [user]'s arm as it reforms into a weapon!"),
@@ -131,7 +131,7 @@
to_chat(owner, span_userdanger("You feel the shadows invade your skin, leaping into the center of your chest! You're alive!"))
SEND_SOUND(owner, sound('sound/effects/ghost.ogg'))
owner.visible_message(span_warning("[owner] staggers to [owner.p_their()] feet!"))
- playsound(owner, 'sound/hallucinations/far_noise.ogg', 50, TRUE)
+ playsound(owner, 'sound/effects/hallucinations/far_noise.ogg', 50, TRUE)
respawn_progress = 0
/obj/item/organ/internal/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob)
diff --git a/code/modules/antagonists/ninja/energy_katana.dm b/code/modules/antagonists/ninja/energy_katana.dm
index 61a9b81c364c1..efd993550915f 100644
--- a/code/modules/antagonists/ninja/energy_katana.dm
+++ b/code/modules/antagonists/ninja/energy_katana.dm
@@ -24,10 +24,10 @@
block_chance = 50
armour_penetration = 50
w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
pickup_sound = 'sound/items/unsheath.ogg'
drop_sound = 'sound/items/sheath.ogg'
- block_sound = 'sound/weapons/block_blade.ogg'
+ block_sound = 'sound/items/weapons/block_blade.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
diff --git a/code/modules/antagonists/ninja/energy_net_nets.dm b/code/modules/antagonists/ninja/energy_net_nets.dm
index 111d1f2651548..5f08762b34135 100644
--- a/code/modules/antagonists/ninja/energy_net_nets.dm
+++ b/code/modules/antagonists/ninja/energy_net_nets.dm
@@ -30,7 +30,7 @@
/obj/structure/energy_net/play_attack_sound(damage, damage_type = BRUTE, damage_flag = 0)
if(damage_type == BRUTE || damage_type == BURN)
- playsound(src, 'sound/weapons/slash.ogg', 80, TRUE)
+ playsound(src, 'sound/items/weapons/slash.ogg', 80, TRUE)
/obj/structure/energy_net/atom_destruction(damage_flag)
for(var/mob/recovered_mob as anything in buckled_mobs)
diff --git a/code/modules/antagonists/nukeop/datums/operative.dm b/code/modules/antagonists/nukeop/datums/operative.dm
index c05295e15d32e..859cee578b265 100644
--- a/code/modules/antagonists/nukeop/datums/operative.dm
+++ b/code/modules/antagonists/nukeop/datums/operative.dm
@@ -8,7 +8,7 @@
show_to_ghosts = TRUE
hijack_speed = 2 //If you can't take out the station, take the shuttle instead.
suicide_cry = "FOR THE SYNDICATE!!"
- stinger_sound = 'sound/ambience/antag/ops.ogg'
+ stinger_sound = 'sound/music/antag/ops.ogg'
/// Which nukie team are we on?
var/datum/team/nuclear/nuke_team
/// If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.
diff --git a/code/modules/antagonists/nukeop/datums/operative_support.dm b/code/modules/antagonists/nukeop/datums/operative_support.dm
index c9ea12b63c5d2..aa0c031c070aa 100644
--- a/code/modules/antagonists/nukeop/datums/operative_support.dm
+++ b/code/modules/antagonists/nukeop/datums/operative_support.dm
@@ -21,7 +21,7 @@
network = OPERATIVE_CAMERA_NET, \
emp_proof = FALSE, \
)
- our_teammate.playsound_local(get_turf(owner.current), 'sound/weapons/egloves.ogg', 100, 0)
+ our_teammate.playsound_local(get_turf(owner.current), 'sound/items/weapons/egloves.ogg', 100, 0)
to_chat(our_teammate, span_notice("A Syndicate Overwatch Intelligence Agent has been assigned to your team. Smile, you're on camera!"))
RegisterSignal(nuke_team, COMSIG_NUKE_TEAM_ADDITION, PROC_REF(late_bodycam))
diff --git a/code/modules/antagonists/nukeop/datums/operative_team.dm b/code/modules/antagonists/nukeop/datums/operative_team.dm
index 1e06f32594d84..b676bda303dd6 100644
--- a/code/modules/antagonists/nukeop/datums/operative_team.dm
+++ b/code/modules/antagonists/nukeop/datums/operative_team.dm
@@ -15,7 +15,7 @@
/datum/team/nuclear/roundend_report()
var/list/parts = list()
- parts += "[syndicate_name] Operatives:"
+ parts += span_header("[syndicate_name] Operatives:")
switch(get_result())
if(NUKE_RESULT_FLUKE)
@@ -55,7 +55,7 @@
parts += "Neutral Victory"
parts += "Mission aborted!"
- var/text = " The syndicate operatives were:"
+ var/text = span_header(" The syndicate operatives were:")
var/purchases = ""
var/TC_uses = 0
LAZYINITLIST(GLOB.uplink_purchase_logs_by_key)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
index 7e06dd0d6e050..ebc2c6ec32639 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
@@ -102,7 +102,7 @@
/obj/item/disk/nuclear/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/machines/alarm.ogg', 50, -1, TRUE)
+ playsound(src, 'sound/announcer/alarm/nuke_alarm.ogg', 50, -1, TRUE)
for(var/i in 1 to 100)
addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, add_atom_colour), (i % 2)? COLOR_VIBRANT_LIME : COLOR_RED, ADMIN_COLOUR_PRIORITY), i)
addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), 101)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
index fb23cae705fab..3214232648b2a 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm
@@ -95,7 +95,7 @@ GLOBAL_VAR(station_nuke_source)
return TRUE
auth = weapon
update_ui_mode()
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
add_fingerprint(user)
return TRUE
@@ -336,7 +336,7 @@ GLOBAL_VAR(station_nuke_source)
switch(action)
if("eject_disk")
if(auth && auth.loc == src)
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
playsound(src, 'sound/machines/nuke/general_beep.ogg', 50, FALSE)
auth.forceMove(get_turf(src))
auth = null
@@ -344,7 +344,7 @@ GLOBAL_VAR(station_nuke_source)
else
var/obj/item/I = usr.is_holding_item_of_type(/obj/item/disk/nuclear)
if(I && disk_check(I) && usr.transferItemToLoc(I, src))
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
playsound(src, 'sound/machines/nuke/general_beep.ogg', 50, FALSE)
auth = I
. = TRUE
@@ -519,7 +519,7 @@ GLOBAL_VAR(station_nuke_source)
yes_code = FALSE
safety = TRUE
update_appearance()
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NUKE_DEVICE_DETONATING, src)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
index b59d984238e61..0dba54bf2aaaf 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm
@@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec)
priority_announce(
text = memo,
title = "Declaration of War",
- sound = 'sound/machines/alarm.ogg',
+ sound = 'sound/announcer/alarm/nuke_alarm.ogg',
has_important_message = TRUE,
sender_override = "Nuclear Operative Outpost",
color_override = "red",
@@ -192,7 +192,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec)
priority_announce(
text = memo,
title = "Declaration of War",
- sound = 'sound/machines/alarm.ogg',
+ sound = 'sound/announcer/alarm/nuke_alarm.ogg',
has_important_message = TRUE,
sender_override = "Nuclear Operative Outpost",
color_override = "red",
diff --git a/code/modules/antagonists/nukeop/equipment/pinpointer.dm b/code/modules/antagonists/nukeop/equipment/pinpointer.dm
index f842b5d6b6e33..82113fb31be2b 100644
--- a/code/modules/antagonists/nukeop/equipment/pinpointer.dm
+++ b/code/modules/antagonists/nukeop/equipment/pinpointer.dm
@@ -55,7 +55,7 @@
if(isliving(loc))
var/mob/living/L = loc
to_chat(L, span_userdanger("Your [name] beeps as it reconfigures its tracking algorithms."))
- playsound(L, 'sound/machines/triple_beep.ogg', 50, TRUE)
+ playsound(L, 'sound/machines/beep/triple_beep.ogg', 50, TRUE)
mode = new_mode
scan_for_target()
diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm
index 7f9d9614fb1d9..ff4232ab2dc00 100644
--- a/code/modules/antagonists/obsessed/obsessed.dm
+++ b/code/modules/antagonists/obsessed/obsessed.dm
@@ -18,7 +18,7 @@
suicide_cry = "FOR MY LOVE!!"
preview_outfit = /datum/outfit/obsessed
hardcore_random_bonus = TRUE
- stinger_sound = 'sound/ambience/antag/creepalert.ogg'
+ stinger_sound = 'sound/music/antag/creepalert.ogg'
/// How many objectives should be generated
var/objectives_to_generate = 3
/// Brain trauma that causes the obsession
@@ -147,7 +147,7 @@
O.update_explanation_text()
/datum/antagonist/obsessed/roundend_report_header()
- return "Someone became obsessed! "
+ return span_header("Someone became obsessed! ")
/datum/antagonist/obsessed/roundend_report()
var/list/report = list()
diff --git a/code/modules/antagonists/paradox_clone/paradox_clone.dm b/code/modules/antagonists/paradox_clone/paradox_clone.dm
index bd8eb7cd7d866..960cf7f59ec2f 100644
--- a/code/modules/antagonists/paradox_clone/paradox_clone.dm
+++ b/code/modules/antagonists/paradox_clone/paradox_clone.dm
@@ -73,7 +73,7 @@
original_mind.quick_copy_all_memories(owner)
/datum/antagonist/paradox_clone/roundend_report_header()
- return "A paradox clone appeared on the station! "
+ return span_header("A paradox clone appeared on the station! ")
/datum/outfit/paradox_clone
name = "Paradox Clone (Preview only)"
diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm
index 0fa80f5524776..6bff6eb357208 100644
--- a/code/modules/antagonists/pirate/pirate.dm
+++ b/code/modules/antagonists/pirate/pirate.dm
@@ -104,7 +104,7 @@
/datum/team/pirate/roundend_report()
var/list/parts = list()
- parts += "Space Pirates were:"
+ parts += span_header("Space Pirates were:")
var/all_dead = TRUE
for(var/datum/mind/M in members)
diff --git a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
index 602fcbe8b071f..feb62ec4fca66 100644
--- a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
+++ b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
@@ -438,7 +438,7 @@
var/mob_cost = get_cost(sold_item)
sold_item.process_capture(mob_cost, mob_cost * 1.2)
do_sparks(8, FALSE, sold_item)
- playsound(picked_turf, 'sound/weapons/emitter2.ogg', 25, TRUE)
+ playsound(picked_turf, 'sound/items/weapons/emitter2.ogg', 25, TRUE)
sold_item.flash_act()
sold_item.adjust_confusion(10 SECONDS)
sold_item.adjust_dizzy(10 SECONDS)
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index d490944e1e310..da7b76577275c 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -6,7 +6,7 @@
antag_moodlet = /datum/mood_event/revolution
antag_hud_name = "rev"
suicide_cry = "VIVA LA REVOLUTION!!"
- stinger_sound = 'sound/ambience/antag/revolutionary_tide.ogg'
+ stinger_sound = 'sound/music/antag/revolutionary_tide.ogg'
var/datum/team/revolution/rev_team
/// When this antagonist is being de-antagged, this is the source. Can be a mob (for mindshield/blunt force trauma) or a #define string.
@@ -584,19 +584,19 @@
if(headrevs.len)
var/list/headrev_part = list()
- headrev_part += "The head revolutionaries were:"
+ headrev_part += span_header("The head revolutionaries were:")
headrev_part += printplayerlist(headrevs, !check_rev_victory())
result += headrev_part.Join(" ")
if(revs.len)
var/list/rev_part = list()
- rev_part += "The revolutionaries were:"
+ rev_part += span_header("The revolutionaries were:")
rev_part += printplayerlist(revs, !check_rev_victory())
result += rev_part.Join(" ")
var/list/heads = SSjob.get_all_heads()
if(heads.len)
- var/head_text = "The heads of staff were:"
+ var/head_text = span_header("The heads of staff were:")
head_text += "
"
for(var/datum/mind/head in heads)
var/target = (head in targets)
diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm
index 828ee94587fcb..6038c5e6820b7 100644
--- a/code/modules/antagonists/space_dragon/carp_rift.dm
+++ b/code/modules/antagonists/space_dragon/carp_rift.dm
@@ -141,7 +141,7 @@
. += span_notice("It has [carp_stored] carp available to spawn as.")
/obj/structure/carp_rift/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
- playsound(src, 'sound/magic/lightningshock.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/lightningshock.ogg', 50, TRUE)
/obj/structure/carp_rift/Destroy()
STOP_PROCESSING(SSobj, src)
diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm
index cc82f491c1fcd..090c8f66dc82e 100644
--- a/code/modules/antagonists/space_dragon/space_dragon.dm
+++ b/code/modules/antagonists/space_dragon/space_dragon.dm
@@ -37,7 +37,7 @@
Today, we will snuff out one of those lights.")
to_chat(owner, span_boldwarning("You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came."))
owner.announce_objectives()
- owner.current.playsound_local(get_turf(owner.current), 'sound/magic/demon_attack1.ogg', 80)
+ owner.current.playsound_local(get_turf(owner.current), 'sound/effects/magic/demon_attack1.ogg', 80)
/datum/antagonist/space_dragon/forge_objectives()
var/static/list/area/allowed_areas
@@ -142,7 +142,7 @@
if(riftTimer >= maxRiftTimer)
to_chat(owner.current, span_boldwarning("You've failed to summon the rift in a timely manner! You're being pulled back from whence you came!"))
destroy_rifts()
- SEND_SOUND(owner.current, sound('sound/magic/demon_dies.ogg'))
+ SEND_SOUND(owner.current, sound('sound/effects/magic/demon_dies.ogg'))
owner.current.death(/* gibbed = */ TRUE)
QDEL_NULL(owner.current)
@@ -182,7 +182,7 @@
main_objective?.completed = TRUE
priority_announce("A large amount of lifeforms have been detected approaching [station_name()] at extreme speeds. \
Remaining crew are advised to evacuate as soon as possible.", "[command_name()] Wildlife Observations", has_important_message = TRUE)
- sound_to_playing_players('sound/creatures/space_dragon_roar.ogg', volume = 75)
+ sound_to_playing_players('sound/mobs/non-humanoids/space_dragon/space_dragon_roar.ogg', volume = 75)
for(var/obj/structure/carp_rift/rift as anything in rift_list)
rift.carp_stored = 999999
rift.time_charged = rift.max_charge
@@ -256,7 +256,7 @@
parts += "The [name] has failed!"
if(length(carp))
- parts += " The [name] was assisted by:"
+ parts += span_header(" The [name] was assisted by:")
parts += "
"
var/list/players_to_carp_taken = list()
for(var/datum/mind/carpy as anything in carp)
diff --git a/code/modules/antagonists/space_ninja/space_ninja.dm b/code/modules/antagonists/space_ninja/space_ninja.dm
index 37bc2299928da..b54c5f2b8b3fe 100644
--- a/code/modules/antagonists/space_ninja/space_ninja.dm
+++ b/code/modules/antagonists/space_ninja/space_ninja.dm
@@ -101,7 +101,7 @@
/datum/antagonist/ninja/greet()
. = ..()
- SEND_SOUND(owner.current, sound('sound/effects/ninja_greeting.ogg'))
+ SEND_SOUND(owner.current, sound('sound/music/antag/ninja_greeting.ogg'))
to_chat(owner.current, span_danger("I am an elite mercenary of the mighty Spider Clan!"))
to_chat(owner.current, span_warning("Surprise is my weapon. Shadows are my armor. Without them, I am nothing."))
to_chat(owner.current, span_notice("The station is located to your [dir2text(get_dir(owner.current, locate(world.maxx/2, world.maxy/2, owner.current.z)))]. A thrown ninja star will be a great way to get there."))
diff --git a/code/modules/antagonists/spy/spy.dm b/code/modules/antagonists/spy/spy.dm
index 2468eb27cad3f..65dba0ef2eb1e 100644
--- a/code/modules/antagonists/spy/spy.dm
+++ b/code/modules/antagonists/spy/spy.dm
@@ -30,7 +30,7 @@
if(spawn_with_objectives)
give_random_objectives()
. = ..()
- SEND_SOUND(owner.current, sound('sound/ambience/antag/spy.ogg'))
+ SEND_SOUND(owner.current, sound('sound/music/antag/spy.ogg'))
/datum/antagonist/spy/ui_static_data(mob/user)
var/list/data = ..()
diff --git a/code/modules/antagonists/spy/spy_uplink.dm b/code/modules/antagonists/spy/spy_uplink.dm
index 920076f21b468..f5c60f706c588 100644
--- a/code/modules/antagonists/spy/spy_uplink.dm
+++ b/code/modules/antagonists/spy/spy_uplink.dm
@@ -100,7 +100,7 @@
return FALSE
log_combat(spy, stealing, "started stealing", parent, "(spy bounty)")
- playsound(stealing, 'sound/items/pshoom.ogg', 33, vary = TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 0.33, ignore_walls = FALSE)
+ playsound(stealing, 'sound/items/pshoom/pshoom.ogg', 33, vary = TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 0.33, ignore_walls = FALSE)
var/obj/effect/scan_effect/active_scan_effect = new(stealing.loc)
active_scan_effect.appearance = stealing.appearance
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 661007d3163a6..f739245314fc2 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -17,7 +17,7 @@
can_assign_self_objectives = TRUE
default_custom_objective = "Perform an overcomplicated heist on valuable Nanotrasen assets."
hardcore_random_bonus = TRUE
- stinger_sound = 'sound/ambience/antag/tatoralert.ogg'
+ stinger_sound = 'sound/music/antag/traitor/tatoralert.ogg'
///The flag of uplink that this traitor is supposed to have.
var/uplink_flag_given = UPLINK_TRAITORS
@@ -366,7 +366,7 @@
result += span_greentext("The [special_role_text] was successful!")
else
result += span_redtext("The [special_role_text] has failed!")
- SEND_SOUND(owner.current, 'sound/ambience/ambifailure.ogg')
+ SEND_SOUND(owner.current, 'sound/ambience/misc/ambifailure.ogg')
return result.Join(" ")
diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
index 31dec4e812a6b..7d664b20d36cb 100644
--- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm
+++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
@@ -204,7 +204,7 @@
target.equip_to_slot_if_possible(new_patch, ITEM_SLOT_EYES, disable_warning = TRUE)
to_chat(user, span_notice("You successfully extract [target]'s eyeballs."))
- playsound(target, 'sound/surgery/retractor2.ogg', 100, TRUE)
+ playsound(target, 'sound/items/handling/surgery/retractor2.ogg', 100, TRUE)
playsound(target, 'sound/effects/pop.ogg', 100, TRAIT_MUTE)
eyeballies.Remove(target)
eyeballies.forceMove(get_turf(target))
diff --git a/code/modules/antagonists/traitor/objectives/final_objective/final_objective.dm b/code/modules/antagonists/traitor/objectives/final_objective/final_objective.dm
index cb9f4ac73aaf8..6e722b1515eb4 100644
--- a/code/modules/antagonists/traitor/objectives/final_objective/final_objective.dm
+++ b/code/modules/antagonists/traitor/objectives/final_objective/final_objective.dm
@@ -34,7 +34,7 @@
if(objective == src)
continue
objective.fail_objective()
- user.playsound_local(get_turf(user), 'sound/traitor/final_objective.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
+ user.playsound_local(get_turf(user), 'sound/music/antag/traitor/final_objective.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
handler.final_objective = name
/datum/traitor_objective/ultimate/uplink_ui_data(mob/user)
diff --git a/code/modules/antagonists/traitor/objectives/locate_weakpoint.dm b/code/modules/antagonists/traitor/objectives/locate_weakpoint.dm
index 4acfe7120489a..5492f04a0f847 100644
--- a/code/modules/antagonists/traitor/objectives/locate_weakpoint.dm
+++ b/code/modules/antagonists/traitor/objectives/locate_weakpoint.dm
@@ -178,22 +178,22 @@
var/area/user_area = get_area(user)
if(!(user_area.type in objective.scan_areas))
balloon_alert(user, "invalid area!")
- playsound(user, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
if(!objective.scan_areas[user_area.type])
balloon_alert(user, "already scanned here!")
- playsound(user, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
user.visible_message(span_danger("[user] presses a few buttons on [src] and it starts ominously beeping!"), span_notice("You activate [src] and start scanning the area. Do not exit [get_area_name(user, TRUE)] until the scan finishes!"))
- playsound(user, 'sound/machines/triple_beep.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/beep/triple_beep.ogg', 30, TRUE)
var/alertstr = span_userdanger("Network Alert: Station network probing attempt detected[user_area?" in [get_area_name(user, TRUE)]":". Unable to pinpoint location"].")
for(var/mob/living/silicon/ai/ai_player in GLOB.player_list)
to_chat(ai_player, alertstr)
if(!do_after(user, 30 SECONDS, src, IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE | IGNORE_HELD_ITEM | IGNORE_INCAPACITATED | IGNORE_SLOWDOWNS, extra_checks = CALLBACK(src, PROC_REF(scan_checks), user, user_area, objective), hidden = TRUE))
- playsound(user, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
playsound(user, 'sound/machines/ding.ogg', 100, TRUE)
diff --git a/code/modules/antagonists/traitor/traitor_objective.dm b/code/modules/antagonists/traitor/traitor_objective.dm
index 3e13340157334..ecfebaddeadcb 100644
--- a/code/modules/antagonists/traitor/traitor_objective.dm
+++ b/code/modules/antagonists/traitor/traitor_objective.dm
@@ -216,10 +216,10 @@
/datum/traitor_objective/proc/finish_objective(mob/user)
switch(objective_state)
if(OBJECTIVE_STATE_FAILED, OBJECTIVE_STATE_INVALID)
- user.playsound_local(get_turf(user), 'sound/traitor/objective_failed.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
+ user.playsound_local(get_turf(user), 'sound/music/antag/traitor/objective_failed.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
return TRUE
if(OBJECTIVE_STATE_COMPLETED)
- user.playsound_local(get_turf(user), 'sound/traitor/objective_success.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
+ user.playsound_local(get_turf(user), 'sound/music/antag/traitor/objective_success.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
completion_payout()
return TRUE
return FALSE
diff --git a/code/modules/antagonists/traitor/uplink_handler.dm b/code/modules/antagonists/traitor/uplink_handler.dm
index 2d27f3c4a0eff..83899300614e5 100644
--- a/code/modules/antagonists/traitor/uplink_handler.dm
+++ b/code/modules/antagonists/traitor/uplink_handler.dm
@@ -255,7 +255,7 @@
if(!(to_take in potential_objectives))
return
- user.playsound_local(get_turf(user), 'sound/traitor/objective_taken.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
+ user.playsound_local(get_turf(user), 'sound/music/antag/traitor/objective_taken.ogg', vol = 100, vary = FALSE, channel = CHANNEL_TRAITOR)
to_take.on_objective_taken(user)
to_take.objective_state = OBJECTIVE_STATE_ACTIVE
potential_objectives -= to_take
diff --git a/code/modules/antagonists/voidwalker/voidwalker_loot.dm b/code/modules/antagonists/voidwalker/voidwalker_loot.dm
index 73ed9c7cd2207..11a51c8a5b2f1 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_loot.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_loot.dm
@@ -35,7 +35,7 @@
starer.gain_trauma(/datum/brain_trauma/voided/stable)
to_chat(user, span_purple("And a whole world opens up to you."))
- playsound(get_turf(user), 'sound/effects/curse5.ogg', 60)
+ playsound(get_turf(user), 'sound/effects/curse/curse5.ogg', 60)
uses--
if(uses <= 0 )
diff --git a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
index 9df3eabab3d21..9bf5b3c2664c3 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
@@ -16,7 +16,7 @@
resistance_flags = INDESTRUCTIBLE | ACID_PROOF | FIRE_PROOF | LAVA_PROOF | UNACIDABLE
w_class = WEIGHT_CLASS_HUGE
tool_behaviour = TOOL_MINING
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
wound_bonus = -30
bare_wound_bonus = 20
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index bf04c535a56a0..1036abc24955f 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -17,7 +17,7 @@
force = 15
throwforce = 10
w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
var/charges = 1
var/spawn_type = /obj/tear_in_reality
var/spawn_amt = 1
@@ -171,7 +171,7 @@
throwforce = 15
damtype = BURN
force = 15
- hitsound = 'sound/items/welder2.ogg'
+ hitsound = 'sound/items/tools/welder2.ogg'
var/mob/current_owner
@@ -335,7 +335,7 @@
whistler = user
var/turf/current_turf = get_turf(user)
var/turf/spawn_location = locate(user.x + pick(-7, 7), user.y, user.z)
- playsound(current_turf,'sound/magic/warpwhistle.ogg', 200, TRUE)
+ playsound(current_turf,'sound/effects/magic/warpwhistle.ogg', 200, TRUE)
new /obj/effect/temp_visual/teleporting_tornado(spawn_location, src)
///Teleporting tornado, spawned by warp whistle, teleports the user if they manage to pick them up.
@@ -472,7 +472,7 @@
return ITEM_INTERACT_BLOCKING
scepter_is_busy_summoning = FALSE
if(summon_vendor_charges)
- playsound(src,'sound/weapons/resonator_fire.ogg',50,TRUE)
+ playsound(src,'sound/items/weapons/resonator_fire.ogg',50,TRUE)
user.visible_message(span_warning("[user] summons a runic vendor!"))
new /obj/machinery/vending/runic_vendor(afterattack_turf)
summon_vendor_charges--
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index eb4df6b6239f2..751873c836277 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -92,7 +92,7 @@
if(IS_CULTIST(exorcist) || theme == THEME_HOLY)
return
balloon_alert(exorcist, "exorcising...")
- playsound(src, 'sound/hallucinations/veryfar_noise.ogg', 40, TRUE)
+ playsound(src, 'sound/effects/hallucinations/veryfar_noise.ogg', 40, TRUE)
if(!do_after(exorcist, 4 SECONDS, target = src))
return
playsound(src, 'sound/effects/pray_chaplain.ogg', 60, TRUE)
@@ -238,7 +238,7 @@
to_chat(user, span_userdanger("Your body is wracked with debilitating pain!"))
return ITEM_INTERACT_BLOCKING
- user.visible_message("[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!", \
+ user.visible_message(span_notice("[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!"), \
span_notice("You hold [src] above your head briefly, then force it into [target_toolbox], transferring the [occupant]'s soul!"), ignored_mobs = occupant)
to_chat(occupant, span_userdanger("[user] holds you up briefly, then forces you into [target_toolbox]!"))
to_chat(occupant, span_deadsay("Your eternal soul has been sacrificed to restore the soul of a toolbox. Them's the breaks!"))
@@ -261,11 +261,11 @@
icon = 'icons/mob/shells.dmi'
icon_state = "construct_cult"
desc = "A wicked machine used by those skilled in magical arts. It is inactive."
- var/extra_desc = {"A construct shell, used to house bound souls from a soulstone.\n
- Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n
- An Artificer, which can produce more shells and soulstones, as well as fortifications.\n
- A Wraith, which does high damage and can jaunt through walls, though it is quite fragile.\n
- A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow."}
+ var/extra_desc = span_cult("A construct shell, used to house bound souls from a soulstone.\n\
+ Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n\
+ An Artificer, which can produce more shells and soulstones, as well as fortifications.\n\
+ A Wraith, which does high damage and can jaunt through walls, though it is quite fragile.\n\
+ A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow.")
/obj/structure/constructshell/examine(mob/user)
. = ..()
diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm
index b8bf9a8e3cf25..737a3d73403d1 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm
@@ -28,7 +28,7 @@
/datum/spellbook_entry/summon/guns/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE)
summon_guns(user, 10)
- playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE)
+ playsound(get_turf(user), 'sound/effects/magic/castsummon.ogg', 50, TRUE)
return ..()
/datum/spellbook_entry/summon/magic
@@ -45,7 +45,7 @@
/datum/spellbook_entry/summon/magic/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE)
summon_magic(user, 10)
- playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE)
+ playsound(get_turf(user), 'sound/effects/magic/castsummon.ogg', 50, TRUE)
return ..()
/datum/spellbook_entry/summon/events
@@ -65,7 +65,7 @@
/datum/spellbook_entry/summon/events/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE)
summon_events(user)
- playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE)
+ playsound(get_turf(user), 'sound/effects/magic/castsummon.ogg', 50, TRUE)
return ..()
/datum/spellbook_entry/summon/curse_of_madness
@@ -78,7 +78,7 @@
if(!message || QDELETED(user) || QDELETED(book) || !can_buy(user, book))
return FALSE
curse_of_madness(user, message)
- playsound(user, 'sound/magic/mandswap.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/mandswap.ogg', 50, TRUE)
return ..()
/// A wizard ritual that allows the wizard to teach a specific spellbook enty to everyone on the station.
diff --git a/code/modules/antagonists/wizard/equipment/teleport_rod.dm b/code/modules/antagonists/wizard/equipment/teleport_rod.dm
index c15b66da6ff61..e0a5ce31145c6 100644
--- a/code/modules/antagonists/wizard/equipment/teleport_rod.dm
+++ b/code/modules/antagonists/wizard/equipment/teleport_rod.dm
@@ -85,7 +85,7 @@
. = ITEM_INTERACT_SUCCESS
- var/sound/teleport_sound = sound('sound/magic/summonitems_generic.ogg')
+ var/sound/teleport_sound = sound('sound/effects/magic/summonitems_generic.ogg')
teleport_sound.pitch = 0.5
// Handle our own pizzaz rather than doing it in do_teleport
new /obj/effect/temp_visual/teleport_flux(start_turf, user.dir)
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/all_access.dm b/code/modules/antagonists/wizard/grand_ritual/finales/all_access.dm
index ab699e74064de..1ff93db81938b 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/all_access.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/all_access.dm
@@ -14,4 +14,4 @@
target_door.req_one_access = list()
INVOKE_ASYNC(target_door, TYPE_PROC_REF(/obj/machinery/door/airlock, open))
CHECK_TICK
- priority_announce("AULIE OXIN FIERA!!", null, 'sound/magic/knock.ogg', sender_override = "[invoker.real_name]", color_override = "purple")
+ priority_announce("AULIE OXIN FIERA!!", null, 'sound/effects/magic/knock.ogg', sender_override = "[invoker.real_name]", color_override = "purple")
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
index a951a5daf4223..9b67aa24a5380 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm
@@ -31,7 +31,7 @@
)
/datum/grand_finale/armageddon/trigger(mob/living/carbon/human/invoker)
- priority_announce(pick(possible_last_words), null, 'sound/magic/voidblink.ogg', sender_override = "[invoker.real_name]", color_override = "purple")
+ priority_announce(pick(possible_last_words), null, 'sound/effects/magic/voidblink.ogg', sender_override = "[invoker.real_name]", color_override = "purple")
var/turf/current_location = get_turf(invoker)
invoker.gib(DROP_ALL_REMAINS)
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/captaincy.dm b/code/modules/antagonists/wizard/grand_ritual/finales/captaincy.dm
index d1a3c1afaf758..237fdfe63e738 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/captaincy.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/captaincy.dm
@@ -9,7 +9,7 @@
message_admins("[key_name(invoker)] has replaced the Captain")
var/list/former_captains = list()
var/list/other_crew = list()
- SEND_SOUND(world, sound('sound/magic/timeparadox2.ogg'))
+ SEND_SOUND(world, sound('sound/effects/magic/timeparadox2.ogg'))
for (var/mob/living/carbon/human/crewmate as anything in GLOB.human_list)
if (!crewmate.mind)
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/cheese.dm b/code/modules/antagonists/wizard/grand_ritual/finales/cheese.dm
index 5cdd770486cd5..f0b8ef709aee8 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/cheese.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/cheese.dm
@@ -10,7 +10,7 @@
/datum/grand_finale/cheese/trigger(mob/living/invoker)
message_admins("[key_name(invoker)] has summoned forth The Wabbajack and cursed the crew with madness!")
- priority_announce("Danger: Extremely potent reality altering object has been summoned on station. Immediate evacuation advised. Brace for impact.", "[command_name()] Higher Dimensional Affairs", 'sound/effects/glassbr1.ogg')
+ priority_announce("Danger: Extremely potent reality altering object has been summoned on station. Immediate evacuation advised. Brace for impact.", "[command_name()] Higher Dimensional Affairs", 'sound/effects/glass/glassbr1.ogg')
for (var/mob/living/carbon/human/crewmate as anything in GLOB.human_list)
if (isnull(crewmate.mind))
diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/immortality.dm b/code/modules/antagonists/wizard/grand_ritual/finales/immortality.dm
index e0d4f3376f80a..436383975d131 100644
--- a/code/modules/antagonists/wizard/grand_ritual/finales/immortality.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/finales/immortality.dm
@@ -19,7 +19,7 @@
/datum/grand_finale/immortality/trigger(mob/living/carbon/human/invoker)
new /obj/effect/temp_visual/immortality_blast(get_turf(invoker))
- SEND_SOUND(world, sound('sound/magic/teleport_diss.ogg'))
+ SEND_SOUND(world, sound('sound/effects/magic/teleport_diss.ogg'))
for (var/mob/living/alive_guy as anything in GLOB.mob_living_list)
new /obj/effect/temp_visual/immortality_pulse(get_turf(alive_guy))
if (!alive_guy.mind)
diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm b/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm
index a2f25863a4baf..2134e2862a461 100644
--- a/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm
@@ -191,7 +191,7 @@
possible_obstacle.atom_destruction("magic")
if (evaporated_obstacles)
- playsound(target_turf, 'sound/magic/blind.ogg', 100, TRUE)
+ playsound(target_turf, 'sound/effects/magic/blind.ogg', 100, TRUE)
target_turf.balloon_alert(owner, "rune created")
var/obj/effect/grand_rune/new_rune = new next_rune_typepath(target_turf, times_completed)
diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm
index 25883370c0d1b..009853bed22d1 100644
--- a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm
@@ -162,7 +162,7 @@
on_invocation_complete(user)
return
flick("[icon_state]_flash", src)
- playsound(src,'sound/magic/staff_animation.ogg', 75, TRUE)
+ playsound(src,'sound/effects/magic/staff_animation.ogg', 75, TRUE)
INVOKE_ASYNC(src, PROC_REF(invoke_rune), user)
/// Add special effects for casting a spell, basically you glow and hover in the air.
@@ -181,7 +181,7 @@
/// Called when you actually finish the damn thing
/obj/effect/grand_rune/proc/on_invocation_complete(mob/living/user)
is_in_use = FALSE
- playsound(src,'sound/magic/staff_change.ogg', 75, TRUE)
+ playsound(src,'sound/effects/magic/staff_change.ogg', 75, TRUE)
INVOKE_ASYNC(src, PROC_REF(summon_round_event), user) // Running the event sleeps
trigger_side_effects()
tear_reality()
diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_side_effect.dm b/code/modules/antagonists/wizard/grand_ritual/grand_side_effect.dm
index a760115a61b9e..52c4056ee01fa 100644
--- a/code/modules/antagonists/wizard/grand_ritual/grand_side_effect.dm
+++ b/code/modules/antagonists/wizard/grand_ritual/grand_side_effect.dm
@@ -38,7 +38,7 @@
abstract = FALSE
/datum/grand_side_effect/scramble_turfs/trigger(potency, turf/ritual_location, mob/invoker)
- playsound(ritual_location, 'sound/magic/timeparadox2.ogg', 60, TRUE)
+ playsound(ritual_location, 'sound/effects/magic/timeparadox2.ogg', 60, TRUE)
var/datum/action/cooldown/spell/spell = new /datum/action/cooldown/spell/spacetime_dist()
spell.cast(ritual_location)
@@ -200,7 +200,7 @@
#define CREWMATE_SUMMON_TELEPORT_DELAY 9 SECONDS
/datum/grand_side_effect/summon_crewmate/trigger(potency, turf/ritual_location, mob/invoker)
- playsound(ritual_location, 'sound/magic/lightning_chargeup.ogg', 65, TRUE)
+ playsound(ritual_location, 'sound/effects/magic/lightning_chargeup.ogg', 65, TRUE)
var/list/potential_victims = list()
var/area/our_area = get_area(ritual_location)
for (var/mob/living/carbon/human/crewmate as anything in GLOB.human_list)
@@ -218,7 +218,7 @@
new /obj/effect/temp_visual/teleport_abductor(landing_pos)
var/mob/living/carbon/human/victim = pick(potential_victims)
- playsound(get_turf(victim),'sound/magic/repulse.ogg', 60, TRUE)
+ playsound(get_turf(victim),'sound/effects/magic/repulse.ogg', 60, TRUE)
victim.Immobilize(CREWMATE_SUMMON_TELEPORT_DELAY)
victim.AddElement(/datum/element/forced_gravity, 0)
victim.add_filter("teleport_glow", 2, list("type" = "outline", "color" = "#de3aff48", "size" = 2))
@@ -244,7 +244,7 @@
abstract = FALSE
/datum/grand_side_effect/smoke/trigger(potency, turf/ritual_location, mob/invoker)
- playsound(src, 'sound/magic/smoke.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/smoke.ogg', 50, TRUE)
var/range = LERP(2, 4, potency/GRAND_RITUAL_FINALE_COUNT)
var/datum/effect_system/fluid_spread/smoke/colourful/smoke = new
smoke.set_up(range, holder = ritual_location, location = ritual_location)
@@ -383,7 +383,7 @@
return
if (!mob_path)
return
- playsound(get_turf(src),'sound/magic/teleport_app.ogg', 60, TRUE)
+ playsound(get_turf(src),'sound/effects/magic/teleport_app.ogg', 60, TRUE)
do_sparks(5, FALSE, loc)
new mob_path(loc)
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index fa6d9a515b680..67b9a971bad5b 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -443,10 +443,10 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key)
/datum/team/wizard/roundend_report()
var/list/parts = list()
- parts += "Wizards/witches of [master_wizard.owner.name] team were:"
+ parts += span_header("Wizards/witches of [master_wizard.owner.name] team were:")
parts += master_wizard.roundend_report()
parts += " "
- parts += "[master_wizard.owner.name] apprentices and minions were:"
+ parts += span_header("[master_wizard.owner.name] apprentices and minions were:")
parts += printplayerlist(members - master_wizard.owner)
return "
[parts.Join(" ")]
"
diff --git a/code/modules/antagonists/xeno/xeno.dm b/code/modules/antagonists/xeno/xeno.dm
index 5ef26665bf238..b60b649857877 100644
--- a/code/modules/antagonists/xeno/xeno.dm
+++ b/code/modules/antagonists/xeno/xeno.dm
@@ -11,7 +11,7 @@
//Simply lists them.
/datum/team/xeno/roundend_report()
var/list/parts = list()
- parts += "The [name] were:"
+ parts += span_header("The [name] were:")
parts += printplayerlist(members)
return "
[parts.Join(" ")]
"
@@ -109,7 +109,7 @@
var/escape_count = 0 //counts the number of xenomorphs that were born in captivity who ended the round outside of it
var/captive_count = 0 //counts the number of xenomorphs born in captivity who remained there until the end of the round (losers)
- parts += "The [name] were: "
+ parts += span_header("The [name] were: ")
if(check_captivity(progenitor.current) == CAPTIVE_XENO_PASS)
parts += span_greentext("The progenitor of this hive was [progenitor.key], as [progenitor], who successfully escaped captivity!") + " "
diff --git a/code/modules/art/statues.dm b/code/modules/art/statues.dm
index da4a47dd843d8..ff5cbc38f850d 100644
--- a/code/modules/art/statues.dm
+++ b/code/modules/art/statues.dm
@@ -277,10 +277,10 @@
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.75)
attack_verb_continuous = list("stabs")
attack_verb_simple = list("stab")
- hitsound = 'sound/weapons/bladeslice.ogg'
- usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg')
- drop_sound = 'sound/items/handling/screwdriver_drop.ogg'
- pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
+ usesound = list('sound/effects/pickaxe/picaxe1.ogg', 'sound/effects/pickaxe/picaxe2.ogg', 'sound/effects/pickaxe/picaxe3.ogg')
+ drop_sound = 'sound/items/handling/tools/screwdriver_drop.ogg'
+ pickup_sound = 'sound/items/handling/tools/screwdriver_pickup.ogg'
sharpness = SHARP_POINTY
tool_behaviour = TOOL_RUSTSCRAPER
toolspeed = 3 // You're gonna have a bad time
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index f20d364759927..6e448637dbaa4 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -109,7 +109,7 @@
if(burnt_out || (world.time < last_trigger + cooldown))
return FALSE
last_trigger = world.time
- playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/flash.ogg', 100, TRUE)
set_light_on(TRUE)
addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE)
times_used++
@@ -328,7 +328,7 @@
return FALSE
overheat = TRUE
addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd)
- playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/flash.ogg', 100, TRUE)
update_icon(ALL, TRUE)
return TRUE
diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm
index 1f918888610da..ad2c6ac17641d 100644
--- a/code/modules/assembly/health.dm
+++ b/code/modules/assembly/health.dm
@@ -58,8 +58,8 @@
//do the pulse & the scan
pulse()
- audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*")
- playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"))
+ playsound(src, 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
toggle_scan()
/obj/item/assembly/health/proc/toggle_scan()
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index addbad2704e1b..16a33b2a9a344 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -164,7 +164,7 @@
message = span_infoplain("[icon2html(src, hearers(holder || src))] *beep* *beep* *beep*"),
hearing_distance = hearing_range,
)
- playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE, extrarange = hearing_range - SOUND_RANGE + 1, falloff_distance = hearing_range)
+ playsound(src, 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE, extrarange = hearing_range - SOUND_RANGE + 1, falloff_distance = hearing_range)
COOLDOWN_START(src, next_activate, 3 SECONDS)
/obj/item/assembly/infra/activate()
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 5c7f5208254f0..69436f7985dbf 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -89,7 +89,7 @@
to_chat(user, span_warning("Your hand slips, setting off the trigger!"))
pulse()
update_appearance()
- playsound(loc, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3)
+ playsound(loc, 'sound/items/weapons/handcuffs.ogg', 30, TRUE, -3)
/obj/item/assembly/mousetrap/update_icon_state()
icon_state = "mousetrap[armed ? "armed" : ""]"
@@ -174,7 +174,7 @@
to_chat(user, span_notice("You disarm [src]."))
armed = !armed
update_appearance()
- playsound(src, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3)
+ playsound(src, 'sound/items/weapons/handcuffs.ogg', 30, TRUE, -3)
// Clumsy check only
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index 61153738ee714..6ba2a7a63421e 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -92,9 +92,9 @@
return FALSE
next_activate = world.time + (3 SECONDS) // this must happen before anything else
pulse()
- audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range)
+ audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"), null, hearing_range)
for(var/mob/hearing_mob in get_hearers_in_view(hearing_range, src))
- hearing_mob.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ hearing_mob.playsound_local(get_turf(src), 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
return TRUE
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 5af89f10ec1b4..4e265384ace24 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -46,7 +46,7 @@
user.set_suicide(TRUE)
user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something.
user.death(FALSE)
- playsound(user, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ playsound(user, 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
qdel(src)
/obj/item/assembly/signaler/Initialize(mapload)
@@ -169,9 +169,9 @@
last_receive_signal_log = istype(holder, /obj/item/transfer_valve) ? signal.logging_data : null
pulse()
- audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range)
+ audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"), null, hearing_range)
for(var/mob/hearing_mob in get_hearers_in_view(hearing_range, src))
- hearing_mob.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ hearing_mob.playsound_local(get_turf(src), 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
return TRUE
/obj/item/assembly/signaler/proc/set_frequency(new_frequency)
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index fad912d42229a..09cbfd9b0dc59 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -58,7 +58,7 @@
pulse()
audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"), null, hearing_range)
for(var/mob/hearing_mob in get_hearers_in_view(hearing_range, src))
- hearing_mob.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
+ hearing_mob.playsound_local(get_turf(src), 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
if(loop)
timing = TRUE
update_appearance()
diff --git a/code/modules/asset_cache/transports/asset_transport.dm b/code/modules/asset_cache/transports/asset_transport.dm
index 3dbcc301843cc..62ca18fe82a19 100644
--- a/code/modules/asset_cache/transports/asset_transport.dm
+++ b/code/modules/asset_cache/transports/asset_transport.dm
@@ -125,7 +125,7 @@
if (unreceived.len)
if (unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT)
- to_chat(client, "Sending Resources...")
+ to_chat(client, span_infoplain("Sending Resources..."))
for (var/asset_name in unreceived)
var/new_asset_name = asset_name
diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
index 737018b24ad7d..5f073d17fc1e2 100644
--- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
+++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
@@ -123,9 +123,9 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
))
GLOB.air_alarms += src
- update_appearance()
find_and_hang_on_wall()
register_context()
+ check_enviroment()
/obj/machinery/airalarm/process()
if(!COOLDOWN_FINISHED(src, warning_cooldown))
@@ -568,34 +568,34 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
danger_level = max(danger_level, tlv_collection["pressure"].check_value(pressure))
danger_level = max(danger_level, tlv_collection["temperature"].check_value(temp))
if(total_moles)
- for(var/gas_path in environment.gases)
- var/moles = environment.gases[gas_path][MOLES]
+ for(var/gas_path in GLOB.meta_gas_info)
+ var/moles = environment.gases[gas_path] ? environment.gases[gas_path][MOLES] : 0
danger_level = max(danger_level, tlv_collection[gas_path].check_value(pressure * moles / total_moles))
if(danger_level)
alarm_manager.send_alarm(ALARM_ATMOS)
- if(pressure <= WARNING_LOW_PRESSURE && temp <= BODYTEMP_COLD_WARNING_1+10)
+ if(pressure <= tlv_collection["pressure"].hazard_min && temp <= tlv_collection["temperature"].hazard_min)
warning_message = "Danger! Low pressure and temperature detected."
return
- if(pressure <= WARNING_LOW_PRESSURE && temp >= BODYTEMP_HEAT_WARNING_1-27)
+ if(pressure <= tlv_collection["pressure"].hazard_min && temp >= tlv_collection["temperature"].hazard_max)
warning_message = "Danger! Low pressure and high temperature detected."
return
- if(pressure >= WARNING_HIGH_PRESSURE && temp >= BODYTEMP_HEAT_WARNING_1-27)
+ if(pressure >= tlv_collection["pressure"].hazard_max && temp >= tlv_collection["temperature"].hazard_max)
warning_message = "Danger! High pressure and temperature detected."
return
- if(pressure >= WARNING_HIGH_PRESSURE && temp <= BODYTEMP_COLD_WARNING_1+10)
+ if(pressure >= tlv_collection["pressure"].hazard_max && temp <= tlv_collection["temperature"].hazard_min)
warning_message = "Danger! High pressure and low temperature detected."
return
- if(pressure <= WARNING_LOW_PRESSURE)
+ if(pressure <= tlv_collection["pressure"].hazard_min)
warning_message = "Danger! Low pressure detected."
return
- if(pressure >= WARNING_HIGH_PRESSURE)
+ if(pressure >= tlv_collection["pressure"].hazard_max)
warning_message = "Danger! High pressure detected."
return
- if(temp <= BODYTEMP_COLD_WARNING_1+10)
+ if(temp <= tlv_collection["temperature"].hazard_min)
warning_message = "Danger! Low temperature detected."
return
- if(temp >= BODYTEMP_HEAT_WARNING_1-27)
+ if(temp >= tlv_collection["temperature"].hazard_max)
warning_message = "Danger! High temperature detected."
return
else
@@ -677,6 +677,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 27)
tlv_collection["temperature"] = new /datum/tlv/no_checks
tlv_collection["pressure"] = new /datum/tlv/no_checks
+ for(var/gas_path in GLOB.meta_gas_info)
+ tlv_collection[gas_path] = new /datum/tlv/no_checks
+
///Used for air alarm link helper, which connects air alarm to a sensor with corresponding chamber_id
/obj/machinery/airalarm/proc/setup_chamber_link()
var/obj/machinery/air_sensor/sensor = GLOB.objects_by_id_tag[GLOB.map_loaded_sensors[air_sensor_chamber_id]]
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
index c6e1d6183ef79..27cb78bb26ce7 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_main_processes.dm
@@ -493,7 +493,7 @@
zaps_aspect = OVER_9000_ZAP_ICON_STATE
flags |= (ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE)
- playsound(loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
+ playsound(loc, 'sound/items/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
for(var/i in 1 to zap_number)
supermatter_zap(src, 5, power_level * 2.4e5, flags, zap_cutoff = cutoff, power_level = src.power_level * 1000, zap_icon = zaps_aspect)
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
index e3ef70489ac85..bc27ab0a42e36 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
@@ -301,13 +301,13 @@
/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/alarm()
switch(get_status())
if(HYPERTORUS_MELTING)
- playsound(src, 'sound/misc/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10)
+ playsound(src, 'sound/announcer/alarm/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10)
if(HYPERTORUS_EMERGENCY)
- playsound(src, 'sound/machines/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
+ playsound(src, 'sound/machines/engine_alert/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
if(HYPERTORUS_DANGER)
- playsound(src, 'sound/machines/engine_alert2.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
+ playsound(src, 'sound/machines/engine_alert/engine_alert2.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
if(HYPERTORUS_WARNING)
- playsound(src, 'sound/machines/terminal_alert.ogg', 75)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 75)
/**
* Getter for the machine integrity
@@ -413,7 +413,7 @@
var/critical = selected_fuel.meltdown_flags & HYPERTORUS_FLAG_CRITICAL_MELTDOWN
if(critical)
priority_announce("WARNING - The explosion will likely cover a big part of the station and the coming EMP will wipe out most of the electronics. \
- Get as far away as possible from the reactor or find a way to shut it down.", "Alert", 'sound/misc/notice3.ogg')
+ Get as far away as possible from the reactor or find a way to shut it down.", "Alert", 'sound/announcer/notice/notice3.ogg')
var/speaking = "[emergency_alert] The Hypertorus fusion reactor has reached critical integrity failure. Emergency magnetic dampeners online."
radio.talk_into(src, speaking, common_channel, language = get_selected_language())
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index 8a165830cec07..5ce16365a5fda 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -230,7 +230,7 @@
fan_overclocked = !fan_overclocked
if(from_break)
- playsound(src, 'sound/machines/fan_break.ogg', 100)
+ playsound(src, 'sound/machines/fan/fan_break.ogg', 100)
fan_overclocked = FALSE
if(fan_overclocked)
@@ -360,7 +360,7 @@
update_appearance()
pipe_vision_img = image(src, loc, dir = dir)
SET_PLANE_EXPLICIT(pipe_vision_img, ABOVE_HUD_PLANE, src)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/weapons/bladeslice.ogg', 100, TRUE)
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume
name = "large air vent"
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index 22ee2f6b414a7..cc94f04623b71 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -322,7 +322,7 @@
update_appearance()
pipe_vision_img = image(src, loc, dir = dir)
SET_PLANE_EXPLICIT(pipe_vision_img, ABOVE_HUD_PLANE, src)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/weapons/bladeslice.ogg', 100, TRUE)
/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index e6c60140f3a70..467ad0e381d1e 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -76,7 +76,7 @@
. = ..()
if(!allowed(user))
to_chat(user, span_alert("Error - Unauthorized User."))
- playsound(src, 'sound/misc/compiler-failure.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/compiler/compiler-failure.ogg', 50, TRUE)
return
/obj/machinery/portable_atmospherics/canister/add_context(atom/source, list/context, obj/item/held_item, mob/user)
diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
index edd8e30eaf8ce..cb1a23f82f15a 100644
--- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
+++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
@@ -32,8 +32,8 @@
var/suppress_reactions = FALSE
/// Is there a hypernoblium crystal inserted into this
var/nob_crystal_inserted = FALSE
- var/insert_sound = 'sound/effects/tank_insert_clunky.ogg'
- var/remove_sound = 'sound/effects/tank_remove_thunk.ogg'
+ var/insert_sound = 'sound/effects/compressed_air/tank_insert_clunky.ogg'
+ var/remove_sound = 'sound/effects/compressed_air/tank_remove_thunk.ogg'
var/sound_vol = 50
/datum/armor/machinery_portable_atmospherics
diff --git a/code/modules/autowiki/pages/fishing.dm b/code/modules/autowiki/pages/fishing.dm
index b71b8dab33026..eab26bd6c6c03 100644
--- a/code/modules/autowiki/pages/fishing.dm
+++ b/code/modules/autowiki/pages/fishing.dm
@@ -46,19 +46,25 @@
if(length(extra_info))
description += " [extra_info.Join(extra_info," ")]"
- output += "\n\n" + include_template("Autowiki/FishEntry", list(
+ var/list/output_list = list(
"name" = full_capitalize(escape_value(fish::name)),
"icon" = filename,
"description" = description,
"size_weight" = "[fish::average_size]cm / [fish::average_weight]g",
"fluid" = escape_value(fish::required_fluid_type),
- "temperature" = "[fish::required_temperature_min] - [fish::required_temperature_max] K",
+ "temperature" = "Doesn't matter",
"stable_population" = fish::stable_population,
"traits" = generate_traits(properties[FISH_PROPERTIES_TRAITS]),
"favorite_baits" = generate_baits(properties[FISH_PROPERTIES_FAV_BAIT]),
"disliked_baits" = generate_baits(properties[FISH_PROPERTIES_BAD_BAIT], TRUE),
"beauty_score" = properties[FISH_PROPERTIES_BEAUTY_SCORE],
- ))
+ )
+ var/not_infinity = fish::required_temperature_max < INFINITY
+ if(fish::required_temperature_min > 0 || not_infinity)
+ var/max_temp = not_infinity ? fish::required_temperature_max : "∞"
+ output_list["temperature"] = "[fish::required_temperature_min] - [max_temp] K"
+
+ output += "\n\n" + include_template("Autowiki/FishEntry", output_list)
return output
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 5e3cf1bb21eac..00d23b592c00e 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -22,7 +22,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/datum/gateway_destination/proc/get_available_reason()
. = "Unreachable"
if(world.time - SSticker.round_start_time < wait)
- playsound(src, 'sound/effects/gateway_calibrating.ogg', 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/gateway/gateway_calibrating.ogg', 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
. = "Connection desynchronized. Recalibration in progress."
/* Check if the movable is allowed to arrive at this destination (exile implants mostly) */
@@ -135,7 +135,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/obj/effect/gateway_portal_bumper/Bumped(atom/movable/AM)
if(get_dir(src,AM) == gateway?.dir)
- playsound(src, 'sound/effects/gateway_travel.ogg', 70, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/gateway/gateway_travel.ogg', 70, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
gateway.Transfer(AM)
/obj/effect/gateway_portal_bumper/Destroy(force)
@@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/obj/machinery/gateway/proc/deactivate()
var/datum/gateway_destination/dest = target
target = null
- playsound(src, 'sound/effects/gateway_close.ogg', 140, TRUE, TRUE, SOUND_RANGE)
+ playsound(src, 'sound/machines/gateway/gateway_close.ogg', 140, TRUE, TRUE, SOUND_RANGE)
dest.deactivate(src)
QDEL_NULL(portal)
update_use_power(IDLE_POWER_USE)
@@ -263,7 +263,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
target.activate(destination)
portal_visuals.setup_visuals(target)
transport_active = TRUE
- playsound(src, 'sound/effects/gateway_open.ogg', 140, TRUE, TRUE, SOUND_RANGE)
+ playsound(src, 'sound/machines/gateway/gateway_open.ogg', 140, TRUE, TRUE, SOUND_RANGE)
generate_bumper()
update_use_power(ACTIVE_POWER_USE)
update_appearance()
@@ -306,7 +306,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
if(calibrated)
to_chat(user, span_alert("The gate is already calibrated, there is no work for you to do here."))
else
- playsound(src, 'sound/effects/gateway_calibrated.ogg', 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/gateway/gateway_calibrated.ogg', 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
to_chat(user, "[span_boldnotice("Recalibration successful!")]: \black This gate's systems have been fine tuned. Travel to this gate will now be on target.")
calibrated = TRUE
return TRUE
diff --git a/code/modules/awaymissions/mission_code/Beach.dm b/code/modules/awaymissions/mission_code/Beach.dm
index 8e05cfe4a5eb1..7f0e27c090ae2 100644
--- a/code/modules/awaymissions/mission_code/Beach.dm
+++ b/code/modules/awaymissions/mission_code/Beach.dm
@@ -6,7 +6,7 @@
base_lighting_color = "#FFFFCC"
requires_power = FALSE
has_gravity = STANDARD_GRAVITY
- ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg','sound/ambience/ambiodd.ogg','sound/ambience/ambinice.ogg')
+ ambientsounds = list('sound/ambience/beach/shore.ogg', 'sound/ambience/beach/seag1.ogg','sound/ambience/beach/seag2.ogg','sound/ambience/beach/seag3.ogg','sound/ambience/misc/ambiodd.ogg','sound/ambience/medical/ambinice.ogg')
/obj/item/paper/fluff/old_pirate_note
name = "rum-stained letter"
diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm
index cf6a6a3c9c7a4..2525e679cad64 100644
--- a/code/modules/awaymissions/mission_code/Cabin.dm
+++ b/code/modules/awaymissions/mission_code/Cabin.dm
@@ -90,7 +90,7 @@
name = "lumbermill saw"
desc = "Faster then the cartoons!"
obj_flags = CAN_BE_HIT | EMAGGED
- item_recycle_sound = 'sound/weapons/chainsawhit.ogg'
+ item_recycle_sound = 'sound/items/weapons/chainsawhit.ogg'
/obj/machinery/recycler/lumbermill/recycle_item(obj/item/grown/log/L)
if(!istype(L))
diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm
index 3b0d3e8a810cb..1fc54d7ef9679 100644
--- a/code/modules/awaymissions/mission_code/centcomAway.dm
+++ b/code/modules/awaymissions/mission_code/centcomAway.dm
@@ -7,32 +7,32 @@
/area/awaymission/centcom_away/general
name = "XCC-P5831"
- ambientsounds = list('sound/ambience/ambigen2.ogg')
+ ambientsounds = list('sound/ambience/general/ambigen2.ogg')
/area/awaymission/centcom_away/maint
name = "XCC-P5831 Maintenance"
icon_state = "away1"
- ambientsounds = list('sound/ambience/ambisin1.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambisin1.ogg')
/area/awaymission/centcom_away/thunderdome
name = "XCC-P5831 Thunderdome"
icon_state = "away2"
- ambientsounds = list('sound/ambience/ambisin2.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambisin2.ogg')
/area/awaymission/centcom_away/cafe
name = "XCC-P5831 Kitchen Arena"
icon_state = "away3"
- ambientsounds = list('sound/ambience/ambisin3.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambisin3.ogg')
/area/awaymission/centcom_away/courtroom
name = "XCC-P5831 Courtroom"
icon_state = "away4"
- ambientsounds = list('sound/ambience/ambisin4.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambisin4.ogg')
/area/awaymission/centcom_away/hangar
name = "XCC-P5831 Hangars"
icon_state = "away4"
- ambientsounds = list('sound/ambience/ambigen4.ogg')
+ ambientsounds = list('sound/ambience/general/ambigen4.ogg')
//centcomAway items
diff --git a/code/modules/awaymissions/mission_code/moonoutpost19.dm b/code/modules/awaymissions/mission_code/moonoutpost19.dm
index 17385bc70bc40..446b9916a4577 100644
--- a/code/modules/awaymissions/mission_code/moonoutpost19.dm
+++ b/code/modules/awaymissions/mission_code/moonoutpost19.dm
@@ -34,7 +34,7 @@
power_environ = FALSE
power_equip = FALSE
power_light = FALSE
- ambientsounds = list('sound/ambience/ambimine.ogg')
+ ambientsounds = list('sound/ambience/ruin/ambimine.ogg')
icon_state = "awaycontent5"
outdoors = TRUE
@@ -56,7 +56,7 @@
power_environ = FALSE
power_equip = FALSE
power_light = FALSE
- ambientsounds = list('sound/ambience/ambimine.ogg')
+ ambientsounds = list('sound/ambience/ruin/ambimine.ogg')
icon_state = "awaycontent8"
//Fluff objects/structures.
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index cc35b4a79efca..db48b1b31d1fb 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -306,13 +306,13 @@
PRESET /datum/preset_holoimage/nanotrasenprivatesecurity
NAME James Reed
DELAY 10
- SOUND sound/weapons/laser.ogg
+ SOUND sound/items/weapons/laser.ogg
DELAY 10
- SOUND sound/weapons/laser.ogg
+ SOUND sound/items/weapons/laser.ogg
DELAY 10
- SOUND sound/weapons/laser.ogg
+ SOUND sound/items/weapons/laser.ogg
DELAY 10
- SOUND sound/weapons/laser.ogg
+ SOUND sound/items/weapons/laser.ogg
DELAY 15
SAY Just go! I'll keep it busy, there's an outpost south of here with an elevator to the surface.
NAME Jacob Ullman
@@ -333,9 +333,9 @@
DELAY 10
SAY You don't need to tell me twice, I just need to swipe access and then..
DELAY 15
- SOUND sound/effects/glassbr1.ogg
+ SOUND sound/effects/glass/glassbr1.ogg
DELAY 10
- SOUND sound/effects/glassbr2.ogg
+ SOUND sound/effects/glass/glassbr2.ogg
DELAY 15
NAME Jacob Ullman
DELAY 10
@@ -347,13 +347,13 @@
DELAY 10
SAY DON'T FUCKING RUSH ME ALRIGHT IT'S BEING CALLED.
DELAY 15
- SOUND sound/effects/huuu.ogg
+ SOUND sound/mobs/non-humanoids/frog/huuu.ogg
DELAY 5
- SOUND sound/effects/huuu.ogg
+ SOUND sound/mobs/non-humanoids/frog/huuu.ogg
DELAY 15
SOUND sound/effects/woodhit.ogg
DELAY 2
- SOUND sound/effects/bodyfall3.ogg
+ SOUND sound/effects/bodyfall/bodyfall3.ogg
DELAY 5
SOUND sound/effects/meow1.ogg
DELAY 15
diff --git a/code/modules/basketball/controller.dm b/code/modules/basketball/controller.dm
index 53e89d182a3e7..4373c8d784a8d 100644
--- a/code/modules/basketball/controller.dm
+++ b/code/modules/basketball/controller.dm
@@ -194,7 +194,7 @@ GLOBAL_VAR(basketball_game)
player_client.prefs.safe_transfer_prefs_to(baller, is_antag = TRUE)
baller.key = player_key
- SEND_SOUND(baller, sound('sound/misc/whistle.ogg', volume=30))
+ SEND_SOUND(baller, sound('sound/items/whistle/whistle.ogg', volume=30))
if(is_player_referee)
to_chat(baller, span_notice("You are a referee. Make sure the teams play fair and use your whistle to call fouls appropriately."))
else
diff --git a/code/modules/basketball/hoop.dm b/code/modules/basketball/hoop.dm
index 72669df017d90..edc106c155e63 100644
--- a/code/modules/basketball/hoop.dm
+++ b/code/modules/basketball/hoop.dm
@@ -38,7 +38,7 @@
/obj/structure/hoop/proc/score(obj/item/toy/basketball/ball, mob/living/baller, points)
// we still play buzzer sound regardless of the object
- playsound(src, 'sound/machines/scanbuzz.ogg', 100, FALSE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 100, FALSE)
if(!istype(ball))
return
@@ -130,7 +130,7 @@
loser.forceMove(loc)
loser.Paralyze(100)
visible_message(span_danger("[baller] dunks [loser] into \the [src]!"))
- playsound(src, 'sound/machines/scanbuzz.ogg', 100, FALSE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 100, FALSE)
baller.adjustStaminaLoss(STAMINA_COST_DUNKING_MOB)
baller.stop_pulling()
diff --git a/code/modules/basketball/referee.dm b/code/modules/basketball/referee.dm
index 666ff628682b8..2c0a28d7331e1 100644
--- a/code/modules/basketball/referee.dm
+++ b/code/modules/basketball/referee.dm
@@ -34,7 +34,7 @@
/datum/action/innate/timeout/do_ability(mob/living/caller, mob/living/carbon/human/target)
caller.say("FOUL BY [target]!", forced = "whistle")
- playsound(caller, 'sound/misc/whistle.ogg', 30, FALSE, 4)
+ playsound(caller, 'sound/items/whistle/whistle.ogg', 30, FALSE, 4)
new /obj/effect/timestop(get_turf(target), 0, 5 SECONDS, list(caller), TRUE, TRUE)
diff --git a/code/modules/bitrunning/antagonists/netguardian.dm b/code/modules/bitrunning/antagonists/netguardian.dm
index f0ea7822985f4..0f546f87b1dc9 100644
--- a/code/modules/bitrunning/antagonists/netguardian.dm
+++ b/code/modules/bitrunning/antagonists/netguardian.dm
@@ -22,7 +22,7 @@
attack_verb_continuous = "drills"
attack_verb_simple = "drills"
- attack_sound = 'sound/weapons/drill.ogg'
+ attack_sound = 'sound/items/weapons/drill.ogg'
attack_vis_effect = ATTACK_EFFECT_MECHFIRE
verb_say = "states"
verb_ask = "queries"
@@ -58,7 +58,7 @@
ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT)
AddComponent(/datum/component/ranged_attacks, \
casing_type = /obj/item/ammo_casing/c46x30mm, \
- projectile_sound = 'sound/weapons/gun/smg/shot.ogg', \
+ projectile_sound = 'sound/items/weapons/gun/smg/shot.ogg', \
burst_shots = 6 \
)
@@ -71,7 +71,7 @@
/mob/living/basic/netguardian/death(gibbed)
do_sparks(number = 3, cardinal_only = TRUE, source = src)
- playsound(src, 'sound/mecha/weapdestr.ogg', 100)
+ playsound(src, 'sound/vehicles/mecha/weapdestr.ogg', 100)
return ..()
/mob/living/basic/netguardian/update_overlays()
@@ -91,7 +91,7 @@
/datum/action/cooldown/mob_cooldown/projectile_attack/rapid_fire/netguardian/Activate(atom/target_atom)
var/mob/living/player = owner
- playsound(player, 'sound/mecha/skyfall_power_up.ogg', 120)
+ playsound(player, 'sound/vehicles/mecha/skyfall_power_up.ogg', 120)
player.say("target acquired.", "machine")
var/overlay_icon = 'icons/mob/nonhuman-player/netguardian.dmi'
diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm
index abf3a7809fcda..15c267cf0c8dd 100644
--- a/code/modules/bitrunning/components/avatar_connection.dm
+++ b/code/modules/bitrunning/components/avatar_connection.dm
@@ -69,7 +69,7 @@
for(var/skill_type in old_mind.known_skills)
avatar.mind.set_experience(skill_type, old_mind.get_skill_exp(skill_type), silent = TRUE)
- avatar.playsound_local(avatar, 'sound/magic/blink.ogg', 25, TRUE)
+ avatar.playsound_local(avatar, 'sound/effects/magic/blink.ogg', 25, TRUE)
avatar.set_static_vision(2 SECONDS)
avatar.set_temp_blindness(1 SECONDS) // I'm in
@@ -134,7 +134,7 @@
SIGNAL_HANDLER
var/mob/living/avatar = parent
- avatar.playsound_local(avatar, 'sound/machines/terminal_success.ogg', 50, vary = TRUE)
+ avatar.playsound_local(avatar, 'sound/machines/terminal/terminal_success.ogg', 50, vary = TRUE)
avatar.throw_alert(
ALERT_BITRUNNER_COMPLETED,
/atom/movable/screen/alert/bitrunning/qserver_domain_complete,
@@ -179,7 +179,7 @@
SIGNAL_HANDLER
var/mob/living/avatar = parent
- avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, vary = TRUE)
+ avatar.playsound_local(avatar, 'sound/machines/terminal/terminal_alert.ogg', 50, vary = TRUE)
var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert(
ALERT_BITRUNNER_CROWBAR,
/atom/movable/screen/alert/bitrunning,
@@ -229,7 +229,7 @@
SIGNAL_HANDLER
var/mob/living/avatar = parent
- avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, vary = TRUE)
+ avatar.playsound_local(avatar, 'sound/machines/terminal/terminal_alert.ogg', 50, vary = TRUE)
var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert(
ALERT_BITRUNNER_SHUTDOWN,
/atom/movable/screen/alert/bitrunning,
@@ -244,7 +244,7 @@
SIGNAL_HANDLER
var/mob/living/avatar = parent
- avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, vary = TRUE)
+ avatar.playsound_local(avatar, 'sound/machines/terminal/terminal_alert.ogg', 50, vary = TRUE)
var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert(
ALERT_BITRUNNER_BREACH,
/atom/movable/screen/alert/bitrunning,
diff --git a/code/modules/bitrunning/components/bitrunning_points.dm b/code/modules/bitrunning/components/bitrunning_points.dm
index ea8f63f76d8df..ae20ec41fb4a3 100644
--- a/code/modules/bitrunning/components/bitrunning_points.dm
+++ b/code/modules/bitrunning/components/bitrunning_points.dm
@@ -28,7 +28,7 @@
/// Spawns the crate with some effects
/datum/component/bitrunning_points/proc/reveal()
- playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
var/turf/tile = parent
var/obj/structure/closet/crate/secure/bitrunning/encrypted/crate = new()
diff --git a/code/modules/bitrunning/netpod/container.dm b/code/modules/bitrunning/netpod/container.dm
index 6165544544511..b9c262a9fb190 100644
--- a/code/modules/bitrunning/netpod/container.dm
+++ b/code/modules/bitrunning/netpod/container.dm
@@ -17,7 +17,7 @@
/obj/machinery/netpod/open_machine(drop = TRUE, density_to_set = FALSE)
- playsound(src, 'sound/machines/tramopen.ogg', 60, TRUE, frequency = 65000)
+ playsound(src, 'sound/machines/tram/tramopen.ogg', 60, TRUE, frequency = 65000)
flick("[base_icon_state]_opening", src)
SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_OPENED)
update_use_power(IDLE_POWER_USE)
@@ -29,7 +29,7 @@
if(!state_open || panel_open || !is_operational || !iscarbon(user))
return
- playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000)
+ playsound(src, 'sound/machines/tram/tramclose.ogg', 60, TRUE, frequency = 65000)
flick("[base_icon_state]_closing", src)
..()
@@ -52,7 +52,7 @@
span_notice("You start to pry open [src]."),
span_notice("You hear loud prying on metal.")
)
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 100, TRUE)
SEND_SIGNAL(src, COMSIG_BITRUNNER_CROWBAR_ALERT, pryer)
@@ -67,7 +67,7 @@
/// Closes the machine without shoving in an occupant
/obj/machinery/netpod/proc/shut_pod()
state_open = FALSE
- playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000)
+ playsound(src, 'sound/machines/tram/tramclose.ogg', 60, TRUE, frequency = 65000)
flick("[base_icon_state]_closing", src)
set_density(TRUE)
diff --git a/code/modules/bitrunning/netpod/utils.dm b/code/modules/bitrunning/netpod/utils.dm
index c593b457e9cc1..fa271748e78ad 100644
--- a/code/modules/bitrunning/netpod/utils.dm
+++ b/code/modules/bitrunning/netpod/utils.dm
@@ -29,7 +29,7 @@
open_machine()
return
- mob_occupant.playsound_local(src, 'sound/magic/blink.ogg', 25, TRUE)
+ mob_occupant.playsound_local(src, 'sound/effects/magic/blink.ogg', 25, TRUE)
mob_occupant.set_static_vision(2 SECONDS)
mob_occupant.set_temp_blindness(1 SECONDS)
mob_occupant.Paralyze(2 SECONDS)
diff --git a/code/modules/bitrunning/objects/byteforge.dm b/code/modules/bitrunning/objects/byteforge.dm
index b971cdae75ddc..cc18d2011a294 100644
--- a/code/modules/bitrunning/objects/byteforge.dm
+++ b/code/modules/bitrunning/objects/byteforge.dm
@@ -26,7 +26,7 @@
/// Does some sparks after it's done
/obj/machinery/byteforge/proc/flash(atom/movable/thing)
- playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
var/datum/effect_system/spark_spread/quantum/sparks = new()
sparks.set_up(5, 1, loc)
diff --git a/code/modules/bitrunning/objects/loot_box.dm b/code/modules/bitrunning/objects/loot_box.dm
index 200e0b259fbda..e142a3e93a43c 100644
--- a/code/modules/bitrunning/objects/loot_box.dm
+++ b/code/modules/bitrunning/objects/loot_box.dm
@@ -47,7 +47,7 @@
atom_storage.max_total_storage = 3
atom_storage.locked = STORAGE_NOT_LOCKED
icon_state = icon_closed
- playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
/obj/item/storage/lockbox/bitrunning/decrypted/PopulateContents()
var/choice = SSbitrunning.pick_secondary_loot(source_domain)
diff --git a/code/modules/bitrunning/objects/loot_crate.dm b/code/modules/bitrunning/objects/loot_crate.dm
index db3f927e02153..158da4e29f0ff 100644
--- a/code/modules/bitrunning/objects/loot_crate.dm
+++ b/code/modules/bitrunning/objects/loot_crate.dm
@@ -37,7 +37,7 @@
rewards_multiplier = 1,
)
. = ..()
- playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
if(isnull(completed_domain))
return
diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm
index 541d36ad5d72c..672a79ba72cef 100644
--- a/code/modules/bitrunning/server/_parent.dm
+++ b/code/modules/bitrunning/server/_parent.dm
@@ -108,7 +108,7 @@
add_overlay(mutable_appearance('icons/obj/machines/bitrunning.dmi', "emag_overlay"))
balloon_alert(user, "system jailbroken...")
- playsound(src, 'sound/effects/sparks1.ogg', 35, vary = TRUE)
+ playsound(src, 'sound/effects/sparks/sparks1.ogg', 35, vary = TRUE)
/obj/machinery/quantum_server/update_appearance(updates)
if(isnull(generated_domain) || !is_operational)
diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm
index 0e6ff30cd246a..e4c523099ea54 100644
--- a/code/modules/bitrunning/server/loot.dm
+++ b/code/modules/bitrunning/server/loot.dm
@@ -33,7 +33,7 @@
SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_COMPLETE, cache, generated_domain.reward_points)
points += generated_domain.reward_points
- playsound(src, 'sound/machines/terminal_success.ogg', 30, vary = TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 30, vary = TRUE)
var/bonus = calculate_rewards()
diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm
index f98332f7e8d8f..ba2162ef4f52e 100644
--- a/code/modules/bitrunning/server/map_handling.dm
+++ b/code/modules/bitrunning/server/map_handling.dm
@@ -5,12 +5,12 @@
if(!length(avatar_connection_refs))
balloon_alert_to_viewers("powering down domain...")
- playsound(src, 'sound/machines/terminal_off.ogg', 40, vary = TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 40, vary = TRUE)
reset()
return
balloon_alert_to_viewers("notifying clients...")
- playsound(src, 'sound/machines/terminal_alert.ogg', 100, vary = TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 100, vary = TRUE)
user.visible_message(
span_danger("[user] begins depowering the server!"),
span_notice("You start disconnecting clients..."),
@@ -43,7 +43,7 @@
return FALSE
is_ready = FALSE
- playsound(src, 'sound/machines/terminal_processing.ogg', 30, 2)
+ playsound(src, 'sound/machines/terminal/terminal_processing.ogg', 30, 2)
/// If any one of these fail, it reverts the entire process
if(!load_domain(map_key) || !load_map_items() || !load_mob_segments())
@@ -60,7 +60,7 @@
if(prob(spawn_chance))
setup_glitch()
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, vary = TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 30, vary = TRUE)
balloon_alert_to_viewers("domain loaded.")
generated_domain.start_time = world.time
points -= generated_domain.cost
diff --git a/code/modules/bitrunning/server/threats.dm b/code/modules/bitrunning/server/threats.dm
index ea612a43efaea..145cdc9ee2bbf 100644
--- a/code/modules/bitrunning/server/threats.dm
+++ b/code/modules/bitrunning/server/threats.dm
@@ -121,7 +121,7 @@
antag_mind.special_role = ROLE_GLITCH
antag_mind.set_assigned_role(SSjob.get_job_type(/datum/job/bitrunning_glitch))
- playsound(new_mob, 'sound/magic/ethereal_exit.ogg', 50, vary = TRUE)
+ playsound(new_mob, 'sound/effects/magic/ethereal_exit.ogg', 50, vary = TRUE)
message_admins("[ADMIN_LOOKUPFLW(new_mob)] has been made into virtual antagonist by an event.")
new_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME)
@@ -170,7 +170,7 @@
if(temp_body)
qdel(temp_body)
- do_teleport(antag, get_turf(chosen_forge), forced = TRUE, asoundin = 'sound/magic/ethereal_enter.ogg', asoundout = 'sound/magic/ethereal_exit.ogg', channel = TELEPORT_CHANNEL_QUANTUM)
+ do_teleport(antag, get_turf(chosen_forge), forced = TRUE, asoundin = 'sound/effects/magic/ethereal_enter.ogg', asoundout = 'sound/effects/magic/ethereal_exit.ogg', channel = TELEPORT_CHANNEL_QUANTUM)
/// Removes any invalid candidates from the list
diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm
index ab267a34cd330..912f0c1f874fe 100644
--- a/code/modules/bitrunning/server/util.dm
+++ b/code/modules/bitrunning/server/util.dm
@@ -134,7 +134,7 @@
/// Do some magic teleport sparks
/obj/machinery/quantum_server/proc/spark_at_location(obj/cache)
- playsound(cache, 'sound/magic/blink.ogg', 50, vary = TRUE)
+ playsound(cache, 'sound/effects/magic/blink.ogg', 50, vary = TRUE)
var/datum/effect_system/spark_spread/quantum/sparks = new()
sparks.set_up(5, location = get_turf(cache))
sparks.start()
diff --git a/code/modules/buildmode/submodes/map_export.dm b/code/modules/buildmode/submodes/map_export.dm
index e0cb6629e1902..19c0d57b57f73 100644
--- a/code/modules/buildmode/submodes/map_export.dm
+++ b/code/modules/buildmode/submodes/map_export.dm
@@ -19,7 +19,7 @@
if (!what_to_change)
return
save_flag ^= options[what_to_change]
- to_chat(builder, "[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"].")
+ to_chat(builder, span_notice("[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"]."))
/datum/buildmode_mode/map_export/show_help(client/builder)
to_chat(builder, span_purple(examine_block(
diff --git a/code/modules/capture_the_flag/ctf_equipment.dm b/code/modules/capture_the_flag/ctf_equipment.dm
index 0211a066555d1..3261b1d82660d 100644
--- a/code/modules/capture_the_flag/ctf_equipment.dm
+++ b/code/modules/capture_the_flag/ctf_equipment.dm
@@ -67,7 +67,7 @@
slot_flags = null
accepted_magazine_type = /obj/item/ammo_box/magazine/recharge/ctf/shotgun
empty_indicator = TRUE
- fire_sound = 'sound/weapons/gun/shotgun/shot_alt.ogg'
+ fire_sound = 'sound/items/weapons/gun/shotgun/shot_alt.ogg'
semi_auto = TRUE
internal_magazine = FALSE
tac_reloads = TRUE
diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm
index 38a7318b5548e..2f292218e79f6 100644
--- a/code/modules/capture_the_flag/ctf_game.dm
+++ b/code/modules/capture_the_flag/ctf_game.dm
@@ -275,7 +275,7 @@
var/obj/item/ctf_flag/flag = item
if(flag.team != team)
to_chat(user, span_userdanger("Take \the [initial(flag.name)] to your team's controller!"))
- user.playsound_local(get_turf(user), 'sound/machines/buzz-sigh.ogg', 100, vary = FALSE, use_reverb = FALSE)
+ user.playsound_local(get_turf(user), 'sound/machines/buzz/buzz-sigh.ogg', 100, vary = FALSE, use_reverb = FALSE)
/obj/item/ctf_flag/dropped(mob/user)
..()
diff --git a/code/modules/cards/cardhand.dm b/code/modules/cards/cardhand.dm
index 8fc9b4d0dc70a..2c72a552767e7 100644
--- a/code/modules/cards/cardhand.dm
+++ b/code/modules/cards/cardhand.dm
@@ -14,7 +14,7 @@
/obj/item/toy/cards/cardhand/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] is slitting [user.p_their()] wrists with \the [src]! It looks like [user.p_they()] [user.p_have()] a crummy hand!"))
- playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE)
+ playsound(src, 'sound/items/cards/cardshuffle.ogg', 50, TRUE)
return BRUTELOSS
/obj/item/toy/cards/cardhand/examine(mob/user)
diff --git a/code/modules/cards/cards.dm b/code/modules/cards/cards.dm
index 5cd17a53515cc..e151af0226426 100644
--- a/code/modules/cards/cards.dm
+++ b/code/modules/cards/cards.dm
@@ -50,7 +50,7 @@
card.transform = Matrix
card.update_appearance()
- playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE)
+ playsound(src, 'sound/items/cards/cardshuffle.ogg', 50, TRUE)
if(istype(src, /obj/item/toy/cards/cardhand))
qdel(src)
@@ -125,7 +125,7 @@
cards -= card
update_appearance()
- playsound(src, 'sound/items/cardflip.ogg', 50, TRUE)
+ playsound(src, 'sound/items/cards/cardflip.ogg', 50, TRUE)
return card
/// Returns the cards in this deck.
diff --git a/code/modules/cards/deck/deck.dm b/code/modules/cards/deck/deck.dm
index ccce356024956..69aa85ed8f2fe 100644
--- a/code/modules/cards/deck/deck.dm
+++ b/code/modules/cards/deck/deck.dm
@@ -32,7 +32,7 @@
/obj/item/toy/cards/deck/Initialize(mapload)
. = ..()
AddElement(/datum/element/drag_pickup)
- AddComponent(/datum/component/two_handed, attacksound='sound/items/cardflip.ogg')
+ AddComponent(/datum/component/two_handed, attacksound='sound/items/cards/cardflip.ogg')
register_context()
if(!is_standard_deck)
@@ -50,7 +50,7 @@
/obj/item/toy/cards/deck/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] is slitting [user.p_their()] wrists with \the [src]! It looks like their luck ran out!"))
- playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE)
+ playsound(src, 'sound/items/cards/cardshuffle.ogg', 50, TRUE)
return BRUTELOSS
/obj/item/toy/cards/deck/examine(mob/user)
@@ -103,7 +103,7 @@
return
COOLDOWN_START(src, shuffle_cooldown, shuffle_time)
shuffle_inplace(fetch_card_atoms())
- playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE)
+ playsound(src, 'sound/items/cards/cardshuffle.ogg', 50, TRUE)
user.balloon_alert_to_viewers("shuffles the deck")
addtimer(CALLBACK(src, PROC_REF(CardgameEvent), user), 60 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE)
@@ -209,7 +209,7 @@
cardgame_desc = "suspicious card game"
icon_state = "deck_syndicate_full"
deckstyle = "syndicate"
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
force = 5
throwforce = 10
attack_verb_continuous = list("attacks", "slices", "dices", "slashes", "cuts")
diff --git a/code/modules/cards/deck/tarot.dm b/code/modules/cards/deck/tarot.dm
index cf21fe789352e..a276716844b0a 100644
--- a/code/modules/cards/deck/tarot.dm
+++ b/code/modules/cards/deck/tarot.dm
@@ -40,7 +40,7 @@
. = ..()
AddComponent( \
/datum/component/two_handed, \
- attacksound = 'sound/items/cardflip.ogg', \
+ attacksound = 'sound/items/cards/cardflip.ogg', \
wield_callback = CALLBACK(src, PROC_REF(on_wield)), \
unwield_callback = CALLBACK(src, PROC_REF(on_unwield)), \
)
diff --git a/code/modules/cards/singlecard.dm b/code/modules/cards/singlecard.dm
index 5f2c6e37f387a..1999c19d7ff88 100644
--- a/code/modules/cards/singlecard.dm
+++ b/code/modules/cards/singlecard.dm
@@ -103,7 +103,7 @@
/obj/item/toy/singlecard/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] is slitting [user.p_their()] wrists with \the [src]! It looks like [user.p_they()] [user.p_have()] an unlucky card!"))
- playsound(src, 'sound/weapons/bladeslice.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/bladeslice.ogg', 50, TRUE)
return BRUTELOSS
/**
diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm
index 0a2dcfec4b0f0..4070301bfbe39 100644
--- a/code/modules/cargo/expressconsole.dm
+++ b/code/modules/cargo/expressconsole.dm
@@ -1,3 +1,6 @@
+#define EXPRESS_EMAG_DISCOUNT 0.72
+#define BEACON_PRINT_COOLDOWN 10 SECONDS
+
/obj/machinery/computer/cargo/express
name = "express supply console"
desc = "This console allows the user to purchase a package \
@@ -11,18 +14,28 @@
interface_type = "CargoExpress"
var/message
- var/printed_beacons = 0 //number of beacons printed. Used to determine beacon names.
var/list/meme_pack_data
- var/obj/item/supplypod_beacon/beacon //the linked supplypod beacon
- var/area/landingzone = /area/station/cargo/storage //where we droppin boys
- var/podType = /obj/structure/closet/supplypod
- var/cooldown = 0 //cooldown to prevent printing supplypod beacon spam
- var/locked = TRUE //is the console locked? unlock with ID
- var/usingBeacon = FALSE //is the console in beacon mode? exists to let beacon know when a pod may come in
+ /// The linked supplypod beacon
+ var/obj/item/supplypod_beacon/beacon
+ /// Where we droppin boys
+ var/area/landingzone = /area/station/cargo/storage
+ var/pod_type = /obj/structure/closet/supplypod
+ /// If this console is locked and needs to be unlocked with an ID
+ var/locked = TRUE
+ /// Is the console in beacon mode? Exists to let beacon know when a pod may come in
+ var/using_beacon = FALSE
+ /// Number of beacons printed. Used to determine beacon names.
+ var/static/printed_beacons = 0
+ /// Cooldown to prevent beacon spam
+ COOLDOWN_DECLARE(beacon_print_cooldown)
/obj/machinery/computer/cargo/express/Initialize(mapload)
. = ..()
packin_up()
+ landingzone = GLOB.areas_by_type[landingzone]
+ if (isnull(landingzone))
+ WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.")
+ landingzone = get_area(src)
/obj/machinery/computer/cargo/express/on_construction(mob/user)
. = ..()
@@ -33,24 +46,33 @@
beacon.unlink_console()
return ..()
-/obj/machinery/computer/cargo/express/attackby(obj/item/W, mob/living/user, params)
- if(W.GetID() && allowed(user))
+/obj/machinery/computer/cargo/express/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if (tool.GetID() && allowed(user))
locked = !locked
to_chat(user, span_notice("You [locked ? "lock" : "unlock"] the interface."))
- return
- else if(istype(W, /obj/item/disk/cargo/bluespace_pod))
- podType = /obj/structure/closet/supplypod/bluespacepod//doesnt effect circuit board, making reversal possible
+ return ITEM_INTERACT_SUCCESS
+
+ if (istype(tool, /obj/item/disk/cargo/bluespace_pod))
+ if (pod_type == /obj/structure/closet/supplypod/bluespacepod)
+ balloon_alert(user, "already upgraded!")
+ return ITEM_INTERACT_FAILURE
+ if(!user.temporarilyRemoveItemFromInventory(tool))
+ return ITEM_INTERACT_FAILURE
+ pod_type = /obj/structure/closet/supplypod/bluespacepod // doesnt affect our circuit board, making reversal possible
to_chat(user, span_notice("You insert the disk into [src], allowing for advanced supply delivery vehicles."))
- qdel(W)
- return TRUE
- else if(istype(W, /obj/item/supplypod_beacon))
- var/obj/item/supplypod_beacon/sb = W
- if (sb.express_console != src)
- sb.link_console(src, user)
- return TRUE
- else
- to_chat(user, span_alert("[src] is already linked to [sb]."))
- ..()
+ tool.forceMove(src)
+ return ITEM_INTERACT_SUCCESS
+
+ if(istype(tool, /obj/item/supplypod_beacon))
+ var/obj/item/supplypod_beacon/beacon = tool
+ if (beacon.express_console != src)
+ beacon.link_console(src, user)
+ return ITEM_INTERACT_SUCCESS
+
+ to_chat(user, span_alert("[src] is already linked to [beacon]."))
+ return ITEM_INTERACT_FAILURE
+
+ return NONE
/obj/machinery/computer/cargo/express/emag_act(mob/user, obj/item/card/emag/emag_card)
if(obj_flags & EMAGGED)
@@ -68,8 +90,11 @@
packin_up()
return TRUE
-/obj/machinery/computer/cargo/express/proc/packin_up() // oh shit, I'm sorry
+/obj/machinery/computer/cargo/express/proc/packin_up(forced = FALSE) // oh shit, I'm sorry
meme_pack_data = list() // sorry for what?
+ if (!forced && !SSshuttle.initialized) // Subsystem is still sleeping, add ourselves to its buffer and abort
+ SSshuttle.express_consoles += src
+ return
for(var/pack in SSshuttle.supply_packs) // our quartermaster taught us not to be ashamed of our supply packs
var/datum/supply_pack/P = SSshuttle.supply_packs[pack] // specially since they're such a good price and all
if(!meme_pack_data[P.group]) // yeah, I see that, your quartermaster gave you good advice
@@ -83,7 +108,7 @@
continue // i'd be right happy to
meme_pack_data[P.group]["packs"] += list(list(
"name" = P.name,
- "cost" = P.get_cost(),
+ "cost" = P.get_cost() * get_discount(),
"id" = pack,
"desc" = P.desc || P.name // If there is a description, use it. Otherwise use the pack's name.
))
@@ -91,26 +116,26 @@
/obj/machinery/computer/cargo/express/ui_data(mob/user)
var/canBeacon = beacon && (isturf(beacon.loc) || ismob(beacon.loc))//is the beacon in a valid location?
var/list/data = list()
- var/datum/bank_account/D = SSeconomy.get_dep_account(cargo_account)
- if(D)
- data["points"] = D.account_balance
+ var/datum/bank_account/account = SSeconomy.get_dep_account(cargo_account)
+ if(account)
+ data["points"] = account.account_balance
data["locked"] = locked//swipe an ID to unlock
data["siliconUser"] = HAS_SILICON_ACCESS(user)
data["beaconzone"] = beacon ? get_area(beacon) : ""//where is the beacon located? outputs in the tgui
- data["usingBeacon"] = usingBeacon //is the mode set to deliver to the beacon or the cargobay?
- data["canBeacon"] = !usingBeacon || canBeacon //is the mode set to beacon delivery, and is the beacon in a valid location?
- data["canBuyBeacon"] = cooldown <= 0 && D.account_balance >= BEACON_COST
- data["beaconError"] = usingBeacon && !canBeacon ? "(BEACON ERROR)" : ""//changes button text to include an error alert if necessary
+ data["using_beacon"] = using_beacon //is the mode set to deliver to the beacon or the cargobay?
+ data["canBeacon"] = !using_beacon || canBeacon //is the mode set to beacon delivery, and is the beacon in a valid location?
+ data["canBuyBeacon"] = COOLDOWN_FINISHED(src, beacon_print_cooldown) && account.account_balance >= BEACON_COST
+ data["beaconError"] = using_beacon && !canBeacon ? "(BEACON ERROR)" : ""//changes button text to include an error alert if necessary
data["hasBeacon"] = beacon != null//is there a linked beacon?
data["beaconName"] = beacon ? beacon.name : "No Beacon Found"
- data["printMsg"] = cooldown > 0 ? "Print Beacon for [BEACON_COST] credits ([cooldown])" : "Print Beacon for [BEACON_COST] credits"//buttontext for printing beacons
+ data["printMsg"] = COOLDOWN_FINISHED(src, beacon_print_cooldown) ? "Print Beacon for [BEACON_COST] credits" : "Print Beacon for [BEACON_COST] credits ([COOLDOWN_TIMELEFT(src, beacon_print_cooldown)])" //buttontext for printing beacons
data["supplies"] = list()
message = "Sales are near-instantaneous - please choose carefully."
if(SSshuttle.supply_blocked)
message = blockade_warning
- if(usingBeacon && !beacon)
+ if(using_beacon && !beacon)
message = "BEACON ERROR: BEACON MISSING"//beacon was destroyed
- else if (usingBeacon && !canBeacon)
+ else if (using_beacon && !canBeacon)
message = "BEACON ERROR: MUST BE EXPOSED"//beacon's loc/user's loc must be a turf
if(obj_flags & EMAGGED)
message = "(&!#@ERROR: R0UTING_#PRO7O&OL MALF(*CT#ON. $UG%ESTE@ ACT#0N: !^/PULS3-%E)ET CIR*)ITB%ARD."
@@ -119,10 +144,11 @@
packin_up()
stack_trace("There was no pack data for [src]")
data["supplies"] = meme_pack_data
- if (cooldown > 0)//cooldown used for printing beacons
- cooldown--
return data
+/obj/machinery/computer/cargo/express/proc/get_discount()
+ return (obj_flags & EMAGGED) ? EXPRESS_EMAG_DISCOUNT : 1
+
/obj/machinery/computer/cargo/express/ui_act(action, params, datum/tgui/ui)
. = ..()
if(.)
@@ -131,23 +157,24 @@
var/mob/user = ui.user
switch(action)
if("LZCargo")
- usingBeacon = FALSE
+ using_beacon = FALSE
if (beacon)
beacon.update_status(SP_UNREADY) //ready light on beacon will turn off
if("LZBeacon")
- usingBeacon = TRUE
+ using_beacon = TRUE
if (beacon)
beacon.update_status(SP_READY) //turns on the beacon's ready light
if("printBeacon")
- var/datum/bank_account/D = SSeconomy.get_dep_account(cargo_account)
- if(D)
- if(D.adjust_money(-BEACON_COST))
- cooldown = 10//a ~ten second cooldown for printing beacons to prevent spam
- var/obj/item/supplypod_beacon/C = new /obj/item/supplypod_beacon(drop_location())
- C.link_console(src, user)//rather than in beacon's Initialize(), we can assign the computer to the beacon by reusing this proc)
- printed_beacons++//printed_beacons starts at 0, so the first one out will be called beacon # 1
- beacon.name = "Supply Pod Beacon #[printed_beacons]"
+ var/datum/bank_account/account = SSeconomy.get_dep_account(cargo_account)
+ if(isnull(account) || !account.adjust_money(-BEACON_COST))
+ return
+ // a ~ten second cooldown for printing beacons to prevent spam
+ COOLDOWN_START(src, beacon_print_cooldown, BEACON_PRINT_COOLDOWN)
+ var/obj/item/supplypod_beacon/new_beacon = new /obj/item/supplypod_beacon(drop_location())
+ new_beacon.link_console(src, user) //rather than in beacon's Initialize(), we can assign the computer to the beacon by reusing this proc)
+ printed_beacons++ //printed_beacons starts at 0, so the first one out will be called beacon # 1
+ beacon.name = "Supply Pod Beacon #[printed_beacons]"
if("add")//Generate Supply Order first
if(TIMER_COOLDOWN_RUNNING(src, COOLDOWN_EXPRESSPOD_CONSOLE))
@@ -169,60 +196,62 @@
name = user.real_name
rank = "Silicon"
var/reason = ""
+ var/datum/supply_order/order = new(pack, name, rank, ckey, reason)
+ var/datum/bank_account/account = SSeconomy.get_dep_account(cargo_account)
+ if (isnull(account) && order.pack.get_cost() > 0)
+ return
+
+ if (obj_flags & EMAGGED)
+ landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)]
+
var/list/empty_turfs
- var/datum/supply_order/SO = new(pack, name, rank, ckey, reason)
- var/points_to_check
- var/datum/bank_account/D = SSeconomy.get_dep_account(cargo_account)
- if(D)
- points_to_check = D.account_balance
- if(!(obj_flags & EMAGGED))
- if(SO.pack.get_cost() <= points_to_check)
- var/LZ
- if (istype(beacon) && usingBeacon)//prioritize beacons over landing in cargobay
- LZ = get_turf(beacon)
- beacon.update_status(SP_LAUNCH)
- else if (!usingBeacon)//find a suitable supplypod landing zone in cargobay
- landingzone = GLOB.areas_by_type[/area/station/cargo/storage]
- if (!landingzone)
- WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.")
- landingzone = get_area(src)
- for(var/turf/open/floor/T in landingzone.get_turfs_from_all_zlevels())//uses default landing zone
- if(T.is_blocked_turf())
- continue
- LAZYADD(empty_turfs, T)
- CHECK_TICK
- if(empty_turfs?.len)
- LZ = pick(empty_turfs)
- if (SO.pack.get_cost() <= points_to_check && LZ)//we need to call the cost check again because of the CHECK_TICK call
- TIMER_COOLDOWN_START(src, COOLDOWN_EXPRESSPOD_CONSOLE, 5 SECONDS)
- D.adjust_money(-SO.pack.get_cost())
- if(pack.special_pod)
- new /obj/effect/pod_landingzone(LZ, pack.special_pod, SO)
- else
- new /obj/effect/pod_landingzone(LZ, podType, SO)
- . = TRUE
- update_appearance()
+ if (!istype(beacon) || !using_beacon || (obj_flags & EMAGGED))
+ empty_turfs = list()
+ for(var/turf/open/floor/open_turf in landingzone.get_turfs_from_all_zlevels())
+ if(!open_turf.is_blocked_turf())
+ empty_turfs += open_turf
+
+ if (!length(empty_turfs))
+ return
+
+ if (obj_flags & EMAGGED)
+ if (account.account_balance < order.pack.get_cost() * -get_discount())
+ return
+
+ TIMER_COOLDOWN_START(src, COOLDOWN_EXPRESSPOD_CONSOLE, 10 SECONDS)
+ order.generateRequisition(get_turf(src))
+ for(var/i in 1 to MAX_EMAG_ROCKETS)
+ if (!account.adjust_money(order.pack.get_cost() * -get_discount()))
+ break
+
+ var/turf/landing_turf = pick(empty_turfs)
+ empty_turfs -= landing_turf
+ if(pack.special_pod)
+ new /obj/effect/pod_landingzone(landing_turf, pack.special_pod, order)
+ else
+ new /obj/effect/pod_landingzone(landing_turf, pod_type, order)
+
+ update_appearance()
+ return TRUE
+
+ var/turf/landing_turf
+ if (istype(beacon) && using_beacon)
+ landing_turf = get_turf(beacon)
+ beacon.update_status(SP_LAUNCH)
else
- if(SO.pack.get_cost() * (0.72*MAX_EMAG_ROCKETS) <= points_to_check) // bulk discount :^)
- landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)] //override default landing zone
- for(var/turf/open/floor/T in landingzone.get_turfs_from_all_zlevels())
- if(T.is_blocked_turf())
- continue
- LAZYADD(empty_turfs, T)
- CHECK_TICK
- if(empty_turfs?.len)
- TIMER_COOLDOWN_START(src, COOLDOWN_EXPRESSPOD_CONSOLE, 10 SECONDS)
- D.adjust_money(-(SO.pack.get_cost() * (0.72*MAX_EMAG_ROCKETS)))
-
- SO.generateRequisition(get_turf(src))
- for(var/i in 1 to MAX_EMAG_ROCKETS)
- var/LZ = pick(empty_turfs)
- LAZYREMOVE(empty_turfs, LZ)
- if(pack.special_pod)
- new /obj/effect/pod_landingzone(LZ, pack.special_pod, SO)
- else
- new /obj/effect/pod_landingzone(LZ, podType, SO)
- . = TRUE
- update_appearance()
- CHECK_TICK
+ landing_turf = pick(empty_turfs)
+
+ if (!account.adjust_money(-order.pack.get_cost() * get_discount()))
+ return
+
+ TIMER_COOLDOWN_START(src, COOLDOWN_EXPRESSPOD_CONSOLE, 5 SECONDS)
+ if(pack.special_pod)
+ new /obj/effect/pod_landingzone(landing_turf, pack.special_pod, order)
+ else
+ new /obj/effect/pod_landingzone(landing_turf, pod_type, order)
+
+ update_appearance()
+ return TRUE
+#undef EXPRESS_EMAG_DISCOUNT
+#undef BEACON_PRINT_COOLDOWN
diff --git a/code/modules/cargo/markets/_market.dm b/code/modules/cargo/markets/_market.dm
index 4696d3007a7ae..e2a21eb12ebad 100644
--- a/code/modules/cargo/markets/_market.dm
+++ b/code/modules/cargo/markets/_market.dm
@@ -68,7 +68,7 @@
uplink.current_user.adjust_money(-price, "Other: Third Party Transaction")
if(ismob(user))
var/mob/m_user = user
- m_user.playsound_local(get_turf(m_user), 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ m_user.playsound_local(get_turf(m_user), 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
return TRUE
return FALSE
diff --git a/code/modules/cargo/markets/market_telepad.dm b/code/modules/cargo/markets/market_telepad.dm
index 53a3d73ee486a..f0c8e058fc0fb 100644
--- a/code/modules/cargo/markets/market_telepad.dm
+++ b/code/modules/cargo/markets/market_telepad.dm
@@ -176,7 +176,7 @@
if(state_open)
if(locate(/mob/living) in tool.get_all_contents())
say("Living being detected, cannot sell!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return ITEM_INTERACT_BLOCKING
if(!user.transferItemToLoc(tool, src))
balloon_alert(user, "stuck to your hands!")
@@ -193,7 +193,7 @@
if(creds_value < restock_cost)
say("Insufficient credits!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return ITEM_INTERACT_BLOCKING
if(istype(tool, /obj/item/holochip))
@@ -271,7 +271,7 @@
return
if(locate(/mob/living) in occupant.get_all_contents())
say("Living being detected, cannot sell!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return
var/datum/bank_account/account
var/datum/market/our_market = SSmarket.markets[/datum/market/blackmarket]
@@ -280,17 +280,17 @@
return
if(length(our_market.available_items[/datum/market_item/local_good::category]) >= LTSRBT_MAX_MARKET_ITEMS)
say("Local market saturated, buy some goods first!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return
var/mob/living/living_user = user
var/obj/item/card/id/card = living_user.get_idcard(TRUE)
if(!(card?.registered_account))
say("No bank account to charge market fees detected!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return
if(!card.registered_account.adjust_money(-PLACE_ON_MARKET_COST, "Market: Placement Fee"))
say("Insufficient credits!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 40, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 40, FALSE)
return
account = card.registered_account
diff --git a/code/modules/cargo/materials_market.dm b/code/modules/cargo/materials_market.dm
index 797ebf5411d6f..4037a51c6916b 100644
--- a/code/modules/cargo/materials_market.dm
+++ b/code/modules/cargo/materials_market.dm
@@ -68,7 +68,7 @@
if(!amount)
say("Not enough material. Aborting.")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE)
return TRUE
qdel(exportable)
@@ -77,7 +77,7 @@
new_block.export_mat = material_to_export
new_block.quantity = amount
to_chat(user, span_notice("You have created a stock block worth [new_block.export_value] cr! Sell it before it becomes liquid!"))
- playsound(src, 'sound/machines/synth_yes.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 50, FALSE)
return TRUE
return ..()
@@ -274,14 +274,14 @@
var/prior_sheets = current_order.pack.contains[sheet_to_buy]
if(prior_sheets + quantity > SSstock_market.materials_quantity[material_bought] )
say("There aren't enough sheets on the market! Please wait for more sheets to be traded before adding more.")
- playsound(usr, 'sound/machines/synth_no.ogg', 35, FALSE)
+ playsound(usr, 'sound/machines/synth/synth_no.ogg', 35, FALSE)
return
// Check if the order exceeded the purchase limit
var/prior_stacks = ROUND_UP(prior_sheets / MAX_STACK_SIZE)
if(prior_stacks >= MAX_STACK_LIMIT)
say("There are already 10 stacks of sheets on order! Please wait for them to arrive before ordering more.")
- playsound(usr, 'sound/machines/synth_no.ogg', 35, FALSE)
+ playsound(usr, 'sound/machines/synth/synth_no.ogg', 35, FALSE)
return
// Prevents you from ordering more than the available budget
diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm
index ac37511f789a4..87a085707c0c3 100644
--- a/code/modules/cargo/orderconsole.dm
+++ b/code/modules/cargo/orderconsole.dm
@@ -240,13 +240,13 @@
return
if(pack.goody && !self_paid)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
say("ERROR: Small crates may only be purchased by private accounts.")
return
var/similar_count = SSshuttle.supply.get_order_count(pack)
if(similar_count == OVER_ORDER_LIMIT)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
say("ERROR: No more then [CARGO_MAX_ORDER] of any pack may be ordered at once")
return
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index f1d13fc92c224..a8678fbdcef13 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -40,7 +40,7 @@
var/reversing = FALSE //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom
var/list/reverse_dropoff_coords //Turf that the reverse pod will drop off its newly-acquired cargo to
var/fallingSoundLength = 11
- var/fallingSound = 'sound/weapons/mortar_long_whistle.ogg'//Admin sound to play before the pod lands
+ var/fallingSound = 'sound/items/weapons/mortar_long_whistle.ogg'//Admin sound to play before the pod lands
var/landingSound //Admin sound to play when the pod lands
var/openingSound //Admin sound to play when the pod opens
var/leavingSound //Admin sound to play when the pod leaves
@@ -695,7 +695,7 @@
target_living.Stun(pod.delays[POD_TRANSIT]+10, ignore_canstun = TRUE)//you ain't goin nowhere, kid.
if (pod.delays[POD_TRANSIT] + pod.delays[POD_FALLING] < pod.fallingSoundLength)
pod.fallingSoundLength = 3 //The default falling sound is a little long, so if the landing time is shorter than the default falling sound, use a special, shorter default falling sound
- pod.fallingSound = 'sound/weapons/mortar_whistle.ogg'
+ pod.fallingSound = 'sound/items/weapons/mortar_whistle.ogg'
var/soundStartTime = pod.delays[POD_TRANSIT] - pod.fallingSoundLength + pod.delays[POD_FALLING]
if (soundStartTime < 0)
soundStartTime = 1
diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm
index 2d9a618bb414e..976298bbc0b15 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -27,17 +27,17 @@
switch(consoleStatus)
if (SP_LINKED)
linked = TRUE
- playsound(src,'sound/machines/twobeep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/twobeep.ogg',50,FALSE)
if (SP_READY)
ready = TRUE
if (SP_LAUNCH)
launched = TRUE
- playsound(src,'sound/machines/triple_beep.ogg',50,FALSE)
+ playsound(src,'sound/machines/beep/triple_beep.ogg',50,FALSE)
playsound(src,'sound/machines/warning-buzzer.ogg',50,FALSE)
addtimer(CALLBACK(src, PROC_REF(endLaunch)), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
if (SP_UNLINK)
linked = FALSE
- playsound(src,'sound/machines/synth_no.ogg',50,FALSE)
+ playsound(src,'sound/machines/synth/synth_no.ogg',50,FALSE)
if (SP_UNREADY)
ready = FALSE
update_appearance()
@@ -73,7 +73,9 @@
/obj/item/supplypod_beacon/wrench_act(mob/living/user, obj/item/tool)
. = ..()
- default_unfasten_wrench(user, tool)
+ if (default_unfasten_wrench(user, tool) == SUCCESSFUL_UNFASTEN)
+ pixel_x = 0
+ pixel_y = 0
return ITEM_INTERACT_SUCCESS
/obj/item/supplypod_beacon/proc/unlink_console()
@@ -91,7 +93,7 @@
express_console = C//set the linked console var to the console
express_console.beacon = src//out with the old in with the news
update_status(SP_LINKED)
- if (express_console.usingBeacon)
+ if (express_console.using_beacon)
update_status(SP_READY)
to_chat(user, span_notice("[src] linked to [C]."))
diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm
index 9ce1771421e61..d86a758ef89d3 100644
--- a/code/modules/cargo/universal_scanner.dm
+++ b/code/modules/cargo/universal_scanner.dm
@@ -200,7 +200,7 @@
to_chat(user, span_notice(message))
if(price)
- playsound(src, 'sound/machines/terminal_select.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_select.ogg', 50, vary = TRUE)
if(istype(target, /obj/item/delivery))
var/obj/item/delivery/parcel = target
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 954724ed520ff..bd915cdf37a14 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -254,7 +254,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
// Check if the list is empty
if(!length(players))
// Express that there are no players we can ignore in chat
- to_chat(src, "There are no other players you can ignore!")
+ to_chat(src, span_infoplain("There are no other players you can ignore!"))
// Stop running
return
@@ -275,7 +275,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
// Check if the selected player is on our ignore list
if(selection in prefs.ignoring)
// Express that the selected player is already on our ignore list in chat
- to_chat(src, "You are already ignoring [selection]!")
+ to_chat(src, span_infoplain("You are already ignoring [selection]!"))
// Stop running
return
@@ -287,7 +287,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
prefs.save_preferences()
// Express that we've ignored the selected player in chat
- to_chat(src, "You are now ignoring [selection] on the OOC channel.")
+ to_chat(src, span_infoplain("You are now ignoring [selection] on the OOC channel."))
// Unignore verb
/client/verb/select_unignore()
@@ -298,7 +298,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
// Check if we've ignored any players
if(!length(prefs.ignoring))
// Express that we haven't ignored any players in chat
- to_chat(src, "You haven't ignored any players!")
+ to_chat(src, span_infoplain("You haven't ignored any players!"))
// Stop running
return
@@ -313,7 +313,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
// Check if the selected player is not on our ignore list
if(!(selection in prefs.ignoring))
// Express that the selected player is not on our ignore list in chat
- to_chat(src, "You are not ignoring [selection]!")
+ to_chat(src, span_infoplain("You are not ignoring [selection]!"))
// Stop running
return
@@ -325,7 +325,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
prefs.save_preferences()
// Express that we've unignored the selected player in chat
- to_chat(src, "You are no longer ignoring [selection] on the OOC channel.")
+ to_chat(src, span_infoplain("You are no longer ignoring [selection] on the OOC channel."))
/client/proc/show_previous_roundend_report()
set name = "Your Last Round"
diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm
index 5b31ae49849ce..bd023ede6308e 100644
--- a/code/modules/client/verbs/who.dm
+++ b/code/modules/client/verbs/who.dm
@@ -67,7 +67,7 @@
msg += ""
msg += "Total Players: [length(Lines)]"
- to_chat(src, "[msg]")
+ to_chat(src, span_infoplain("[msg]"))
/client/verb/adminwho()
set category = "Admin"
diff --git a/code/modules/clothing/belts/polymorph_belt.dm b/code/modules/clothing/belts/polymorph_belt.dm
index 9f28c33e01964..8e1bfb0aed7bd 100644
--- a/code/modules/clothing/belts/polymorph_belt.dm
+++ b/code/modules/clothing/belts/polymorph_belt.dm
@@ -49,7 +49,7 @@
active = TRUE
update_appearance(UPDATE_ICON_STATE)
update_transform_action()
- playsound(src, 'sound/machines/crate_open.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/crate/crate_open.ogg', 50, FALSE)
/obj/item/polymorph_belt/attack(mob/living/target_mob, mob/living/user, params)
. = ..()
@@ -145,7 +145,7 @@
cast_on.transform = old_transform
return . | SPELL_CANCEL_CAST
cast_on.visible_message(span_warning("[cast_on]'s body rearranges itself with a horrible crunching sound!"))
- playsound(cast_on, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(cast_on, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
/datum/action/cooldown/spell/shapeshift/polymorph_belt/after_cast(atom/cast_on)
. = ..()
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 3bb50a5e6b176..0178ae09c5322 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -112,7 +112,7 @@
throw_speed = 4
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
/obj/item/clothing/glasses/science
@@ -251,7 +251,7 @@
throw_speed = 4
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
@@ -385,7 +385,7 @@
throw_speed = 4
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
/obj/item/clothing/glasses/sunglasses/gar/orange
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index dc35ab1dbf4c0..332aba8a71990 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -204,7 +204,7 @@
throw_speed = 4
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
/obj/item/clothing/glasses/hud/security/sunglasses/gars/giga
diff --git a/code/modules/clothing/gloves/insulated.dm b/code/modules/clothing/gloves/insulated.dm
index b04637d4c527b..d20ae78c6c4cc 100644
--- a/code/modules/clothing/gloves/insulated.dm
+++ b/code/modules/clothing/gloves/insulated.dm
@@ -13,7 +13,6 @@
custom_price = PAYCHECK_CREW * 10
custom_premium_price = PAYCHECK_COMMAND * 6
cut_type = /obj/item/clothing/gloves/cut
- clothing_traits = list(TRAIT_CHUNKYFINGERS)
/obj/item/clothing/gloves/color/yellow/Initialize(mapload)
. = ..()
@@ -22,11 +21,9 @@
/obj/item/clothing/gloves/color/yellow/apply_fantasy_bonuses(bonus)
. = ..()
if(bonus >= 10)
- detach_clothing_traits(TRAIT_CHUNKYFINGERS)
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
/obj/item/clothing/gloves/color/yellow/remove_fantasy_bonuses(bonus)
- attach_clothing_traits(TRAIT_CHUNKYFINGERS)
AddComponent(/datum/component/adjust_fishing_difficulty, 10)
return ..()
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index 3e18a4ed2adc0..98de3145ddc78 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -271,4 +271,4 @@
if(damage)
var/body_zone = pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)
user.apply_damage(damage, BRUTE, body_zone, user.run_armor_check(body_zone, MELEE))
- playsound(src,'sound/weapons/bite.ogg', damage * 2, TRUE)
+ playsound(src,'sound/items/weapons/bite.ogg', damage * 2, TRUE)
diff --git a/code/modules/clothing/head/cakehat.dm b/code/modules/clothing/head/cakehat.dm
index 1fc0fa0b05b50..8a389cbf812ff 100644
--- a/code/modules/clothing/head/cakehat.dm
+++ b/code/modules/clothing/head/cakehat.dm
@@ -18,9 +18,9 @@
wound_bonus = 10
bare_wound_bonus = 5
dog_fashion = /datum/dog_fashion/head
- hitsound = 'sound/weapons/tap.ogg'
- var/hitsound_on = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat
- var/hitsound_off = 'sound/weapons/tap.ogg'
+ hitsound = 'sound/items/weapons/tap.ogg'
+ var/hitsound_on = 'sound/items/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat
+ var/hitsound_off = 'sound/items/weapons/tap.ogg'
var/force_on = 15
var/throwforce_on = 15
var/damtype_on = BURN
@@ -57,23 +57,30 @@
/obj/item/clothing/head/utility/hardhat/cakehat/energycake
name = "energy cake"
desc = "You put the energy sword on your cake. Brilliant."
- icon_state = "hardhat0_energycake"
+ icon_state = "hardhat1_energycake"
inhand_icon_state = "hardhat0_energycake"
hat_type = "energycake"
- hitsound = 'sound/weapons/tap.ogg'
- hitsound_on = 'sound/weapons/blade1.ogg'
- hitsound_off = 'sound/weapons/tap.ogg'
+ hitsound = 'sound/items/weapons/tap.ogg'
+ hitsound_on = 'sound/items/weapons/blade1.ogg'
+ hitsound_off = 'sound/items/weapons/tap.ogg'
damtype_on = BRUTE
force_on = 18 //same as epen (but much more obvious)
light_range = 3 //ditto
heat = 0
+/obj/item/clothing/head/utility/hardhat/cakehat/energycake/Initialize(mapload)
+ . = ..()
+ //the compiled icon state is how it appears when it's on.
+ //That's how we want it to show on orbies (little virtual PDA pets).
+ //However we should reset their appearance on runtime.
+ update_appearance(UPDATE_ICON_STATE)
+
/obj/item/clothing/head/utility/hardhat/cakehat/energycake/turn_on(mob/living/user)
- playsound(src, 'sound/weapons/saberon.ogg', 5, TRUE)
+ playsound(src, 'sound/items/weapons/saberon.ogg', 5, TRUE)
to_chat(user, span_warning("You turn on \the [src]."))
return ..()
/obj/item/clothing/head/utility/hardhat/cakehat/energycake/turn_off(mob/living/user)
- playsound(src, 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(src, 'sound/items/weapons/saberoff.ogg', 5, TRUE)
to_chat(user, span_warning("You turn off \the [src]."))
return ..()
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 1b86a8ea36ce0..6cd88c1746c7f 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -142,7 +142,7 @@
/obj/item/clothing/head/utility/hardhat/welding/adjust_visor(mob/living/user)
. = ..()
if(.)
- playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE)
/obj/item/clothing/head/utility/hardhat/welding/worn_overlays(mutable_appearance/standing, isinhands)
. = ..()
diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm
index 9dcaa5c365f27..e9ff99782395f 100644
--- a/code/modules/clothing/head/mind_monkey_helmet.dm
+++ b/code/modules/clothing/head/mind_monkey_helmet.dm
@@ -42,7 +42,7 @@
var/mob/living/something = user
to_chat(something, span_boldnotice("You feel a stabbing pain in the back of your head for a moment."))
something.apply_damage(5,BRUTE,BODY_ZONE_HEAD,FALSE,FALSE,FALSE) //notably: no damage resist (it's in your helmet), no damage spread (it's in your helmet)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE))
say("ERROR: Central Command has temporarily outlawed monkey sentience helmets in this sector. NEAREST LAWFUL SECTOR: 2.537 million light years away.")
@@ -64,7 +64,7 @@
switch(rage_chance)
if(-7 to 0)
user.visible_message(span_notice("[src] falls silent and drops on the floor. Try again later?"))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
particle_path = null
if(7 to 13)
user.visible_message(span_notice("[src] sparkles momentarily, then falls silent and drops on the floor. Maybe you should try again later?"))
@@ -80,7 +80,7 @@
if(21 to INFINITY)
user.visible_message(span_notice("[src] buzzes and smokes heavily, then falls silent and drops on the floor. This is clearly a bad idea."))
do_sparks(6, FALSE, src)
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
particle_path = /particles/smoke/steam
rage_chance += 7
@@ -117,7 +117,7 @@
malfunction(magnification)
//either used up correctly or taken off before polling finished (punish this by destroying the helmet)
UnregisterSignal(magnification, COMSIG_SPECIES_LOSS)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
playsound(src, SFX_SPARKS, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
visible_message(span_warning("[src] fizzles and breaks apart!"))
magnification = null
diff --git a/code/modules/clothing/head/tophat.dm b/code/modules/clothing/head/tophat.dm
index 612f02ce692e9..e204673743e58 100644
--- a/code/modules/clothing/head/tophat.dm
+++ b/code/modules/clothing/head/tophat.dm
@@ -21,7 +21,7 @@
return
COOLDOWN_START(src, rabbit_cooldown, RABBIT_CD_TIME)
- playsound(get_turf(src), 'sound/weapons/emitter.ogg', 70)
+ playsound(get_turf(src), 'sound/items/weapons/emitter.ogg', 70)
do_smoke(amount = DIAMOND_AREA(1), holder = src, location = src, smoke_type=/obj/effect/particle_effect/fluid/smoke/quick)
if(prob(10))
diff --git a/code/modules/clothing/masks/animal_masks.dm b/code/modules/clothing/masks/animal_masks.dm
index 7b29519e12ba5..5a92c8faf071c 100644
--- a/code/modules/clothing/masks/animal_masks.dm
+++ b/code/modules/clothing/masks/animal_masks.dm
@@ -133,7 +133,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
icon_state = "pig"
inhand_icon_state = null
animal_sounds = list("Oink!","Squeeeeeeee!","Oink Oink!")
- curse_spawn_sound = 'sound/magic/pighead_curse.ogg'
+ curse_spawn_sound = 'sound/effects/magic/pighead_curse.ogg'
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
/obj/item/clothing/mask/animal/pig/cursed
@@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
icon_state = "cowmask"
inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
- curse_spawn_sound = 'sound/magic/cowhead_curse.ogg'
+ curse_spawn_sound = 'sound/effects/magic/cowhead_curse.ogg'
animal_sounds = list("Moooooooo!","Moo!","Moooo!")
/obj/item/clothing/mask/animal/cowmask/cursed
@@ -184,7 +184,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
inhand_icon_state = null
animal_sounds = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEYES|HIDEEARS|HIDESNOUT
- curse_spawn_sound = 'sound/magic/horsehead_curse.ogg'
+ curse_spawn_sound = 'sound/effects/magic/horsehead_curse.ogg'
/obj/item/clothing/mask/animal/horsehead/cursed
cursed = TRUE
diff --git a/code/modules/clothing/masks/gas_filter.dm b/code/modules/clothing/masks/gas_filter.dm
index 08ae650c24726..e29f80a5ea089 100644
--- a/code/modules/clothing/masks/gas_filter.dm
+++ b/code/modules/clothing/masks/gas_filter.dm
@@ -53,7 +53,7 @@
/obj/item/gas_filter/examine(mob/user)
. = ..()
- . += "[src] is at [filter_status]% durability."
+ . += span_notice("[src] is at [filter_status]% durability.")
/**
* called by the gas mask where the filter is installed, lower the filter_status depending on the breath gas composition and by the strength of the filter
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 47ecf9a11f5a8..6d92b80ebfd47 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -242,7 +242,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
/obj/item/clothing/mask/gas/welding/adjust_visor(mob/living/user)
. = ..()
if(.)
- playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE)
if(!fishing_modifier)
return
if(up)
diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm
index c5e538d44468e..aee1ac17b1b3e 100644
--- a/code/modules/clothing/masks/hailer.dm
+++ b/code/modules/clothing/masks/hailer.dm
@@ -58,7 +58,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
tint = 0
has_fov = FALSE
fishing_modifier = 0
- unique_death = 'sound/voice/sec_death.ogg'
+ unique_death = 'sound/items/sec_hailer/sec_death.ogg'
COOLDOWN_DECLARE(hailer_cooldown)
///Decides the phrases available for use; defines used are the last index of a category of available phrases
var/aggressiveness = AGGR_BAD_COP
@@ -210,7 +210,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
return
COOLDOWN_START(src, whistle_cooldown, 10 SECONDS)
user.audible_message("HALT!")
- playsound(src, 'sound/misc/whistle.ogg', 50, FALSE, 4)
+ playsound(src, 'sound/items/whistle/whistle.ogg', 50, FALSE, 4)
/datum/action/item_action/halt
name = "HALT!"
diff --git a/code/modules/clothing/masks/muzzle.dm b/code/modules/clothing/masks/muzzle.dm
index 6154e7762cb52..05bdd086efe86 100644
--- a/code/modules/clothing/masks/muzzle.dm
+++ b/code/modules/clothing/masks/muzzle.dm
@@ -62,7 +62,7 @@
. = ..()
if(user.get_item_by_slot(ITEM_SLOT_MASK) != src)
return
- playsound(user, 'sound/items/duct_tape_rip.ogg', 50, TRUE)
+ playsound(user, 'sound/items/duct_tape/duct_tape_rip.ogg', 50, TRUE)
if(harmful_strip)
user.apply_damage(stripping_damage, BRUTE, BODY_ZONE_HEAD)
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream")
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 61298e970cbf9..88b388b47264d 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -44,7 +44,7 @@
user.visible_message(span_suicide("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?"))
for(var/i in 1 to 3)
sleep(0.3 SECONDS)
- playsound(user, 'sound/weapons/genhit2.ogg', 50, TRUE)
+ playsound(user, 'sound/items/weapons/genhit2.ogg', 50, TRUE)
return BRUTELOSS
/obj/item/clothing/shoes/worn_overlays(mutable_appearance/standing, isinhands = FALSE)
diff --git a/code/modules/clothing/shoes/costume.dm b/code/modules/clothing/shoes/costume.dm
index 4f2287f40d278..3c66c0ac0c6b5 100644
--- a/code/modules/clothing/shoes/costume.dm
+++ b/code/modules/clothing/shoes/costume.dm
@@ -44,7 +44,7 @@
/obj/item/clothing/shoes/bronze/Initialize(mapload)
. = ..()
- AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/effects/magic/clockwork/fellowship_armory.ogg' = 1), 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
AddComponent(/datum/component/adjust_fishing_difficulty, 4)
/obj/item/clothing/shoes/cookflops
diff --git a/code/modules/clothing/shoes/wheelys.dm b/code/modules/clothing/shoes/wheelys.dm
index 9b67f14d14415..9f5bd1631f9c1 100644
--- a/code/modules/clothing/shoes/wheelys.dm
+++ b/code/modules/clothing/shoes/wheelys.dm
@@ -51,7 +51,7 @@
worn_icon_state = "[initial(worn_icon_state)]-on"
else
worn_icon_state = "[initial(worn_icon_state)]"
- playsound(src, 'sound/weapons/tap.ogg', 10, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 10, TRUE)
update_appearance()
/obj/item/clothing/shoes/wheelys/Destroy()
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 8faaf58b53ed4..88767b84b66d5 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -108,7 +108,7 @@
to_chat(user, span_notice("Your helmet's torch can't pass through your welding visor!"))
set_light_on(FALSE)
helmet_on = FALSE
- playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing
update_appearance()
/obj/item/clothing/head/helmet/space/plasmaman/update_icon_state()
diff --git a/code/modules/clothing/spacesuits/softsuit.dm b/code/modules/clothing/spacesuits/softsuit.dm
index 0b644286063ec..3bbb6d0bd0f90 100644
--- a/code/modules/clothing/spacesuits/softsuit.dm
+++ b/code/modules/clothing/spacesuits/softsuit.dm
@@ -95,5 +95,5 @@
name = "torn [src]."
desc = "A bulky suit meant to protect the user during emergency situations, at least until someone tore a hole in the suit."
torn = TRUE
- playsound(loc, 'sound/weapons/slashmiss.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/slashmiss.ogg', 50, TRUE)
playsound(loc, 'sound/effects/refill.ogg', 50, TRUE)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index efa23e1a06862..23e4d89ff2dbb 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -337,7 +337,7 @@
return ..()
/obj/item/clothing/suit/armor/balloon_vest/proc/pop()
- playsound(src, 'sound/effects/cartoon_pop.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/effects/cartoon_sfx/cartoon_pop.ogg', 50, vary = TRUE)
qdel(src)
diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm
index 9004f773e35ba..176661dbb57e1 100644
--- a/code/modules/clothing/suits/jacket.dm
+++ b/code/modules/clothing/suits/jacket.dm
@@ -62,6 +62,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/lighter,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
+ /obj/item/gun/energy/laser/musket,
/obj/item/radio,
)
@@ -83,6 +84,7 @@
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
+ /obj/item/gun/energy/laser/musket,
/obj/item/radio,
)
@@ -129,6 +131,7 @@
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
+ /obj/item/gun/energy/laser/musket,
/obj/item/radio,
)
@@ -163,6 +166,7 @@
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
+ /obj/item/gun/energy/laser/musket,
/obj/item/radio,
)
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index c1889cc77383d..eaa997607f09e 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -126,7 +126,7 @@
/obj/item/clothing/suit/armor/reactive/teleport/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
owner.visible_message(span_danger("The reactive teleport system flings [owner] clear of [attack_text]!"))
- playsound(get_turf(owner),'sound/magic/blink.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/blink.ogg', 100, TRUE)
do_teleport(owner, get_turf(owner), tele_range, no_effects = TRUE, channel = TELEPORT_CHANNEL_BLUESPACE)
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
return TRUE
@@ -134,8 +134,8 @@
/obj/item/clothing/suit/armor/reactive/teleport/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
owner.visible_message(span_danger("The reactive teleport system flings itself clear of [attack_text], leaving someone behind in the process!"))
owner.dropItemToGround(src, TRUE, TRUE)
- playsound(get_turf(owner),'sound/machines/buzz-sigh.ogg', 50, TRUE)
- playsound(get_turf(owner),'sound/magic/blink.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/blink.ogg', 100, TRUE)
do_teleport(src, get_turf(owner), tele_range, no_effects = TRUE, channel = TELEPORT_CHANNEL_BLUESPACE)
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
return FALSE //you didn't actually evade the attack now did you
@@ -150,7 +150,7 @@
/obj/item/clothing/suit/armor/reactive/fire/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
owner.visible_message(span_danger("[src] blocks [attack_text], sending out jets of flame!"))
- playsound(get_turf(owner),'sound/magic/fireball.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/fireball.ogg', 100, TRUE)
for(var/mob/living/carbon/carbon_victim in range(6, get_turf(src)))
if(carbon_victim != owner)
carbon_victim.adjust_fire_stacks(8)
@@ -161,7 +161,7 @@
/obj/item/clothing/suit/armor/reactive/fire/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
owner.visible_message(span_danger("[src] just makes [attack_text] worse by spewing molten death on [owner]!"))
- playsound(get_turf(owner),'sound/magic/fireball.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/fireball.ogg', 100, TRUE)
owner.adjust_fire_stacks(12)
owner.ignite_mob()
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
@@ -263,7 +263,7 @@
var/repulse_force = MOVE_FORCE_EXTREMELY_STRONG
/obj/item/clothing/suit/armor/reactive/repulse/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/repulse.ogg', 100, TRUE)
owner.visible_message(span_danger("[src] blocks [attack_text], converting the attack into a wave of force!"))
var/turf/owner_turf = get_turf(owner)
var/list/thrown_items = list()
@@ -278,7 +278,7 @@
return TRUE
/obj/item/clothing/suit/armor/reactive/repulse/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/repulse.ogg', 100, TRUE)
owner.visible_message(span_danger("[src] does not block [attack_text], and instead generates an attracting force!"))
var/turf/owner_turf = get_turf(owner)
var/list/thrown_items = list()
@@ -418,7 +418,7 @@
reactivearmor_cooldown_duration = 10 SECONDS
/obj/item/clothing/suit/armor/reactive/barricade/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/magic/repulse.ogg', 100, TRUE)
owner.visible_message(span_danger("The reactive armor interposes matter from another world between [src] and [attack_text]!"))
for (var/atom/movable/target in repulse_targets(owner))
repulse(target, owner)
@@ -480,7 +480,7 @@
reactivearmor_cooldown_duration = 40 SECONDS
/obj/item/clothing/suit/armor/reactive/ectoplasm/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- playsound(get_turf(owner),'sound/hallucinations/veryfar_noise.ogg', 100, TRUE)
+ playsound(get_turf(owner),'sound/effects/hallucinations/veryfar_noise.ogg', 100, TRUE)
owner.visible_message(span_danger("The [src] lets loose a burst of otherworldly energy!"))
haunt_outburst(epicenter = get_turf(owner), range = 5, haunt_chance = 85, duration = 30 SECONDS)
diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm
index 4636054ee3e6b..f09b6ac2f8585 100644
--- a/code/modules/clothing/suits/wintercoats.dm
+++ b/code/modules/clothing/suits/wintercoats.dm
@@ -49,7 +49,7 @@
/obj/item/clothing/suit/hooded/wintercoat/click_alt(mob/user)
zipped = !zipped
- playsound(src, 'sound/items/zip_up.ogg', 30, TRUE, -3)
+ playsound(src, 'sound/items/zip/zip_up.ogg', 30, TRUE, -3)
worn_icon_state = "[initial(icon_state)][zipped ? "_t" : ""]"
balloon_alert(user, "[zipped ? "" : "un"]zipped")
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index b590984cbc7cb..704182f3642d2 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -292,7 +292,7 @@
return
usr.say("Rise, my creation! Off your page into this realm!", forced = "stickman summoning")
- playsound(loc, 'sound/magic/summon_magic.ogg', 50, TRUE, TRUE)
+ playsound(loc, 'sound/effects/magic/summon_magic.ogg', 50, TRUE, TRUE)
var/mob/living/M = new /mob/living/basic/stickman/lesser(get_turf(usr))
M.faction += list("[REF(usr)]")
robe_charge = FALSE
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 9212f5e431ff6..25e02975d093b 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -186,7 +186,7 @@
return
cabling.visible_message(span_notice("[user] repairs the suit sensors on [src] with [cabling]."))
- playsound(source = src, soundin = 'sound/effects/sparks4.ogg', vol = 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
+ playsound(source = src, soundin = 'sound/effects/sparks/sparks4.ogg', vol = 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
has_sensor = HAS_SENSORS
update_wearer_status()
@@ -234,7 +234,7 @@
else
sensor_mode = pick(SENSOR_OFF, SENSOR_OFF, SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS)
- playsound(source = src, soundin = 'sound/effects/sparks3.ogg', vol = 75, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
+ playsound(source = src, soundin = 'sound/effects/sparks/sparks3.ogg', vol = 75, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
visible_message(span_warning("The [src]'s medical sensors flash and change rapidly!"), blind_message = span_warning("The [src] makes an electronic sizzling sound!"), vision_distance = COMBAT_MESSAGE_RANGE)
update_wearer_status()
diff --git a/code/modules/clothing/under/accessories/badges.dm b/code/modules/clothing/under/accessories/badges.dm
index b43196c1628e2..335eded4d4c82 100644
--- a/code/modules/clothing/under/accessories/badges.dm
+++ b/code/modules/clothing/under/accessories/badges.dm
@@ -275,12 +275,12 @@
var/mob/living/interacting_living = interacting_with
if(user.combat_mode)
- playsound(interacting_living, 'sound/weapons/throw.ogg', 30)
+ playsound(interacting_living, 'sound/items/weapons/throw.ogg', 30)
examine(interacting_living)
to_chat(interacting_living, span_userdanger("[user] shoves the [src] up your face!"))
user.visible_message(span_warning("[user] have shoved a [src] into [interacting_living] face."))
else
- playsound(interacting_living, 'sound/weapons/throwsoft.ogg', 20)
+ playsound(interacting_living, 'sound/items/weapons/throwsoft.ogg', 20)
examine(interacting_living)
to_chat(interacting_living, span_boldwarning("[user] shows the [src] to you."))
user.visible_message(span_notice("[user] shows a [src] to [interacting_living]."))
diff --git a/code/modules/deathmatch/deathmatch_loadouts.dm b/code/modules/deathmatch/deathmatch_loadouts.dm
index d89fdd383c80f..1e3d792f67b53 100644
--- a/code/modules/deathmatch/deathmatch_loadouts.dm
+++ b/code/modules/deathmatch/deathmatch_loadouts.dm
@@ -440,7 +440,7 @@
head = /obj/item/clothing/head/wizard/black
spells_to_add = list(
/datum/action/cooldown/spell/touch/scream_for_me,
- /datum/action/cooldown/spell/teleport/radius_turf/blink,
+ /datum/action/cooldown/spell/conjure/link_worlds,
)
/datum/outfit/deathmatch_loadout/wizard/larp
diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm
index 4c76534175a60..8ec8e5b2d8a56 100644
--- a/code/modules/economy/account.dm
+++ b/code/modules/economy/account.dm
@@ -83,7 +83,8 @@
if(old_job)
SSeconomy.bank_accounts_by_job[old_job.type] -= src
- LAZYADD(SSeconomy.bank_accounts_by_job[new_job.type], src)
+ if(new_job)
+ LAZYADD(SSeconomy.bank_accounts_by_job[new_job.type], src)
/datum/bank_account/vv_edit_var(var_name, var_value) // just so you don't have to do it manually
var/old_id = account_id
@@ -233,7 +234,7 @@
return
if(card_holder.can_hear())
- card_holder.playsound_local(get_turf(card_holder), 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ card_holder.playsound_local(get_turf(card_holder), 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
to_chat(card_holder, "[icon2html(icon_source, card_holder)] [span_notice("[message]")]")
else if(isturf(card.loc)) //If on the ground
var/turf/card_location = card.loc
@@ -241,7 +242,7 @@
if(!potential_hearer.client || (!(get_chat_toggles(potential_hearer.client) & CHAT_BANKCARD) && !force))
continue
if(potential_hearer.can_hear())
- potential_hearer.playsound_local(card_location, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ potential_hearer.playsound_local(card_location, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
to_chat(potential_hearer, "[icon2html(icon_source, potential_hearer)] [span_notice("[message]")]")
else
var/atom/sound_atom
@@ -251,7 +252,7 @@
if(!sound_atom)
sound_atom = card.drop_location() //in case we're inside a bodybag in a crate or something. doing this here to only process it if there's a valid mob who can hear the sound.
if(potential_hearer.can_hear())
- potential_hearer.playsound_local(get_turf(sound_atom), 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ potential_hearer.playsound_local(get_turf(sound_atom), 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
to_chat(potential_hearer, "[icon2html(icon_source, potential_hearer)] [span_notice("[message]")]")
/**
diff --git a/code/modules/economy/holopay.dm b/code/modules/economy/holopay.dm
index 54f6be3666a22..301a4a5d6f8cd 100644
--- a/code/modules/economy/holopay.dm
+++ b/code/modules/economy/holopay.dm
@@ -61,9 +61,9 @@
/obj/structure/holopay/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 80, TRUE)
if(BURN)
- playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(loc, 'sound/items/weapons/egloves.ogg', 80, TRUE)
/obj/structure/holopay/atom_deconstruct(dissambled = TRUE)
dissipate()
diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm
index 875b8c0dcf23a..2fdd161514903 100644
--- a/code/modules/events/aurora_caelus.dm
+++ b/code/modules/events/aurora_caelus.dm
@@ -19,14 +19,14 @@
/datum/round_event/aurora_caelus/announce(fake)
priority_announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. Nanotrasen has approved a short break for all employees to relax and observe this very rare event. During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.",
- sound = 'sound/misc/notice2.ogg',
+ sound = 'sound/announcer/notice/notice2.ogg',
sender_override = "Nanotrasen Meteorology Division")
if (fake)
return
for(var/V in GLOB.player_list)
var/mob/M = V
if((M.client.prefs.read_preference(/datum/preference/toggle/sound_midi)) && is_station_level(M.z))
- M.playsound_local(M, 'sound/ambience/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE)
+ M.playsound_local(M, 'sound/ambience/aurora_caelus/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE)
fade_space(fade_in = TRUE)
fade_kitchen(fade_in = TRUE)
@@ -66,7 +66,7 @@
fade_space()
fade_kitchen()
priority_announce("The aurora caelus event is now ending. Starlight conditions will slowly return to normal. When this has concluded, please return to your workplace and continue work as normal. Have a pleasant shift, [station_name()], and thank you for watching with us.",
- sound = 'sound/misc/notice2.ogg',
+ sound = 'sound/announcer/notice/notice2.ogg',
sender_override = "Nanotrasen Meteorology Division")
/datum/round_event/aurora_caelus/proc/fade_space(fade_in = FALSE)
diff --git a/code/modules/events/earthquake.dm b/code/modules/events/earthquake.dm
index 84945dc99f09d..58b0a7e40821a 100644
--- a/code/modules/events/earthquake.dm
+++ b/code/modules/events/earthquake.dm
@@ -112,10 +112,10 @@
earthquake_witness.playsound_local(
earthquake_witness,
pick(
- 'sound/misc/earth_rumble_distant1.ogg',
- 'sound/misc/earth_rumble_distant2.ogg',
- 'sound/misc/earth_rumble_distant3.ogg',
- 'sound/misc/earth_rumble_distant4.ogg',
+ 'sound/ambience/earth_rumble/earth_rumble_distant1.ogg',
+ 'sound/ambience/earth_rumble/earth_rumble_distant2.ogg',
+ 'sound/ambience/earth_rumble/earth_rumble_distant3.ogg',
+ 'sound/ambience/earth_rumble/earth_rumble_distant4.ogg',
),
75,
)
@@ -150,12 +150,12 @@
playsound(epicenter, 'sound/misc/metal_creak.ogg', 125, TRUE)
/datum/round_event/earthquake/end()
- playsound(epicenter, 'sound/misc/earth_rumble.ogg', 125)
+ playsound(epicenter, 'sound/ambience/earth_rumble/earth_rumble.ogg', 125)
for(var/mob/earthquake_witness as anything in GLOB.player_list)
if(!is_station_level(earthquake_witness.z) || !is_mining_level(earthquake_witness.z))
continue
shake_camera(earthquake_witness, 2 SECONDS, 4)
- earthquake_witness.playsound_local(earthquake_witness, 'sound/effects/explosionfar.ogg', 75)
+ earthquake_witness.playsound_local(earthquake_witness, 'sound/effects/explosion/explosionfar.ogg', 75)
// Step two of the destruction, which detonates the turfs in the earthquake zone. There is no actual explosion, meaning stuff around the earthquake zone is perfectly safe.
// All turfs, and everything else that IS in the earthquake zone, however, will behave as if it were bombed.
diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm
index f0e1a7c893a3e..e08304b9925e3 100644
--- a/code/modules/events/ghost_role/fugitive_event.dm
+++ b/code/modules/events/ghost_role/fugitive_event.dm
@@ -54,7 +54,7 @@
gear_fugitive_leader(leader, landing_turf, backstory)
//after spawning
- playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/emitter.ogg', 50, TRUE)
new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint
var/hunter_backstory = pick(
HUNTER_PACK_COPS,
diff --git a/code/modules/events/ghost_role/morph_event.dm b/code/modules/events/ghost_role/morph_event.dm
index 1b7af6361fdbb..b9841283ceed7 100644
--- a/code/modules/events/ghost_role/morph_event.dm
+++ b/code/modules/events/ghost_role/morph_event.dm
@@ -28,7 +28,7 @@
player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/morph))
player_mind.special_role = ROLE_MORPH
player_mind.add_antag_datum(/datum/antagonist/morph)
- SEND_SOUND(corpus_accipientis, sound('sound/magic/mutate.ogg'))
+ SEND_SOUND(corpus_accipientis, sound('sound/effects/magic/mutate.ogg'))
message_admins("[ADMIN_LOOKUPFLW(corpus_accipientis)] has been made into a morph by an event.")
corpus_accipientis.log_message("was spawned as a morph by an event.", LOG_GAME)
spawned_mobs += corpus_accipientis
diff --git a/code/modules/events/ghost_role/nightmare.dm b/code/modules/events/ghost_role/nightmare.dm
index 1fdebff0cd864..9f894c237d41c 100644
--- a/code/modules/events/ghost_role/nightmare.dm
+++ b/code/modules/events/ghost_role/nightmare.dm
@@ -31,7 +31,7 @@
player_mind.special_role = ROLE_NIGHTMARE
player_mind.add_antag_datum(/datum/antagonist/nightmare)
S.set_species(/datum/species/shadow/nightmare)
- playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(S, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.")
S.log_message("was spawned as a Nightmare by an event.", LOG_GAME)
spawned_mobs += S
diff --git a/code/modules/events/ghost_role/sentience.dm b/code/modules/events/ghost_role/sentience.dm
index 092813008458a..b12dd5c517423 100644
--- a/code/modules/events/ghost_role/sentience.dm
+++ b/code/modules/events/ghost_role/sentience.dm
@@ -104,9 +104,9 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list(
spawned_mobs += selected
to_chat(selected, span_userdanger("Hello world!"))
- to_chat(selected, "Due to freak radiation and/or chemicals \
+ to_chat(selected, span_warning("Due to freak radiation and/or chemicals \
and/or lucky chance, you have gained human level intelligence \
- and the ability to speak and understand human language!")
+ and the ability to speak and understand human language!"))
return SUCCESSFUL_SPAWN
diff --git a/code/modules/events/ghost_role/space_dragon.dm b/code/modules/events/ghost_role/space_dragon.dm
index 8a39d4a5daea5..56d82ff33c7cf 100644
--- a/code/modules/events/ghost_role/space_dragon.dm
+++ b/code/modules/events/ghost_role/space_dragon.dm
@@ -28,7 +28,7 @@
var/mob/living/basic/space_dragon/dragon = new(spawn_location)
dragon.key = chosen_one.key
dragon.mind.add_antag_datum(/datum/antagonist/space_dragon)
- playsound(dragon, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
+ playsound(dragon, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(dragon)] has been made into a Space Dragon by an event.")
dragon.log_message("was spawned as a Space Dragon by an event.", LOG_GAME)
spawned_mobs += dragon
diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm
index 1a1fa3ac67c0c..a0bc06718c08d 100644
--- a/code/modules/events/heart_attack.dm
+++ b/code/modules/events/heart_attack.dm
@@ -67,7 +67,7 @@
if(winner.has_status_effect(/datum/status_effect/exercised)) //Stuff that should "block" a heart attack rather than just deny eligibility for one goes here.
winner.visible_message(span_warning("[winner] grunts and clutches their chest for a moment, catching [winner.p_their()] breath."), span_medal("Your chest lurches in pain for a brief moment, which quickly fades. \
You feel like you've just avoided a serious health disaster."), span_hear("You hear someone's breathing sharpen for a moment, followed by a sigh of relief."), 4)
- winner.playsound_local(get_turf(winner), 'sound/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
+ winner.playsound_local(get_turf(winner), 'sound/effects/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
winner.Stun(3 SECONDS)
if(winner.client)
winner.client.give_award(/datum/award/achievement/misc/healthy, winner)
diff --git a/code/modules/events/meteors/dark_matteor_event.dm b/code/modules/events/meteors/dark_matteor_event.dm
index 86d38f93e6cca..412354b16f13d 100644
--- a/code/modules/events/meteors/dark_matteor_event.dm
+++ b/code/modules/events/meteors/dark_matteor_event.dm
@@ -25,7 +25,7 @@
spawn_meteor(list(/obj/effect/meteor/dark_matteor = 1), null, target)
/datum/round_event/dark_matteor/announce(fake)
- priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/misc/airraid.ogg')
+ priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/announcer/alarm/airraid.ogg')
/datum/event_admin_setup/warn_admin/dark_matteor
warning_text = "Dark Matt-eors spawn singularities. The round is ending once a dark matt-eor hits the station. Proceed anyways?"
diff --git a/code/modules/events/mice_migration.dm b/code/modules/events/mice_migration.dm
index 450f910080018..cf0071c2e5cd4 100644
--- a/code/modules/events/mice_migration.dm
+++ b/code/modules/events/mice_migration.dm
@@ -23,7 +23,7 @@
priority_announce("Due to [cause], [plural] [name] have [movement] \
into the [location].", "Migration Alert",
- 'sound/creatures/mousesqueek.ogg')
+ 'sound/mobs/non-humanoids/mouse/mousesqueek.ogg')
/datum/round_event/mice_migration/start()
SSminor_mapping.trigger_migration(rand(minimum_mice, maximum_mice))
diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm
index 0ca7800ee22d1..f96b73e66a295 100644
--- a/code/modules/events/portal_storm.dm
+++ b/code/modules/events/portal_storm.dm
@@ -72,11 +72,11 @@
/datum/round_event/portal_storm/announce(fake)
set waitfor = 0
- sound_to_playing_players('sound/magic/lightning_chargeup.ogg')
+ sound_to_playing_players('sound/effects/magic/lightning_chargeup.ogg')
sleep(8 SECONDS)
priority_announce("Massive bluespace anomaly detected en route to [station_name()]. Brace for impact.")
sleep(2 SECONDS)
- sound_to_playing_players('sound/magic/lightningbolt.ogg')
+ sound_to_playing_players('sound/effects/magic/lightningbolt.ogg')
/datum/round_event/portal_storm/tick()
spawn_effects(get_random_station_turf())
@@ -112,7 +112,7 @@
return
T = get_step(T, SOUTHWEST) //align center of image with turf
T.flick_overlay_static(storm_appearances[GET_TURF_PLANE_OFFSET(T) + 1], 15)
- playsound(T, 'sound/magic/lightningbolt.ogg', rand(80, 100), TRUE)
+ playsound(T, 'sound/effects/magic/lightningbolt.ogg', rand(80, 100), TRUE)
/datum/round_event/portal_storm/proc/spawn_hostile()
if(!hostile_types || !hostile_types.len)
diff --git a/code/modules/events/space_vines/vine_mutations.dm b/code/modules/events/space_vines/vine_mutations.dm
index c2f8e2d41393c..57c5c003fd749 100644
--- a/code/modules/events/space_vines/vine_mutations.dm
+++ b/code/modules/events/space_vines/vine_mutations.dm
@@ -180,7 +180,7 @@
if(thorn && prob(40) && !HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE)) //If we found the thorns mutation there is now a chance to get stung instead of lashed or smashed.
victim.apply_damage(50, BRUTE, def_zone = limb, wound_bonus = rand(-20,10), sharpness = SHARP_POINTY) //This one gets a bit lower damage because it ignores armor.
victim.Stun(1 SECONDS) //Stopped in place for a moment.
- playsound(living_mob, 'sound/weapons/pierce.ogg', 50, TRUE, -1)
+ playsound(living_mob, 'sound/items/weapons/pierce.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is nailed by a sharp thorn!"), \
span_userdanger("You are nailed by a sharp thorn!"))
log_combat(vine, living_mob, "aggressively pierced") //"Aggressively" for easy ctrl+F'ing in the attack logs.
@@ -188,7 +188,7 @@
if(prob(80) && !HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE))
victim.apply_damage(60, BRUTE, def_zone = limb, blocked = armor, wound_bonus = rand(-20,10), sharpness = SHARP_EDGED)
victim.Knockdown(2 SECONDS)
- playsound(victim, 'sound/weapons/whip.ogg', 50, TRUE, -1)
+ playsound(victim, 'sound/items/weapons/whip.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is lacerated by an outburst of vines!"), \
span_userdanger("You are lacerated by an outburst of vines!"))
log_combat(vine, living_mob, "aggressively lacerated")
@@ -203,7 +203,7 @@
log_combat(vine, living_mob, "aggressively smashed")
else //Living but not a carbon? Maybe a silicon? Can't be wounded so have a big chunk of simple bruteloss with no special effects. They can be entangled.
living_mob.adjustBruteLoss(75)
- playsound(living_mob, 'sound/weapons/whip.ogg', 50, TRUE, -1)
+ playsound(living_mob, 'sound/items/weapons/whip.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is brutally threshed by [vine]!"), \
span_userdanger("You are brutally threshed by [vine]!"))
log_combat(vine, living_mob, "aggressively spread into") //You aren't being attacked by the vines. You just happen to stand in their way.
diff --git a/code/modules/events/space_vines/vine_structure.dm b/code/modules/events/space_vines/vine_structure.dm
index a7b9aa2fce516..ceb5cca415a89 100644
--- a/code/modules/events/space_vines/vine_structure.dm
+++ b/code/modules/events/space_vines/vine_structure.dm
@@ -91,11 +91,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(src, 'sound/weapons/slash.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/slash.ogg', 50, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/spacevine/proc/on_entered(datum/source, atom/movable/movable)
SIGNAL_HANDLER
diff --git a/code/modules/events/supermatter_surge.dm b/code/modules/events/supermatter_surge.dm
index c7fb6f969d82b..8d8c50a69f92e 100644
--- a/code/modules/events/supermatter_surge.dm
+++ b/code/modules/events/supermatter_surge.dm
@@ -92,7 +92,7 @@
/datum/round_event/supermatter_surge/announce(fake)
var/class_to_announce = fake ? pick(1, 2, 3, 4) : surge_class
- priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [class_to_announce] Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg')
+ priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [class_to_announce] Supermatter Surge Alert", 'sound/machines/engine_alert/engine_alert3.ogg')
/datum/round_event/supermatter_surge/start()
engine.bullet_energy = surge_class + SURGE_BULLET_ENERGY_ADDITION
@@ -126,7 +126,7 @@
fakeable = FALSE
/datum/round_event/supermatter_surge/poly/announce(fake)
- priority_announce("The Crystal Integrity Monitoring System has detected unusual parrot type resonance in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class P Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg')
+ priority_announce("The Crystal Integrity Monitoring System has detected unusual parrot type resonance in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class P Supermatter Surge Alert", 'sound/machines/engine_alert/engine_alert3.ogg')
#undef SURGE_DURATION_MIN
#undef SURGE_DURATION_MAX
diff --git a/code/modules/events/wizard/fakeexplosion.dm b/code/modules/events/wizard/fakeexplosion.dm
index 78612ecf863b0..cb7c61823a162 100644
--- a/code/modules/events/wizard/fakeexplosion.dm
+++ b/code/modules/events/wizard/fakeexplosion.dm
@@ -7,5 +7,5 @@
description = "The nuclear explosion cutscene begins to play to scare the crew."
/datum/round_event/wizard/fake_explosion/start()
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(play_cinematic), /datum/cinematic/nuke/fake, world), 10 SECONDS)
diff --git a/code/modules/experisci/destructive_scanner.dm b/code/modules/experisci/destructive_scanner.dm
index d5d87eb631163..c742aaa68c028 100644
--- a/code/modules/experisci/destructive_scanner.dm
+++ b/code/modules/experisci/destructive_scanner.dm
@@ -33,7 +33,7 @@
var/aggressive = FALSE
for(var/mob/living/living_mob in pickup_zone)
if(!(obj_flags & EMAGGED) && ishuman(living_mob)) //Can only kill humans when emagged.
- playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 25)
say("Cannot scan with humans inside.")
return
aggressive = TRUE
diff --git a/code/modules/experisci/experiment/handlers/experiment_handler.dm b/code/modules/experisci/experiment/handlers/experiment_handler.dm
index bb0cc2fb0a5e3..0eaea94ff5807 100644
--- a/code/modules/experisci/experiment/handlers/experiment_handler.dm
+++ b/code/modules/experisci/experiment/handlers/experiment_handler.dm
@@ -93,7 +93,7 @@
SIGNAL_HANDLER
if ((isnull(selected_experiment) && !(config_flags & EXPERIMENT_CONFIG_ALWAYS_ACTIVE)) || (config_flags & EXPERIMENT_CONFIG_SILENT_FAIL))
return
- playsound(user, 'sound/machines/buzz-sigh.ogg', 25)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 25)
to_chat(user, span_notice("[target] is not related to your currently selected experiment."))
/**
@@ -130,7 +130,7 @@
playsound(user, 'sound/machines/ping.ogg', 25)
to_chat(user, span_notice("You scan [target]."))
else if(!(config_flags & EXPERIMENT_CONFIG_SILENT_FAIL))
- playsound(user, 'sound/machines/buzz-sigh.ogg', 25)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 25)
to_chat(user, span_notice("[target] is not related to your currently selected experiment."))
/**
@@ -141,7 +141,7 @@
var/atom/movable/our_scanner = parent
if (selected_experiment == null)
if(!(config_flags & EXPERIMENT_CONFIG_SILENT_FAIL))
- playsound(our_scanner, 'sound/machines/buzz-sigh.ogg', 25)
+ playsound(our_scanner, 'sound/machines/buzz/buzz-sigh.ogg', 25)
to_chat(our_scanner, span_notice("No experiment selected!"))
return
var/successful_scan
@@ -153,7 +153,7 @@
playsound(our_scanner, 'sound/machines/ping.ogg', 25)
to_chat(our_scanner, span_notice("The scan succeeds."))
else if(!(config_flags & EXPERIMENT_CONFIG_SILENT_FAIL))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 25)
our_scanner.say("The scan did not result in anything.")
/// Hooks on a successful autopsy experiment
diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm
index a3becfe671860..56de1a9b10f6a 100644
--- a/code/modules/fishing/aquarium/aquarium.dm
+++ b/code/modules/fishing/aquarium/aquarium.dm
@@ -35,7 +35,7 @@
var/last_feeding
/// Can fish reproduce in this quarium.
- var/allow_breeding = TRUE
+ var/reproduction_and_growth = TRUE
//This is the area where fish can swim
var/aquarium_zone_min_px = 2
@@ -309,7 +309,7 @@
. = ..()
.["fluidType"] = fluid_type
.["temperature"] = fluid_temp
- .["allowBreeding"] = allow_breeding
+ .["allowBreeding"] = reproduction_and_growth
.["fishData"] = list()
.["feedingInterval"] = feeding_interval / (1 MINUTES)
.["propData"] = list()
@@ -356,8 +356,8 @@
fluid_type = params["fluid"]
SEND_SIGNAL(src, COMSIG_AQUARIUM_FLUID_CHANGED, fluid_type)
. = TRUE
- if("allow_breeding")
- allow_breeding = !allow_breeding
+ if("reproduction_and_growth")
+ reproduction_and_growth = !reproduction_and_growth
. = TRUE
if("feeding_interval")
feeding_interval = params["feeding_interval"] MINUTES
@@ -396,7 +396,7 @@
possible_destinations_for_fish = get_adjacent_open_turfs(droploc)
else
possible_destinations_for_fish = list(droploc)
- playsound(src, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
for(var/atom/movable/fish in contents)
fish.forceMove(pick(possible_destinations_for_fish))
if(fluid_type != AQUARIUM_FLUID_AIR)
diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm
index c899c0c3abc55..905d3549128d5 100644
--- a/code/modules/fishing/aquarium/fish_analyzer.dm
+++ b/code/modules/fishing/aquarium/fish_analyzer.dm
@@ -128,7 +128,7 @@
"fish_food_color" = fishie.food::color,
"fish_min_temp" = fishie.required_temperature_min,
"fish_max_temp" = fishie.required_temperature_max,
- "fish_hunger" = HAS_TRAIT(fishie, TRAIT_FISH_NO_HUNGER) ? 0 : PERCENT(min((world.time - fishie.last_feeding) / fishie.feeding_frequency, 1)),
+ "fish_hunger" = HAS_TRAIT(fishie, TRAIT_FISH_NO_HUNGER) ? 0 : 1 - fishie.get_hunger(),
"fish_fluid_compatible" = aquarium ? compatible_fluid_type(fishie.required_fluid_type, aquarium.fluid_type) : null,
"fish_fluid_type" = fishie.required_fluid_type,
"fish_breed_timer" = round(max(fishie.breeding_wait - world.time, 0) / 10),
diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm
index 494d74c5ef772..c97669c41155f 100644
--- a/code/modules/fishing/fish/_fish.dm
+++ b/code/modules/fishing/fish/_fish.dm
@@ -16,7 +16,7 @@
attack_verb_continuous = list("slaps", "whacks")
attack_verb_simple = list("slap", "whack")
hitsound = SFX_DEFAULT_FISH_SLAP
- drop_sound = 'sound/creatures/fish/fish_drop1.ogg'
+ drop_sound = 'sound/mobs/non-humanoids/fish/fish_drop1.ogg'
pickup_sound = SFX_FISH_PICKUP
sound_vary = TRUE
obj_flags = UNIQUE_RENAME
@@ -52,7 +52,7 @@
var/datum/reagent/food = /datum/reagent/consumable/nutriment
/// How often the fish needs to be fed
var/feeding_frequency = 5 MINUTES
- /// Time of last feedeing
+ /// Time of last the fish was fed
var/last_feeding
/// Fish status
@@ -81,6 +81,8 @@
var/breeding_timeout = 2 MINUTES
/// If set, the fish can also breed with these fishes types
var/list/compatible_types
+ /// If set, when procreating these are the types of fish that will be generate instead of 'type'
+ var/list/spawn_types
/// A list of possible evolutions. If set, offsprings may be of a different, new fish type if conditions are met.
var/list/evolution_types
@@ -114,11 +116,15 @@
var/size
/// Average size for this fish type in centimeters. Will be used as gaussian distribution with 20% deviation for fishing, bought fish are always standard size
var/average_size = 50
+ /// The maximum size this fish can reach, calculated the first time update_size_and_weight() is called.
+ var/maximum_size
/// Weight in grams. Null until update_size_and_weight is called. Grind results scale with it. Don't think too hard how a trout could fit in a blender.
var/weight
/// Average weight for this fish type in grams
var/average_weight = 1000
+ /// The maximum weight this fish can reach, calculated the first time update_size_and_weight() is called.
+ var/maximum_weight
///The general deviation from the average weight and size this fish has in the wild
var/weight_size_deviation = 0.2
@@ -152,6 +158,7 @@
/obj/item/fish/Initialize(mapload, apply_qualities = TRUE)
. = ..()
+ base_icon_state = icon_state
//It's important that we register the signals before the component is attached.
RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, PROC_REF(update_aquarium_animation))
RegisterSignal(src, AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position))
@@ -253,20 +260,21 @@
//Remove the blood from the reagents holder and reward the player with some extra nutriment added to the fish.
var/datum/reagent/consumable/nutriment/protein/protein = reagents.has_reagent(/datum/reagent/consumable/nutriment/protein, check_subtypes = TRUE)
var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood)
- var/old_blood_volume = blood?.volume
+ var/old_blood_volume = blood ? blood.volume : 0 //we can't use the ?. operator since the above proc doesn't return null but 0
reagents.del_reagent(/datum/reagent/blood)
///Make space for the additional nutriment
- var/volume_mult = 1
- if(bites_amount)
- var/initial_bites_left = weight / FISH_WEIGHT_BITE_DIVISOR
- var/bites_left = initial_bites_left - bites_amount
- volume_mult = initial_bites_left / bites_left
- adjust_reagents_capacity((protein?.volume - old_blood_volume) * volume_mult)
-
- ///Add the extra nutriment
- if(protein)
- reagents.multiply_single_reagent(/datum/reagent/consumable/nutriment/protein, 2)
+ if(blood || protein)
+ var/volume_mult = 1
+ var/protein_volume = protein ? protein.volume : 0
+ if(bites_amount)
+ var/initial_bites_left = weight / FISH_WEIGHT_BITE_DIVISOR
+ var/bites_left = initial_bites_left - bites_amount
+ volume_mult = initial_bites_left / bites_left
+ adjust_reagents_capacity((protein_volume - old_blood_volume) * volume_mult)
+ ///Add the extra nutriment
+ if(protein)
+ reagents.multiply_single_reagent(/datum/reagent/consumable/nutriment/protein, 2)
var/datum/component/edible/edible = GetComponent(/datum/component/edible)
edible.foodtypes &= ~(RAW|GORE)
@@ -279,7 +287,8 @@
///Just kill the fish, again, and perhaps remove the infective comp.
/obj/item/fish/proc/on_fish_cooked_again(datum/source, cooking_time)
SIGNAL_HANDLER
- adjust_health(0)
+ if(!HAS_TRAIT(src, TRAIT_FISH_SURVIVE_COOKING))
+ adjust_health(0)
if(cooking_time >= FISH_SAFE_COOKING_DURATION)
well_cooked()
@@ -389,7 +398,7 @@
if(status == FISH_DEAD && icon_state_dead)
icon_state = icon_state_dead
else
- icon_state = initial(icon_state)
+ icon_state = base_icon_state
return ..()
/obj/item/fish/attackby(obj/item/item, mob/living/user, params)
@@ -412,7 +421,7 @@
. += span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].")
else
var/list/warnings = list()
- if(is_hungry())
+ if(is_starving())
warnings += "starving"
if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment())
warnings += "drowning"
@@ -445,7 +454,8 @@
remove_fillet_type()
if(size > FISH_SIZE_TWO_HANDS_REQUIRED)
qdel(GetComponent(/datum/component/two_handed))
-
+ else
+ maximum_size = min(new_size * 2, average_size * MAX_FISH_DEVIATION_COEFF)
size = new_size
var/init_icon_state = initial(inhand_icon_state)
@@ -481,7 +491,7 @@
add_fillet_type()
- var/make_edible = TRUE
+ var/make_edible = !weight
if(weight)
for(var/reagent_type in grind_results)
grind_results[reagent_type] /= max(FLOOR(weight/FISH_GRIND_RESULTS_WEIGHT_DIVISOR, 0.1), 0.1)
@@ -500,7 +510,8 @@
else
reagents.multiply_reagents(new_weight_ratio)
adjust_reagents_capacity(volume_diff)
- make_edible = FALSE
+ else
+ maximum_weight = min(new_weight * 2, new_weight * MAX_FISH_DEVIATION_COEFF)
weight = new_weight
@@ -537,6 +548,14 @@
AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, amount, time, screentip_verb = "Cut")
return amount //checked by a unit test
+/**
+ * Weight, unlike size, is a bit more exponential, but the world isn't perfect, so isn't my code.
+ * Anyway, this returns a gross estimate of the "rank" of "category" for our fish weight, based on how
+ * weight generaly scales up (250, 500, 1000, 2000, 4000 etc...)
+ */
+/obj/item/fish/proc/get_weight_rank()
+ return max(round(1 + log(2, weight/FISH_WEIGHT_FORCE_DIVISOR), 1), 1)
+
///Reset weapon-related variables of this items and recalculates those values based on the fish weight and size.
/obj/item/fish/proc/update_fish_force()
if(force >= 15 && hitsound == SFX_ALT_FISH_SLAP)
@@ -556,7 +575,7 @@
bare_wound_bonus = initial(bare_wound_bonus)
toolspeed = initial(toolspeed)
- var/weight_rank = max(round(1 + log(2, weight/FISH_WEIGHT_FORCE_DIVISOR), 1), 1)
+ var/weight_rank = get_weight_rank()
throw_range -= weight_rank
get_force_rank()
@@ -569,7 +588,6 @@
SEND_SIGNAL(src, COMSIG_FISH_FORCE_UPDATED, weight_rank, bonus_malus)
-
if(material_flags & MATERIAL_EFFECTS) //struck by metal gen or something.
for(var/current_material in custom_materials)
var/datum/material/material = GET_MATERIAL_REF(current_material)
@@ -620,7 +638,7 @@
fish_traits = fixed_traits?.Copy() || list()
var/list/same_traits = x_traits & y_traits
- var/list/all_traits = (x_traits|y_traits)-removed_traits
+ var/list/all_traits = (y_traits ? (x_traits|y_traits) : x_traits) - removed_traits
/// a list of incompatible traits that'll be filled as it goes on. Don't let any such trait pass onto the fish.
var/list/incompatible_traits = list()
@@ -649,6 +667,9 @@
if(trait_type in incompatible_traits)
continue
var/datum/fish_trait/trait = GLOB.fish_traits[trait_type]
+ if(isnull(trait))
+ stack_trace("Couldn't find trait [trait_type || "null"] in the global fish traits list")
+ continue
if(!isnull(trait.fish_whitelist) && !(type in trait.fish_whitelist))
continue
if(length(fish_traits & trait.incompatible_traits))
@@ -684,6 +705,15 @@
if(status != FISH_DEAD)
START_PROCESSING(SSobj, src)
+///Returns the 0-1 value for hunger
+/obj/item/fish/proc/get_hunger()
+ . = CLAMP01((world.time - last_feeding) / feeding_frequency)
+ if(HAS_TRAIT(src, TRAIT_FISH_NO_HUNGER))
+ return min(., 0.2)
+
+/obj/item/fish/proc/is_starving()
+ return get_hunger() >= 1
+
///Feed the fishes with the contents of the fish feed
/obj/item/fish/proc/feed(datum/reagents/fed_reagents)
if(status != FISH_ALIVE)
@@ -691,7 +721,7 @@
var/fed_reagent_type
if(fed_reagents.remove_reagent(food, 0.1))
fed_reagent_type = food
- last_feeding = world.time
+ sate_hunger()
else
var/datum/reagent/wrong_reagent = pick(fed_reagents.reagent_list)
if(!wrong_reagent)
@@ -700,6 +730,48 @@
fed_reagents.remove_reagent(fed_reagent_type, 0.1)
SEND_SIGNAL(src, COMSIG_FISH_FED, fed_reagents, fed_reagent_type)
+/**
+ * Base multiplier of the difference between current size and weight and their maximum value
+ * Used to calculate how much fish grow each time they're fed, alongside with the current hunger,
+ * and the current size and weight, meaning bigger fish naturally tend to grow way more slowly
+ * Growth peaks at 45% hunger but very rapidly wanes past that.
+ */
+#define FISH_GROWTH_MULT 0.38
+#define FISH_GROWTH_PEAK 0.45
+#define FISH_SIZE_WEIGHT_GROWTH_MALUS 0.5
+
+///Proc that should be called when the fish is fed. By default, it grows the fish depending on various variables.
+/obj/item/fish/proc/sate_hunger()
+ if(isaquarium(loc))
+ var/obj/structure/aquarium/aquarium = loc
+ if(!aquarium.reproduction_and_growth)
+ return
+ var/hunger = get_hunger()
+ if(hunger < 0.05) //don't bother growing for very small amounts.
+ return
+ last_feeding = world.time
+ var/new_size = size
+ var/new_weight = weight
+ var/hunger_mult
+ if(hunger < FISH_GROWTH_PEAK)
+ hunger_mult = hunger * (1/FISH_GROWTH_PEAK)
+ else
+ hunger_mult = 1 - (hunger - FISH_GROWTH_PEAK) * 4
+ if(hunger_mult <= 0)
+ return
+ if(size < maximum_size)
+ new_size += CEILING((maximum_size - size) * FISH_GROWTH_MULT / (w_class * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1)
+ new_size = min(new_size, maximum_size)
+ if(weight < maximum_weight)
+ new_weight += CEILING((maximum_weight - weight) * FISH_GROWTH_MULT / (get_weight_rank() * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1)
+ new_weight = min(new_weight, maximum_weight)
+ if(new_size != size || new_weight != weight)
+ update_size_and_weight(new_size, new_weight)
+
+#undef FISH_SIZE_WEIGHT_GROWTH_MALUS
+#undef FISH_GROWTH_MULT
+#undef FISH_GROWTH_PEAK
+
/obj/item/fish/proc/check_flopping()
if(QDELETED(src)) //we don't care anymore
return
@@ -908,7 +980,7 @@
animate(visual, pixel_y = py_min, time = 1) //flop to bottom and end current animation.
/// Checks if our current environment lets us live.
-/obj/item/fish/proc/proper_environment()
+/obj/item/fish/proc/proper_environment(temp_range_min = required_temperature_min, temp_range_max = required_temperature_max)
var/obj/structure/aquarium/aquarium = loc
if(istype(aquarium))
if(!compatible_fluid_type(required_fluid_type, aquarium.fluid_type))
@@ -932,14 +1004,11 @@
return FALSE
return TRUE
-/obj/item/fish/proc/is_hungry()
- return !HAS_TRAIT(src, TRAIT_FISH_NO_HUNGER) && world.time - last_feeding >= feeding_frequency
-
/obj/item/fish/proc/process_health(seconds_per_tick)
var/health_change_per_second = 0
if(!proper_environment())
health_change_per_second -= 3 //Dying here
- if(is_hungry())
+ if(is_starving())
health_change_per_second -= 0.5 //Starving
else
health_change_per_second += 0.5 //Slowly healing
@@ -976,7 +1045,7 @@
return FALSE
if(!being_targeted && length(aquarium.get_fishes()) >= AQUARIUM_MAX_BREEDING_POPULATION)
return FALSE
- return aquarium.allow_breeding && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait
+ return aquarium.reproduction_and_growth && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait
/obj/item/fish/proc/try_to_reproduce()
var/obj/structure/aquarium/aquarium = loc
@@ -1034,25 +1103,28 @@
if(evolution.check_conditions(second_fish, src, aquarium))
possible_evolutions += evolution
+ var/list/types = spawn_types || list(type)
if(length(possible_evolutions))
chosen_evolution = pick(possible_evolutions)
chosen_type = chosen_evolution.new_fish_type
else if(second_fish)
+ var/list/second_fish_types = second_fish.spawn_types || list(second_fish.type)
var/recessive = HAS_TRAIT(src, TRAIT_FISH_RECESSIVE)
var/recessive_partner = HAS_TRAIT(second_fish, TRAIT_FISH_RECESSIVE)
if(length(aquarium.tracked_fish_by_type[type]) >= stable_population)
if(recessive_partner && !recessive)
return FALSE
- chosen_type = second_fish.type
+ chosen_type = pick(second_fish_types)
else
if(recessive && !recessive_partner)
- chosen_type = second_fish.type
+ chosen_type = pick(second_fish_types)
else if(recessive_partner && !recessive)
- chosen_type = type
+ chosen_type = pick(types)
else
- chosen_type = pick(second_fish.type, type)
+ var/list/picks = second_fish_types + types
+ chosen_type = pick(picks)
else
- chosen_type = type
+ chosen_type = pick(types)
return create_offspring(chosen_type, second_fish, chosen_evolution)
@@ -1061,13 +1133,16 @@
//Try to pass down compatible traits based on inheritability
new_fish.inherit_traits(fish_traits, partner?.fish_traits, evolution?.new_traits, evolution?.removed_traits)
+ //We combine two methods for determining the size and weight of the offspring for less extreme results.
if(partner)
+ var/ratio_size = new_fish.average_size * (((size / average_size) + (partner.size / partner.average_size)) / 2)
var/mean_size = (size + partner.size)/2
+ var/ratio_weight = new_fish.average_size * (((weight / average_weight) + (partner.weight / partner.average_weight)) / 2)
var/mean_weight = (weight + partner.weight)/2
- new_fish.randomize_size_and_weight(mean_size, mean_weight, 0.3, TRUE)
+ new_fish.randomize_size_and_weight((mean_size + ratio_size) * 0.5, (mean_weight + ratio_weight) * 0.5, 0.3)
partner.breeding_wait = world.time + breeding_timeout
else //Make a close of this fish.
- new_fish.update_size_and_weight(size, weight, TRUE)
+ new_fish.update_size_and_weight(size, weight)
breeding_wait = world.time + breeding_timeout
@@ -1137,7 +1212,7 @@
flop_animation()
/obj/item/fish/proc/try_electrogenesis()
- if(status == FISH_DEAD || is_hungry())
+ if(status == FISH_DEAD || is_starving())
return
COOLDOWN_START(src, electrogenesis_cooldown, ELECTROGENESIS_DURATION + ELECTROGENESIS_VARIANCE)
var/fish_zap_range = 1
@@ -1161,7 +1236,7 @@
var/happiness_value = 0
if(fish_flags & FISH_FLAG_PETTED)
happiness_value++
- if(HAS_TRAIT(src, TRAIT_FISH_NO_HUNGER) || min((world.time - last_feeding) / feeding_frequency, 1) < 0.5)
+ if(get_hunger() < 0.5)
happiness_value++
var/obj/structure/aquarium/aquarium = loc
if(!istype(aquarium))
@@ -1213,14 +1288,14 @@
)
var/body_zone = pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)
user.apply_damage((force * 0.2) + w_class * 2, BRUTE, body_zone, user.run_armor_check(body_zone, MELEE))
- playsound(src,'sound/weapons/bite.ogg', 45, TRUE, -1)
+ playsound(src,'sound/items/weapons/bite.ogg', 45, TRUE, -1)
else
if(in_aquarium)
to_chat(user, span_notice("[src] dances around!"))
else
to_chat(user, span_notice("You pet [src] as you hold it."))
user.add_mood_event("petted_fish", /datum/mood_event/fish_petting, src, HAS_MIND_TRAIT(user, TRAIT_MORBID))
- playsound(src, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1)
+ playsound(src, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1)
addtimer(CALLBACK(src, PROC_REF(undo_petted)), 30 SECONDS)
return TRUE
diff --git a/code/modules/fishing/fish/fish_evolution.dm b/code/modules/fishing/fish/fish_evolution.dm
index d7b8f744f0a67..49eb3f46374bd 100644
--- a/code/modules/fishing/fish/fish_evolution.dm
+++ b/code/modules/fishing/fish/fish_evolution.dm
@@ -17,9 +17,9 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
///The obj/item/fish path of the new fish
var/obj/item/fish/new_fish_type = /obj/item/fish
///The minimum required temperature for the evolved fish to spawn
- var/required_temperature_min = MIN_AQUARIUM_TEMP
+ var/required_temperature_min = 0
///The maximum required temperature for the evolved fish to spawn
- var/required_temperature_max = MAX_AQUARIUM_TEMP
+ var/required_temperature_max = INFINITY
///A list of traits added to the new fish. These take priority over the parents' traits.
var/list/new_traits
///If set, these traits will be removed from the new fish.
@@ -40,24 +40,44 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
name = full_capitalize(initial(new_fish_type.name))
/**
* The main proc that checks whether this can happen or not.
- * Please do keep in mind a mate may not be present for fish with the
- * self-reproductive trait.
+ * Keep in mind the mate and aquarium arguments may be null if
+ * the fish is self-reproducing or this evolution is a result of a fish_growth component
*/
/datum/fish_evolution/proc/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
SHOULD_CALL_PARENT(TRUE)
- //chances are halved if only one parent has this evolution.
- var/real_probability = (mate && (type in mate.evolution_types)) ? probability : probability/2
- if(!prob(real_probability))
- return FALSE
- if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max))
+ if(aquarium)
+ //chances are halved if only one parent has this evolution.
+ var/real_probability = (mate && (type in mate.evolution_types)) ? probability : probability/2
+ if(!prob(real_probability))
+ return FALSE
+ if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max))
+ return FALSE
+ else if(!source.proper_environment(required_temperature_min, required_temperature_max))
return FALSE
return TRUE
+///This is called when the evolution is set as the result type of a fish_growth component
+/datum/fish_evolution/proc/growth_checks(obj/item/fish/source, seconds_per_tick, growth)
+ SIGNAL_HANDLER
+ SHOULD_CALL_PARENT(TRUE)
+ if(source.health < initial(source.health) * 0.5)
+ return COMPONENT_DONT_GROW
+ if(source.get_hunger() >= 0.5) //too hungry to grow
+ return COMPONENT_DONT_GROW
+ var/obj/structure/aquarium/aquarium = source.loc
+ if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled
+ return COMPONENT_DONT_GROW
+ else
+ aquarium = null
+ if(!check_conditions(source, aquarium = aquarium))
+ return COMPONENT_DONT_GROW
+
///Called by the fish analyzer right click function. Returns a text string used as tooltip.
/datum/fish_evolution/proc/get_evolution_tooltip()
. = ""
- if(required_temperature_min != MIN_AQUARIUM_TEMP || required_temperature_max != MAX_AQUARIUM_TEMP)
- . = "An aquarium temperature between [required_temperature_min] and [required_temperature_max] is required."
+ if(required_temperature_min > 0 || required_temperature_max < INFINITY)
+ var/max_temp = required_temperature_max < INFINITY ? " and [required_temperature_max]" : ""
+ . = "An aquarium temperature between [required_temperature_min][max_temp] is required."
if(conditions_note)
. += " [conditions_note]"
return .
@@ -134,3 +154,28 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution)
if(source.size >= double_avg_size && source.weight >= double_avg_weight && (/datum/fish_trait/aggressive in source.fish_traits))
return ..()
return FALSE
+
+/datum/fish_evolution/armored_pike
+ probability = 75
+ new_fish_type = /obj/item/fish/pike/armored
+ conditions_note = "The fish needs to have the stinger trait"
+
+/datum/fish_evolution/armored_pike/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+ if(HAS_TRAIT(source, TRAIT_FISH_STINGER))
+ return ..()
+ return FALSE
+
+/datum/fish_evolution/fritterish
+ new_fish_type = /obj/item/fish/fryish/fritterish
+ conditions_note = "Fryish will grow into it over time."
+
+/datum/fish_evolution/nessie
+ name = "???"
+ new_fish_type = /obj/item/fish/fryish/nessie
+ conditions_note = "The final stage of fritterfish growth. It gotta be big!"
+ show_result_on_wiki = FALSE
+
+/datum/fish_evolution/nessiefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium)
+ if(source.size >= (/obj/item/fish/fryish/fritterish::average_size * 1.5) && source.size >= (/obj/item/fish/fryish/fritterish::average_weight * 1.5))
+ return ..()
+ return FALSE
diff --git a/code/modules/fishing/fish/fish_traits.dm b/code/modules/fishing/fish/fish_traits.dm
index 8c96df6e4ac5f..22c7492fb8eaf 100644
--- a/code/modules/fishing/fish/fish_traits.dm
+++ b/code/modules/fishing/fish/fish_traits.dm
@@ -71,11 +71,11 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/// Proc used by both the predator and necrophage traits.
/datum/fish_trait/proc/eat_fish(obj/item/fish/predator, obj/item/fish/prey)
- predator.last_feeding = world.time
var/message = prey.status == FISH_DEAD ? "[src] eats [prey]'s carcass." : "[src] hunts down and eats [prey]."
predator.loc.visible_message(span_warning(message))
SEND_SIGNAL(prey, COMSIG_FISH_EATEN_BY_OTHER_FISH, predator)
qdel(prey)
+ predator.sate_hunger()
/**
@@ -141,8 +141,18 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
return
if(HAS_TRAIT(rod.bait, TRAIT_OMNI_BAIT))
return
- if(is_matching_bait(rod.bait, SSfishing.fish_properties[fish_type][FISH_PROPERTIES_FAV_BAIT])) //we like this bait anyway
- return
+
+ var/list/fav_baits = SSfishing.fish_properties[fish_type][FISH_PROPERTIES_FAV_BAIT]
+ for(var/identifier in fav_baits)
+ if(is_matching_bait(rod.bait, identifier)) //we like this bait anyway
+ return
+
+ var/list/bad_baits = SSfishing.fish_properties[fish_type][FISH_PROPERTIES_BAD_BAIT]
+ for(var/identifier in bad_baits)
+ if(is_matching_bait(rod.bait, identifier)) //we hate this bait.
+ .[MULTIPLICATIVE_FISHING_MOD] = 0
+ return
+
if(!HAS_TRAIT(rod.bait, TRAIT_GOOD_QUALITY_BAIT) && !HAS_TRAIT(rod.bait, TRAIT_GREAT_QUALITY_BAIT))
.[MULTIPLICATIVE_FISHING_MOD] = 0
@@ -270,7 +280,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
emulsified = TRUE
if(emulsified)
source.adjust_health(source.health + 3 * seconds_per_tick)
- source.last_feeding = world.time //it feeds on the emulsion!
+ source.sate_hunger()
/datum/fish_trait/emulsijack/apply_to_mob(mob/living/basic/mob)
. = ..()
@@ -299,7 +309,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/necrophage/proc/eat_dead_fishes(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(!source.is_hungry() || !isaquarium(source.loc))
+ if(source.get_hunger() > 0.75 || !isaquarium(source.loc))
return
for(var/obj/item/fish/victim in source.loc)
if(victim.status != FISH_DEAD || victim == source || HAS_TRAIT(victim, TRAIT_YUCKY_FISH))
@@ -326,6 +336,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
name = "Mateless"
catalog_description = "This fish cannot reproduce with other fishes."
incompatible_traits = list(/datum/fish_trait/crossbreeder)
+ spontaneous_manifest_types = list(/obj/item/fish/fryish = 100)
/datum/fish_trait/no_mating/apply_to_fish(obj/item/fish/fish)
. = ..()
@@ -387,7 +398,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
/datum/fish_trait/predator/proc/eat_fishes(obj/item/fish/source, seconds_per_tick)
SIGNAL_HANDLER
- if(!source.is_hungry() || !isaquarium(source.loc))
+ if(source.get_hunger() > 0.75 || !isaquarium(source.loc))
return
var/obj/structure/aquarium/aquarium = source.loc
for(var/obj/item/fish/victim in aquarium.get_fishes(TRUE, source))
@@ -618,7 +629,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
fish.damtype = BURN
fish.attack_verb_continuous = list("shocks", "zaps")
fish.attack_verb_simple = list("shock", "zap")
- fish.hitsound = 'sound/effects/sparks4.ogg'
+ fish.hitsound = 'sound/effects/sparks/sparks4.ogg'
/datum/fish_trait/electrogenesis/apply_to_mob(mob/living/basic/mob)
. = ..()
@@ -642,7 +653,12 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
inheritability = 80
diff_traits_inheritability = 35
catalog_description = "This fish is equipped with a sharp stringer or bill capable of delivering damage and toxins."
- spontaneous_manifest_types = list(/obj/item/fish/stingray = 100, /obj/item/fish/swordfish = 100, /obj/item/fish/chainsawfish = 100)
+ spontaneous_manifest_types = list(
+ /obj/item/fish/stingray = 100,
+ /obj/item/fish/swordfish = 100,
+ /obj/item/fish/chainsawfish = 100,
+ /obj/item/fish/pike/armored = 100,
+ )
/datum/fish_trait/stinger/apply_to_fish(obj/item/fish/fish)
. = ..()
@@ -723,6 +739,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
name = "Camouflage"
catalog_description = "This fish possess the ability to blend with its surroundings."
spontaneous_manifest_types = list(/obj/item/fish/squid = 35)
+ added_difficulty = 5
/datum/fish_trait/camouflage/minigame_mod(obj/item/fishing_rod/rod, mob/fisherman, datum/fishing_challenge/minigame)
minigame.special_effects |= FISHING_MINIGAME_RULE_CAMO
diff --git a/code/modules/fishing/fish/types/anadromous.dm b/code/modules/fishing/fish/types/anadromous.dm
index 4edbce5d0c348..5afb2cb48ce5a 100644
--- a/code/modules/fishing/fish/types/anadromous.dm
+++ b/code/modules/fishing/fish/types/anadromous.dm
@@ -53,6 +53,7 @@
required_temperature_min = MIN_AQUARIUM_TEMP+12
required_temperature_max = MIN_AQUARIUM_TEMP+27
fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive)
+ evolution_types = list(/datum/fish_evolution/armored_pike)
compatible_types = list(/obj/item/fish/pike/armored)
favorite_bait = list(
list(
diff --git a/code/modules/fishing/fish/types/freshwater.dm b/code/modules/fishing/fish/types/freshwater.dm
index 68254f661371d..fe0ff437c7d8c 100644
--- a/code/modules/fishing/fish/types/freshwater.dm
+++ b/code/modules/fishing/fish/types/freshwater.dm
@@ -175,7 +175,7 @@
/obj/item/fish/tadpole/Initialize(mapload, apply_qualities = TRUE)
. = ..()
- AddComponent(/datum/component/fish_growth, /mob/living/basic/frog, 100 / rand(2.5, 3 MINUTES) * 10)
+ AddComponent(/datum/component/fish_growth, /mob/living/basic/frog, rand(2.5, 3 MINUTES))
RegisterSignal(src, COMSIG_FISH_BEFORE_GROWING, PROC_REF(growth_checks))
RegisterSignal(src, COMSIG_FISH_FINISH_GROWING, PROC_REF(on_growth))
@@ -189,13 +189,13 @@
else
deltimer(del_timerid)
-/obj/item/fish/tadpole/proc/growth_checks(datum/source, seconds_per_tick)
+/obj/item/fish/tadpole/proc/growth_checks(datum/source, seconds_per_tick, growth)
SIGNAL_HANDLER
- var/hunger = CLAMP01((world.time - last_feeding) / feeding_frequency)
+ var/hunger = get_hunger()
if(hunger >= 0.7) //too hungry to grow
return COMPONENT_DONT_GROW
var/obj/structure/aquarium/aquarium = loc
- if(!aquarium.allow_breeding) //the aquarium has breeding disabled
+ if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
/obj/item/fish/tadpole/proc/on_growth(datum/source, mob/living/basic/frog/result)
diff --git a/code/modules/fishing/fish/types/mining.dm b/code/modules/fishing/fish/types/mining.dm
index 0b29143dd5b8e..9e44e08ae316c 100644
--- a/code/modules/fishing/fish/types/mining.dm
+++ b/code/modules/fishing/fish/types/mining.dm
@@ -29,8 +29,6 @@
var/anger = 0
///The lobstrosity type this matures into
var/lob_type = /mob/living/basic/mining/lobstrosity/juvenile/lava
- ///at which rate the crab gains maturation
- var/growth_rate = 100 / (10 MINUTES) * 10
/obj/item/fish/chasm_crab/Initialize(mapload, apply_qualities = TRUE)
. = ..()
@@ -57,39 +55,39 @@
if(FISH_SIZE_BULKY_MAX to INFINITY)
multiplier += 0.8
- if(weight <= 800)
- multiplier -= 0.1 * round((1000 - weight) / 200)
- else if(weight >= 1500)
- multiplier += min(0.1 * round((weight - 1000) / 500), 2)
- AddComponent(/datum/component/fish_growth, lob_type, initial(growth_rate) * multiplier)
+ if(weight <= (average_weight - 200))
+ multiplier -= 0.1 * round((average_weight - weight) / 200)
+ else if(weight >= (average_weight + 500))
+ multiplier += min(0.1 * round((weight - average_weight) / 500), 2)
+ AddComponent(/datum/component/fish_growth, lob_type, 10 MINUTES * multiplier)
/obj/item/fish/chasm_crab/pet_fish(mob/living/user)
. = ..()
if(.)
anger -= min(anger, 6.5)
-/obj/item/fish/chasm_crab/proc/growth_checks(datum/source, seconds_per_tick)
+/obj/item/fish/chasm_crab/proc/growth_checks(datum/source, seconds_per_tick, growth)
SIGNAL_HANDLER
- var/hunger = CLAMP01((world.time - last_feeding) / feeding_frequency)
+ var/hunger = get_hunger()
if(health <= initial(health) * 0.6 || hunger >= 0.6) //if too hurt or hungry, don't grow.
- anger += growth_rate * 2 * seconds_per_tick
+ anger += growth * 2
return COMPONENT_DONT_GROW
if(hunger >= 0.4) //I'm hungry and angry
- anger += growth_rate * 0.6 * seconds_per_tick
+ anger += growth * 0.6
if(!isaquarium(loc))
return
var/obj/structure/aquarium/aquarium = loc
- if(!aquarium.allow_breeding) //the aquarium has breeding disabled
+ if(!aquarium.reproduction_and_growth) //the aquarium has breeding disabled
return COMPONENT_DONT_GROW
if(!locate(/obj/item/aquarium_prop) in aquarium) //the aquarium deco is quite barren
- anger += growth_rate * 0.25 * seconds_per_tick
+ anger += growth * 0.25
var/fish_count = length(aquarium.get_fishes())
if(!ISINRANGE(fish_count, 3, AQUARIUM_MAX_BREEDING_POPULATION * 0.5)) //too lonely or overcrowded
- anger += growth_rate * 0.3 * seconds_per_tick
+ anger += growth * 0.3
if(fish_count > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate.
return COMPONENT_DONT_GROW
@@ -174,7 +172,7 @@
throw_text = "starts cooking in your hands, it may explode soon!",\
pass_maximum_callback = CALLBACK(src, PROC_REF(explode_on_user)),\
apply_bonus_callback = CALLBACK(src, PROC_REF(on_fish_land)),\
- sound_on_success = 'sound/weapons/parry.ogg',\
+ sound_on_success = 'sound/items/weapons/parry.ogg',\
effect_on_success = /obj/effect/temp_visual/guardian/phase,\
)
@@ -188,7 +186,7 @@
var/obj/item/bodypart/arm/active_arm = user.get_active_hand()
active_arm?.dismember()
to_chat(user, span_warning("[src] explodes!"))
- playsound(src, 'sound/effects/explosion1.ogg', 40, TRUE)
+ playsound(src, 'sound/effects/explosion/explosion1.ogg', 40, TRUE)
user.flash_act(1, 1)
qdel(src)
@@ -201,7 +199,7 @@
maximum_bonus = 30
/obj/item/fish/lavaloop/plasma_river/explode_on_user(mob/living/user)
- playsound(src, 'sound/effects/explosion1.ogg', 40, TRUE)
+ playsound(src, 'sound/effects/explosion/explosion1.ogg', 40, TRUE)
user.flash_act(1, 1)
user.apply_status_effect(/datum/status_effect/ice_block_talisman, 5 SECONDS)
qdel(src)
diff --git a/code/modules/fishing/fish/types/saltwater.dm b/code/modules/fishing/fish/types/saltwater.dm
index afb14436fadfc..74f1d1d32b9e0 100644
--- a/code/modules/fishing/fish/types/saltwater.dm
+++ b/code/modules/fishing/fish/types/saltwater.dm
@@ -129,8 +129,8 @@
sharpness = SHARP_EDGED
attack_verb_continuous = list("slashes", "cuts", "pierces")
attack_verb_simple = list("slash", "cut", "pierce")
- block_sound = 'sound/weapons/parry.ogg'
- hitsound = 'sound/weapons/rapierhit.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
demolition_mod = 0.75
attack_speed = 1 SECONDS
block_chance = 50
diff --git a/code/modules/fishing/fish/types/station.dm b/code/modules/fishing/fish/types/station.dm
index baf104ae14f2f..70e641fa3e900 100644
--- a/code/modules/fishing/fish/types/station.dm
+++ b/code/modules/fishing/fish/types/station.dm
@@ -6,7 +6,7 @@
sprite_height = 5
random_case_rarity = FISH_RARITY_RARE
required_fluid_type = AQUARIUM_FLUID_FRESHWATER
- stable_population = 10 //set by New, but this is the default config value
+ stable_population = /datum/config_entry/number/mice_roundstart::default //set by New, but this is the default config value
fillet_type = /obj/item/food/meat/slab/human/mutant/zombie //eww...
fish_traits = list(/datum/fish_trait/necrophage)
required_temperature_min = MIN_AQUARIUM_TEMP+15
@@ -100,3 +100,129 @@
/obj/item/fish/slimefish/get_base_edible_reagents_to_add()
return list(/datum/reagent/toxin/slimejelly = 5)
+
+/obj/item/fish/fryish
+ name = "fryish"
+ desc = "A youngling of the Fritterish family of delicious extremophile, piscine lifeforms. Just don't tell 'Mankind for Ethical Animal Treatment' you ate it."
+ icon_state = "fryish"
+ sprite_width = 3
+ sprite_height = 3
+ average_size = 20
+ average_weight = 400
+ random_case_rarity = FISH_RARITY_VERY_RARE
+ required_fluid_type = AQUARIUM_FLUID_ANY_WATER
+ stable_population = 8
+ fillet_type = /obj/item/food/nugget/fish
+ fish_traits = list(/datum/fish_trait/picky_eater, /datum/fish_trait/no_mating)
+ compatible_types = list(/obj/item/fish/fryish/fritterish, /obj/item/fish/fryish/nessie)
+ spawn_types = list(/obj/item/fish/fryish)
+ required_temperature_min = MIN_AQUARIUM_TEMP+50
+ required_temperature_max = MIN_AQUARIUM_TEMP+220
+ fish_movement_type = /datum/fish_movement/zippy
+ favorite_bait = list(
+ list(
+ FISH_BAIT_TYPE = FISH_BAIT_FOODTYPE,
+ FISH_BAIT_VALUE = FRIED,
+ )
+ )
+ disliked_bait = list(
+ list(
+ FISH_BAIT_TYPE = FISH_BAIT_FOODTYPE,
+ FISH_BAIT_VALUE = GROSS|RAW,
+ )
+ )
+ beauty = FISH_BEAUTY_GOOD
+ fishing_difficulty_modifier = -5
+ ///Is this a baitfish?
+ var/is_bait = TRUE
+ ///The evolution datum of the next thing we grow into, given time (and food)
+ var/next_type = /datum/fish_evolution/fritterish
+ ///How long does it take for us to grow up?
+ var/growth_time = 5 MINUTES
+
+/obj/item/fish/fryish/Initialize(mapload)
+ . = ..()
+ if(is_bait)
+ add_traits(list(TRAIT_FISHING_BAIT, TRAIT_GREAT_QUALITY_BAIT), INNATE_TRAIT)
+ ADD_TRAIT(src, TRAIT_FISH_SURVIVE_COOKING, INNATE_TRAIT)
+
+/obj/item/fish/fryish/update_size_and_weight(new_size = average_size, new_weight = average_weight)
+ . = ..()
+ if(!next_type)
+ return
+ var/multiplier = (size / average_size) * (weight / average_weight)
+
+ AddComponent(/datum/component/fish_growth, next_type, growth_time * multiplier, use_drop_loc = FALSE)
+
+/obj/item/fish/fryish/get_fish_taste()
+ return list("fried fish" = 1)
+
+/obj/item/fish/fryish/get_fish_taste_cooked()
+ return list("extra-fried fish" = 1)
+
+/obj/item/fish/fryish/get_food_types()
+ return FRIED|MEAT|SEAFOOD
+
+/obj/item/fish/fryish/get_base_edible_reagents_to_add()
+ var/list/return_list = list(
+ /datum/reagent/consumable/nutriment/protein = 2,
+ /datum/reagent/consumable/nutriment/fat = 1.5,
+ )
+ return return_list
+
+/obj/item/fish/fryish/fritterish
+ name = "fritterish"
+ desc = "A deliciously extremophile alien fish. This one looks like a taiyaki."
+ icon_state = "fritterish"
+ average_size = 50
+ average_weight = 1000
+ sprite_width = 5
+ sprite_height = 3
+ stable_population = 5
+ fish_traits = list(/datum/fish_trait/picky_eater)
+ compatible_types = list(/obj/item/fish/fryish, /obj/item/fish/fryish/nessie)
+ fish_movement_type = /datum/fish_movement
+ is_bait = FALSE
+ next_type = /datum/fish_evolution/nessie
+ growth_time = 10 MINUTES
+
+/obj/item/fish/fryish/fritterish/Initialize(mapload, apply_qualities = TRUE)
+ . = ..()
+ base_icon_state = icon_state = pick("fritterish", "bernardfish", "matthewfish")
+ switch(icon_state)
+ if("bernardfish")
+ name = "bernard-fish"
+ desc = "A deliciously> extremophile alien fish shaped like a dinosaur. Children love it."
+ sprite_width = 4
+ sprite_height = 6
+ if("matthewfish")
+ desc = "A deliciously> extremophile alien fish shaped like a pterodactyl. Children love it."
+ name = "matthew-fish"
+ sprite_width = 6
+
+/obj/item/fish/fryish/nessie
+ name = "nessie-fish"
+ desc = "A deliciously extremophile alien fish. This one is so big, you could write legends about it."
+ icon = 'icons/obj/aquarium/wide.dmi'
+ icon_state = "nessiefish"
+ base_pixel_x = -16
+ pixel_x = -16
+ sprite_width = 12
+ sprite_height = 4
+ average_size = 150
+ average_weight = 6000
+ health = 125
+ feeding_frequency = 5 MINUTES
+ breeding_timeout = 5 MINUTES
+ random_case_rarity = FISH_RARITY_NOPE
+ stable_population = 3
+ num_fillets = 2
+ fish_traits = list(/datum/fish_trait/picky_eater, /datum/fish_trait/predator)
+ compatible_types = list(/obj/item/fish/fryish, /obj/item/fish/fryish/fritterish)
+ spawn_types = list(/obj/item/fish/fryish/fritterish)
+ fish_movement_type = /datum/fish_movement
+ beauty = FISH_BEAUTY_EXCELLENT
+ fishing_difficulty_modifier = 45
+ fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG
+ is_bait = FALSE
+ next_type = null
diff --git a/code/modules/fishing/fish/types/syndicate.dm b/code/modules/fishing/fish/types/syndicate.dm
index bf99f4302818e..8732bb8f0bd3b 100644
--- a/code/modules/fishing/fish/types/syndicate.dm
+++ b/code/modules/fishing/fish/types/syndicate.dm
@@ -64,7 +64,7 @@
block_chance = 15
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
- hitsound = 'sound/weapons/chainsawhit.ogg'
+ hitsound = 'sound/items/weapons/chainsawhit.ogg'
sharpness = SHARP_EDGED
tool_behaviour = TOOL_SAW
toolspeed = 0.5
@@ -180,8 +180,8 @@
inhand_icon_state = "armored_pike"
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
- hitsound = 'sound/weapons/bladeslice.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
force = 20
sharpness = SHARP_EDGED
wound_bonus = -15
@@ -199,6 +199,7 @@
beauty = FISH_BEAUTY_GREAT
fishing_difficulty_modifier = 20
fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive, /datum/fish_trait/picky_eater, /datum/fish_trait/stinger)
+ evolution_types = null
compatible_types = list(/obj/item/fish/pike)
favorite_bait = list(
list(
diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm
index 7fb33da74ffad..7e46618accf72 100644
--- a/code/modules/fishing/fishing_equipment.dm
+++ b/code/modules/fishing/fishing_equipment.dm
@@ -99,7 +99,7 @@
if(!movable_target.safe_throw_at(destination, source.cast_range, 2, callback = throw_callback, gentle = please_be_gentle))
UnregisterSignal(movable_target, COMSIG_ATOM_PREHITBY)
else
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
/obj/item/fishing_line/auto_reel/proc/catch_it_chucklenut(obj/item/source, atom/hit_atom, datum/thrownthing/throwingdatum)
SIGNAL_HANDLER
diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm
index 073158b8fdc0f..bf4cd463ef1ab 100644
--- a/code/modules/fishing/fishing_minigame.dm
+++ b/code/modules/fishing/fishing_minigame.dm
@@ -304,6 +304,9 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
send_alert("stopped fishing")
complete(FALSE)
+///The multiplier of the fishing experience malus if the user's level is substantially above the difficulty.
+#define EXPERIENCE_MALUS_MULT 0.08
+
/datum/fishing_challenge/proc/complete(win = FALSE)
if(completed)
return
@@ -311,13 +314,14 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
completed = TRUE
if(phase == MINIGAME_PHASE)
remove_minigame_hud()
- if(!QDELETED(user))
- if(start_time)
- var/seconds_spent = (world.time - start_time) * 0.1
- if(!(special_effects & FISHING_MINIGAME_RULE_NO_EXP))
- user.mind?.adjust_experience(/datum/skill/fishing, round(seconds_spent * FISHING_SKILL_EXP_PER_SECOND * experience_multiplier))
- if(user.mind?.get_skill_level(/datum/skill/fishing) >= SKILL_LEVEL_LEGENDARY)
- user.client?.give_award(/datum/award/achievement/skill/legendary_fisher, user)
+ if(!QDELETED(user) && user.mind && start_time && !(special_effects & FISHING_MINIGAME_RULE_NO_EXP))
+ var/seconds_spent = (world.time - start_time) * 0.1
+ var/extra_exp_malus = user.mind.get_skill_level(/datum/skill/fishing) - difficulty * 0.1
+ if(extra_exp_malus > 0)
+ experience_multiplier /= (1 + extra_exp_malus * EXPERIENCE_MALUS_MULT)
+ user.mind.adjust_experience(/datum/skill/fishing, round(seconds_spent * FISHING_SKILL_EXP_PER_SECOND * experience_multiplier))
+ if(user.mind.get_skill_level(/datum/skill/fishing) >= SKILL_LEVEL_LEGENDARY)
+ user.client?.give_award(/datum/award/achievement/skill/legendary_fisher, user)
if(win)
if(reward_path != FISHING_DUD)
playsound(location, 'sound/effects/bigsplash.ogg', 100)
@@ -325,6 +329,8 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
if(!QDELETED(src))
qdel(src)
+#undef EXPERIENCE_MALUS_MULT
+
/datum/fishing_challenge/proc/start_baiting_phase(penalty = FALSE)
reward_path = null //In case we missed the biting phase, set the path back to null
var/wait_time
diff --git a/code/modules/fishing/fishing_portal_machine.dm b/code/modules/fishing/fishing_portal_machine.dm
index f322bf92c78e3..e1be9dc909ba9 100644
--- a/code/modules/fishing/fishing_portal_machine.dm
+++ b/code/modules/fishing/fishing_portal_machine.dm
@@ -125,11 +125,11 @@
var/datum/fish_source/stored = linked_fishing_spots[other_spot]
if(stored == source)
spot.balloon_alert(user, "already linked!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 15, FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 15, FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(HAS_TRAIT(spot, TRAIT_UNLINKABLE_FISHING_SPOT))
spot.balloon_alert(user, "unlinkable fishing spot!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 15, FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 15, FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
LAZYSET(linked_fishing_spots, spot, source)
RegisterSignal(spot, SIGNAL_REMOVETRAIT(TRAIT_FISHING_SPOT), PROC_REF(unlink_fishing_spot))
@@ -284,7 +284,11 @@
var/list/choices = list()
for(var/radial_name in available_fish_sources)
var/datum/fish_source/source = available_fish_sources[radial_name]
- choices[radial_name] = image(icon = 'icons/hud/radial_fishing.dmi', icon_state = source.radial_state)
+ var/mutable_appearance/radial_icon = mutable_appearance('icons/hud/radial_fishing.dmi', source.radial_state)
+ if(!istype(source, /datum/fish_source/portal))
+ //a little star on the top-left to distinguishs them from standard portals.
+ radial_icon.add_overlay('icons/hud/radial_fishing.dmi', "linked_source")
+ choices[radial_name] = radial_icon
var/choice = show_radial_menu(user, src, choices, radius = 38, custom_check = CALLBACK(src, TYPE_PROC_REF(/atom, can_interact), user), tooltips = TRUE)
if(!choice || !can_interact(user))
diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm
index f18637e3b35ca..23aabcc3ece7c 100644
--- a/code/modules/fishing/fishing_rod.dm
+++ b/code/modules/fishing/fishing_rod.dm
@@ -142,12 +142,19 @@
/obj/item/fishing_rod/proc/reel(mob/user)
if(DOING_INTERACTION_WITH_TARGET(user, currently_hooked))
return
+
playsound(src, SFX_REEL, 50, vary = FALSE)
- if(!do_after(user, 0.8 SECONDS, currently_hooked, timed_action_flags = IGNORE_USER_LOC_CHANGE|IGNORE_TARGET_LOC_CHANGE, extra_checks = CALLBACK(src, PROC_REF(fishing_line_check))))
+ var/time = (0.8 - round(user.mind?.get_skill_level(/datum/skill/fishing) * 0.04, 0.1)) SECONDS
+ if(!do_after(user, time, currently_hooked, timed_action_flags = IGNORE_USER_LOC_CHANGE|IGNORE_TARGET_LOC_CHANGE, extra_checks = CALLBACK(src, PROC_REF(fishing_line_check))))
return
+
if(currently_hooked.anchored || currently_hooked.move_resist >= MOVE_FORCE_STRONG)
balloon_alert(user, "[currently_hooked.p_they()] won't budge!")
return
+
+ //About thirty minutes of non-stop reeling to get from zero to master... not worth it but hey, you do what you do.
+ user.mind?.adjust_experience(/datum/skill/fishing, time * 0.13)
+
//Try to move it 'till it's under the user's feet, then try to pick it up
if(isitem(currently_hooked))
var/obj/item/item = currently_hooked
@@ -195,6 +202,15 @@
fishing_line = null
currently_hooked = null
+/obj/item/fishing_rod/proc/get_cast_range(mob/living/user)
+ . = cast_range
+ if(!user && !isliving(loc))
+ return
+ user = loc
+ if(!user.is_holding(src) || !user.mind)
+ return
+ . += round(user.mind.get_skill_level(/datum/skill/fishing) * 0.3)
+
/obj/item/fishing_rod/dropped(mob/user, silent)
. = ..()
QDEL_NULL(fishing_line)
@@ -215,7 +231,7 @@
SIGNAL_HANDLER
. = NONE
- if(!CheckToolReach(src, source.target, cast_range))
+ if(!CheckToolReach(src, source.target, get_cast_range()))
qdel(source)
return BEAM_CANCEL_DRAW
@@ -260,7 +276,7 @@
return
casting = TRUE
var/obj/projectile/fishing_cast/cast_projectile = new(get_turf(src))
- cast_projectile.range = cast_range
+ cast_projectile.range = get_cast_range(user)
cast_projectile.owner = src
cast_projectile.original = target
cast_projectile.fired_from = src
@@ -555,7 +571,7 @@
inhand_icon_state = active ? "rod" : null // When inactive, there is no inhand icon_state.
if(user)
balloon_alert(user, active ? "extended" : "collapsed")
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
update_appearance()
QDEL_NULL(fishing_line)
return COMPONENT_NO_DEFAULT_MESSAGE
diff --git a/code/modules/fishing/sources/source_types.dm b/code/modules/fishing/sources/source_types.dm
index ef2cdf87989a1..2f56ffaad3cd1 100644
--- a/code/modules/fishing/sources/source_types.dm
+++ b/code/modules/fishing/sources/source_types.dm
@@ -1,4 +1,6 @@
/datum/fish_source/ocean
+ radial_state = "seaboat"
+ overlay_state = "portal_ocean"
fish_table = list(
FISHING_DUD = 10,
/obj/effect/spawner/message_in_a_bottle = 4,
@@ -33,9 +35,13 @@
/datum/fish_source/ocean/beach
catalog_description = "Beach shore water"
+ radial_state = "palm_beach"
+ overlay_state = "portal_beach"
/datum/fish_source/ice_fishing
catalog_description = "Ice-covered water"
+ radial_state = "ice"
+ overlay_state = "portal_ocean"
fish_table = list(
FISHING_DUD = 4,
/obj/item/fish/arctic_char = 5,
@@ -47,6 +53,8 @@
/datum/fish_source/river
catalog_description = "River water"
+ radial_state = "river"
+ overlay_state = "portal_river"
fish_table = list(
FISHING_DUD = 4,
/obj/item/fish/goldfish = 5,
@@ -72,6 +80,7 @@
/datum/fish_source/sand
catalog_description = "Sand"
+ radial_state = "palm_beach"
fish_table = list(
FISHING_DUD = 8,
/obj/item/fish/sand_crab = 10,
@@ -84,6 +93,7 @@
/datum/fish_source/cursed_spring
catalog_description = null //it's a secret (sorta, I know you're reading this)
+ radial_state = "cursed"
fish_table = list(
FISHING_DUD = 2,
/obj/item/fish/soul = 3,
@@ -295,12 +305,13 @@
/datum/fish_source/chasm
catalog_description = "Chasm depths"
background = "background_lavaland"
+ radial_state = "ground_hole"
+ overlay_state = "portal_chasm"
fish_table = list(
FISHING_DUD = 5,
/obj/item/fish/chasm_crab = 15,
/datum/chasm_detritus = 30,
)
-
fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5
/datum/fish_source/chasm/on_start_fishing(obj/item/fishing_rod/rod, mob/fisherman, atom/parent)
@@ -324,6 +335,8 @@
/datum/fish_source/lavaland
catalog_description = "Lava vents"
background = "background_lavaland"
+ radial_state = "lava"
+ overlay_state = "portal_lava"
fish_table = list(
FISHING_DUD = 5,
/obj/item/stack/ore/slag = 20,
@@ -367,6 +380,7 @@
/datum/fish_source/moisture_trap
catalog_description = "Moisture trap basins"
+ radial_state = "garbage"
fish_table = list(
FISHING_DUD = 20,
/obj/item/fish/ratfish = 10,
@@ -376,6 +390,7 @@
/datum/fish_source/toilet
catalog_description = "Station toilets"
+ radial_state = "toilet"
duds = list("ewww... nothing", "it was nothing", "it was toilet paper", "it was flushed away", "the hook is empty", "where's the damn money?!")
fish_table = list(
FISHING_DUD = 18,
@@ -435,6 +450,8 @@
/datum/fish_source/oil_well
catalog_description = "Oil wells"
+ radial_state = "oil"
+ overlay_state = "portal_chasm" //close enough to pitch black
fish_table = list(
FISHING_DUD = 5,
/obj/item/fish/boned = 10,
@@ -457,6 +474,7 @@
/datum/fish_source/hydro_tray
catalog_description = "Hydroponics trays"
+ radial_state = "hydro"
fish_table = list(
FISHING_DUD = 25,
/obj/item/food/grown/grass = 25,
@@ -561,3 +579,24 @@
var/picked_path = pick(seeds_to_draw_from)
return new picked_path(get_turf(fishing_spot))
+
+/datum/fish_source/deepfryer
+ catalog_description = "Deep Fryers"
+ radial_state = "fryer"
+ fish_table = list(
+ /obj/item/food/badrecipe = 15,
+ /obj/item/food/nugget = 5,
+ /obj/item/fish/fryish = 40,
+ /obj/item/fish/fryish/fritterish = 4,
+ /obj/item/fish/fryish/nessie = 1,
+ )
+ fish_counts = list(
+ /obj/item/fish/fryish = 10,
+ /obj/item/fish/fryish/fritterish = 4,
+ /obj/item/fish/fryish/nessie = 1,
+ )
+ fish_count_regen = list(
+ /obj/item/fish/fryish = 2 MINUTES,
+ /obj/item/fish/fryish/fritterish = 6 MINUTES,
+ )
+ fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 13
diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm
index 92270d92fd0e2..313bc29d199dc 100644
--- a/code/modules/food_and_drinks/machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm
@@ -63,6 +63,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
reagents.add_reagent(/datum/reagent/consumable/nutriment/fat/oil, 25)
fry_loop = new(src, FALSE)
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_cleaned))
+ AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/deepfryer)
+ AddElement(/datum/element/fish_safe_storage) //Prevents fryish and fritterish from dying inside the deepfryer.
/obj/machinery/deepfryer/Destroy()
QDEL_NULL(fry_loop)
diff --git a/code/modules/food_and_drinks/machinery/food_cart.dm b/code/modules/food_and_drinks/machinery/food_cart.dm
index a14ea3593c51a..9549bcc7ae1d3 100644
--- a/code/modules/food_and_drinks/machinery/food_cart.dm
+++ b/code/modules/food_and_drinks/machinery/food_cart.dm
@@ -86,7 +86,7 @@
return
var/obj/item/card/id/id_card = user.get_idcard(hand_first = TRUE)
if(!check_access(id_card))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
to_chat(user, span_notice("You attempt to [unpacked ? "pack up" :"unpack"] [src]..."))
if(!do_after(user, 5 SECONDS, src))
diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm
index 92687aee8d088..ae6e3945c94b4 100644
--- a/code/modules/food_and_drinks/machinery/microwave.dm
+++ b/code/modules/food_and_drinks/machinery/microwave.dm
@@ -489,7 +489,7 @@
vampire_charging_enabled = !vampire_charging_enabled
balloon_alert(user, "set to [vampire_charging_enabled ? "charge" : "cook"]")
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, FALSE)
if(HAS_SILICON_ACCESS(user))
visible_message(span_notice("[user] sets \the [src] to [vampire_charging_enabled ? "charge" : "cook"]."), blind_message = span_notice("You hear \the [src] make an informative beep!"))
return CLICK_ACTION_SUCCESS
@@ -588,11 +588,11 @@
if(wire_disabled)
audible_message("[src] buzzes.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
if(cell_powered && cell?.charge < TIER_1_CELL_CHARGE_RATE * efficiency)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
balloon_alert(cooker, "no power draw!")
return
@@ -628,7 +628,7 @@
/obj/machinery/microwave/proc/wzhzhzh()
if(cell_powered && !isnull(cell))
if(!cell.use(TIER_1_CELL_CHARGE_RATE * efficiency))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
visible_message(span_notice("\The [src] turns on."), null, span_hear("You hear a microwave humming."))
@@ -808,13 +808,13 @@
/obj/machinery/microwave/proc/vampire(mob/cooker)
var/obj/item/modular_computer/vampire_pda = LAZYACCESS(ingredients, 1)
if(isnull(vampire_pda))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
after_finish_loop()
return
vampire_cell = vampire_pda.internal_cell
if(isnull(vampire_cell))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
after_finish_loop()
return
@@ -825,7 +825,7 @@
/obj/machinery/microwave/proc/charge(mob/cooker)
if(!vampire_charging_capable)
balloon_alert(cooker, "needs upgrade!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
if(operating || broken > 0 || panel_open || dirty >= MAX_MICROWAVE_DIRTINESS)
@@ -833,14 +833,14 @@
if(wire_disabled)
audible_message("[src] buzzes.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
return
// We should only be charging PDAs
for(var/atom/movable/potential_item as anything in ingredients)
if(!istype(potential_item, /obj/item/modular_computer))
balloon_alert(cooker, "pda only!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
eject()
return
diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm
index ed0e5d448cd25..0481d1c491092 100644
--- a/code/modules/food_and_drinks/machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/machinery/smartfridge.dm
@@ -253,9 +253,9 @@
/obj/machinery/smartfridge/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
- playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src.loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/smartfridge/atom_break(damage_flag)
playsound(src, SFX_SHATTER, 50, TRUE)
diff --git a/code/modules/food_and_drinks/machinery/stove_component.dm b/code/modules/food_and_drinks/machinery/stove_component.dm
index fcbabafc2d12c..c5e32b541995e 100644
--- a/code/modules/food_and_drinks/machinery/stove_component.dm
+++ b/code/modules/food_and_drinks/machinery/stove_component.dm
@@ -132,7 +132,7 @@
real_parent.balloon_alert_to_viewers("burners [on ? "on" : "off"]")
playsound(real_parent, 'sound/machines/click.ogg', 30, TRUE)
- playsound(real_parent, on ? 'sound/items/welderactivate.ogg' : 'sound/items/welderdeactivate.ogg', 15, TRUE)
+ playsound(real_parent, on ? 'sound/items/tools/welderactivate.ogg' : 'sound/items/tools/welderdeactivate.ogg', 15, TRUE)
/datum/component/stove/proc/on_attackby(obj/machinery/source, obj/item/attacking_item, mob/user, params)
SIGNAL_HANDLER
diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm
index add7eecaf92e0..ef88a4758115b 100644
--- a/code/modules/food_and_drinks/plate.dm
+++ b/code/modules/food_and_drinks/plate.dm
@@ -121,7 +121,7 @@
icon = 'icons/obj/service/kitchen.dmi'
icon_state = "plate_shard1"
base_icon_state = "plate_shard"
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
w_class = WEIGHT_CLASS_TINY
force = 5
throwforce = 5
diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
index 77606f5e37210..78b9623c3a016 100644
--- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
+++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
@@ -224,7 +224,7 @@
/datum/chemical_reaction/drink/moscow_mule
results = list(/datum/reagent/consumable/ethanol/moscow_mule = 10)
required_reagents = list(/datum/reagent/consumable/sol_dry = 5, /datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ice = 1)
- mix_sound = 'sound/effects/bubbles2.ogg'
+ mix_sound = 'sound/effects/bubbles/bubbles2.ogg'
/datum/chemical_reaction/drink/painkiller
results = list(/datum/reagent/consumable/ethanol/painkiller = 10)
@@ -361,7 +361,7 @@
/datum/chemical_reaction/drink/bacchus_blessing
results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4)
required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1)
- mix_message = "The mixture turns to a sickening froth."
+ mix_message = span_warning("The mixture turns to a sickening froth.")
/datum/chemical_reaction/drink/eggnog
results = list(/datum/reagent/consumable/ethanol/eggnog = 15)
@@ -378,7 +378,7 @@
results = list(/datum/reagent/consumable/ethanol/quadruple_sec = 15)
required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 5, /datum/reagent/consumable/triple_citrus = 5, /datum/reagent/consumable/grenadine = 5)
mix_message = "The snap of a taser emanates clearly from the mixture as it settles."
- mix_sound = 'sound/weapons/taser.ogg'
+ mix_sound = 'sound/items/weapons/taser.ogg'
reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
/datum/chemical_reaction/drink/grasshopper
@@ -394,7 +394,7 @@
results = list(/datum/reagent/consumable/ethanol/quintuple_sec = 15)
required_reagents = list(/datum/reagent/consumable/ethanol/quadruple_sec = 5, /datum/reagent/consumable/nutriment/soup/clown_tears = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5)
mix_message = "Judgement is upon you."
- mix_sound = 'sound/items/airhorn2.ogg'
+ mix_sound = 'sound/items/airhorn/airhorn2.ogg'
reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
/datum/chemical_reaction/drink/bastion_bourbon
@@ -481,14 +481,14 @@
results = list(/datum/reagent/consumable/ethanol/wizz_fizz = 3)
required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/ethanol/champagne = 1)
mix_message = "The beverage starts to froth with an almost mystical zeal!"
- mix_sound = 'sound/effects/bubbles2.ogg'
+ mix_sound = 'sound/effects/bubbles/bubbles2.ogg'
reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
/datum/chemical_reaction/drink/bug_spray
results = list(/datum/reagent/consumable/ethanol/bug_spray = 5)
required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/lemon_lime = 1, /datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vodka = 1)
mix_message = "The faint aroma of summer camping trips wafts through the air; but what's that buzzing noise?"
- mix_sound = 'sound/creatures/bee.ogg'
+ mix_sound = 'sound/mobs/non-humanoids/bee/bee.ogg'
reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER
/datum/chemical_reaction/drink/jack_rose
@@ -579,7 +579,7 @@
results = list(/datum/reagent/consumable/ethanol/pod_tesla = 15)
required_reagents = list(/datum/reagent/consumable/ethanol/telepole = 5, /datum/reagent/consumable/ethanol/brave_bull = 3, /datum/reagent/consumable/ethanol/admiralty = 5)
mix_message = "Arcs of lightning fly from the mixture."
- mix_sound = 'sound/weapons/zapbang.ogg'
+ mix_sound = 'sound/items/weapons/zapbang.ogg'
/datum/chemical_reaction/drink/yuyakita
results = list(/datum/reagent/consumable/ethanol/yuyakita = 4)
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm
index 282910007dd81..e4ef45bda7fde 100644
--- a/code/modules/food_and_drinks/recipes/food_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm
@@ -274,7 +274,7 @@
results = list(/datum/reagent/consumable/salt = 2)
required_reagents = list(/datum/reagent/consumable/liquidelectricity/enriched = 2, /datum/reagent/consumable/grounding_solution = 1)
mix_message = "The mixture lets off a sharp snap as the electricity discharges."
- mix_sound = 'sound/weapons/taser.ogg'
+ mix_sound = 'sound/items/weapons/taser.ogg'
reaction_flags = REACTION_INSTANT
/datum/chemical_reaction/food/martian_batter
diff --git a/code/modules/food_and_drinks/restaurant/customers/_customer.dm b/code/modules/food_and_drinks/restaurant/customers/_customer.dm
index 646f31f80c67b..653ce81b7d461 100644
--- a/code/modules/food_and_drinks/restaurant/customers/_customer.dm
+++ b/code/modules/food_and_drinks/restaurant/customers/_customer.dm
@@ -39,7 +39,7 @@
///Base icon state for the customer
var/base_icon_state = "amerifat"
///Sound to use when this robot type speaks
- var/speech_sound = 'sound/creatures/tourist/tourist_talk.ogg'
+ var/speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk.ogg'
/// Is this unique once per venue?
var/is_unique = FALSE
@@ -159,7 +159,7 @@
first_warning_line = "Get your hands off of me!"
second_warning_line = "Do not touch me you filthy animal, last warning!"
self_defense_line = "I will break you like a baguette!"
- speech_sound = 'sound/creatures/tourist/tourist_talk_french.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_french.ogg'
orderable_objects = list(
VENUE_RESTAURANT = list(
/obj/item/food/baguette = 20,
@@ -203,7 +203,7 @@
first_warning_line = "Don't touch me you pervert!"
second_warning_line = "I'm going to go super saiyan if you touch me again! Last warning!"
self_defense_line = "OMAE WA MO, SHINDEROU!"
- speech_sound = 'sound/creatures/tourist/tourist_talk_japanese1.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_japanese1.ogg'
orderable_objects = list(
VENUE_RESTAURANT = list(
/datum/custom_order/icecream = 4,
@@ -247,7 +247,7 @@
first_warning_line = "Hey, only my employer gets to mess with me like that."
second_warning_line = "Leave me be, I'm trying to focus. Last warning!"
self_defense_line = "I didn't want it to end up like this."
- speech_sound = 'sound/creatures/tourist/tourist_talk_japanese2.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_japanese2.ogg'
orderable_objects = list(
VENUE_RESTAURANT = list(
/datum/reagent/consumable/nutriment/soup/miso = 6,
@@ -282,7 +282,7 @@
second_warning_line = "Last warning! I'll destroy you!"
self_defense_line = "Flap attack!"
- speech_sound = 'sound/creatures/tourist/tourist_talk_moth.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_moth.ogg'
orderable_objects = list(
VENUE_RESTAURANT = list(
@@ -342,7 +342,7 @@
/datum/customer_data/mexican
base_icon_state = "mexican"
prefix_file = "strings/names/mexican_prefix.txt"
- speech_sound = 'sound/creatures/tourist/tourist_talk_mexican.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_mexican.ogg'
clothing_sets = list("mexican_poncho")
orderable_objects = list(
VENUE_RESTAURANT = list(
@@ -382,7 +382,7 @@
/datum/customer_data/british
base_icon_state = "british"
prefix_file = "strings/names/british_prefix.txt"
- speech_sound = 'sound/creatures/tourist/tourist_talk_british.ogg'
+ speech_sound = 'sound/mobs/non-humanoids/tourist/tourist_talk_british.ogg'
friendly_pull_line = "I don't enjoy being pulled around like this."
first_warning_line = "Our sovereign lord the Queen chargeth and commandeth all persons, being assembled, immediately to disperse themselves."
diff --git a/code/modules/hallucination/battle.dm b/code/modules/hallucination/battle.dm
index 4bbf9729cdeb6..2a50093e3a015 100644
--- a/code/modules/hallucination/battle.dm
+++ b/code/modules/hallucination/battle.dm
@@ -11,9 +11,9 @@
/// The upper end to how many shots we'll fire.
var/shots_to_fire_upper_range = 6
/// The sound effect we play when we "fire" a shot.
- var/fire_sound = 'sound/weapons/gun/shotgun/shot.ogg'
+ var/fire_sound = 'sound/items/weapons/gun/shotgun/shot.ogg'
/// The sound we make when our shot actually "hits" "someone".
- var/hit_person_sound = 'sound/weapons/pierce.ogg'
+ var/hit_person_sound = 'sound/items/weapons/pierce.ogg'
/// The sound we make when our shot misses someone and "hits" a "wall".
var/hit_wall_sound = SFX_RICOCHET
/// The number of successful hits required to "down" the "someone" we're firing at.
@@ -60,9 +60,9 @@
/datum/hallucination/battle/gun/disabler
shots_to_fire_lower_range = 5
shots_to_fire_upper_range = 10
- fire_sound = 'sound/weapons/taser2.ogg'
- hit_person_sound = 'sound/weapons/tap.ogg'
- hit_wall_sound = 'sound/weapons/effects/searwall.ogg'
+ fire_sound = 'sound/items/weapons/taser2.ogg'
+ hit_person_sound = 'sound/items/weapons/tap.ogg'
+ hit_wall_sound = 'sound/items/weapons/effects/searwall.ogg'
number_of_hits_to_end = 3
chance_to_fall = 70
@@ -70,9 +70,9 @@
/datum/hallucination/battle/gun/laser
shots_to_fire_lower_range = 5
shots_to_fire_upper_range = 10
- fire_sound = 'sound/weapons/laser.ogg'
- hit_person_sound = 'sound/weapons/sear.ogg'
- hit_wall_sound = 'sound/weapons/effects/searwall.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
+ hit_person_sound = 'sound/items/weapons/sear.ogg'
+ hit_wall_sound = 'sound/items/weapons/effects/searwall.ogg'
number_of_hits_to_end = 4
chance_to_fall = 70
@@ -82,7 +82,7 @@
/datum/hallucination/battle/stun_prod/start()
var/turf/source = random_far_turf()
- hallucinator.playsound_local(source, 'sound/weapons/egloves.ogg', 40, TRUE)
+ hallucinator.playsound_local(source, 'sound/items/weapons/egloves.ogg', 40, TRUE)
hallucinator.playsound_local(source, SFX_BODYFALL, 25, TRUE)
addtimer(CALLBACK(src, PROC_REF(fake_cuff), source), 2 SECONDS)
return TRUE
@@ -92,7 +92,7 @@
if(QDELETED(src) || QDELETED(hallucinator) || !source)
return
- hallucinator.playsound_local(source, 'sound/weapons/cablecuff.ogg', 15, TRUE)
+ hallucinator.playsound_local(source, 'sound/items/weapons/cablecuff.ogg', 15, TRUE)
qdel(src)
/// A hallucination of someone being stun batonned, and subsequently harmbatonned.
@@ -101,7 +101,7 @@
/datum/hallucination/battle/harm_baton/start()
var/turf/source = random_far_turf()
- hallucinator.playsound_local(source, 'sound/weapons/egloves.ogg', 40, TRUE)
+ hallucinator.playsound_local(source, 'sound/items/weapons/egloves.ogg', 40, TRUE)
hallucinator.playsound_local(source, SFX_BODYFALL, 25, TRUE)
addtimer(CALLBACK(src, PROC_REF(harmbaton_loop), source, rand(5, 12)), 2 SECONDS)
@@ -126,7 +126,7 @@
/datum/hallucination/battle/e_sword/start()
var/turf/source = random_far_turf()
- hallucinator.playsound_local(source, 'sound/weapons/saberon.ogg', 15, 1)
+ hallucinator.playsound_local(source, 'sound/items/weapons/saberon.ogg', 15, 1)
addtimer(CALLBACK(src, PROC_REF(stab_loop), source, rand(4, 8)), CLICK_CD_MELEE)
return TRUE
@@ -136,10 +136,10 @@
return
if(stabs_remaining >= 1)
- hallucinator.playsound_local(source, 'sound/weapons/blade1.ogg', 50, TRUE)
+ hallucinator.playsound_local(source, 'sound/items/weapons/blade1.ogg', 50, TRUE)
else
- hallucinator.playsound_local(source, 'sound/weapons/saberoff.ogg', 15, TRUE)
+ hallucinator.playsound_local(source, 'sound/items/weapons/saberoff.ogg', 15, TRUE)
qdel(src)
return
diff --git a/code/modules/hallucination/bolted_airlocks.dm b/code/modules/hallucination/bolted_airlocks.dm
index 9fb180dfcae11..a275c775d66ec 100644
--- a/code/modules/hallucination/bolted_airlocks.dm
+++ b/code/modules/hallucination/bolted_airlocks.dm
@@ -102,11 +102,11 @@
/obj/effect/client_image_holder/hallucination/fake_door_lock/show_image_to(mob/show_to)
. = ..()
- show_to.playsound_local(get_turf(src), 'sound/machines/boltsdown.ogg', 30, FALSE, 3)
+ show_to.playsound_local(get_turf(src), 'sound/machines/airlock/boltsdown.ogg', 30, FALSE, 3)
/obj/effect/client_image_holder/hallucination/fake_door_lock/hide_image_from(mob/show_to)
. = ..()
- show_to.playsound_local(get_turf(src), 'sound/machines/boltsup.ogg', 30, FALSE, 3)
+ show_to.playsound_local(get_turf(src), 'sound/machines/airlock/boltsup.ogg', 30, FALSE, 3)
/obj/effect/client_image_holder/hallucination/fake_door_lock/proc/on_airlock_deleted(datum/source)
SIGNAL_HANDLER
diff --git a/code/modules/hallucination/delusions.dm b/code/modules/hallucination/delusions.dm
index 106988f73277b..0760d05ff46c6 100644
--- a/code/modules/hallucination/delusions.dm
+++ b/code/modules/hallucination/delusions.dm
@@ -94,7 +94,7 @@
if(play_wabbajack)
to_chat(hallucinator, span_hear("...wabbajack...wabbajack..."))
- hallucinator.playsound_local(get_turf(hallucinator), 'sound/magic/staff_change.ogg', 50, TRUE)
+ hallucinator.playsound_local(get_turf(hallucinator), 'sound/effects/magic/staff_change.ogg', 50, TRUE)
if(duration > 0)
QDEL_IN(src, duration)
@@ -191,7 +191,7 @@
/datum/hallucination/delusion/preset/cyborg/make_delusion_image(mob/over_who)
. = ..()
- hallucinator.playsound_local(get_turf(over_who), 'sound/voice/liveagain.ogg', 75, TRUE)
+ hallucinator.playsound_local(get_turf(over_who), 'sound/mobs/non-humanoids/cyborg/liveagain.ogg', 75, TRUE)
/datum/hallucination/delusion/preset/ghost
delusion_icon_file = 'icons/mob/simple/mob.dmi'
diff --git a/code/modules/hallucination/fake_sound.dm b/code/modules/hallucination/fake_sound.dm
index f5d750a114427..1d93be83f947c 100644
--- a/code/modules/hallucination/fake_sound.dm
+++ b/code/modules/hallucination/fake_sound.dm
@@ -34,40 +34,40 @@
/datum/hallucination/fake_sound/normal/airlock
volume = 30
- sound_type = 'sound/machines/airlock.ogg'
+ sound_type = 'sound/machines/airlock/airlock.ogg'
/datum/hallucination/fake_sound/normal/airlock_pry
volume = 100
- sound_type = 'sound/machines/airlock_alien_prying.ogg'
+ sound_type = 'sound/machines/airlock/airlock_alien_prying.ogg'
/datum/hallucination/fake_sound/normal/airlock_pry/play_fake_sound(turf/source, sound_to_play)
. = ..()
- queue_fake_sound(source, 'sound/machines/airlockforced.ogg', 50, TRUE, delay = 5 SECONDS)
+ queue_fake_sound(source, 'sound/machines/airlock/airlockforced.ogg', 50, TRUE, delay = 5 SECONDS)
/datum/hallucination/fake_sound/normal/console
volume = 25
- sound_type = 'sound/machines/terminal_prompt.ogg'
+ sound_type = 'sound/machines/terminal/terminal_prompt.ogg'
/datum/hallucination/fake_sound/normal/boom
- sound_type = list('sound/effects/explosion1.ogg', 'sound/effects/explosion2.ogg')
+ sound_type = list('sound/effects/explosion/explosion1.ogg', 'sound/effects/explosion/explosion2.ogg')
/datum/hallucination/fake_sound/normal/distant_boom
- sound_type = 'sound/effects/explosionfar.ogg'
+ sound_type = 'sound/effects/explosion/explosionfar.ogg'
/datum/hallucination/fake_sound/normal/glass
- sound_type = list('sound/effects/glassbr1.ogg', 'sound/effects/glassbr2.ogg', 'sound/effects/glassbr3.ogg')
+ sound_type = list('sound/effects/glass/glassbr1.ogg', 'sound/effects/glass/glassbr2.ogg', 'sound/effects/glass/glassbr3.ogg')
/datum/hallucination/fake_sound/normal/alarm
- volume = 100
- sound_type = 'sound/machines/alarm.ogg'
+ volume = 70
+ sound_type = 'sound/announcer/alarm/nuke_alarm.ogg'
/datum/hallucination/fake_sound/normal/beepsky
volume = 35
- sound_type = 'sound/voice/beepsky/freeze.ogg'
+ sound_type = 'sound/mobs/non-humanoids/beepsky/freeze.ogg'
/datum/hallucination/fake_sound/normal/mech
volume = 40
- sound_type = 'sound/mecha/mechstep.ogg'
+ sound_type = 'sound/vehicles/mecha/mechstep.ogg'
/// The turf the mech started walking from.
var/turf/mech_source
/// What dir is the mech walking?
@@ -106,15 +106,15 @@
addtimer(CALLBACK(src, PROC_REF(mech_walk)), 1 SECONDS)
/datum/hallucination/fake_sound/normal/wall_deconstruction
- sound_type = 'sound/items/welder.ogg'
+ sound_type = 'sound/items/tools/welder.ogg'
/datum/hallucination/fake_sound/normal/wall_deconstruction/play_fake_sound(turf/source, sound_to_play)
. = ..()
- queue_fake_sound(source, 'sound/items/welder2.ogg', delay = 10.5 SECONDS)
- queue_fake_sound(source, 'sound/items/ratchet.ogg', delay = 12 SECONDS)
+ queue_fake_sound(source, 'sound/items/tools/welder2.ogg', delay = 10.5 SECONDS)
+ queue_fake_sound(source, 'sound/items/tools/ratchet.ogg', delay = 12 SECONDS)
/datum/hallucination/fake_sound/normal/door_hacking
- sound_type = 'sound/items/screwdriver.ogg'
+ sound_type = 'sound/items/tools/screwdriver.ogg'
volume = 30
/datum/hallucination/fake_sound/normal/door_hacking/play_fake_sound(turf/source, sound_to_play)
@@ -124,20 +124,20 @@
var/hacking_time = rand(4 SECONDS, 8 SECONDS)
// Multitool sound.
- queue_fake_sound(source, 'sound/weapons/empty.ogg', delay = 0.8 SECONDS)
+ queue_fake_sound(source, 'sound/items/weapons/empty.ogg', delay = 0.8 SECONDS)
if(hacking_time > 4.5 SECONDS)
// Another multitool sound if the hacking time is long.
- queue_fake_sound(source, 'sound/weapons/empty.ogg', delay = 3 SECONDS)
+ queue_fake_sound(source, 'sound/items/weapons/empty.ogg', delay = 3 SECONDS)
if(prob(50))
// Bonus multitool sound, rapidly after the last.
- queue_fake_sound(source, 'sound/weapons/empty.ogg', delay = 3.5 SECONDS)
+ queue_fake_sound(source, 'sound/items/weapons/empty.ogg', delay = 3.5 SECONDS)
if(hacking_time > 5.5 SECONDS)
// A final multitool sound if the hacking time is very long.
- queue_fake_sound(source, 'sound/weapons/empty.ogg', delay = 5 SECONDS)
+ queue_fake_sound(source, 'sound/items/weapons/empty.ogg', delay = 5 SECONDS)
// Crowbarring it open.
- queue_fake_sound(source, 'sound/machines/airlockforced.ogg', delay = hacking_time)
+ queue_fake_sound(source, 'sound/machines/airlock/airlockforced.ogg', delay = hacking_time)
/datum/hallucination/fake_sound/normal/steam
volume = 75
@@ -146,7 +146,7 @@
/datum/hallucination/fake_sound/normal/flash
random_hallucination_weight = 2 // "it's revs"
volume = 90
- sound_type = 'sound/weapons/flash.ogg'
+ sound_type = 'sound/items/weapons/flash.ogg'
/datum/hallucination/fake_sound/weird
abstract_hallucination_parent = /datum/hallucination/fake_sound/weird
@@ -167,24 +167,24 @@
sound_vary = FALSE
no_source = TRUE
sound_type = list(
- 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg',
- 'sound/ambience/antag/clockcultalr.ogg',
- 'sound/ambience/antag/heretic/heretic_gain.ogg',
- 'sound/ambience/antag/ling_alert.ogg',
- 'sound/ambience/antag/malf.ogg',
- 'sound/ambience/antag/ops.ogg',
- 'sound/ambience/antag/spy.ogg',
- 'sound/ambience/antag/tatoralert.ogg',
+ 'sound/music/antag/bloodcult/bloodcult_gain.ogg',
+ 'sound/music/antag/clockcultalr.ogg',
+ 'sound/music/antag/heretic/heretic_gain.ogg',
+ 'sound/music/antag/ling_alert.ogg',
+ 'sound/music/antag/malf.ogg',
+ 'sound/music/antag/ops.ogg',
+ 'sound/music/antag/spy.ogg',
+ 'sound/music/antag/traitor/tatoralert.ogg',
)
/datum/hallucination/fake_sound/weird/chimp_event
volume = 90
sound_vary = FALSE
no_source = TRUE
- sound_type = 'sound/ambience/antag/monkey.ogg'
+ sound_type = 'sound/music/antag/monkey.ogg'
/datum/hallucination/fake_sound/weird/colossus
- sound_type = 'sound/magic/clockwork/invoke_general.ogg'
+ sound_type = 'sound/effects/magic/clockwork/invoke_general.ogg'
/datum/hallucination/fake_sound/weird/creepy
@@ -197,11 +197,11 @@
volume = 40
sound_vary = FALSE
no_source = TRUE
- sound_type = 'sound/magic/curse.ogg'
+ sound_type = 'sound/effects/magic/curse.ogg'
/datum/hallucination/fake_sound/weird/game_over
sound_vary = FALSE
- sound_type = 'sound/misc/compiler-failure.ogg'
+ sound_type = 'sound/machines/compiler/compiler-failure.ogg'
/datum/hallucination/fake_sound/weird/hallelujah
sound_vary = FALSE
@@ -219,15 +219,15 @@
/datum/hallucination/fake_sound/weird/laugher
sound_type = list(
- 'sound/voice/human/womanlaugh.ogg',
- 'sound/voice/human/manlaugh1.ogg',
- 'sound/voice/human/manlaugh2.ogg',
+ 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh2.ogg',
)
/datum/hallucination/fake_sound/weird/phone
volume = 15
sound_vary = FALSE
- sound_type = 'sound/weapons/ring.ogg'
+ sound_type = 'sound/items/weapons/ring.ogg'
/datum/hallucination/fake_sound/weird/phone/play_fake_sound(turf/source, sound_to_play)
for(var/next_ring in 1 to 3)
@@ -237,25 +237,25 @@
/datum/hallucination/fake_sound/weird/spell
sound_type = list(
- 'sound/magic/disintegrate.ogg',
- 'sound/magic/ethereal_enter.ogg',
- 'sound/magic/ethereal_exit.ogg',
- 'sound/magic/fireball.ogg',
- 'sound/magic/forcewall.ogg',
- 'sound/magic/teleport_app.ogg',
- 'sound/magic/teleport_diss.ogg',
+ 'sound/effects/magic/disintegrate.ogg',
+ 'sound/effects/magic/ethereal_enter.ogg',
+ 'sound/effects/magic/ethereal_exit.ogg',
+ 'sound/effects/magic/fireball.ogg',
+ 'sound/effects/magic/forcewall.ogg',
+ 'sound/effects/magic/teleport_app.ogg',
+ 'sound/effects/magic/teleport_diss.ogg',
)
/datum/hallucination/fake_sound/weird/spell/just_jaunt // A few antags use jaunts, so this sound specifically is fun to isolate
- sound_type = 'sound/magic/ethereal_enter.ogg'
+ sound_type = 'sound/effects/magic/ethereal_enter.ogg'
/datum/hallucination/fake_sound/weird/summon_sound // Heretic circle sound, notably
volume = 75
- sound_type = 'sound/magic/castsummon.ogg'
+ sound_type = 'sound/effects/magic/castsummon.ogg'
/datum/hallucination/fake_sound/weird/tesloose
volume = 35
- sound_type = 'sound/magic/lightningbolt.ogg'
+ sound_type = 'sound/effects/magic/lightningbolt.ogg'
/datum/hallucination/fake_sound/weird/tesloose/play_fake_sound(turf/source, sound_to_play)
. = ..()
@@ -266,21 +266,21 @@
random_hallucination_weight = 2 // Some of these are ambience sounds too
volume = 25
sound_type = list(
- 'sound/voice/lowHiss1.ogg',
- 'sound/voice/lowHiss2.ogg',
- 'sound/voice/lowHiss3.ogg',
- 'sound/voice/lowHiss4.ogg',
- 'sound/voice/hiss1.ogg',
- 'sound/voice/hiss2.ogg',
- 'sound/voice/hiss3.ogg',
- 'sound/voice/hiss4.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss1.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss2.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss3.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss4.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss1.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss2.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss3.ogg',
+ 'sound/mobs/non-humanoids/hiss/hiss4.ogg',
)
/datum/hallucination/fake_sound/weird/radio_static
volume = 75
no_source = TRUE
sound_vary = FALSE
- sound_type = 'sound/hallucinations/radio_static.ogg'
+ sound_type = 'sound/effects/hallucinations/radio_static.ogg'
/datum/hallucination/fake_sound/weird/ice_crack
random_hallucination_weight = 2
diff --git a/code/modules/hallucination/inhand_fake_item.dm b/code/modules/hallucination/inhand_fake_item.dm
index ba791f3a56c7c..de3b6b99411e9 100644
--- a/code/modules/hallucination/inhand_fake_item.dm
+++ b/code/modules/hallucination/inhand_fake_item.dm
@@ -72,7 +72,7 @@
var/obj/item/melee/energy/sword/saber/sabre_color = pick(subtypesof(/obj/item/melee/energy/sword/saber))
// Yes this can break if someone changes esword icon stuff
hallucinated_item.icon_state = "[hallucinated_item.icon_state]_on_[initial(sabre_color.sword_color_icon)]"
- hallucinator.playsound_local(get_turf(hallucinator), 'sound/weapons/saberon.ogg', 35, TRUE)
+ hallucinator.playsound_local(get_turf(hallucinator), 'sound/items/weapons/saberon.ogg', 35, TRUE)
return hallucinated_item
@@ -109,7 +109,7 @@
if(prob(15))
// Yes this can break if someone changse grenade icon stuff
hallucinated_item.icon_state = "[hallucinated_item.icon_state]_active"
- hallucinator.playsound_local(get_turf(hallucinator), 'sound/weapons/armbomb.ogg', 60, TRUE)
+ hallucinator.playsound_local(get_turf(hallucinator), 'sound/items/weapons/armbomb.ogg', 60, TRUE)
to_chat(hallucinator, span_warning("You prime [hallucinated_item]! 5 seconds!"))
return hallucinated_item
diff --git a/code/modules/hallucination/nearby_fake_item.dm b/code/modules/hallucination/nearby_fake_item.dm
index 4864594c9a50b..10d08ee47c96f 100644
--- a/code/modules/hallucination/nearby_fake_item.dm
+++ b/code/modules/hallucination/nearby_fake_item.dm
@@ -67,12 +67,12 @@
image_icon_state = "e_sword_on_red"
/datum/hallucination/nearby_fake_item/e_sword/generate_fake_image(mob/living/carbon/human/holder, file)
- hallucinator.playsound_local(get_turf(holder), 'sound/weapons/saberon.ogg', 35, TRUE)
+ hallucinator.playsound_local(get_turf(holder), 'sound/items/weapons/saberon.ogg', 35, TRUE)
return ..()
/datum/hallucination/nearby_fake_item/e_sword/remove_image(mob/living/carbon/human/holder)
if(!QDELETED(holder))
- hallucinator.playsound_local(get_turf(holder), 'sound/weapons/saberoff.ogg', 35, TRUE)
+ hallucinator.playsound_local(get_turf(holder), 'sound/items/weapons/saberoff.ogg', 35, TRUE)
return ..()
/datum/hallucination/nearby_fake_item/e_sword/double_bladed
@@ -115,12 +115,12 @@
image_icon_state = "arm_blade"
/datum/hallucination/nearby_fake_item/armblade/generate_fake_image(mob/living/carbon/human/holder, file)
- hallucinator.playsound_local(get_turf(holder), 'sound/effects/blobattack.ogg', 35, TRUE)
+ hallucinator.playsound_local(get_turf(holder), 'sound/effects/blob/blobattack.ogg', 35, TRUE)
return ..()
/datum/hallucination/nearby_fake_item/armblade/remove_image(mob/living/carbon/human/holder)
if(!QDELETED(holder))
- hallucinator.playsound_local(get_turf(holder), 'sound/effects/blobattack.ogg', 35, TRUE)
+ hallucinator.playsound_local(get_turf(holder), 'sound/effects/blob/blobattack.ogg', 35, TRUE)
return ..()
/datum/hallucination/nearby_fake_item/ttv
diff --git a/code/modules/hallucination/station_message.dm b/code/modules/hallucination/station_message.dm
index 976b88f662097..9441cdeb42a5a 100644
--- a/code/modules/hallucination/station_message.dm
+++ b/code/modules/hallucination/station_message.dm
@@ -42,23 +42,23 @@
var/static/list/ascension_bodies = list(
list(
"text" = "Fear the blaze, for the Ashlord, %FAKENAME% has ascended! The flames shall consume all!",
- "sound" = 'sound/ambience/antag/heretic/ascend_blade.ogg',
+ "sound" = 'sound/music/antag/heretic/ascend_blade.ogg',
),
list(
"text" = "Master of blades, the Torn Champion's disciple, %FAKENAME% has ascended! Their steel is that which will cut reality in a maelstom of silver!",
- "sound" = 'sound/ambience/antag/heretic/ascend_blade.ogg',
+ "sound" = 'sound/music/antag/heretic/ascend_blade.ogg',
),
list(
"text" = "Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, %FAKENAME% has ascended! Fear the ever twisting hand!",
- "sound" = 'sound/ambience/antag/heretic/ascend_flesh.ogg',
+ "sound" = 'sound/music/antag/heretic/ascend_flesh.ogg',
),
list(
"text" = "Fear the decay, for the Rustbringer, %FAKENAME% has ascended! None shall escape the corrosion!",
- "sound" = 'sound/ambience/antag/heretic/ascend_rust.ogg',
+ "sound" = 'sound/music/antag/heretic/ascend_rust.ogg',
),
list(
"text" = "The nobleman of void %FAKENAME% has arrived, stepping along the Waltz that ends worlds!",
- "sound" = 'sound/ambience/antag/heretic/ascend_void.ogg',
+ "sound" = 'sound/music/antag/heretic/ascend_void.ogg',
)
)
@@ -95,7 +95,7 @@
priority_announce(
text = "Figments from an eldritch god are being summoned by [totally_real_cult_leader.real_name] into [fake_summon_area] from an unknown dimension. Disrupt the ritual at all costs!",
title = "[command_name()] Higher Dimensional Affairs",
- sound = 'sound/ambience/antag/bloodcult/bloodcult_scribe.ogg',
+ sound = 'sound/music/antag/bloodcult/bloodcult_scribe.ogg',
has_important_message = TRUE,
players = list(hallucinator),
)
@@ -111,7 +111,7 @@
/datum/hallucination/station_message/supermatter_delam
/datum/hallucination/station_message/supermatter_delam/start()
- SEND_SOUND(hallucinator, 'sound/magic/charge.ogg')
+ SEND_SOUND(hallucinator, 'sound/effects/magic/charge.ogg')
to_chat(hallucinator, span_boldannounce("You feel reality distort for a moment..."))
return ..()
@@ -129,5 +129,5 @@
if(QDELETED(src))
return
- hallucinator.playsound_local(get_turf(hallucinator), 'sound/effects/explosion_distant.ogg', 50, FALSE, pressure_affected = FALSE)
+ hallucinator.playsound_local(get_turf(hallucinator), 'sound/effects/explosion/explosion_distant.ogg', 50, FALSE, pressure_affected = FALSE)
qdel(src)
diff --git a/code/modules/hallucination/stray_bullet.dm b/code/modules/hallucination/stray_bullet.dm
index 63e19c1bb89f2..13ace2933350a 100644
--- a/code/modules/hallucination/stray_bullet.dm
+++ b/code/modules/hallucination/stray_bullet.dm
@@ -189,7 +189,7 @@
name = "bullet"
hal_icon_state = "bullet"
hal_fire_sound = "gunshot"
- hal_hitsound = 'sound/weapons/pierce.ogg'
+ hal_hitsound = 'sound/items/weapons/pierce.ogg'
hal_hitsound_wall = SFX_RICOCHET
hal_impact_effect = "impact_bullet"
hal_impact_effect_wall = "impact_bullet"
@@ -203,9 +203,9 @@
name = "laser"
damage_type = BURN
hal_icon_state = "laser"
- hal_fire_sound = 'sound/weapons/laser.ogg'
- hal_hitsound = 'sound/weapons/sear.ogg'
- hal_hitsound_wall = 'sound/weapons/effects/searwall.ogg'
+ hal_fire_sound = 'sound/items/weapons/laser.ogg'
+ hal_hitsound = 'sound/items/weapons/sear.ogg'
+ hal_hitsound_wall = 'sound/items/weapons/effects/searwall.ogg'
hal_impact_effect = "impact_laser"
hal_impact_effect_wall = "impact_laser_wall"
hit_duration = 4
@@ -225,8 +225,8 @@
damage_type = BURN
hal_icon_state = "spark"
color = COLOR_YELLOW
- hal_fire_sound = 'sound/weapons/taser.ogg'
- hal_hitsound = 'sound/weapons/taserhit.ogg'
+ hal_fire_sound = 'sound/items/weapons/taser.ogg'
+ hal_hitsound = 'sound/items/weapons/taserhit.ogg'
hal_hitsound_wall = null
hal_impact_effect = null
hal_impact_effect_wall = null
@@ -250,9 +250,9 @@
name = "disabler beam"
damage_type = STAMINA
hal_icon_state = "omnilaser"
- hal_fire_sound = 'sound/weapons/taser2.ogg'
- hal_hitsound = 'sound/weapons/tap.ogg'
- hal_hitsound_wall = 'sound/weapons/effects/searwall.ogg'
+ hal_fire_sound = 'sound/items/weapons/taser2.ogg'
+ hal_hitsound = 'sound/items/weapons/tap.ogg'
+ hal_hitsound_wall = 'sound/items/weapons/effects/searwall.ogg'
hal_impact_effect = "impact_laser_blue"
hal_impact_effect_wall = null
hit_duration = 4
@@ -269,7 +269,7 @@
name = "bolt"
damage_type = TOX
hal_icon_state = "cbbolt"
- hal_fire_sound = 'sound/weapons/genhit.ogg'
+ hal_fire_sound = 'sound/items/weapons/genhit.ogg'
hal_hitsound = null
hal_hitsound_wall = null
hal_impact_effect = null
@@ -285,7 +285,7 @@
name = "bolt of change"
damage_type = BURN
hal_icon_state = "ice_1"
- hal_fire_sound = 'sound/magic/staff_change.ogg'
+ hal_fire_sound = 'sound/effects/magic/staff_change.ogg'
hal_hitsound = null
hal_hitsound_wall = null
hal_impact_effect = null
@@ -307,7 +307,7 @@
name = "bolt of death"
damage_type = BURN
hal_icon_state = "pulse1_bl"
- hal_fire_sound = 'sound/magic/wandodeath.ogg'
+ hal_fire_sound = 'sound/effects/magic/wandodeath.ogg'
hal_hitsound = null
hal_hitsound_wall = null
hal_impact_effect = null
diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm
index 39b5615c385d7..d5a9457141294 100644
--- a/code/modules/holiday/holidays.dm
+++ b/code/modules/holiday/holidays.dm
@@ -257,7 +257,7 @@
/datum/holiday/april_fools/celebrate()
. = ..()
SSjob.set_overflow_role(/datum/job/clown)
- SSticker.login_music = 'sound/ambience/clown.ogg'
+ SSticker.login_music = 'sound/music/lobby_music/clown.ogg'
for(var/i in GLOB.new_player_list)
var/mob/dead/new_player/P = i
if(P.client)
diff --git a/code/modules/hydroponics/beekeeping/bee_smoker.dm b/code/modules/hydroponics/beekeeping/bee_smoker.dm
index f3eae4dc41c79..3daa75f89e63a 100644
--- a/code/modules/hydroponics/beekeeping/bee_smoker.dm
+++ b/code/modules/hydroponics/beekeeping/bee_smoker.dm
@@ -96,7 +96,7 @@
/obj/item/bee_smoker/proc/alter_state()
activated = !activated
- playsound(src, 'sound/items/welderdeactivate.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welderdeactivate.ogg', 50, TRUE)
if(!activated)
beesmoke_loop.stop()
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index 49b7056c9e7e8..993173b7efc52 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -23,7 +23,7 @@
/// The sound of fermentation
var/datum/looping_sound/boiling/soundloop
/// Sound played when the lid is opened.
- var/lid_open_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
+ var/lid_open_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg'
/// Sound played when the lid is closed.
var/lid_close_sound = 'sound/effects/footstep/woodclaw2.ogg'
diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm
index 885eb77c0c695..62b18c8eea703 100644
--- a/code/modules/hydroponics/grown/beans.dm
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -53,7 +53,7 @@
//Now squeezable for imitation carpmeat
/obj/item/food/grown/koibeans/attack_self(mob/living/user)
user.visible_message(span_notice("[user] crushes [src] into a slab of carplike meat."), span_notice("You crush [src] into something that resembles a slab of carplike meat."))
- playsound(user, 'sound/effects/blobattack.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/blob/blobattack.ogg', 50, TRUE)
var/obj/item/food/fishmeat/carp/imitation/fishie = new(null)
fishie.reagents.set_all_reagents_purity(seed.get_reagent_purity())
qdel(src)
@@ -85,7 +85,7 @@
/obj/item/food/grown/butterbeans/attack_self(mob/living/user)
user.visible_message(span_notice("[user] crushes [src] into a pat of butter."), span_notice("You crush [src] into something that resembles butter."))
- playsound(user, 'sound/effects/blobattack.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/blob/blobattack.ogg', 50, TRUE)
var/obj/item/food/butterslice/butties = new(null)
butties.reagents.set_all_reagents_purity(seed.get_reagent_purity())
qdel(src)
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index b304382d2dc47..f1fdfe807ef1d 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -100,7 +100,7 @@
/obj/item/food/grown/meatwheat/attack_self(mob/living/user)
user.visible_message(span_notice("[user] crushes [src] into meat."), span_notice("You crush [src] into something that resembles meat."))
- playsound(user, 'sound/effects/blobattack.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/blob/blobattack.ogg', 50, TRUE)
var/obj/item/food/meat/slab/meatwheat/meaties = new(null)
meaties.reagents.set_all_reagents_purity(seed.get_reagent_purity())
qdel(src)
diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm
index 5de85e9168f1f..577befaadfaa8 100644
--- a/code/modules/hydroponics/grown/pineapple.dm
+++ b/code/modules/hydroponics/grown/pineapple.dm
@@ -23,7 +23,7 @@
bite_consumption_mod = 2
force = 4
throwforce = 8
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("stings", "pines")
attack_verb_simple = list("sting", "pine")
throw_speed = 1
diff --git a/code/modules/hydroponics/grown/weeds/nettle.dm b/code/modules/hydroponics/grown/weeds/nettle.dm
index 33a0f6288912d..dec1e8b119e2b 100644
--- a/code/modules/hydroponics/grown/weeds/nettle.dm
+++ b/code/modules/hydroponics/grown/weeds/nettle.dm
@@ -43,7 +43,7 @@
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
damtype = BURN
force = 15
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 1
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index cf1875c8efed5..1251cb54d32b9 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -428,7 +428,7 @@
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.5)
attack_verb_continuous = list("slashes", "slices", "cuts", "claws")
attack_verb_simple = list("slash", "slice", "cut", "claw")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
/obj/item/cultivator/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is scratching [user.p_their()] back as hard as [user.p_they()] can with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
@@ -460,7 +460,7 @@
if(has_gravity(loc) && HAS_TRAIT(H, TRAIT_CLUMSY) && !H.resting)
H.set_confusion_if_lower(10 SECONDS)
H.Stun(20)
- playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/punch4.ogg', 50, TRUE)
H.visible_message(span_warning("[H] steps on [src] causing the handle to hit [H.p_them()] right in the face!"), \
span_userdanger("You step on [src] causing the handle to hit you right in the face!"))
@@ -482,7 +482,7 @@
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5)
attack_verb_continuous = list("chops", "tears", "lacerates", "cuts")
attack_verb_simple = list("chop", "tear", "lacerate", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
/datum/embed_data/hatchet
@@ -499,7 +499,7 @@
/obj/item/hatchet/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is chopping at [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(src, 'sound/weapons/bladeslice.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/items/weapons/bladeslice.ogg', 50, TRUE, -1)
return BRUTELOSS
/obj/item/hatchet/wooden
@@ -528,7 +528,7 @@
slot_flags = ITEM_SLOT_BACK
attack_verb_continuous = list("chops", "slices", "cuts", "reaps")
attack_verb_simple = list("chop", "slice", "cut", "reap")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
item_flags = CRUEL_IMPLEMENT //maybe they want to use it in surgery
var/swiping = FALSE
@@ -589,7 +589,7 @@
custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT*2)
attack_verb_continuous = list("slashes", "slices", "cuts", "claws")
attack_verb_simple = list("slash", "slice", "cut", "claw")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
///Catch right clicks so we can stylize!
/obj/item/secateurs/pre_attack_secondary(atom/target, mob/living/user, params)
@@ -619,7 +619,7 @@
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/uranium=HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold=SMALL_MATERIAL_AMOUNT*5)
attack_verb_continuous = list("slashes", "slices", "cuts")
attack_verb_simple = list("slash", "slice", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
// *************************************
// Nutrient defines for hydroponics
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 8981b90d1cab0..3a1a6d83e7dbf 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -532,6 +532,7 @@
if(myseed && myseed.loc != src)
myseed.forceMove(src)
SEND_SIGNAL(src, COMSIG_HYDROTRAY_SET_SEED, new_seed)
+ age = 0
update_appearance()
if(isnull(myseed))
particles = null
@@ -700,7 +701,6 @@
else
new_seed = new /obj/item/seeds/starthistle(src)
set_seed(new_seed)
- age = 0
lastcycle = world.time
set_plant_health(myseed.endurance, update_icon = FALSE)
set_weedlevel(0, update_icon = FALSE) // Reset
@@ -724,7 +724,6 @@
set_seed(new mutantseed(src))
hardmutate()
- age = 0
set_plant_health(myseed.endurance, update_icon = FALSE)
lastcycle = world.time
set_weedlevel(0, update_icon = FALSE)
@@ -741,7 +740,6 @@
set_seed(new polymorph_seed(src))
hardmutate()
- age = 0
set_plant_health(myseed.endurance, update_icon = FALSE)
lastcycle = world.time
set_weedlevel(0, update_icon = FALSE)
@@ -755,7 +753,6 @@
var/newWeed = pick(/obj/item/seeds/liberty, /obj/item/seeds/angel, /obj/item/seeds/nettle/death, /obj/item/seeds/kudzu)
set_seed(new newWeed(src))
hardmutate()
- age = 0
set_plant_health(myseed.endurance, update_icon = FALSE)
lastcycle = world.time
set_weedlevel(0, update_icon = FALSE) // Reset
@@ -910,7 +907,6 @@
SEND_SIGNAL(O, COMSIG_SEED_ON_PLANTED, src)
to_chat(user, span_notice("You plant [O]."))
set_seed(O)
- age = 1
set_plant_health(myseed.endurance)
lastcycle = world.time
return
@@ -1015,7 +1011,6 @@
if(O.use_tool(src, user, 50, volume=50) || (!myseed && !weedlevel))
user.visible_message(span_notice("[user] digs out the plants in [src]!"), span_notice("You dig out all of [src]'s plants!"))
if(myseed) //Could be that they're just using it as a de-weeder
- age = 0
set_plant_health(0, update_icon = FALSE, forced = TRUE)
lastproduce = 0
set_seed(null)
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index aa63f5d41f13b..79dd725b6e354 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -802,7 +802,7 @@
icon = "face-laugh-squint"
mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE
/// Sounds that play when this trait triggers
- var/list/sounds = list('sound/items/SitcomLaugh1.ogg', 'sound/items/SitcomLaugh2.ogg', 'sound/items/SitcomLaugh3.ogg')
+ var/list/sounds = list('sound/items/sitcom_laugh/sitcomLaugh1.ogg', 'sound/items/sitcom_laugh/sitcomLaugh2.ogg', 'sound/items/sitcom_laugh/sitcomLaugh3.ogg')
/datum/plant_gene/trait/plant_laughter/on_new_plant(obj/item/our_plant, newloc)
. = ..()
diff --git a/code/modules/hydroponics/unique_plant_genes.dm b/code/modules/hydroponics/unique_plant_genes.dm
index c3855ff6939e8..eef79ded735c5 100644
--- a/code/modules/hydroponics/unique_plant_genes.dm
+++ b/code/modules/hydroponics/unique_plant_genes.dm
@@ -593,7 +593,7 @@
else
our_plant.color = COLOR_RED
- playsound(our_plant.drop_location(), 'sound/weapons/armbomb.ogg', 75, TRUE, -3)
+ playsound(our_plant.drop_location(), 'sound/items/weapons/armbomb.ogg', 75, TRUE, -3)
addtimer(CALLBACK(src, PROC_REF(detonate), our_plant), rand(1 SECONDS, 6 SECONDS))
/datum/plant_gene/trait/bomb_plant/potency_based/detonate(obj/item/our_plant)
diff --git a/code/modules/instruments/instrument_data/fun.dm b/code/modules/instruments/instrument_data/fun.dm
index 68a88683fccd3..52b88295ea861 100644
--- a/code/modules/instruments/instrument_data/fun.dm
+++ b/code/modules/instruments/instrument_data/fun.dm
@@ -38,11 +38,11 @@
/datum/instrument/fun/mothscream
name = "Moth Scream"
id = "mothscream"
- real_samples = list("60"='sound/voice/moth/scream_moth.ogg')
+ real_samples = list("60"='sound/mobs/humanoids/moth/scream_moth.ogg')
admin_only = TRUE
/datum/instrument/fun/bilehorn
name = "Bilehorn"
id = "bilehorn"
- real_samples = list("60"='sound/creatures/bileworm/bileworm_spit.ogg')
+ real_samples = list("60"='sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg')
admin_only = TRUE
diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm
index f0176e6453092..4cf7df5a671ce 100644
--- a/code/modules/instruments/items.dm
+++ b/code/modules/instruments/items.dm
@@ -59,7 +59,7 @@
inhand_icon_state = "banjo"
attack_verb_continuous = list("scruggs-styles", "hum-diggitys", "shin-digs", "clawhammers")
attack_verb_simple = list("scruggs-style", "hum-diggity", "shin-dig", "clawhammer")
- hitsound = 'sound/weapons/banjoslap.ogg'
+ hitsound = 'sound/items/weapons/banjoslap.ogg'
allowed_instrument_ids = "banjo"
/obj/item/instrument/guitar
@@ -69,7 +69,7 @@
inhand_icon_state = "guitar"
attack_verb_continuous = list("plays metal on", "serenades", "crashes", "smashes")
attack_verb_simple = list("play metal on", "serenade", "crash", "smash")
- hitsound = 'sound/weapons/stringsmash.ogg'
+ hitsound = 'sound/items/weapons/stringsmash.ogg'
allowed_instrument_ids = list("guitar","csteelgt","cnylongt", "ccleangt", "cmutedgt")
/obj/item/instrument/eguitar
@@ -80,7 +80,7 @@
force = 12
attack_verb_continuous = list("plays metal on", "shreds", "crashes", "smashes")
attack_verb_simple = list("play metal on", "shred", "crash", "smash")
- hitsound = 'sound/weapons/stringsmash.ogg'
+ hitsound = 'sound/items/weapons/stringsmash.ogg'
allowed_instrument_ids = "eguitar"
/obj/item/instrument/glockenspiel
@@ -243,6 +243,6 @@
attack_verb_simple = list("flutter", "flap")
w_class = WEIGHT_CLASS_TINY
force = 0
- hitsound = 'sound/voice/moth/scream_moth.ogg'
+ hitsound = 'sound/mobs/humanoids/moth/scream_moth.ogg'
custom_price = PAYCHECK_COMMAND * 2.37
custom_premium_price = PAYCHECK_COMMAND * 2.37
diff --git a/code/modules/instruments/stationary.dm b/code/modules/instruments/stationary.dm
index ca0e7e2d9e770..c9b8263924023 100644
--- a/code/modules/instruments/stationary.dm
+++ b/code/modules/instruments/stationary.dm
@@ -52,7 +52,7 @@
if(BRUTE)
playsound(src, 'sound/effects/piano_hit.ogg', 100, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/musician/piano/atom_break(damage_flag)
. = ..()
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
index dd7208d170618..7d41ba36cdc3b 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
@@ -105,9 +105,9 @@
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
block_chance = 30
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
menu_description = "A sharp claymore which provides a low chance of blocking incoming melee attacks. Can be worn on the back or belt."
@@ -128,7 +128,7 @@
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
inhand_x_dimension = 64
inhand_y_dimension = 64
- hitsound = 'sound/hallucinations/growl1.ogg'
+ hitsound = 'sound/effects/hallucinations/growl1.ogg'
menu_description = "A sharp blade which provides a low chance of blocking incoming melee attacks. Can be worn on the back or belt."
/obj/item/nullrod/claymore/chainsaw_sword
@@ -140,7 +140,7 @@
slot_flags = ITEM_SLOT_BELT
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
- hitsound = 'sound/weapons/chainsawhit.ogg'
+ hitsound = 'sound/items/weapons/chainsawhit.ogg'
tool_behaviour = TOOL_SAW
toolspeed = 1.5 //slower than a real saw
menu_description = "A sharp chainsaw sword which provides a low chance of blocking incoming melee attacks. Can be used as a slower saw tool. Can be worn on the belt."
@@ -185,8 +185,8 @@
inhand_icon_state = "e_sword_on_blue"
worn_icon_state = "swordblue"
slot_flags = ITEM_SLOT_BELT
- hitsound = 'sound/weapons/blade1.ogg'
- block_sound = 'sound/weapons/block_blade.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
+ block_sound = 'sound/items/weapons/block_blade.ogg'
menu_description = "A sharp energy sword which provides a low chance of blocking incoming melee attacks. Can be worn on the belt."
/obj/item/nullrod/claymore/saber/red
@@ -221,7 +221,7 @@
sharpness = SHARP_EDGED
attack_verb_continuous = list("chops", "slices", "cuts", "zandatsu's")
attack_verb_simple = list("chop", "slice", "cut", "zandatsu")
- hitsound = 'sound/weapons/rapierhit.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
menu_description = "A sharp blade which partially penetrates armor. Very effective at butchering bodies. Can be worn on the back."
/obj/item/nullrod/vibro/Initialize(mapload)
@@ -241,7 +241,7 @@
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
worn_icon_state = "spellblade"
- hitsound = 'sound/weapons/rapierhit.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
menu_description = "A sharp blade which partially penetrates armor. Very effective at butchering bodies. Can be worn on the back."
/obj/item/nullrod/vibro/talking
@@ -255,7 +255,7 @@
worn_icon_state = "talking_sword"
attack_verb_continuous = list("chops", "slices", "cuts")
attack_verb_simple= list("chop", "slice", "cut")
- hitsound = 'sound/weapons/rapierhit.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
menu_description = "A sharp blade which partially penetrates armor. Able to awaken a friendly spirit to provide guidance. Very effective at butchering bodies. Can be worn on the back."
/obj/item/nullrod/vibro/talking/Initialize(mapload)
@@ -272,7 +272,7 @@
slot_flags = ITEM_SLOT_BELT
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
- hitsound = 'sound/weapons/chainsawhit.ogg'
+ hitsound = 'sound/items/weapons/chainsawhit.ogg'
tool_behaviour = TOOL_SAW
toolspeed = 0.5 //same speed as an active chainsaw
chaplain_spawnable = FALSE //prevents being pickable as a chaplain weapon (it has 30 force)
@@ -293,7 +293,7 @@
slot_flags = null
item_flags = ABSTRACT | DROPDEL
w_class = WEIGHT_CLASS_HUGE
- hitsound = 'sound/weapons/sear.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
damtype = BURN
attack_verb_continuous = list("punches", "cross counters", "pummels")
attack_verb_simple = list(SFX_PUNCH, "cross counter", "pummel")
@@ -317,7 +317,7 @@
force = 5
slot_flags = ITEM_SLOT_BACK
block_chance = 50
- block_sound = 'sound/weapons/genhit.ogg'
+ block_sound = 'sound/items/weapons/genhit.ogg'
menu_description = "A red staff which provides a medium chance of blocking incoming attacks via a protective red aura around its user, but deals very low amount of damage. Can be worn only on the back."
/// The icon which appears over the mob holding the item
var/shield_icon = "shield-red"
@@ -348,7 +348,7 @@
force = 4.13
throwforce = 1
slot_flags = ITEM_SLOT_BELT
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
menu_description = "An odd s(w)ord dealing a laughable amount of damage. Fits in pockets. Can be worn on the belt."
@@ -394,7 +394,7 @@
sharpness = SHARP_EDGED
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
- hitsound = 'sound/weapons/chainsawhit.ogg'
+ hitsound = 'sound/items/weapons/chainsawhit.ogg'
tool_behaviour = TOOL_SAW
toolspeed = 2 //slower than a real saw
menu_description = "An undroppable sharp chainsaw hand. Can be used as a very slow saw tool. Capable of slowly butchering bodies. Disappears if the arm holding it is cut off."
@@ -445,7 +445,7 @@
slot_flags = ITEM_SLOT_BACK
attack_verb_continuous = list("attacks", "smashes", "crushes", "splatters", "cracks")
attack_verb_simple = list("attack", "smash", "crush", "splatter", "crack")
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
menu_description = "A hammer dealing a little less damage due to its user's pride. Has a low chance of transferring some of the user's reagents to the target. Capable of tapping knees to measure brain health. Can be worn on the back."
/obj/item/nullrod/pride_hammer/Initialize(mapload)
@@ -474,7 +474,7 @@
slot_flags = ITEM_SLOT_BELT
attack_verb_continuous = list("whips", "lashes")
attack_verb_simple = list("whip", "lash")
- hitsound = 'sound/weapons/chainhit.ogg'
+ hitsound = 'sound/items/weapons/chainhit.ogg'
menu_description = "A whip. Deals extra damage to vampires. Fits in pockets. Can be worn on the belt."
// Atheist's Fedora - Wear it on your head. No melee damage, massive throw force.
@@ -552,7 +552,7 @@
force = 15
attack_verb_continuous = list("bites", "eats", "fin slaps")
attack_verb_simple = list("bite", "eat", "fin slap")
- hitsound = 'sound/weapons/bite.ogg'
+ hitsound = 'sound/items/weapons/bite.ogg'
menu_description = "A plushie dealing a little less damage due to its cute form. Capable of blessing one person with the Carp-Sie favor, which grants friendship of all wild space carps. Fits in pockets. Can be worn on the belt."
/obj/item/nullrod/carp/Initialize(mapload)
@@ -566,7 +566,7 @@
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown."
force = 14
block_chance = 40
- block_sound = 'sound/weapons/genhit.ogg'
+ block_sound = 'sound/items/weapons/genhit.ogg'
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
hitsound = SFX_SWING_HIT
@@ -606,7 +606,7 @@
w_class = WEIGHT_CLASS_HUGE
sharpness = SHARP_EDGED
slot_flags = null
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
item_flags = SLOWS_WHILE_IN_HAND
@@ -646,7 +646,7 @@
slot_flags = ITEM_SLOT_BACK
attack_verb_continuous = list("pokes", "impales", "pierces", "jabs")
attack_verb_simple = list("poke", "impale", "pierce", "jab")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
menu_description = "A sharp pitchfork. Can be worn on the back."
@@ -683,7 +683,7 @@
armour_penetration = 35
attack_verb_continuous = list("pulses", "mends", "cuts")
attack_verb_simple = list("pulse", "mend", "cut")
- hitsound = 'sound/effects/sparks4.ogg'
+ hitsound = 'sound/effects/sparks/sparks4.ogg'
menu_description = "A tool dealing brain damage which partially penetrates armor. Fits in pockets. Can be worn on the belt."
// Ancient Spear - Slight armor penetration, based on the Brass Spear from the Clockcult game mode.
@@ -702,7 +702,7 @@
w_class = WEIGHT_CLASS_HUGE
attack_verb_continuous = list("stabs", "pokes", "slashes", "clocks")
attack_verb_simple = list("stab", "poke", "slash", "clock")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
menu_description = "A pointy spear which penetrates armor a little. Can be worn only on the belt."
// Unholy version of above, since the gamemode is dead in the water
@@ -725,7 +725,7 @@
w_class = WEIGHT_CLASS_HUGE
attack_verb_continuous = list("stabs", "pokes", "slashes", "clocks")
attack_verb_simple = list("stab", "poke", "slash", "clock")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
// Nullblade - For when you really want to feel like rolling dice during combat
@@ -743,9 +743,9 @@
wound_bonus = 10
bare_wound_bonus = 30
slot_flags = ITEM_SLOT_BELT
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_POINTY
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "punctures", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "puncture", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
menu_description = "A blade that deals variable, low amounts of damage, but does easily inflict wounds. \
@@ -896,4 +896,4 @@
// We got a sneak attack!
living_target.apply_damage(round(sneak_attack_dice, DAMAGE_PRECISION), BRUTE, def_zone = affecting, blocked = armor_block, wound_bonus = bare_wound_bonus, sharpness = SHARP_EDGED)
living_target.balloon_alert(user, "sneak attack!")
- playsound(living_target, 'sound/weapons/guillotine.ogg', 50, TRUE)
+ playsound(living_target, 'sound/items/weapons/guillotine.ogg', 50, TRUE)
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
index 4b07baaa05890..e6f34b894b3de 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
@@ -25,7 +25,7 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and
return ..()
to_chat(owner, span_userdanger("[scythe] tears into you for your unworthy display of arrogance!"))
- playsound(owner, 'sound/magic/demon_attack1.ogg', 50, TRUE)
+ playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE)
part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED)
return ..()
@@ -152,7 +152,7 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and
log_combat(user, potential_reaping, "prepared to use [src] to decapitate")
if(do_after(user, 15 SECONDS * death_knell_speed_mod, target = potential_reaping))
- playsound(get_turf(potential_reaping), 'sound/weapons/bladeslice.ogg', 250, TRUE)
+ playsound(get_turf(potential_reaping), 'sound/items/weapons/bladeslice.ogg', 250, TRUE)
reaped_head.dismember()
user.visible_message(span_danger("[user] swings [src] down, slicing [potential_reaping]'s [head_name] clean off! You think [src] may have grown stronger!"), span_notice("As you perform the death knell on [potential_reaping], [src] gains power! For a time..."))
if(potential_empowerment == SCYTHE_SATED) //We don't want actual player heads to go wandering off, but it'll be funny if a bunch of monkeyhuman heads started floating around
diff --git a/code/modules/jobs/job_types/station_trait/human_ai.dm b/code/modules/jobs/job_types/station_trait/human_ai.dm
index 032ad08af5a60..a6e77d77a510c 100644
--- a/code/modules/jobs/job_types/station_trait/human_ai.dm
+++ b/code/modules/jobs/job_types/station_trait/human_ai.dm
@@ -161,6 +161,6 @@
user.balloon_alert(user, "unpacking...")
if(!do_after(user, 5 SECONDS, src))
return
- playsound(src, 'sound/items/drill_use.ogg', 40, TRUE)
+ playsound(src, 'sound/items/tools/drill_use.ogg', 40, TRUE)
new /obj/machinery/computer/camera_advanced/human_ai(get_turf(src))
qdel(src)
diff --git a/code/modules/language/_language_holder.dm b/code/modules/language/_language_holder.dm
index a368186a5137b..b48a1ab1530ab 100644
--- a/code/modules/language/_language_holder.dm
+++ b/code/modules/language/_language_holder.dm
@@ -510,13 +510,9 @@ GLOBAL_LIST_INIT(prototype_language_holders, init_language_holder_prototypes())
// Explicitly empty one for readability
/datum/language_holder/empty
- understood_languages = null
- spoken_languages = null
// Has all the languages known (via "mind")
/datum/language_holder/universal
- understood_languages = null
- spoken_languages = null
/datum/language_holder/universal/New()
. = ..()
diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm
index 42194d932e865..eda1f18f8e7eb 100644
--- a/code/modules/library/bibles.dm
+++ b/code/modules/library/bibles.dm
@@ -91,7 +91,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
/// Destroy the bible when it's shot by a bullet
/obj/item/book/bible/proc/on_intercepted_bullet(mob/living/victim, obj/projectile/bullet)
victim.add_mood_event("blessing", /datum/mood_event/blessing)
- playsound(victim, 'sound/magic/magic_block_holy.ogg', 50, TRUE)
+ playsound(victim, 'sound/effects/magic/magic_block_holy.ogg', 50, TRUE)
victim.visible_message(span_warning("[src] takes [bullet] in [victim]'s place!"))
var/obj/structure/fluff/paper/stack/pages = new(get_turf(src))
pages.setDir(pick(GLOB.alldirs))
@@ -310,7 +310,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
if(istype(bible_smacked, /obj/item/melee/cultblade/haunted) && !IS_CULTIST(user))
var/obj/item/melee/cultblade/haunted/sword = bible_smacked
sword.balloon_alert(user, "exorcising...")
- playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE)
+ playsound(src,'sound/effects/hallucinations/veryfar_noise.ogg',40,TRUE)
if(do_after(user, 4 SECONDS, target = sword))
playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE)
new /obj/item/nullrod/nullblade(get_turf(sword))
@@ -337,7 +337,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
throw_range = 7
throwforce = 18
force = 18
- hitsound = 'sound/weapons/sear.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
damtype = BURN
attack_verb_continuous = list("attacks", "burns", "blesses", "damns", "scorches", "curses", "smites")
attack_verb_simple = list("attack", "burn", "bless", "damn", "scorch", "curses", "smites")
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 35def980eb922..d7102fe96005a 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -753,7 +753,7 @@ GLOBAL_VAR_INIT(library_table_modified, 0)
return
cache = held_book.book_data.return_copy()
flick("bigscanner1", src)
- playsound(src, 'sound/machines/scanner.ogg', vol = 50, vary = TRUE)
+ playsound(src, 'sound/machines/scanner/scanner.ogg', vol = 50, vary = TRUE)
return TRUE
if("clear")
cache = null
diff --git a/code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm b/code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm
index bff83423be73e..07bc945e1d180 100644
--- a/code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm
+++ b/code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm
@@ -5,8 +5,8 @@
skill_name = "True Strength"
skill_description = "The knowledge and strength to resolve the most ancient conumdrum; what happens when an unstoppable force meets an immovable object."
skill_icon = "dumbbell"
- activate_message = "You realise if you apply the correct force, at the correct angle, it is possible to make the immovable permanently movable. And... damn, you look huge."
- deactivate_message = "You forget how to permanently anchor a paradoxical object. Also, you should really hit the gym..."
+ activate_message = span_notice("You realise if you apply the correct force, at the correct angle, it is possible to make the immovable permanently movable. And... damn, you look huge.")
+ deactivate_message = span_notice("You forget how to permanently anchor a paradoxical object. Also, you should really hit the gym...")
chip_category = SKILLCHIP_CATEGORY_GENERAL
skillchip_flags = NONE
slot_use = 1
diff --git a/code/modules/library/skill_learning/job_skillchips/chef.dm b/code/modules/library/skill_learning/job_skillchips/chef.dm
index 75bc494543c36..e457d8773a09f 100644
--- a/code/modules/library/skill_learning/job_skillchips/chef.dm
+++ b/code/modules/library/skill_learning/job_skillchips/chef.dm
@@ -4,8 +4,8 @@
skill_name = "Close Quarters Cooking"
skill_description = "A specialised form of self defence, developed by skilled sous-chef de cuisines. No man fights harder than a chef to defend his kitchen."
skill_icon = "utensils"
- activate_message = "You can visualize how to defend your kitchen with martial arts."
- deactivate_message = "You forget how to control your muscles to execute kicks, slams and restraints while in a kitchen environment."
+ activate_message = span_notice("You can visualize how to defend your kitchen with martial arts.")
+ deactivate_message = span_notice("You forget how to control your muscles to execute kicks, slams and restraints while in a kitchen environment.")
/// The Chef CQC given by the skillchip.
var/datum/martial_art/cqc/under_siege/style
diff --git a/code/modules/library/skill_learning/job_skillchips/psychologist.dm b/code/modules/library/skill_learning/job_skillchips/psychologist.dm
index 6450d13b89a37..be0fe7502f63d 100644
--- a/code/modules/library/skill_learning/job_skillchips/psychologist.dm
+++ b/code/modules/library/skill_learning/job_skillchips/psychologist.dm
@@ -5,5 +5,5 @@
skill_name = "Supermatter Cognition Theory"
skill_description = "Understand the correct mental patterns to keep in mind around matter in a hyperfractal state, causing immunity to visions and making the matter in question \"calmer\"."
skill_icon = "spa"
- activate_message = "You start thinking in patterns that will render you immune to visions from, and act as a calming influence for, matter in a hyperfractal state."
- deactivate_message = "Your thoughts become more disordered and jumbled. You are no longer immune to the abyss."
+ activate_message = span_notice("You start thinking in patterns that will render you immune to visions from, and act as a calming influence for, matter in a hyperfractal state.")
+ deactivate_message = span_notice("Your thoughts become more disordered and jumbled. You are no longer immune to the abyss.")
diff --git a/code/modules/library/skill_learning/job_skillchips/roboticist.dm b/code/modules/library/skill_learning/job_skillchips/roboticist.dm
index 401315e265abc..aa43bafbe8b52 100644
--- a/code/modules/library/skill_learning/job_skillchips/roboticist.dm
+++ b/code/modules/library/skill_learning/job_skillchips/roboticist.dm
@@ -5,5 +5,5 @@
skill_name = "Cyborg Circuitry"
skill_description = "Recognise cyborg wire layouts and understand their functionality at a glance."
skill_icon = "sitemap"
- activate_message = "You suddenly comprehend the secrets behind cyborg circuitry."
- deactivate_message = "Cyborg circuitry stops making sense as images of coloured wires fade from your mind."
+ activate_message = span_notice("You suddenly comprehend the secrets behind cyborg circuitry.")
+ deactivate_message = span_notice("Cyborg circuitry stops making sense as images of coloured wires fade from your mind.")
diff --git a/code/modules/library/skill_learning/job_skillchips/station_engineer.dm b/code/modules/library/skill_learning/job_skillchips/station_engineer.dm
index 0ed2edb5ccda9..08ab6ee61e3f1 100644
--- a/code/modules/library/skill_learning/job_skillchips/station_engineer.dm
+++ b/code/modules/library/skill_learning/job_skillchips/station_engineer.dm
@@ -5,5 +5,5 @@
skill_name = "Engineering Circuitry"
skill_description = "Recognise airlock and APC wire layouts and understand their functionality at a glance."
skill_icon = "sitemap"
- activate_message = "You suddenly comprehend the secrets behind airlock and APC circuitry."
- deactivate_message = "Airlock and APC circuitry stops making sense as images of coloured wires fade from your mind."
+ activate_message = span_notice("You suddenly comprehend the secrets behind airlock and APC circuitry.")
+ deactivate_message = span_notice("Airlock and APC circuitry stops making sense as images of coloured wires fade from your mind.")
diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm
index b8903e5bde09a..10139585dd9a7 100644
--- a/code/modules/library/skill_learning/skillchip.dm
+++ b/code/modules/library/skill_learning/skillchip.dm
@@ -377,8 +377,8 @@
skill_name = "Underwater Basketweaving"
skill_description = "Master intricate art of using twine to create perfect baskets while submerged."
skill_icon = "shopping-basket"
- activate_message = "You're one with the twine and the sea."
- deactivate_message = "Higher mysteries of underwater basketweaving leave your mind."
+ activate_message = span_notice("You're one with the twine and the sea.")
+ deactivate_message = span_notice("Higher mysteries of underwater basketweaving leave your mind.")
/obj/item/skillchip/wine_taster
name = "WINE skillchip"
@@ -387,8 +387,8 @@
skill_name = "Wine Tasting"
skill_description = "Recognize wine vintage from taste alone. Never again lack an opinion when presented with an unknown drink."
skill_icon = "wine-bottle"
- activate_message = "You recall wine taste."
- deactivate_message = "Your memories of wine evaporate."
+ activate_message = span_notice("You recall wine taste.")
+ deactivate_message = span_notice("Your memories of wine evaporate.")
/obj/item/skillchip/bonsai
name = "Hedge 3 skillchip"
@@ -396,16 +396,16 @@
skill_name = "Hedgetrimming"
skill_description = "Trim hedges and potted plants into marvelous new shapes with any old knife. Not applicable to plastic plants."
skill_icon = "spa"
- activate_message = "Your mind is filled with plant arrangments."
- deactivate_message = "You can't remember what a hedge looks like anymore."
+ activate_message = span_notice("Your mind is filled with plant arrangments.")
+ deactivate_message = span_notice("You can't remember what a hedge looks like anymore.")
/obj/item/skillchip/useless_adapter
name = "Skillchip adapter"
skill_name = "Useless adapter"
skill_description = "Allows you to insert another skillchip into this adapter after it has been inserted into your brain..."
skill_icon = "plug"
- activate_message = "You can now activate another chip through this adapter, but you're not sure why you did this..."
- deactivate_message = "You no longer have the useless skillchip adapter."
+ activate_message = span_notice("You can now activate another chip through this adapter, but you're not sure why you did this...")
+ deactivate_message = span_notice("You no longer have the useless skillchip adapter.")
skillchip_flags = SKILLCHIP_ALLOWS_MULTIPLE
// Literally does nothing.
complexity = 0
@@ -417,8 +417,8 @@
skill_name = "Lightbulb Removing"
skill_description = "Stop failing taking out lightbulbs today, no gloves needed!"
skill_icon = "lightbulb"
- activate_message = "Your feel like your pain receptors are less sensitive to hot objects."
- deactivate_message = "You feel like hot objects could stop you again..."
+ activate_message = span_notice("Your feel like your pain receptors are less sensitive to hot objects.")
+ deactivate_message = span_notice("You feel like hot objects could stop you again...")
/obj/item/skillchip/disk_verifier
name = "K33P-TH4T-D15K skillchip"
@@ -426,8 +426,8 @@
skill_name = "Nuclear Disk Verification"
skill_description = "Nuclear authentication disks have an extremely long serial number for verification. This skillchip stores that number, which allows the user to automatically spot forgeries."
skill_icon = "save"
- activate_message = "You feel your mind automatically verifying long serial numbers on disk shaped objects."
- deactivate_message = "The innate recognition of absurdly long disk-related serial numbers fades from your mind."
+ activate_message = span_notice("You feel your mind automatically verifying long serial numbers on disk shaped objects.")
+ deactivate_message = span_notice("The innate recognition of absurdly long disk-related serial numbers fades from your mind.")
/obj/item/skillchip/entrails_reader
name = "3NTR41LS skillchip"
@@ -435,8 +435,8 @@
skill_name = "Entrails Reader"
skill_description = "Be able to learn about a person's life, by looking at their internal organs. Not to be confused with looking into the future."
skill_icon = "lungs"
- activate_message = "You feel that you know a lot about interpreting organs."
- deactivate_message = "Knowledge of liver damage, heart strain and lung scars fades from your mind."
+ activate_message = span_notice("You feel that you know a lot about interpreting organs.")
+ deactivate_message = span_notice("Knowledge of liver damage, heart strain and lung scars fades from your mind.")
/obj/item/skillchip/appraiser
name = "GENUINE ID Appraisal Now! skillchip"
diff --git a/code/modules/mafia/roles/roles.dm b/code/modules/mafia/roles/roles.dm
index 4cfd7662d843e..b035b618ec4e7 100644
--- a/code/modules/mafia/roles/roles.dm
+++ b/code/modules/mafia/roles/roles.dm
@@ -145,7 +145,7 @@
/datum/mafia_role/proc/greet()
mafia_alert = new(body, src)
- SEND_SOUND(body, 'sound/ambience/ambifailure.ogg')
+ SEND_SOUND(body, 'sound/ambience/misc/ambifailure.ogg')
to_chat(body, span_danger("You are the [name]."))
to_chat(body, span_danger("[desc]"))
switch(team)
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/biodome_winter.dm b/code/modules/mapfluff/ruins/lavalandruin_code/biodome_winter.dm
index 7f1c8d781f4f8..a5b1492a1520b 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/biodome_winter.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/biodome_winter.dm
@@ -35,7 +35,7 @@
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, throw_range+2, throw_speed, null, TRUE), 0.1 SECONDS)
/obj/item/freeze_cube/proc/freeze_hit_atom(atom/movable/hit_atom)
- playsound(src, 'sound/effects/glassbr3.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr3.ogg', 50, TRUE)
COOLDOWN_START(src, freeze_cooldown, cooldown_time)
if(isobj(hit_atom))
var/obj/hit_object = hit_atom
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
index f3b321b88b223..6d3ef03c3f028 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm
@@ -153,7 +153,7 @@
/// Type of projectile we fire
var/projectile_type = /obj/projectile/baby_watcher_blast
/// Sound to make when we shoot
- var/projectile_sound = 'sound/weapons/pierce.ogg'
+ var/projectile_sound = 'sound/items/weapons/pierce.ogg'
/// Time between taking potshots at goliaths
var/fire_delay = 5 SECONDS
/// How much faster do we shoot when avenging our parent?
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
index 21c96f0aeaa10..7ef451ddc303a 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm
@@ -65,7 +65,7 @@
else
deadmind = offeredmob.get_ghost(FALSE, TRUE)
to_chat(deadmind, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly. Your memories will remain intact in your new body, as your soul is being salvaged")
- SEND_SOUND(deadmind, sound('sound/magic/enter_blood.ogg',volume=100))
+ SEND_SOUND(deadmind, sound('sound/effects/magic/enter_blood.ogg',volume=100))
addtimer(CALLBACK(src, PROC_REF(remake_walker), offeredmob), 20 SECONDS)
offeredmob.forceMove(src)
return
@@ -75,7 +75,7 @@
else
meat_counter++
visible_message(span_warning("Serrated tendrils eagerly pull [offeredmob] to [src], tearing the body apart as its blood seeps over the eggs."))
- playsound(get_turf(src),'sound/magic/demon_consume.ogg', 100, TRUE)
+ playsound(get_turf(src),'sound/effects/magic/demon_consume.ogg', 100, TRUE)
var/deliverykey = offeredmob.fingerprintslast //ckey of whoever brought the body
var/mob/living/deliverymob = get_mob_by_key(deliverykey) //mob of said ckey
//there is a 40% chance that the Lava Lizard unlocks their respawn with each sacrifice
@@ -103,7 +103,7 @@
oldmob.mind.transfer_to(newwalker)
newwalker.mind.grab_ghost()
to_chat(newwalker, "You have been pulled back from beyond the grave, with a new body and renewed purpose. Glory to the Necropolis!")
- playsound(get_turf(newwalker),'sound/magic/exit_blood.ogg', 100, TRUE)
+ playsound(get_turf(newwalker),'sound/effects/magic/exit_blood.ogg', 100, TRUE)
qdel(oldmob)
/obj/structure/lavaland/ash_walker/proc/spawn_mob()
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/cursed_slot_machine.dm b/code/modules/mapfluff/ruins/objects_and_mobs/cursed_slot_machine.dm
index ab6b2bb1825c9..16b63f37b2a37 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/cursed_slot_machine.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/cursed_slot_machine.dm
@@ -44,7 +44,7 @@
icon_screen = "slots_screen_working"
update_appearance()
- playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/lavaland/cursed_slot_machine.ogg', 50, FALSE)
addtimer(CALLBACK(src, PROC_REF(determine_victor), user), 5 SECONDS)
/obj/structure/cursed_slot_machine/update_overlays()
@@ -84,11 +84,11 @@
user.apply_status_effect(/datum/status_effect/grouped/cursed)
SEND_SIGNAL(user, COMSIG_CURSED_SLOT_MACHINE_LOST)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
balloon_alert_to_viewers("you lost!")
return
- playsound(src, 'sound/lavaland/cursed_slot_machine_jackpot.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/lavaland/cursed_slot_machine_jackpot.ogg', 50, FALSE)
new prize(get_turf(src))
if(user)
to_chat(user, span_boldwarning("You've hit the jackpot!!! Laughter echoes around you as your reward appears in the machine's place."))
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
index aac22db015b20..c8b504b72e572 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm
@@ -64,7 +64,7 @@
max_integrity = 5 //one tap
/obj/structure/fluff/balloon_nuke/atom_destruction()
- playsound(loc, 'sound/effects/cartoon_pop.ogg', 75, vary = TRUE)
+ playsound(loc, 'sound/effects/cartoon_sfx/cartoon_pop.ogg', 75, vary = TRUE)
..()
/obj/structure/fluff/fake_camera
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
index 646de6a2186ef..7fda1df5951f0 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm
@@ -122,7 +122,7 @@
sight_blocker.pixel_y = initial(sight_blocker.pixel_y) - (32 * sight_blocker_distance)
sight_blocker.forceMove(sight_blocker_turf)
sleep(0.25 SECONDS)
- playsound(T, 'sound/magic/clockwork/invoke_general.ogg', 30, TRUE, frequency = 15000)
+ playsound(T, 'sound/effects/magic/clockwork/invoke_general.ogg', 30, TRUE, frequency = 15000)
add_overlay(door_overlay)
open = FALSE
else
@@ -183,7 +183,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
message_admins("[user ? ADMIN_LOOKUPFLW(user):"Unknown"] has released Legion!")
user.log_message("released Legion.", LOG_GAME)
- var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg')
+ var/sound/legion_sound = sound('sound/mobs/non-humanoids/legion/legion_spawn.ogg')
for(var/mob/M in GLOB.player_list)
if(is_valid_z_level(get_turf(M), T))
to_chat(M, span_userdanger("Discordant whispers flood your mind in a thousand voices. Each one speaks your name, over and over. Something horrible has been released."))
diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
index 15566603a9322..6e67c0831d398 100644
--- a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm
@@ -34,7 +34,7 @@
force = 18
throwforce = 10
w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
/obj/item/knife/envy/afterattack(atom/target, mob/living/carbon/human/user, click_parameters)
if(!istype(user) || !ishuman(target))
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm
index fa39b7063ae12..21bf3da443180 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/forgottenship.dm
@@ -117,15 +117,15 @@ GLOBAL_VAR_INIT(fscpassword, generate_password())
/area/ruin/space/has_grav/syndicate_forgotten_ship
name = "Syndicate Forgotten Ship"
icon_state = "syndie-ship"
- ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambigen8.ogg', 'sound/ambience/ambigen9.ogg')
+ ambientsounds = list('sound/ambience/misc/ambidanger.ogg', 'sound/ambience/misc/ambidanger2.ogg', 'sound/ambience/general/ambigen8.ogg', 'sound/ambience/general/ambigen9.ogg')
/area/ruin/space/has_grav/syndicate_forgotten_cargopod
name = "Syndicate Forgotten Cargo pod"
icon_state = "syndie-ship"
- ambientsounds = list('sound/ambience/ambigen3.ogg', 'sound/ambience/signal.ogg')
+ ambientsounds = list('sound/ambience/general/ambigen3.ogg', 'sound/ambience/misc/signal.ogg')
/area/ruin/space/has_grav/powered/syndicate_forgotten_vault
name = "Syndicate Forgotten Vault"
icon_state = "syndie-ship"
- ambientsounds = list('sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg')
+ ambientsounds = list('sound/ambience/engineering/ambitech2.ogg', 'sound/ambience/engineering/ambitech3.ogg')
area_flags = NOTELEPORT | UNIQUE_AREA
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
index 958fa51fcc109..04404dc630872 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm
@@ -327,8 +327,8 @@
base_icon_state = "donk"
stun_projectile = /obj/projectile/bullet/foam_dart/riot
lethal_projectile = /obj/projectile/bullet/c9mm/blunttip
- lethal_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
- stun_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
+ stun_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
desc = "A ballistic machine gun auto-turret with Donk Co. branding. It uses 9mm rounds."
armor_type = /datum/armor/donk_turret
scan_range = 6
@@ -353,9 +353,9 @@
icon_state = "red_lethal"
base_icon_state = "red"
stun_projectile = /obj/projectile/energy/electrode
- stun_projectile_sound = 'sound/weapons/taser.ogg'
+ stun_projectile_sound = 'sound/items/weapons/taser.ogg'
lethal_projectile = /obj/projectile/beam/laser/cybersun
- lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
+ lethal_projectile_sound = 'sound/items/weapons/lasercannonfire.ogg'
desc = "An energy gun auto-turret with Cybersun branding. It fires high-energy plasma beams that do a lot of damage, but it can be fairly slow."
armor_type = /datum/armor/syndicate_shuttle
scan_range = 6
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
index b42618f94ee21..0e77140422525 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm
@@ -395,7 +395,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
has_gravity = TRUE
area_flags = NOTELEPORT | HIDDEN_AREA
static_lighting = TRUE
- ambientsounds = list('sound/ambience/servicebell.ogg')
+ ambientsounds = list('sound/ambience/ruin/servicebell.ogg')
var/roomnumber = 0
var/obj/item/hilbertshotel/parentSphere
var/datum/turf_reservation/reservation
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
index 0db718e399bf6..2b2216641488d 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm
@@ -131,7 +131,7 @@
/obj/lightning_thrower/process(seconds_per_tick)
var/list/dirs = throw_diagonals ? GLOB.diagonals : GLOB.cardinals
throw_diagonals = !throw_diagonals
- playsound(src, 'sound/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
+ playsound(src, 'sound/effects/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
for(var/direction in dirs)
var/victim_turf = get_step(src, direction)
if(isclosedturf(victim_turf))
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
index 59998bb53c8f2..a91d033f1ee7b 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
@@ -56,7 +56,7 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(loc, 'sound/effects/attackblob.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
else
playsound(loc, 'sound/effects/meatslap.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
if(BURN)
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
index 77b8aa0bbce28..994162345dae2 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm
@@ -35,7 +35,7 @@
update_appearance()
/obj/machinery/mod_installer/proc/play_install_sound()
- playsound(src, 'sound/items/rped.ogg', 30, FALSE)
+ playsound(src, 'sound/items/tools/rped.ogg', 30, FALSE)
/obj/machinery/mod_installer/update_icon_state()
icon_state = busy ? busy_icon_state : "[base_icon_state][state_open ? "_open" : null]"
diff --git a/code/modules/meteors/meteor_dark_matteor.dm b/code/modules/meteors/meteor_dark_matteor.dm
index 18dbaf007024f..acf21a3c434b8 100644
--- a/code/modules/meteors/meteor_dark_matteor.dm
+++ b/code/modules/meteors/meteor_dark_matteor.dm
@@ -6,7 +6,7 @@
hits = 15
hitpwr = EXPLODE_DEVASTATE
heavy = TRUE
- meteorsound = 'sound/effects/curse1.ogg'
+ meteorsound = 'sound/effects/curse/curse1.ogg'
meteordrop = list(/obj/singularity/dark_matter) //what the FUCK
dropamt = 1
threat = 100
diff --git a/code/modules/meteors/meteor_spawning.dm b/code/modules/meteors/meteor_spawning.dm
index d19d3aff0a5a6..83b1c9533c577 100644
--- a/code/modules/meteors/meteor_spawning.dm
+++ b/code/modules/meteors/meteor_spawning.dm
@@ -104,7 +104,7 @@
player_mind.transfer_to(new_changeling)
player_mind.special_role = ROLE_CHANGELING_MIDROUND
player_mind.add_antag_datum(/datum/antagonist/changeling/space)
- SEND_SOUND(new_changeling, 'sound/magic/mutate.ogg')
+ SEND_SOUND(new_changeling, 'sound/effects/magic/mutate.ogg')
message_admins("[ADMIN_LOOKUPFLW(new_changeling)] has been made into a space changeling by an event.")
new_changeling.log_message("was spawned as a midround space changeling by an event.", LOG_GAME)
diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm
index 199f6517abb1e..74e5ecb78c106 100644
--- a/code/modules/meteors/meteor_types.dm
+++ b/code/modules/meteors/meteor_types.dm
@@ -203,7 +203,7 @@
pass_flags = PASSTABLE | PASSGRILLE
hits = 1
hitpwr = EXPLODE_LIGHT
- meteorsound = 'sound/weapons/gun/smg/shot.ogg'
+ meteorsound = 'sound/items/weapons/gun/smg/shot.ogg'
meteordrop = list(/obj/item/stack/ore/glass)
threat = 1
@@ -301,7 +301,7 @@
icon_state = "carp"
desc = "Am I glad he's frozen in there, and that we're out here."
hits = 4
- meteorsound = 'sound/effects/ethereal_revive_fail.ogg'
+ meteorsound = 'sound/mobs/humanoids/ethereal/ethereal_revive_fail.ogg'
meteordrop = list(/mob/living/basic/carp)
dropamt = 1
threat = 5
@@ -342,7 +342,7 @@
/obj/effect/meteor/banana/meteor_effect()
..()
- playsound(src, 'sound/items/AirHorn.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/items/airhorn/AirHorn.ogg', 100, TRUE, -1)
for(var/atom/movable/object in view(4, get_turf(src)))
var/turf/throwtarget = get_edge_target_turf(get_turf(src), get_dir(get_turf(src), get_step_away(object, get_turf(src))))
object.safe_throw_at(throwtarget, 5, 1, force = MOVE_FORCE_STRONG)
@@ -368,7 +368,7 @@
/obj/effect/meteor/emp/meteor_effect()
..()
- playsound(src, 'sound/weapons/zapbang.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/items/weapons/zapbang.ogg', 100, TRUE, -1)
empulse(src, 3, 8)
//Meaty Ore
@@ -378,7 +378,7 @@
desc = "Just... don't think too hard about where this thing came from."
hits = 2
heavy = TRUE
- meteorsound = 'sound/effects/blobattack.ogg'
+ meteorsound = 'sound/effects/blob/blobattack.ogg'
meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/internal/heart, /obj/item/organ/internal/lungs, /obj/item/organ/internal/tongue, /obj/item/organ/internal/appendix/)
var/meteorgibs = /obj/effect/gibspawner/generic
threat = 2
@@ -464,6 +464,6 @@
/obj/effect/meteor/pumpkin/Initialize(mapload)
. = ..()
- meteorsound = pick('sound/hallucinations/im_here1.ogg','sound/hallucinations/im_here2.ogg')
+ meteorsound = pick('sound/effects/hallucinations/im_here1.ogg','sound/effects/hallucinations/im_here2.ogg')
#undef DEFAULT_METEOR_LIFETIME
diff --git a/code/modules/mining/boulder_processing/_boulder_processing.dm b/code/modules/mining/boulder_processing/_boulder_processing.dm
index 834d8d08f807e..28d8f9b6ea462 100644
--- a/code/modules/mining/boulder_processing/_boulder_processing.dm
+++ b/code/modules/mining/boulder_processing/_boulder_processing.dm
@@ -127,7 +127,7 @@
if(!istype(new_boulder) || QDELETED(new_boulder))
return FALSE
- //someone just processed this
+ //someone is still processing this
if(new_boulder.processed_by)
return FALSE
@@ -149,7 +149,6 @@
*/
/obj/machinery/bouldertech/proc/accept_boulder(obj/item/boulder/new_boulder)
PRIVATE_PROC(TRUE)
-
if(!can_process_boulder(new_boulder))
return FALSE
@@ -262,7 +261,7 @@
if(!COOLDOWN_FINISHED(src, sound_cooldown))
return ITEM_INTERACT_BLOCKING
COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, FALSE)
return ITEM_INTERACT_BLOCKING
var/obj/item/card/id/id_card = tool
@@ -408,6 +407,9 @@
return TRUE
if(locate(/obj/item/boulder) in loc) //There is an boulder in our loc. it has be removed so we don't clog up our loc with even more boulders
return FALSE
+ if(!length(specific_boulder.custom_materials))
+ specific_boulder.break_apart()
+ return TRUE
//Reset durability to little random lower value cause we have crushed it so many times
var/size = specific_boulder.boulder_size
diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm
index 555ea50dff3bf..57a143a0d33a5 100644
--- a/code/modules/mining/boulder_processing/boulder.dm
+++ b/code/modules/mining/boulder_processing/boulder.dm
@@ -62,9 +62,9 @@
icon_state = "[boulder_string]_small"
/obj/item/boulder/CanAllowThrough(atom/movable/mover, border_dir)
- . = ..()
if(istype(mover, /obj/item/boulder)) //This way, boulders can only go one at a time on conveyor belts, but everyone else can go through.
return FALSE
+ return ..()
/obj/item/boulder/attack_self(mob/user, list/modifiers)
. = ..()
@@ -127,7 +127,7 @@
process_speed = override_speed_multiplier
else
process_speed = INATE_BOULDER_SPEED_MULTIPLIER
- playsound(src, 'sound/effects/rocktap1.ogg', 50)
+ playsound(src, 'sound/effects/rock/rocktap1.ogg', 50)
if(!continued)
to_chat(user, span_notice("You scrape away at \the [src]..."))
else
@@ -142,7 +142,7 @@
if(durability <= 0)
convert_to_ore()
to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore."))
- playsound(src, 'sound/effects/rock_break.ogg', 50)
+ playsound(src, 'sound/effects/rock/rock_break.ogg', 50)
user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2)
qdel(src)
return
@@ -171,7 +171,7 @@
if(length(contents))
var/list/quips = list("Clang!", "Crack!", "Bang!", "Clunk!", "Clank!")
visible_message(span_notice("[pick(quips)] Something falls out of \the [src]!"))
- playsound(loc, 'sound/effects/picaxe1.ogg', 60, FALSE)
+ playsound(loc, 'sound/effects/pickaxe/picaxe1.ogg', 60, FALSE)
for(var/obj/item/content as anything in contents)
content.forceMove(get_turf(src))
qdel(src)
diff --git a/code/modules/mining/boulder_processing/boulder_types.dm b/code/modules/mining/boulder_processing/boulder_types.dm
index 8f6889b7c8470..366c5b21c4259 100644
--- a/code/modules/mining/boulder_processing/boulder_types.dm
+++ b/code/modules/mining/boulder_processing/boulder_types.dm
@@ -25,6 +25,10 @@
artifact_inside = null
return ..()
+/obj/item/boulder/artifact/update_icon_state()
+ . = ..()
+ icon_state = "boulder_artifact" // Hardset to artifact sprites for consistency
+
///Boulders usually spawned in lavaland labour camp area
/obj/item/boulder/gulag
name = "low-quality boulder"
diff --git a/code/modules/mining/boulder_processing/brm.dm b/code/modules/mining/boulder_processing/brm.dm
index 658eb97d5632f..bb7b7f650338a 100644
--- a/code/modules/mining/boulder_processing/brm.dm
+++ b/code/modules/mining/boulder_processing/brm.dm
@@ -284,7 +284,7 @@
//no more boulders
if(!SSore_generation.available_boulders.len)
if(feedback)
- playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
+ playsound(loc, 'sound/machines/synth/synth_no.ogg', 30 , TRUE)
balloon_alert_to_viewers("no boulders to collect!")
batch_processing = FALSE
return FALSE
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index ecaa17321c486..af31d32719f14 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -332,7 +332,7 @@
COOLDOWN_START(src, effect_cooldown, effect_cooldown_time) //This needs to happen first, otherwise there's an infinite loop
user.heal_ordered_damage(heal_amount, damage_heal_order)
user.visible_message(span_notice("[user] suddenly revives, as their armor swirls with demonic energy!"), span_notice("You suddenly feel invigorated!"))
- playsound(user.loc, 'sound/magic/clockwork/ratvar_attack.ogg', 50)
+ playsound(user.loc, 'sound/effects/magic/clockwork/ratvar_attack.ogg', 50)
/obj/item/clothing/suit/hooded/explorer/syndicate
name = "syndicate explorer suit"
diff --git a/code/modules/mining/equipment/grapple_gun.dm b/code/modules/mining/equipment/grapple_gun.dm
index 76da071ec6e2d..0247d0164b025 100644
--- a/code/modules/mining/equipment/grapple_gun.dm
+++ b/code/modules/mining/equipment/grapple_gun.dm
@@ -64,7 +64,7 @@
if(user.CanReach(attacked_atom))
return ITEM_INTERACT_BLOCKING
- var/atom/bullet = fire_projectile(/obj/projectile/grapple_hook, attacked_atom, 'sound/weapons/zipline_fire.ogg')
+ var/atom/bullet = fire_projectile(/obj/projectile/grapple_hook, attacked_atom, 'sound/items/weapons/zipline_fire.ogg')
zipline = user.Beam(bullet, icon_state = "zipline_hook", maxdistance = 9, layer = BELOW_MOB_LAYER)
hooked = FALSE
RegisterSignal(bullet, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(on_grapple_hit))
@@ -181,6 +181,6 @@
range = 9
speed = 0.1
can_hit_turfs = TRUE
- hitsound = 'sound/weapons/zipline_hit.ogg'
+ hitsound = 'sound/items/weapons/zipline_hit.ogg'
#undef DAMAGE_ON_IMPACT
diff --git a/code/modules/mining/equipment/kheiral_cuffs.dm b/code/modules/mining/equipment/kheiral_cuffs.dm
index eaaf11616cc71..27b3a1c42a70d 100644
--- a/code/modules/mining/equipment/kheiral_cuffs.dm
+++ b/code/modules/mining/equipment/kheiral_cuffs.dm
@@ -42,13 +42,13 @@
if(!(slot & ITEM_SLOT_GLOVES))
return
on_wrist = TRUE
- playsound(loc, 'sound/weapons/handcuffs.ogg', 30, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(loc, 'sound/items/weapons/handcuffs.ogg', 30, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
connect_kheiral_network(user)
/obj/item/kheiral_cuffs/dropped(mob/user, silent)
. = ..()
if(on_wrist)
- playsound(loc, 'sound/weapons/handcuffs.ogg', 30, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(loc, 'sound/items/weapons/handcuffs.ogg', 30, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
on_wrist = FALSE
remove_kheiral_network(user)
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 1da0a7db6a394..d35ef3c2a9499 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -23,7 +23,7 @@
throw_speed = 4
armour_penetration = 10
custom_materials = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT*1.15, /datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT*2.075)
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("smashes", "crushes", "cleaves", "chops", "pulps")
attack_verb_simple = list("smash", "crush", "cleave", "chop", "pulp")
sharpness = SHARP_EDGED
@@ -126,7 +126,7 @@
if((user.dir & backstab_dir) && (target.dir & backstab_dir) || boosted_mark)
backstabbed = TRUE
combined_damage += backstab_bonus
- playsound(user, 'sound/weapons/kinetic_accel.ogg', 100, TRUE) //Seriously who spelled it wrong
+ playsound(user, 'sound/items/weapons/kinetic_accel.ogg', 100, TRUE) //Seriously who spelled it wrong
if(!QDELETED(crusher_damage_effect))
crusher_damage_effect.total_damage += combined_damage
SEND_SIGNAL(user, COMSIG_LIVING_CRUSHER_DETONATE, target, src, backstabbed)
@@ -157,7 +157,7 @@
attached_trophy.on_projectile_fire(destabilizer, user)
destabilizer.preparePixelProjectile(target, user, modifiers)
destabilizer.firer = user
- playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, TRUE)
+ playsound(user, 'sound/items/weapons/plasma_cutter.ogg', 100, TRUE)
destabilizer.fire()
charged = FALSE
update_appearance()
@@ -167,17 +167,17 @@
if(!charged)
charged = TRUE
update_appearance()
- playsound(src.loc, 'sound/weapons/kinetic_reload.ogg', 60, TRUE)
+ playsound(src.loc, 'sound/items/weapons/kinetic_reload.ogg', 60, TRUE)
/obj/item/kinetic_crusher/ui_action_click(mob/user, actiontype)
set_light_on(!light_on)
- playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
+ playsound(user, 'sound/items/weapons/empty.ogg', 100, TRUE)
update_appearance()
/obj/item/kinetic_crusher/on_saboteur(datum/source, disrupt_duration)
. = ..()
set_light_on(FALSE)
- playsound(src, 'sound/weapons/empty.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/empty.ogg', 100, TRUE)
return TRUE
/obj/item/kinetic_crusher/update_icon_state()
@@ -362,7 +362,7 @@
for(var/mob/living/living_target in oview(2, user))
if(user.faction_check_atom(living_target) || living_target.stat == DEAD)
continue
- playsound(living_target, 'sound/magic/fireball.ogg', 20, TRUE)
+ playsound(living_target, 'sound/effects/magic/fireball.ogg', 20, TRUE)
new /obj/effect/temp_visual/fire(living_target.loc)
addtimer(CALLBACK(src, PROC_REF(pushback), living_target, user), 1) //no free backstabs, we push AFTER module stuff is done
living_target.adjustFireLoss(bonus_value, forced = TRUE)
diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm
index c33181dd8068d..5433c85977b41 100644
--- a/code/modules/mining/equipment/marker_beacons.dm
+++ b/code/modules/mining/equipment/marker_beacons.dm
@@ -39,8 +39,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list(
/obj/item/stack/marker_beacon/examine(mob/user)
. = ..()
- . += "Use in-hand to place a [singular_name].\n"+\
- "Alt-click to select a color. Current color is [picked_color]."
+ . += span_notice("Use in-hand to place a [singular_name].\nAlt-click to select a color. Current color is [picked_color].")
/obj/item/stack/marker_beacon/update_icon_state()
icon_state = "[initial(icon_state)][LOWER_TEXT(picked_color)]"
@@ -148,7 +147,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list(
var/obj/effect/decal/cleanable/ash/A = new /obj/effect/decal/cleanable/ash(drop_location())
A.desc += "\nLooks like this used to be \a [src] some time ago."
visible_message(span_danger("[src] is disintegrated by [I]!"))
- playsound(src, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE)
qdel(src)
return
return ..()
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index 0685dda148dee..85cb66ae8676c 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -15,7 +15,7 @@
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT)
tool_behaviour = TOOL_MINING
toolspeed = 1
- usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg')
+ usesound = list('sound/effects/pickaxe/picaxe1.ogg', 'sound/effects/pickaxe/picaxe2.ogg', 'sound/effects/pickaxe/picaxe3.ogg')
attack_verb_continuous = list("hits", "pierces", "slices", "attacks")
attack_verb_simple = list("hit", "pierce", "slice", "attack")
@@ -67,8 +67,8 @@
inhand_icon_state = "handdrill"
slot_flags = ITEM_SLOT_BELT
toolspeed = 0.6 //available from roundstart, faster than a pickaxe.
- usesound = 'sound/weapons/drill.ogg'
- hitsound = 'sound/weapons/drill.ogg'
+ usesound = 'sound/items/weapons/drill.ogg'
+ hitsound = 'sound/items/weapons/drill.ogg'
desc = "An electric mining drill for the especially scrawny."
/obj/item/pickaxe/drill/cyborg
@@ -98,8 +98,8 @@
icon_state = "jackhammer"
inhand_icon_state = "jackhammer"
toolspeed = 0.1 //the epitome of powertools. extremely fast mining
- usesound = 'sound/weapons/sonic_jackhammer.ogg'
- hitsound = 'sound/weapons/sonic_jackhammer.ogg'
+ usesound = 'sound/items/weapons/sonic_jackhammer.ogg'
+ hitsound = 'sound/items/weapons/sonic_jackhammer.ogg'
desc = "Cracks rocks with sonic blasts."
/obj/item/pickaxe/improvised
@@ -213,7 +213,7 @@
w_class = WEIGHT_CLASS_SMALL
tool_behaviour = TOOL_WRENCH
toolspeed = 0.75
- usesound = 'sound/items/ratchet.ogg'
+ usesound = 'sound/items/tools/ratchet.ogg'
attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks")
attack_verb_simple = list("bash", "bludgeon", "thrash", "whack")
wound_bonus = 10
@@ -260,7 +260,7 @@
sharpness = NONE
toolspeed = 0.75
update_weight_class(WEIGHT_CLASS_SMALL)
- usesound = 'sound/items/ratchet.ogg'
+ usesound = 'sound/items/tools/ratchet.ogg'
attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks")
attack_verb_simple = list("bash", "bludgeon", "thrash", "whack")
if("Shovel")
@@ -276,10 +276,10 @@
sharpness = SHARP_POINTY
toolspeed = 0.5
update_weight_class(WEIGHT_CLASS_NORMAL)
- usesound = 'sound/effects/picaxe1.ogg'
+ usesound = 'sound/effects/pickaxe/picaxe1.ogg'
attack_verb_continuous = list("hits", "pierces", "slices", "attacks")
attack_verb_simple = list("hit", "pierce", "slice", "attack")
- playsound(src, 'sound/items/ratchet.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/items/tools/ratchet.ogg', 50, vary = TRUE)
update_appearance(UPDATE_ICON)
/obj/item/trench_tool/proc/check_menu(mob/user)
@@ -312,10 +312,10 @@
wound_bonus = -10
attack_verb_continuous = list("bonks", "bludgeons", "pounds")
attack_verb_simple = list("bonk", "bludgeon", "pound")
- drop_sound = 'sound/weapons/sonic_jackhammer.ogg'
- pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
- hitsound = 'sound/weapons/sonic_jackhammer.ogg'
- block_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ drop_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
+ pickup_sound = 'sound/items/handling/tools/crowbar_pickup.ogg'
+ hitsound = 'sound/items/weapons/sonic_jackhammer.ogg'
+ block_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW
slowdown = 3
attack_speed = 1.2 SECONDS
@@ -355,7 +355,7 @@
/obj/item/shovel/giant_wrench/proc/on_transform(obj/item/source, mob/user, active)
SIGNAL_HANDLER
- usesound = (active ? 'sound/items/ratchet.ogg' : initial(usesound))
+ usesound = (active ? 'sound/items/tools/ratchet.ogg' : initial(usesound))
block_chance = (active ? 0 : initial(block_chance))
recoil_factor = (active ? 2 : initial(recoil_factor))
do_launch = (active ? FALSE : initial(do_launch))
@@ -363,7 +363,7 @@
armour_penetration = (active ? 30 : initial(armour_penetration))
if(user)
balloon_alert(user, "folded Big Slappy [active ? "open" : "closed"]")
- playsound(src, 'sound/items/ratchet.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/ratchet.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/shovel/giant_wrench/attack(mob/living/target_mob, mob/living/user)
diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm
index 99b27e15ca8ab..5019e023d3184 100644
--- a/code/modules/mining/equipment/resonator.dm
+++ b/code/modules/mining/equipment/resonator.dm
@@ -87,7 +87,7 @@
if(parent_resonator)
parent_resonator.fields += src
adding_failure = set_failure
- playsound(src,'sound/weapons/resonator_fire.ogg',50,TRUE)
+ playsound(src,'sound/items/weapons/resonator_fire.ogg',50,TRUE)
if(mode == RESONATOR_MODE_AUTO)
transform = matrix()*0.75
animate(src, transform = matrix()*1.5, time = duration)
@@ -123,7 +123,7 @@
var/turf/closed/mineral/mineral_turf = src_turf
mineral_turf.gets_drilled(creator)
check_pressure(src_turf)
- playsound(src_turf, 'sound/weapons/resonator_blast.ogg', 50, TRUE)
+ playsound(src_turf, 'sound/items/weapons/resonator_blast.ogg', 50, TRUE)
for(var/mob/living/attacked_living in src_turf)
if(creator)
log_combat(creator, attacked_living, "used a resonator field on", "resonator")
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index eb94f68a1f9a7..6ffcfa7bc6752 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -107,7 +107,7 @@
. = ..()
if(.)
// KERPLUNK
- playsound(M,'sound/weapons/resonator_blast.ogg',50,TRUE)
+ playsound(M,'sound/items/weapons/resonator_blast.ogg',50,TRUE)
if(iscarbon(M))
var/mob/living/carbon/L = M
L.Paralyze(60)
diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm
index 3783b5f592cd1..1ef2f778bc54b 100644
--- a/code/modules/mining/fulton.dm
+++ b/code/modules/mining/fulton.dm
@@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
balloon_alert(user, "too heavy!")
return .
balloon_alert_to_viewers("attaching...")
- playsound(thing, 'sound/items/zip.ogg', vol = 50, vary = TRUE)
+ playsound(thing, 'sound/items/zip/zip.ogg', vol = 50, vary = TRUE)
if(isliving(thing))
var/mob/living/creature = thing
if(creature.mind)
@@ -124,7 +124,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
balloon.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
holder_obj.cut_overlay(balloon2)
holder_obj.add_overlay(balloon)
- playsound(holder_obj.loc, 'sound/items/fultext_deploy.ogg', vol = 50, vary = TRUE, extrarange = -3)
+ playsound(holder_obj.loc, 'sound/items/fulton/fultext_deploy.ogg', vol = 50, vary = TRUE, extrarange = -3)
animate(holder_obj, pixel_z = 10, time = 2 SECONDS, flags = ANIMATION_RELATIVE)
animate(pixel_z = 5, time = 1 SECONDS, flags = ANIMATION_RELATIVE)
@@ -134,7 +134,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
sleep(6 SECONDS)
- playsound(holder_obj.loc, 'sound/items/fultext_launch.ogg', vol = 50, vary = TRUE, extrarange = -3)
+ playsound(holder_obj.loc, 'sound/items/fulton/fultext_launch.ogg', vol = 50, vary = TRUE, extrarange = -3)
animate(holder_obj, pixel_z = 1000, time = 3 SECONDS, flags = ANIMATION_RELATIVE)
if(ishuman(thing))
diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm
index 94837a4ae4887..d355014c6ad70 100644
--- a/code/modules/mining/lavaland/megafauna_loot.dm
+++ b/code/modules/mining/lavaland/megafauna_loot.dm
@@ -56,7 +56,7 @@
force = 15
attack_verb_continuous = list("clubs", "beats", "pummels")
attack_verb_simple = list("club", "beat", "pummel")
- hitsound = 'sound/weapons/sonic_jackhammer.ogg'
+ hitsound = 'sound/items/weapons/sonic_jackhammer.ogg'
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
actions_types = list(/datum/action/item_action/vortex_recall)
/// Linked teleport beacon for the group teleport functionality.
@@ -85,7 +85,7 @@
say("Xverwpsgexmrk...", forced = "hierophant club suicide")
user.visible_message(span_suicide("[user] holds [src] into the air! It looks like [user.p_theyre()] trying to commit suicide!"))
new/obj/effect/temp_visual/hierophant/telegraph(get_turf(user))
- playsound(user,'sound/machines/airlockopen.ogg', 75, TRUE)
+ playsound(user,'sound/machines/airlock/airlockopen.ogg', 75, TRUE)
user.visible_message(span_hierophant_warning("[user] fades out, leaving [user.p_their()] belongings behind!"))
for(var/obj/item/user_item in user)
if(user_item != src)
@@ -128,7 +128,7 @@
span_notice("You start detaching the hierophant beacon..."))
if(do_after(user, 5 SECONDS, target = user) && !beacon)
var/turf/user_turf = get_turf(user)
- playsound(user_turf,'sound/magic/blind.ogg', 200, TRUE, -4)
+ playsound(user_turf,'sound/effects/magic/blind.ogg', 200, TRUE, -4)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(user_turf, user)
beacon = new/obj/effect/hierophant(user_turf)
user.update_mob_action_buttons()
@@ -166,8 +166,8 @@
return
new /obj/effect/temp_visual/hierophant/telegraph(destination, user)
new /obj/effect/temp_visual/hierophant/telegraph(source, user)
- playsound(destination,'sound/magic/wand_teleport.ogg', 200, TRUE)
- playsound(source,'sound/machines/airlockopen.ogg', 200, TRUE)
+ playsound(destination,'sound/effects/magic/wand_teleport.ogg', 200, TRUE)
+ playsound(source,'sound/machines/airlock/airlockopen.ogg', 200, TRUE)
if(!do_after(user, 0.3 SECONDS, target = user) || !user || !beacon || QDELETED(beacon)) //no walking away shitlord
teleporting = FALSE
if(user)
@@ -251,7 +251,7 @@
for(var/mob/living/carbon/human/target in range(7,user))
target.apply_status_effect(/datum/status_effect/mayhem)
to_chat(user, span_notice("You shatter the bottle!"))
- playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE)
+ playsound(user.loc, 'sound/effects/glass/glassbr1.ogg', 100, TRUE)
message_admins(span_adminnotice("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!"))
user.log_message("activated a bottle of mayhem", LOG_ATTACK)
qdel(src)
@@ -368,7 +368,7 @@
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
attack_verb_continuous = list("chops", "slices", "cuts", "reaps")
attack_verb_simple = list("chop", "slice", "cut", "reap")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
inhand_x_dimension = 64
inhand_y_dimension = 64
force = 20
@@ -557,7 +557,7 @@
projectile.firer = src
projectile.fire(null, attacked_atom)
visible_message(span_danger("[src] fires at [attacked_atom]!"), span_notice("You fire at [attacked_atom]!"))
- playsound(src, 'sound/magic/fireball.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/fireball.ogg', 50, TRUE)
/obj/item/soulscythe/proc/slash_target(atom/attacked_atom)
if(isliving(attacked_atom) && use_blood(10))
@@ -576,7 +576,7 @@
SpinAnimation(5)
addtimer(CALLBACK(src, PROC_REF(reset_spin)), 1 SECONDS)
visible_message(span_danger("[src] slashes [attacked_atom]!"), span_notice("You slash [attacked_atom]!"))
- playsound(src, 'sound/weapons/bladeslice.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/bladeslice.ogg', 50, TRUE)
do_attack_animation(attacked_atom, ATTACK_EFFECT_SLASH)
/obj/item/soulscythe/proc/charge_target(atom/attacked_atom)
@@ -592,7 +592,7 @@
return
visible_message(span_danger("[src] charges at [attacked_atom]!"), span_notice("You charge at [attacked_atom]!"))
new /obj/effect/temp_visual/mook_dust(get_turf(src))
- playsound(src, 'sound/weapons/thudswoosh.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE)
SpinAnimation(1)
throwforce *= 2
throw_at(attacked_atom, 10, 3, soul, FALSE)
@@ -657,7 +657,7 @@
force = 1
throwforce = 1
hitsound = 'sound/effects/ghost2.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -794,7 +794,7 @@
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
attack_verb_continuous = list("sears", "clubs", "burn")
attack_verb_simple = list("sear", "club", "burn")
- hitsound = 'sound/weapons/sear.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
var/turf_type = /turf/open/lava/smooth/weak
var/transform_string = "lava"
var/reset_turf_type = /turf/open/misc/asteroid/basalt
@@ -833,7 +833,7 @@
message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]")
user.log_message("fired the lava staff at [AREACOORD(T)].", LOG_ATTACK)
timer = world.time + create_cooldown
- playsound(T,'sound/magic/fireball.ogg', 200, TRUE)
+ playsound(T,'sound/effects/magic/fireball.ogg', 200, TRUE)
else
timer = world.time
qdel(L)
@@ -842,7 +842,7 @@
if(T.TerraformTurf(reset_turf_type, flags = CHANGETURF_INHERIT_AIR))
user.visible_message(span_danger("[user] turns \the [old_name] into [reset_string]!"))
timer = world.time + reset_cooldown
- playsound(T,'sound/magic/fireball.ogg', 200, TRUE)
+ playsound(T,'sound/effects/magic/fireball.ogg', 200, TRUE)
return ITEM_INTERACT_SUCCESS
/obj/effect/temp_visual/lavastaff
@@ -873,7 +873,7 @@
inhand_x_dimension = 64
inhand_y_dimension = 64
slot_flags = ITEM_SLOT_BELT
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
w_class = WEIGHT_CLASS_BULKY
sharpness = SHARP_EDGED
/// List of factions we deal bonus damage to
@@ -975,7 +975,7 @@
user.changeNext_move(CLICK_CD_MELEE * 0.25)
if(user)
balloon_alert(user, "[active ? "opened" : "closed"] [src]")
- playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000))
+ playsound(src, 'sound/effects/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000))
return COMPONENT_NO_DEFAULT_MESSAGE
//Legion: Staff of Storms
@@ -992,7 +992,7 @@
w_class = WEIGHT_CLASS_BULKY
force = 20
damtype = BURN
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
wound_bonus = -30
bare_wound_bonus = 20
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -1034,7 +1034,7 @@
return
user.visible_message(span_warning("[user] holds [src] skywards as an orange beam travels into the sky!"), \
span_notice("You hold [src] skyward, dispelling the storm!"))
- playsound(user, 'sound/magic/staff_change.ogg', 200, FALSE)
+ playsound(user, 'sound/effects/magic/staff_change.ogg', 200, FALSE)
var/old_color = user.color
user.color = list(340/255, 240/255, 0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
var/old_transform = user.transform
@@ -1071,7 +1071,7 @@
if((target_turf.z in weather.impacted_z_levels) && ispath(target_area.type, weather.area_type))
power_boosted = TRUE
break
- playsound(src, 'sound/magic/lightningshock.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
+ playsound(src, 'sound/effects/magic/lightningshock.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
targeted_turfs += target_turf
balloon_alert(user, "you aim at [target_turf]...")
new /obj/effect/temp_visual/telegraphing/thunderbolt(target_turf)
@@ -1083,7 +1083,7 @@
/obj/item/storm_staff/proc/recharge(mob/user)
thunder_charges = min(thunder_charges + 1, max_thunder_charges)
- playsound(src, 'sound/magic/charge.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
+ playsound(src, 'sound/effects/magic/charge.ogg', 10, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
/obj/item/storm_staff/proc/throw_thunderbolt(turf/target, boosted)
targeted_turfs -= target
@@ -1103,6 +1103,6 @@
for(var/obj/hit_thing in turf)
hit_thing.take_damage(20, BURN, ENERGY, FALSE)
- playsound(target, 'sound/magic/lightningbolt.ogg', 100, TRUE)
+ playsound(target, 'sound/effects/magic/lightningbolt.ogg', 100, TRUE)
target.visible_message(span_danger("A thunderbolt strikes [target]!"))
explosion(target, light_impact_range = (boosted ? 1 : 0), flame_range = (boosted ? 2 : 1), silent = TRUE)
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index 2ded64c17aaea..af1b990a6fb6a 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -202,13 +202,13 @@
guardian.locked = TRUE
guardian.forceMove(src)
to_chat(guardian, span_userdanger("You have been locked away in your summoner's pendant!"))
- guardian.playsound_local(get_turf(guardian), 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ guardian.playsound_local(get_turf(guardian), 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
/obj/item/clothing/neck/necklace/memento_mori/proc/regurgitate_guardian(mob/living/basic/guardian/guardian)
guardian.locked = FALSE
guardian.recall(forced = TRUE)
to_chat(guardian, span_notice("You have been returned back from your summoner's pendant!"))
- guardian.playsound_local(get_turf(guardian), 'sound/magic/repulse.ogg', 50, TRUE)
+ guardian.playsound_local(get_turf(guardian), 'sound/effects/magic/repulse.ogg', 50, TRUE)
/datum/action/item_action/hands_free/memento_mori
check_flags = NONE
@@ -555,7 +555,7 @@
var/obj/item/organ/external/wings/functional/wings = get_wing_choice(exposed_human, chest)
wings = new wings()
wings.Insert(exposed_human)
- playsound(exposed_human.loc, 'sound/items/poster_ripped.ogg', 50, TRUE, -1)
+ playsound(exposed_human.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE, -1)
exposed_human.apply_damage(20, def_zone = BODY_ZONE_CHEST, forced = TRUE, wound_bonus = CANT_WOUND)
exposed_human.emote("scream")
@@ -769,7 +769,7 @@
/// Starts berserk, reducing incoming brute by 50%, doubled attacking speed, NOGUNS trait, adding a color and giving them the berserk movespeed modifier
/obj/item/clothing/head/hooded/berserker/proc/berserk_mode(mob/living/carbon/human/user)
to_chat(user, span_warning("You enter berserk mode."))
- playsound(user, 'sound/magic/staff_healing.ogg', 50)
+ playsound(user, 'sound/effects/magic/staff_healing.ogg', 50)
user.add_movespeed_modifier(/datum/movespeed_modifier/berserk)
user.physiology.brute_mod *= 0.5
user.next_move_modifier *= BERSERK_ATTACK_SPEED_MODIFIER
@@ -787,7 +787,7 @@
if(QDELETED(user))
return
to_chat(user, span_warning("You exit berserk mode."))
- playsound(user, 'sound/magic/summonitems_generic.ogg', 50)
+ playsound(user, 'sound/effects/magic/summonitems_generic.ogg', 50)
user.remove_movespeed_modifier(/datum/movespeed_modifier/berserk)
user.physiology.brute_mod *= 2
user.next_move_modifier /= BERSERK_ATTACK_SPEED_MODIFIER
@@ -903,7 +903,7 @@
healthscan(living_owner, living_scanned, 1, TRUE)
- owner.playsound_local(get_turf(owner), 'sound/magic/smoke.ogg', 50, TRUE)
+ owner.playsound_local(get_turf(owner), 'sound/effects/magic/smoke.ogg', 50, TRUE)
owner.balloon_alert(owner, "[living_scanned] scanned")
addtimer(CALLBACK(src, PROC_REF(send_cooldown_end_message), cooldown_time))
@@ -939,7 +939,7 @@
/obj/item/organ/internal/cyberimp/arm/shard/attack_self(mob/user, modifiers)
. = ..()
to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!"))
- playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
var/index = user.get_held_index_of_item(src)
zone = (index == LEFT_HANDS ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM)
SetSlotFromZone()
@@ -960,7 +960,7 @@
return FALSE
if(!katana.drew_blood)
to_chat(owner, span_userdanger("[katana] lashes out at you in hunger!"))
- playsound(owner, 'sound/magic/demon_attack1.ogg', 50, TRUE)
+ playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE)
var/obj/item/bodypart/part = owner.get_holding_bodypart_of_item(katana)
if(part)
part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED)
@@ -986,12 +986,12 @@
force = 15
armour_penetration = 30
block_chance = 30
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
w_class = WEIGHT_CLASS_HUGE
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | FREEZE_PROOF
var/shattered = FALSE
var/drew_blood = FALSE
@@ -1043,7 +1043,7 @@
user.visible_message(span_warning("[user] strikes [target] with [src]'s hilt!"),
span_notice("You hilt strike [target]!"))
to_chat(target, span_userdanger("You've been struck by [user]!"))
- playsound(src, 'sound/weapons/genhit3.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/genhit3.ogg', 50, TRUE)
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(strike_throw_impact))
var/atom/throw_target = get_edge_target_turf(target, user.dir)
target.throw_at(throw_target, 5, 3, user, FALSE, gentle = TRUE)
@@ -1068,7 +1068,7 @@
/obj/item/cursed_katana/proc/slice(mob/living/target, mob/user)
user.visible_message(span_warning("[user] does a wide slice!"),
span_notice("You do a wide slice!"))
- playsound(src, 'sound/weapons/bladeslice.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/bladeslice.ogg', 50, TRUE)
var/turf/user_turf = get_turf(user)
var/dir_to_target = get_dir(user_turf, get_turf(target))
var/static/list/cursed_katana_slice_angles = list(0, -45, 45, -90, 90) //so that the animation animates towards the target clicked and not towards a side target
@@ -1088,7 +1088,7 @@
user.visible_message(span_warning("[user] vanishes into thin air!"),
span_notice("You enter the dark cloak."))
new /obj/effect/temp_visual/mook_dust(get_turf(src))
- playsound(src, 'sound/magic/smoke.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/smoke.ogg', 50, TRUE)
if(ishostile(target))
var/mob/living/simple_animal/hostile/hostile_target = target
if(hostile_target.target == user)
@@ -1101,7 +1101,7 @@
user.clear_sight(SEE_SELF)
user.visible_message(span_warning("[user] appears from thin air!"),
span_notice("You exit the dark cloak."))
- playsound(src, 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
new /obj/effect/temp_visual/mook_dust(get_turf(src))
/obj/item/cursed_katana/proc/cut(mob/living/target, mob/user)
@@ -1110,7 +1110,7 @@
to_chat(target, span_userdanger("Your tendons have been cut by [user]!"))
target.apply_damage(damage = 15, sharpness = SHARP_EDGED, wound_bonus = 15)
user.do_attack_animation(target, ATTACK_EFFECT_DISARM)
- playsound(src, 'sound/weapons/rapierhit.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/rapierhit.ogg', 50, TRUE)
var/datum/status_effect/stacking/saw_bleed/bloodletting/status = target.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting)
if(!status)
target.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, 6)
@@ -1121,7 +1121,7 @@
user.visible_message(span_warning("[user] dashes through [target]!"),
span_notice("You dash through [target]!"))
to_chat(target, span_userdanger("[user] dashes through you!"))
- playsound(src, 'sound/magic/blink.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
target.apply_damage(damage = 17, sharpness = SHARP_POINTY, bare_wound_bonus = 10)
var/turf/dash_target = get_turf(target)
for(var/distance in 0 to 8)
@@ -1141,7 +1141,7 @@
to_chat(target, span_userdanger("[user] shatters [src] over you!"))
target.apply_damage(damage = ishostile(target) ? 75 : 35, wound_bonus = 20)
user.do_attack_animation(target, ATTACK_EFFECT_SMASH)
- playsound(src, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
shattered = TRUE
moveToNullspace()
balloon_alert(user, "katana shattered")
@@ -1150,7 +1150,7 @@
/obj/item/cursed_katana/proc/coagulate(mob/user)
balloon_alert(user, "katana coagulated")
shattered = FALSE
- playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
#undef ATTACK_STRIKE
#undef ATTACK_SLICE
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 5d96aace182a8..aaf127bf8b594 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -321,7 +321,7 @@
return
update_rail_state(FALSE)
Move(new_destination)
- var/sound/thud_sound = sound('sound/weapons/thudswoosh.ogg')
+ var/sound/thud_sound = sound('sound/items/weapons/thudswoosh.ogg')
thud_sound.pitch = 0.5
playsound(src, thud_sound, 50, TRUE)
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 0f9ebc317ce5e..16d4f6345ccc8 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -194,11 +194,11 @@
#define IS_ACTING_CAPTAIN 1
#define IS_FULL_CAPTAIN 2
var/is_captain = IS_NOT_CAPTAIN
- var/captain_sound = 'sound/misc/notice2.ogg'
+ var/captain_sound = 'sound/announcer/notice/notice2.ogg'
// If we already have a captain, are they a "Captain" rank and are we allowing multiple of them to be assigned?
if(is_captain_job(job))
is_captain = IS_FULL_CAPTAIN
- captain_sound = 'sound/misc/announce.ogg'
+ captain_sound = 'sound/announcer/announcement/announce.ogg'
// If we don't have an assigned cap yet, check if this person qualifies for some from of captaincy.
else if(!SSjob.assigned_captain && ishuman(character) && SSjob.chain_of_command[rank] && !is_banned_from(character.ckey, list(JOB_CAPTAIN)))
is_captain = IS_ACTING_CAPTAIN
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 0fae07a4442dd..c812905d58fec 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -159,7 +159,7 @@
animate(transform = original_transform, time = 0.1 SECONDS)
/datum/emote/jump/get_sound(mob/user)
- return 'sound/weapons/thudswoosh.ogg'
+ return 'sound/items/weapons/thudswoosh.ogg'
// Avoids playing sounds if we're a ghost
/datum/emote/jump/should_play_sound(mob/user, intentional)
diff --git a/code/modules/mob/living/basic/alien/_alien.dm b/code/modules/mob/living/basic/alien/_alien.dm
index 907d28aaa4187..99b615fbf6089 100644
--- a/code/modules/mob/living/basic/alien/_alien.dm
+++ b/code/modules/mob/living/basic/alien/_alien.dm
@@ -35,10 +35,10 @@
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
gold_core_spawnable = NO_SPAWN
- death_sound = 'sound/voice/hiss6.ogg'
+ death_sound = 'sound/mobs/non-humanoids/hiss/hiss6.ogg'
death_message = "lets out a waning guttural screech, green blood bubbling from its maw..."
habitable_atmos = null
diff --git a/code/modules/mob/living/basic/alien/queen.dm b/code/modules/mob/living/basic/alien/queen.dm
index f2d787743a258..8957d05d89b10 100644
--- a/code/modules/mob/living/basic/alien/queen.dm
+++ b/code/modules/mob/living/basic/alien/queen.dm
@@ -15,7 +15,7 @@
///The type of projectile that fires from attacks.
var/projectiletype = /obj/projectile/neurotoxin/damaging
///The sound that plays when the projectile is fired.
- var/projectilesound = 'sound/weapons/pierce.ogg'
+ var/projectilesound = 'sound/items/weapons/pierce.ogg'
/mob/living/basic/alien/queen/Initialize(mapload)
. = ..()
diff --git a/code/modules/mob/living/basic/alien/sentinel.dm b/code/modules/mob/living/basic/alien/sentinel.dm
index 8f5ae815c5ffd..7f39e1b12aab5 100644
--- a/code/modules/mob/living/basic/alien/sentinel.dm
+++ b/code/modules/mob/living/basic/alien/sentinel.dm
@@ -13,7 +13,7 @@
///The type of projectile that fires from attacks.
var/projectiletype = /obj/projectile/neurotoxin/damaging
///The sound that plays when the projectile is fired.
- var/projectilesound = 'sound/weapons/pierce.ogg'
+ var/projectilesound = 'sound/items/weapons/pierce.ogg'
/mob/living/basic/alien/sentinel/Initialize(mapload)
. = ..()
diff --git a/code/modules/mob/living/basic/basic_defense.dm b/code/modules/mob/living/basic/basic_defense.dm
index 9a7ddef3ce0f2..b4100a73cc160 100644
--- a/code/modules/mob/living/basic/basic_defense.dm
+++ b/code/modules/mob/living/basic/basic_defense.dm
@@ -15,7 +15,7 @@
ignored_mobs = user,
)
to_chat(user, span_notice("You [response_help_simple] [src]."))
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
return TRUE
if(HAS_TRAIT(user, TRAIT_PACIFISM))
@@ -72,7 +72,7 @@
visible_message(span_notice("[user.name] [response_help_continuous] [src]."), \
span_notice("[user.name] [response_help_continuous] you."), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_notice("You [response_help_simple] [src]."))
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
/mob/living/basic/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers)
@@ -80,7 +80,7 @@
if(!.)
return
if(LAZYACCESS(modifiers, RIGHT_CLICK))
- playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/pierce.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] [response_disarm_continuous] [name]!"), \
span_userdanger("[user] [response_disarm_continuous] you!"), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You [response_disarm_simple] [name]!"))
@@ -90,7 +90,7 @@
visible_message(span_danger("[user] slashes at [src]!"), \
span_userdanger("You're slashed at by [user]!"), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You slash at [src]!"))
- playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slice.ogg', 25, TRUE, -1)
apply_damage(damage)
log_combat(user, src, "attacked")
diff --git a/code/modules/mob/living/basic/blob_minions/blob_spore.dm b/code/modules/mob/living/basic/blob_minions/blob_spore.dm
index e8c3acc8b97f0..6946d30a631ec 100644
--- a/code/modules/mob/living/basic/blob_minions/blob_spore.dm
+++ b/code/modules/mob/living/basic/blob_minions/blob_spore.dm
@@ -19,7 +19,7 @@
obj_damage = 0
attack_verb_continuous = "batters"
attack_verb_simple = "batter"
- attack_sound = 'sound/weapons/genhit1.ogg'
+ attack_sound = 'sound/items/weapons/genhit1.ogg'
death_message = "explodes into a cloud of gas!"
gold_core_spawnable = HOSTILE_SPAWN
basic_mob_flags = DEL_ON_DEATH
diff --git a/code/modules/mob/living/basic/blob_minions/blob_zombie.dm b/code/modules/mob/living/basic/blob_minions/blob_zombie.dm
index 50299a38b3fee..b3ce7ea38cbc4 100644
--- a/code/modules/mob/living/basic/blob_minions/blob_zombie.dm
+++ b/code/modules/mob/living/basic/blob_minions/blob_zombie.dm
@@ -18,7 +18,7 @@
obj_damage = 20
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/genhit1.ogg'
+ attack_sound = 'sound/items/weapons/genhit1.ogg'
death_message = "collapses to the ground!"
gold_core_spawnable = NO_SPAWN
basic_mob_flags = DEL_ON_DEATH
diff --git a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm
index 8b94063ba7764..13146c3b5c51c 100644
--- a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm
+++ b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm
@@ -17,7 +17,7 @@
obj_damage = BLOBMOB_BLOBBERNAUT_DMG_OBJ
attack_verb_continuous = "slams"
attack_verb_simple = "slam"
- attack_sound = 'sound/effects/blobattack.ogg'
+ attack_sound = 'sound/effects/blob/blobattack.ogg'
verb_say = "gurgles"
verb_ask = "demands"
verb_exclaim = "roars"
@@ -84,8 +84,8 @@
key = ckey
flick("blobbernaut_produce", src)
health = maxHealth / 2 // Start out injured to encourage not beelining away from the blob
- SEND_SOUND(src, sound('sound/effects/blobattack.ogg'))
- SEND_SOUND(src, sound('sound/effects/attackblob.ogg'))
+ SEND_SOUND(src, sound('sound/effects/blob/blobattack.ogg'))
+ SEND_SOUND(src, sound('sound/effects/blob/attackblob.ogg'))
to_chat(src, span_infoplain("You are powerful, hard to kill, and slowly regenerate near nodes and cores, [span_cult_large("but will slowly die if not near the blob")] or if the factory that made you is killed."))
to_chat(src, span_infoplain("You can communicate with other blobbernauts and overminds telepathically by attempting to speak normally"))
to_chat(src, span_infoplain("Your overmind's blob reagent is: [blobstrain.name]!"))
diff --git a/code/modules/mob/living/basic/bots/dedbot.dm b/code/modules/mob/living/basic/bots/dedbot.dm
index bf48ac93c3b57..0dd5bff9a7c66 100644
--- a/code/modules/mob/living/basic/bots/dedbot.dm
+++ b/code/modules/mob/living/basic/bots/dedbot.dm
@@ -21,7 +21,7 @@
sharpness = SHARP_EDGED
attack_verb_continuous = "eviscerates"
attack_verb_simple = "eviscerate"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
gold_core_spawnable = HOSTILE_SPAWN
limb_destroyer = TRUE
@@ -103,7 +103,7 @@
return FALSE
caster.Shake(1.4, 0.8, 0.3 SECONDS)
caster.visible_message(span_danger("[caster] shakes violently!"))
- playsound(caster, 'sound/weapons/drill.ogg', 120 , TRUE)
+ playsound(caster, 'sound/items/weapons/drill.ogg', 120 , TRUE)
slash_em(caster)
StartCooldown(cooldown_time)
diff --git a/code/modules/mob/living/basic/bots/firebot/firebot.dm b/code/modules/mob/living/basic/bots/firebot/firebot.dm
index 921909aa8a531..1db37c6340bff 100644
--- a/code/modules/mob/living/basic/bots/firebot/firebot.dm
+++ b/code/modules/mob/living/basic/bots/firebot/firebot.dm
@@ -29,20 +29,20 @@
/mob/living/basic/bot/firebot/generate_speak_list()
var/static/list/idle_lines = list(
- FIREBOT_VOICED_NO_FIRES = 'sound/voice/firebot/nofires.ogg',
- FIREBOT_VOICED_ONLY_YOU = 'sound/voice/firebot/onlyyou.ogg',
- FIREBOT_VOICED_TEMPERATURE_NOMINAL = 'sound/voice/firebot/tempnominal.ogg',
- FIREBOT_VOICED_KEEP_COOL = 'sound/voice/firebot/keepitcool.ogg',
+ FIREBOT_VOICED_NO_FIRES = 'sound/mobs/non-humanoids/firebot/nofires.ogg',
+ FIREBOT_VOICED_ONLY_YOU = 'sound/mobs/non-humanoids/firebot/onlyyou.ogg',
+ FIREBOT_VOICED_TEMPERATURE_NOMINAL = 'sound/mobs/non-humanoids/firebot/tempnominal.ogg',
+ FIREBOT_VOICED_KEEP_COOL = 'sound/mobs/non-humanoids/firebot/keepitcool.ogg',
)
var/static/list/fire_detected_lines = list(
- FIREBOT_VOICED_FIRE_DETECTED = 'sound/voice/firebot/detected.ogg',
- FIREBOT_VOICED_STOP_DROP = 'sound/voice/firebot/stopdropnroll.ogg',
- FIREBOT_VOICED_EXTINGUISHING = 'sound/voice/firebot/extinguishing.ogg',
+ FIREBOT_VOICED_FIRE_DETECTED = 'sound/mobs/non-humanoids/firebot/detected.ogg',
+ FIREBOT_VOICED_STOP_DROP = 'sound/mobs/non-humanoids/firebot/stopdropnroll.ogg',
+ FIREBOT_VOICED_EXTINGUISHING = 'sound/mobs/non-humanoids/firebot/extinguishing.ogg',
)
var/static/list/emagged_lines = list(
- FIREBOT_VOICED_CANDLE_TIP = 'sound/voice/firebot/candle_tip.ogg',
- FIREBOT_VOICED_ELECTRIC_FIRE = 'sound/voice/firebot/electric_fire_tip.ogg',
- FIREBOT_VOICED_FUEL_TIP = 'sound/voice/firebot/gasoline_tip.ogg'
+ FIREBOT_VOICED_CANDLE_TIP = 'sound/mobs/non-humanoids/firebot/candle_tip.ogg',
+ FIREBOT_VOICED_ELECTRIC_FIRE = 'sound/mobs/non-humanoids/firebot/electric_fire_tip.ogg',
+ FIREBOT_VOICED_FUEL_TIP = 'sound/mobs/non-humanoids/firebot/gasoline_tip.ogg'
)
ai_controller.set_blackboard_key(BB_FIREBOT_EMAGGED_LINES, emagged_lines)
ai_controller.set_blackboard_key(BB_FIREBOT_IDLE_LINES, idle_lines)
diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
index 38884bec503da..1fa30063dd581 100644
--- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
+++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
@@ -48,7 +48,7 @@
can_slip_callback = CALLBACK(src, PROC_REF(pre_slip)),\
)
AddComponent(/datum/component/stun_n_cuff,\
- stun_sound = 'sound/items/AirHorn.ogg',\
+ stun_sound = 'sound/items/airhorn/AirHorn.ogg',\
post_stun_callback = CALLBACK(src, PROC_REF(post_stun)),\
post_arrest_callback = CALLBACK(src, PROC_REF(post_arrest)),\
handcuff_type = /obj/item/restraints/handcuffs/cable/zipties/fake,\
diff --git a/code/modules/mob/living/basic/bots/hygienebot/hygienebot.dm b/code/modules/mob/living/basic/bots/hygienebot/hygienebot.dm
index 4dbd78dcac14a..6100a81279747 100644
--- a/code/modules/mob/living/basic/bots/hygienebot/hygienebot.dm
+++ b/code/modules/mob/living/basic/bots/hygienebot/hygienebot.dm
@@ -29,23 +29,23 @@
var/static/mutable_appearance/fire_overlay = mutable_appearance('icons/mob/silicon/aibots.dmi', "hygienebot-fire")
///announcements we say when we find a target
var/static/list/found_announcements = list(
- HYGIENEBOT_VOICED_UNHYGIENIC = 'sound/voice/hygienebot/unhygienicclient.ogg',
+ HYGIENEBOT_VOICED_UNHYGIENIC = 'sound/mobs/non-humanoids/hygienebot/unhygienicclient.ogg',
)
///announcements we say when the target keeps moving away
var/static/list/threat_announcements = list(
- HYGIENEBOT_VOICED_THREAT_AIRLOCK = 'sound/voice/hygienebot/dragyouout.ogg',
- HYGIENEBOT_VOICED_FOUL_SMELL = 'sound/voice/hygienebot/foulsmelling.ogg',
- HYGIENEBOT_VOICED_TROGLODYTE = 'sound/voice/hygienebot/troglodyte.ogg',
- HYGIENEBOT_VOICED_GREEN_CLOUD = 'sound/voice/hygienebot/greencloud.ogg',
- HYGIENEBOT_VOICED_ARSEHOLE = 'sound/voice/hygienebot/letmeclean.ogg',
- HYGIENEBOT_VOICED_THREAT_ARTERIES = 'sound/voice/hygienebot/cutarteries.ogg',
- HYGIENEBOT_VOICED_STOP_RUNNING = 'sound/voice/hygienebot/stoprunning.ogg',
+ HYGIENEBOT_VOICED_THREAT_AIRLOCK = 'sound/mobs/non-humanoids/hygienebot/dragyouout.ogg',
+ HYGIENEBOT_VOICED_FOUL_SMELL = 'sound/mobs/non-humanoids/hygienebot/foulsmelling.ogg',
+ HYGIENEBOT_VOICED_TROGLODYTE = 'sound/mobs/non-humanoids/hygienebot/troglodyte.ogg',
+ HYGIENEBOT_VOICED_GREEN_CLOUD = 'sound/mobs/non-humanoids/hygienebot/greencloud.ogg',
+ HYGIENEBOT_VOICED_ARSEHOLE = 'sound/mobs/non-humanoids/hygienebot/letmeclean.ogg',
+ HYGIENEBOT_VOICED_THREAT_ARTERIES = 'sound/mobs/non-humanoids/hygienebot/cutarteries.ogg',
+ HYGIENEBOT_VOICED_STOP_RUNNING = 'sound/mobs/non-humanoids/hygienebot/stoprunning.ogg',
)
///announcements we say after we have cleaned our target
var/static/list/cleaned_announcements = list(
- HYGIENEBOT_VOICED_FUCKING_FINALLY = 'sound/voice/hygienebot/finally.ogg',
- HYGIENEBOT_VOICED_THANK_GOD = 'sound/voice/hygienebot/thankgod.ogg',
- HYGIENEBOT_VOICED_DEGENERATE = 'sound/voice/hygienebot/degenerate.ogg',
+ HYGIENEBOT_VOICED_FUCKING_FINALLY = 'sound/mobs/non-humanoids/hygienebot/finally.ogg',
+ HYGIENEBOT_VOICED_THANK_GOD = 'sound/mobs/non-humanoids/hygienebot/thankgod.ogg',
+ HYGIENEBOT_VOICED_DEGENERATE = 'sound/mobs/non-humanoids/hygienebot/degenerate.ogg',
)
/mob/living/basic/bot/hygienebot/Initialize(mapload)
diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm
index 7b100aa554582..2466ab931cd19 100644
--- a/code/modules/mob/living/basic/bots/medbot/medbot.dm
+++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm
@@ -29,66 +29,66 @@
///anouncements when we find a target to heal
var/static/list/wait_announcements = list(
- MEDIBOT_VOICED_HOLD_ON = 'sound/voice/medbot/coming.ogg',
- MEDIBOT_VOICED_WANT_TO_HELP = 'sound/voice/medbot/help.ogg',
- MEDIBOT_VOICED_YOU_ARE_INJURED = 'sound/voice/medbot/injured.ogg',
+ MEDIBOT_VOICED_HOLD_ON = 'sound/mobs/non-humanoids/medbot/coming.ogg',
+ MEDIBOT_VOICED_WANT_TO_HELP = 'sound/mobs/non-humanoids/medbot/help.ogg',
+ MEDIBOT_VOICED_YOU_ARE_INJURED = 'sound/mobs/non-humanoids/medbot/injured.ogg',
)
///announcements after we heal someone
var/static/list/afterheal_announcements = list(
- MEDIBOT_VOICED_ALL_PATCHED_UP = 'sound/voice/medbot/patchedup.ogg',
- MEDIBOT_VOICED_APPLE_A_DAY = 'sound/voice/medbot/apple.ogg',
- MEDIBOT_VOICED_FEEL_BETTER = 'sound/voice/medbot/feelbetter.ogg',
+ MEDIBOT_VOICED_ALL_PATCHED_UP = 'sound/mobs/non-humanoids/medbot/patchedup.ogg',
+ MEDIBOT_VOICED_APPLE_A_DAY = 'sound/mobs/non-humanoids/medbot/apple.ogg',
+ MEDIBOT_VOICED_FEEL_BETTER = 'sound/mobs/non-humanoids/medbot/feelbetter.ogg',
)
///announcements when we are healing someone near death
var/static/list/near_death_announcements = list(
- MEDIBOT_VOICED_STAY_WITH_ME = 'sound/voice/medbot/no.ogg',
- MEDIBOT_VOICED_LIVE = 'sound/voice/medbot/live.ogg',
- MEDIBOT_VOICED_NEVER_LOST = 'sound/voice/medbot/lost.ogg',
+ MEDIBOT_VOICED_STAY_WITH_ME = 'sound/mobs/non-humanoids/medbot/no.ogg',
+ MEDIBOT_VOICED_LIVE = 'sound/mobs/non-humanoids/medbot/live.ogg',
+ MEDIBOT_VOICED_NEVER_LOST = 'sound/mobs/non-humanoids/medbot/lost.ogg',
)
///announcements when we are idle
var/static/list/idle_lines = list(
- MEDIBOT_VOICED_DELICIOUS = 'sound/voice/medbot/delicious.ogg',
- MEDIBOT_VOICED_PLASTIC_SURGEON = 'sound/voice/medbot/surgeon.ogg',
- MEDIBOT_VOICED_MASK_ON = 'sound/voice/medbot/radar.ogg',
- MEDIBOT_VOICED_ALWAYS_A_CATCH = 'sound/voice/medbot/catch.ogg',
- MEDIBOT_VOICED_LIKE_FLIES = 'sound/voice/medbot/flies.ogg',
- MEDIBOT_VOICED_SUFFER = 'sound/voice/medbot/why.ogg',
+ MEDIBOT_VOICED_DELICIOUS = 'sound/mobs/non-humanoids/medbot/delicious.ogg',
+ MEDIBOT_VOICED_PLASTIC_SURGEON = 'sound/mobs/non-humanoids/medbot/surgeon.ogg',
+ MEDIBOT_VOICED_MASK_ON = 'sound/mobs/non-humanoids/medbot/radar.ogg',
+ MEDIBOT_VOICED_ALWAYS_A_CATCH = 'sound/mobs/non-humanoids/medbot/catch.ogg',
+ MEDIBOT_VOICED_LIKE_FLIES = 'sound/mobs/non-humanoids/medbot/flies.ogg',
+ MEDIBOT_VOICED_SUFFER = 'sound/mobs/non-humanoids/medbot/why.ogg',
)
///announcements when we are emagged
var/static/list/emagged_announcements = list(
- MEDIBOT_VOICED_FUCK_YOU = 'sound/voice/medbot/fuck_you.ogg',
- MEDIBOT_VOICED_NOT_A_GAME = 'sound/voice/medbot/turn_off.ogg',
- MEDIBOT_VOICED_IM_DIFFERENT = 'sound/voice/medbot/im_different.ogg',
- MEDIBOT_VOICED_FOURTH_WALL = 'sound/voice/medbot/close.ogg',
- MEDIBOT_VOICED_SHINDEMASHOU = 'sound/voice/medbot/shindemashou.ogg',
+ MEDIBOT_VOICED_FUCK_YOU = 'sound/mobs/non-humanoids/medbot/fuck_you.ogg',
+ MEDIBOT_VOICED_NOT_A_GAME = 'sound/mobs/non-humanoids/medbot/turn_off.ogg',
+ MEDIBOT_VOICED_IM_DIFFERENT = 'sound/mobs/non-humanoids/medbot/im_different.ogg',
+ MEDIBOT_VOICED_FOURTH_WALL = 'sound/mobs/non-humanoids/medbot/close.ogg',
+ MEDIBOT_VOICED_SHINDEMASHOU = 'sound/mobs/non-humanoids/medbot/shindemashou.ogg',
)
///announcements when we are being tipped
var/static/list/tipped_announcements = list(
- MEDIBOT_VOICED_WAIT = 'sound/voice/medbot/hey_wait.ogg',
- MEDIBOT_VOICED_DONT = 'sound/voice/medbot/please_dont.ogg',
- MEDIBOT_VOICED_TRUSTED_YOU = 'sound/voice/medbot/i_trusted_you.ogg',
- MEDIBOT_VOICED_NO_SAD = 'sound/voice/medbot/nooo.ogg',
- MEDIBOT_VOICED_OH_FUCK = 'sound/voice/medbot/oh_fuck.ogg',
+ MEDIBOT_VOICED_WAIT = 'sound/mobs/non-humanoids/medbot/hey_wait.ogg',
+ MEDIBOT_VOICED_DONT = 'sound/mobs/non-humanoids/medbot/please_dont.ogg',
+ MEDIBOT_VOICED_TRUSTED_YOU = 'sound/mobs/non-humanoids/medbot/i_trusted_you.ogg',
+ MEDIBOT_VOICED_NO_SAD = 'sound/mobs/non-humanoids/medbot/nooo.ogg',
+ MEDIBOT_VOICED_OH_FUCK = 'sound/mobs/non-humanoids/medbot/oh_fuck.ogg',
)
///announcements when we are being untipped
var/static/list/untipped_announcements = list(
- MEDIBOT_VOICED_FORGIVE = 'sound/voice/medbot/forgive.ogg',
- MEDIBOT_VOICED_THANKS = 'sound/voice/medbot/thank_you.ogg',
- MEDIBOT_VOICED_GOOD_PERSON = 'sound/voice/medbot/youre_good.ogg',
+ MEDIBOT_VOICED_FORGIVE = 'sound/mobs/non-humanoids/medbot/forgive.ogg',
+ MEDIBOT_VOICED_THANKS = 'sound/mobs/non-humanoids/medbot/thank_you.ogg',
+ MEDIBOT_VOICED_GOOD_PERSON = 'sound/mobs/non-humanoids/medbot/youre_good.ogg',
)
///announcements when we are worried
var/static/list/worried_announcements = list(
- MEDIBOT_VOICED_PUT_BACK = 'sound/voice/medbot/please_put_me_back.ogg',
- MEDIBOT_VOICED_IM_SCARED = 'sound/voice/medbot/please_im_scared.ogg',
- MEDIBOT_VOICED_NEED_HELP = 'sound/voice/medbot/dont_like.ogg',
- MEDIBOT_VOICED_THIS_HURTS = 'sound/voice/medbot/pain_is_real.ogg',
- MEDIBOT_VOICED_THE_END = 'sound/voice/medbot/is_this_the_end.ogg',
- MEDIBOT_VOICED_NOOO = 'sound/voice/medbot/nooo.ogg',
+ MEDIBOT_VOICED_PUT_BACK = 'sound/mobs/non-humanoids/medbot/please_put_me_back.ogg',
+ MEDIBOT_VOICED_IM_SCARED = 'sound/mobs/non-humanoids/medbot/please_im_scared.ogg',
+ MEDIBOT_VOICED_NEED_HELP = 'sound/mobs/non-humanoids/medbot/dont_like.ogg',
+ MEDIBOT_VOICED_THIS_HURTS = 'sound/mobs/non-humanoids/medbot/pain_is_real.ogg',
+ MEDIBOT_VOICED_THE_END = 'sound/mobs/non-humanoids/medbot/is_this_the_end.ogg',
+ MEDIBOT_VOICED_NOOO = 'sound/mobs/non-humanoids/medbot/nooo.ogg',
)
var/static/list/misc_announcements= list(
- MEDIBOT_VOICED_CHICKEN = 'sound/voice/medbot/i_am_chicken.ogg',
+ MEDIBOT_VOICED_CHICKEN = 'sound/mobs/non-humanoids/medbot/i_am_chicken.ogg',
)
/// drop determining variable
var/health_analyzer = /obj/item/healthanalyzer
diff --git a/code/modules/mob/living/basic/clown/clown.dm b/code/modules/mob/living/basic/clown/clown.dm
index 9e8f6950525a7..3fd2328458293 100644
--- a/code/modules/mob/living/basic/clown/clown.dm
+++ b/code/modules/mob/living/basic/clown/clown.dm
@@ -247,7 +247,7 @@
armour_penetration = 20
attack_verb_continuous = "steals the girlfriend of"
attack_verb_simple = "steal the girlfriend of"
- attack_sound = 'sound/items/airhorn2.ogg'
+ attack_sound = 'sound/items/airhorn/airhorn2.ogg'
loot = list(
/obj/effect/gibspawner/human,
/obj/effect/spawner/foam_starter/small,
@@ -584,7 +584,7 @@
var/peels_to_spawn = min(peel_amount, reachable_turfs.len)
for(var/i in 1 to peels_to_spawn)
new banana_type(pick_n_take(reachable_turfs))
- playsound(owner, 'sound/creatures/clown/clownana_rustle.ogg', 60)
+ playsound(owner, 'sound/mobs/non-humanoids/clown/clownana_rustle.ogg', 60)
animate(owner, time = 1, pixel_x = 6, easing = CUBIC_EASING | EASE_OUT)
animate(time = 2, pixel_x = -8, easing = CUBIC_EASING)
animate(time = 1, pixel_x = 0, easing = CUBIC_EASING | EASE_IN)
@@ -615,7 +615,7 @@
if(!do_after(owner, 1 SECONDS))
activating = FALSE
return
- playsound(owner, 'sound/creatures/clown/hehe.ogg', 100)
+ playsound(owner, 'sound/mobs/non-humanoids/clown/hehe.ogg', 100)
if(!do_after(owner, 1 SECONDS))
activating = FALSE
return
@@ -626,5 +626,5 @@
. = ..()
new /obj/item/food/grown/banana/bunch(get_step(owner.loc, owner.dir))
playsound(owner, 'sound/items/bikehorn.ogg', 60)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), owner, 'sound/creatures/clown/hohoho.ogg', 100, 1), 1 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), owner, 'sound/mobs/non-humanoids/clown/hohoho.ogg', 100, 1), 1 SECONDS)
StartCooldown()
diff --git a/code/modules/mob/living/basic/cult/constructs/artificer.dm b/code/modules/mob/living/basic/cult/constructs/artificer.dm
index 8856c0e66a2ad..1d66f193ebc29 100644
--- a/code/modules/mob/living/basic/cult/constructs/artificer.dm
+++ b/code/modules/mob/living/basic/cult/constructs/artificer.dm
@@ -13,7 +13,7 @@
melee_damage_upper = 5
attack_verb_continuous = "rams"
attack_verb_simple = "ram"
- attack_sound = 'sound/weapons/punch2.ogg'
+ attack_sound = 'sound/items/weapons/punch2.ogg'
construct_spells = list(
/datum/action/cooldown/spell/aoe/magic_missile/lesser,
/datum/action/cooldown/spell/conjure/construct/lesser,
diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm
index b48a26b681937..95a5956825421 100644
--- a/code/modules/mob/living/basic/cult/constructs/harvester.dm
+++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm
@@ -11,7 +11,7 @@
melee_damage_upper = 20
attack_verb_continuous = "butchers"
attack_verb_simple = "butcher"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
construct_spells = list(
/datum/action/cooldown/spell/aoe/area_conversion,
diff --git a/code/modules/mob/living/basic/cult/constructs/juggernaut.dm b/code/modules/mob/living/basic/cult/constructs/juggernaut.dm
index ef972d2b91693..5d5ae8c645499 100644
--- a/code/modules/mob/living/basic/cult/constructs/juggernaut.dm
+++ b/code/modules/mob/living/basic/cult/constructs/juggernaut.dm
@@ -14,7 +14,7 @@
attack_verb_continuous = "smashes their armored gauntlet into"
attack_verb_simple = "smash your armored gauntlet into"
speed = 2.5
- attack_sound = 'sound/weapons/punch3.ogg'
+ attack_sound = 'sound/items/weapons/punch3.ogg'
status_flags = NONE
mob_size = MOB_SIZE_LARGE
construct_spells = list(
diff --git a/code/modules/mob/living/basic/cult/constructs/proteon.dm b/code/modules/mob/living/basic/cult/constructs/proteon.dm
index 2ff58d2463c0b..c39af7831fe8b 100644
--- a/code/modules/mob/living/basic/cult/constructs/proteon.dm
+++ b/code/modules/mob/living/basic/cult/constructs/proteon.dm
@@ -12,7 +12,7 @@
attack_verb_continuous = "pinches"
attack_verb_simple = "pinch"
smashes_walls = TRUE
- attack_sound = 'sound/weapons/punch2.ogg'
+ attack_sound = 'sound/items/weapons/punch2.ogg'
playstyle_string = span_bold("You are a Proteon. Your abilities in combat are outmatched by most combat constructs, but you are still fast and nimble. Run metal and supplies, and cooperate with your fellow cultists.")
/// Hostile NPC version
diff --git a/code/modules/mob/living/basic/cult/constructs/wraith.dm b/code/modules/mob/living/basic/cult/constructs/wraith.dm
index 06a09b6446ed3..4a41bc1cc2aa7 100644
--- a/code/modules/mob/living/basic/cult/constructs/wraith.dm
+++ b/code/modules/mob/living/basic/cult/constructs/wraith.dm
@@ -10,7 +10,7 @@
melee_damage_upper = 20
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
construct_spells = list(
/datum/action/cooldown/spell/jaunt/ethereal_jaunt/shift,
diff --git a/code/modules/mob/living/basic/drone/extra_drone_types.dm b/code/modules/mob/living/basic/drone/extra_drone_types.dm
index 08c9278b75331..402aca848de8c 100644
--- a/code/modules/mob/living/basic/drone/extra_drone_types.dm
+++ b/code/modules/mob/living/basic/drone/extra_drone_types.dm
@@ -126,7 +126,7 @@
" - Going to the main station in search of materials.\n"+\
" - Interacting with non-drone players outside KS13, dead or alive.\n"+\
"These rules are at admin discretion and will be heavily enforced.\n"+\
- "If you do not have the regular drone laws, follow your laws to the best of your ability."
+ span_warning("If you do not have the regular drone laws, follow your laws to the best of your ability.")
shy = FALSE
/mob/living/basic/drone/derelict/Initialize(mapload)
diff --git a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
index 66191c92516f2..fadac576ea599 100644
--- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
+++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
@@ -20,7 +20,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
health = 50
maxHealth = 50
diff --git a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
index dc3e09e38f211..47f11a02839e4 100644
--- a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
+++ b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm
@@ -15,7 +15,7 @@
attack_verb_continuous = "telekinetically rams its moonihorn into"
attack_verb_simple = "telekinetically ram your moonihorn into"
gold_core_spawnable = NO_SPAWN
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
ai_controller = /datum/ai_controller/basic_controller/cow/moonicorn
food_types = list(/obj/item/food/grown/galaxythistle)
diff --git a/code/modules/mob/living/basic/farm_animals/deer/deer.dm b/code/modules/mob/living/basic/farm_animals/deer/deer.dm
index eb443def65996..dc27c82dd82f5 100644
--- a/code/modules/mob/living/basic/farm_animals/deer/deer.dm
+++ b/code/modules/mob/living/basic/farm_animals/deer/deer.dm
@@ -16,7 +16,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "bucks"
attack_verb_simple = "buck"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
health = 75
maxHealth = 75
blood_volume = BLOOD_VOLUME_NORMAL
diff --git a/code/modules/mob/living/basic/farm_animals/goat/_goat.dm b/code/modules/mob/living/basic/farm_animals/goat/_goat.dm
index f2354cc5f149a..7b177c5c17d24 100644
--- a/code/modules/mob/living/basic/farm_animals/goat/_goat.dm
+++ b/code/modules/mob/living/basic/farm_animals/goat/_goat.dm
@@ -15,7 +15,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
butcher_results = list(/obj/item/food/meat/slab/grassfed = 4)
diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
index fcb61892e5714..b536cb3aebfe6 100644
--- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
+++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
@@ -31,7 +31,7 @@
obj_damage = 40
attack_verb_continuous = "pummels"
attack_verb_simple = "pummel"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
unique_name = TRUE
ai_controller = /datum/ai_controller/basic_controller/gorilla
faction = list(FACTION_MONKEY, FACTION_JUNGLE)
diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_emotes.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_emotes.dm
index 94133336c4d49..063e6bfb6599a 100644
--- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_emotes.dm
+++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_emotes.dm
@@ -8,4 +8,4 @@
message = "oogas."
message_param = "oogas at %t."
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE
- sound = 'sound/creatures/gorilla.ogg'
+ sound = 'sound/mobs/non-humanoids/gorilla/gorilla.ogg'
diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm
index 6f732f1684479..d0fbb5a82473a 100644
--- a/code/modules/mob/living/basic/farm_animals/pig.dm
+++ b/code/modules/mob/living/basic/farm_animals/pig.dm
@@ -18,7 +18,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
melee_damage_lower = 1
melee_damage_upper = 2
diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm
index 9f008d85fcc7a..29672e032c84b 100644
--- a/code/modules/mob/living/basic/farm_animals/pony.dm
+++ b/code/modules/mob/living/basic/farm_animals/pony.dm
@@ -15,7 +15,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
melee_damage_lower = 5
melee_damage_upper = 10
@@ -46,7 +46,7 @@
/mob/living/basic/pony/tamed(mob/living/tamer, atom/food)
can_buckle = TRUE
buckle_lying = 0
- playsound(src, 'sound/creatures/pony/snort.ogg', 50)
+ playsound(src, 'sound/mobs/non-humanoids/pony/snort.ogg', 50)
AddElement(/datum/element/ridable, /datum/component/riding/creature/pony)
visible_message(span_notice("[src] snorts happily."))
new /obj/effect/temp_visual/heart(loc)
@@ -85,9 +85,9 @@
manual_emote("whinnies ANGRILY!")
playsound(src, pick(list(
- 'sound/creatures/pony/whinny01.ogg',
- 'sound/creatures/pony/whinny02.ogg',
- 'sound/creatures/pony/whinny03.ogg'
+ 'sound/mobs/non-humanoids/pony/whinny01.ogg',
+ 'sound/mobs/non-humanoids/pony/whinny02.ogg',
+ 'sound/mobs/non-humanoids/pony/whinny03.ogg'
)), 50)
/mob/living/basic/pony/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration)
diff --git a/code/modules/mob/living/basic/farm_animals/rabbit.dm b/code/modules/mob/living/basic/farm_animals/rabbit.dm
index f77772ab17c7b..dec48ea8be4af 100644
--- a/code/modules/mob/living/basic/farm_animals/rabbit.dm
+++ b/code/modules/mob/living/basic/farm_animals/rabbit.dm
@@ -26,7 +26,7 @@
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
response_disarm_simple = "gently push aside"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
response_harm_continuous = "kicks"
response_harm_simple = "kick"
diff --git a/code/modules/mob/living/basic/farm_animals/sheep.dm b/code/modules/mob/living/basic/farm_animals/sheep.dm
index 5617da83a53a5..6fd4c485db79e 100644
--- a/code/modules/mob/living/basic/farm_animals/sheep.dm
+++ b/code/modules/mob/living/basic/farm_animals/sheep.dm
@@ -18,7 +18,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_KICK
health = 50
maxHealth = 50
@@ -40,7 +40,7 @@
item_generation_wait = 3 MINUTES, \
item_reduction_time = 30 SECONDS, \
item_harvest_time = 5 SECONDS, \
- item_harvest_sound = 'sound/surgery/scalpel1.ogg', \
+ item_harvest_sound = 'sound/items/handling/surgery/scalpel1.ogg', \
)
AddElement(/datum/element/ai_retaliate)
RegisterSignal(src, COMSIG_LIVING_CULT_SACRIFICED, PROC_REF(on_sacrificed))
diff --git a/code/modules/mob/living/basic/festivus_pole.dm b/code/modules/mob/living/basic/festivus_pole.dm
index 1c1a88dd31fe5..7ff4ab6c53262 100644
--- a/code/modules/mob/living/basic/festivus_pole.dm
+++ b/code/modules/mob/living/basic/festivus_pole.dm
@@ -30,7 +30,7 @@
melee_damage_upper = 12
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
faction = list(FACTION_HOSTILE)
diff --git a/code/modules/mob/living/basic/guardian/guardian.dm b/code/modules/mob/living/basic/guardian/guardian.dm
index b338a5a4435c3..9ddf2c1fc319f 100644
--- a/code/modules/mob/living/basic/guardian/guardian.dm
+++ b/code/modules/mob/living/basic/guardian/guardian.dm
@@ -31,7 +31,7 @@
response_disarm_simple = "flail at"
response_harm_continuous = "punches"
response_harm_simple = "punch"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
combat_mode = TRUE
diff --git a/code/modules/mob/living/basic/guardian/guardian_fluff.dm b/code/modules/mob/living/basic/guardian/guardian_fluff.dm
index 4ede238921ed3..2b8a8ff8cec31 100644
--- a/code/modules/mob/living/basic/guardian/guardian_fluff.dm
+++ b/code/modules/mob/living/basic/guardian/guardian_fluff.dm
@@ -22,7 +22,7 @@
/// Verb shown to attacker when attacking
var/attack_verb_simple = "punch"
/// Sound played when we attack
- var/attack_sound = 'sound/weapons/punch1.ogg'
+ var/attack_sound = 'sound/items/weapons/punch1.ogg'
/// Visible effect when we attack
var/attack_vis_effect = ATTACK_EFFECT_PUNCH
/// An associative list of type of guardian to some kind of descriptive text to show on appearance.
diff --git a/code/modules/mob/living/basic/guardian/guardian_types/assassin.dm b/code/modules/mob/living/basic/guardian/guardian_types/assassin.dm
index 2e94aaf039498..19f98a70f409b 100644
--- a/code/modules/mob/living/basic/guardian/guardian_types/assassin.dm
+++ b/code/modules/mob/living/basic/guardian/guardian_types/assassin.dm
@@ -9,7 +9,7 @@
melee_damage_upper = 15
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
sharpness = SHARP_POINTY
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1)
diff --git a/code/modules/mob/living/basic/guardian/guardian_types/lightning.dm b/code/modules/mob/living/basic/guardian/guardian_types/lightning.dm
index b2ac9d66e8c23..3f8f492f1d0f0 100644
--- a/code/modules/mob/living/basic/guardian/guardian_types/lightning.dm
+++ b/code/modules/mob/living/basic/guardian/guardian_types/lightning.dm
@@ -6,7 +6,7 @@
attack_verb_continuous = "shocks"
attack_verb_simple = "shock"
melee_damage_type = BURN
- attack_sound = 'sound/machines/defib_zap.ogg'
+ attack_sound = 'sound/machines/defib/defib_zap.ogg'
damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, STAMINA = 0, OXY = 0.7)
range = 7
playstyle_string = span_holoparasite("As a lightning type, you will apply lightning chains to targets on attack and have a lightning chain to your summoner. Lightning chains will shock anyone near them.")
diff --git a/code/modules/mob/living/basic/guardian/guardian_types/support.dm b/code/modules/mob/living/basic/guardian/guardian_types/support.dm
index 8ab24b7e9b7d1..46b69652cf5d9 100644
--- a/code/modules/mob/living/basic/guardian/guardian_types/support.dm
+++ b/code/modules/mob/living/basic/guardian/guardian_types/support.dm
@@ -134,7 +134,7 @@
/// Start teleporting
/datum/action/cooldown/mob_cooldown/guardian_bluespace_beacon/proc/perform_teleport(mob/living/source, atom/target)
source.do_attack_animation(target)
- playsound(target, 'sound/weapons/punch1.ogg', 50, TRUE, TRUE, frequency = -1)
+ playsound(target, 'sound/items/weapons/punch1.ogg', 50, TRUE, TRUE, frequency = -1)
source.balloon_alert(source, "teleporting...")
target.visible_message(
span_danger("[target] starts to glow faintly!"), \
diff --git a/code/modules/mob/living/basic/heretic/_heretic_summon.dm b/code/modules/mob/living/basic/heretic/_heretic_summon.dm
index b6336182a2224..b482ee2d211a2 100644
--- a/code/modules/mob/living/basic/heretic/_heretic_summon.dm
+++ b/code/modules/mob/living/basic/heretic/_heretic_summon.dm
@@ -13,7 +13,7 @@
speed = 0
melee_attack_cooldown = CLICK_CD_MELEE
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
response_help_continuous = "thinks better of touching"
response_help_simple = "think better of touching"
response_disarm_continuous = "flails at"
diff --git a/code/modules/mob/living/basic/heretic/fire_shark.dm b/code/modules/mob/living/basic/heretic/fire_shark.dm
index c4106050bc26e..e65fefc235e59 100644
--- a/code/modules/mob/living/basic/heretic/fire_shark.dm
+++ b/code/modules/mob/living/basic/heretic/fire_shark.dm
@@ -11,7 +11,7 @@
maxHealth = 16
melee_damage_lower = 8
melee_damage_upper = 8
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
obj_damage = 0
attack_verb_continuous = "bites"
diff --git a/code/modules/mob/living/basic/heretic/flesh_worm.dm b/code/modules/mob/living/basic/heretic/flesh_worm.dm
index 92b910c717fae..cddd34ba44184 100644
--- a/code/modules/mob/living/basic/heretic/flesh_worm.dm
+++ b/code/modules/mob/living/basic/heretic/flesh_worm.dm
@@ -98,7 +98,7 @@
if(!istype(target, /obj/item/bodypart/arm))
return ..()
visible_message(span_warning("[src] devours [target]!"))
- playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
qdel(target)
on_arm_eaten()
diff --git a/code/modules/mob/living/basic/heretic/star_gazer.dm b/code/modules/mob/living/basic/heretic/star_gazer.dm
index e503cd65aea16..57a0ddfe322d8 100644
--- a/code/modules/mob/living/basic/heretic/star_gazer.dm
+++ b/code/modules/mob/living/basic/heretic/star_gazer.dm
@@ -21,11 +21,11 @@
attack_verb_continuous = "ravages"
attack_verb_simple = "ravage"
attack_vis_effect = ATTACK_EFFECT_SLASH
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
melee_attack_cooldown = 0.6 SECONDS
speak_emote = list("growls")
damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0, STAMINA = 0, OXY = 0)
- death_sound = 'sound/magic/cosmic_expansion.ogg'
+ death_sound = 'sound/effects/magic/cosmic_expansion.ogg'
slowed_by_drag = FALSE
move_force = MOVE_FORCE_OVERPOWERING
diff --git a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm
index a83953ae1c94d..0b27ac6958e0e 100644
--- a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm
+++ b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon.dm
@@ -16,7 +16,7 @@
melee_damage_upper = 15
attack_verb_continuous = "slices"
attack_verb_simple = "slice"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
move_force = MOVE_FORCE_VERY_STRONG
move_resist = MOVE_FORCE_VERY_STRONG
@@ -24,7 +24,7 @@
crusher_loot = /obj/item/crusher_trophy/ice_demon_cube
ai_controller = /datum/ai_controller/basic_controller/ice_demon
death_message = "fades as the energies that tied it to this world dissipate."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
/mob/living/basic/mining/ice_demon/Initialize(mapload)
. = ..()
@@ -38,7 +38,7 @@
AddComponent(\
/datum/component/ranged_attacks,\
projectile_type = /obj/projectile/temp/ice_demon,\
- projectile_sound = 'sound/weapons/pierce.ogg',\
+ projectile_sound = 'sound/items/weapons/pierce.ogg',\
)
var/static/list/death_loot = list(/obj/item/stack/ore/bluespace_crystal = 3)
AddElement(/datum/element/death_drops, death_loot)
@@ -66,7 +66,7 @@
melee_damage_upper = 5
attack_verb_continuous = "slices"
attack_verb_simple = "slice"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
alpha = 80
ai_controller = /datum/ai_controller/basic_controller/ice_demon/afterimage
///how long do we exist for
diff --git a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
index 768375cfce8a6..43f8c61d0c880 100644
--- a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
+++ b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp.dm
@@ -26,9 +26,9 @@
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
death_message = "collapses on its side."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
move_force = MOVE_FORCE_VERY_STRONG
move_resist = MOVE_FORCE_VERY_STRONG
pull_force = MOVE_FORCE_VERY_STRONG
diff --git a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
index b7a947f00e309..3708d754ab4b0 100644
--- a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
+++ b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm
@@ -30,7 +30,7 @@
attack_verb_simple = "bite"
death_message = "snarls its last and perishes."
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
move_force = MOVE_FORCE_WEAK
move_resist = MOVE_FORCE_WEAK
pull_force = MOVE_FORCE_WEAK
diff --git a/code/modules/mob/living/basic/jungle/leaper/leaper.dm b/code/modules/mob/living/basic/jungle/leaper/leaper.dm
index f3213897f9bdb..94babd0218e5b 100644
--- a/code/modules/mob/living/basic/jungle/leaper/leaper.dm
+++ b/code/modules/mob/living/basic/jungle/leaper/leaper.dm
@@ -23,7 +23,7 @@
minimum_survivable_temperature = 0
maximum_survivable_temperature = INFINITY
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
status_flags = NONE
lighting_cutoff_red = 5
diff --git a/code/modules/mob/living/basic/jungle/leaper/leaper_abilities.dm b/code/modules/mob/living/basic/jungle/leaper/leaper_abilities.dm
index efc09410db488..d753c42c51ec8 100644
--- a/code/modules/mob/living/basic/jungle/leaper/leaper_abilities.dm
+++ b/code/modules/mob/living/basic/jungle/leaper/leaper_abilities.dm
@@ -137,7 +137,7 @@
if(!length(possible_turfs))
return FALSE
- playsound(owner, 'sound/magic/fireball.ogg', 70, TRUE)
+ playsound(owner, 'sound/effects/magic/fireball.ogg', 70, TRUE)
new /obj/effect/temp_visual/blood_drop_rising(get_turf(owner))
addtimer(CALLBACK(src, PROC_REF(fire_droplets), possible_turfs), 1.5 SECONDS)
StartCooldown()
diff --git a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm
index 62b36a1bbaf94..059375a7ed6a6 100644
--- a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm
+++ b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid.dm
@@ -29,7 +29,7 @@
mob_size = MOB_SIZE_LARGE
speak_emote = list("chitters")
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
ai_controller = /datum/ai_controller/basic_controller/mega_arachnid
alpha = 40
diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling.dm b/code/modules/mob/living/basic/jungle/seedling/seedling.dm
index 7a853b8a9d086..00db708bc3299 100644
--- a/code/modules/mob/living/basic/jungle/seedling/seedling.dm
+++ b/code/modules/mob/living/basic/jungle/seedling/seedling.dm
@@ -31,7 +31,7 @@
lighting_cutoff_blue = 25
mob_size = MOB_SIZE_LARGE
faction = list(FACTION_PLANTS)
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
ai_controller = /datum/ai_controller/basic_controller/seedling
///the state of combat we are in
@@ -338,7 +338,7 @@
living_target.ignite_mob()
living_target.adjustFireLoss(30)
- playsound(target_turf, 'sound/magic/lightningbolt.ogg', 50, TRUE)
+ playsound(target_turf, 'sound/effects/magic/lightningbolt.ogg', 50, TRUE)
if(!is_seedling)
return
var/mob/living/basic/seedling/seed_firer = firer
diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
index 37a3ec1c0aca9..303776384d1f6 100644
--- a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
+++ b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm
@@ -7,8 +7,8 @@
armor_flag = ENERGY
light_color = LIGHT_COLOR_DIM_YELLOW
speed = 1.6
- hitsound = 'sound/weapons/sear.ogg'
- hitsound_wall = 'sound/weapons/effects/searwall.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
+ hitsound_wall = 'sound/items/weapons/effects/searwall.ogg'
nondirectional_sprite = TRUE
/obj/projectile/seedling/on_hit(atom/target, blocked = 0, pierce_hit)
diff --git a/code/modules/mob/living/basic/jungle/venus_human_trap.dm b/code/modules/mob/living/basic/jungle/venus_human_trap.dm
index ec375283fcea0..0a4a557eef15b 100644
--- a/code/modules/mob/living/basic/jungle/venus_human_trap.dm
+++ b/code/modules/mob/living/basic/jungle/venus_human_trap.dm
@@ -143,9 +143,9 @@
combat_mode = TRUE
basic_mob_flags = DEL_ON_DEATH
death_message = "collapses into bits of plant matter."
- attacked_sound = 'sound/creatures/venus_trap_hurt.ogg'
- death_sound = 'sound/creatures/venus_trap_death.ogg'
- attack_sound = 'sound/creatures/venus_trap_hit.ogg'
+ attacked_sound = 'sound/mobs/non-humanoids/venus_trap/venus_trap_hurt.ogg'
+ death_sound = 'sound/mobs/non-humanoids/venus_trap/venus_trap_death.ogg'
+ attack_sound = 'sound/mobs/non-humanoids/venus_trap/venus_trap_hit.ogg'
unsuitable_heat_damage = 5 // heat damage is different from cold damage since coldmos is significantly more common than plasmafires
unsuitable_cold_damage = 2 // they now do take cold damage, but this should be sufficiently small that it does not cause major issues
habitable_atmos = null
diff --git a/code/modules/mob/living/basic/lavaland/basilisk/basilisk.dm b/code/modules/mob/living/basic/lavaland/basilisk/basilisk.dm
index 6c1f5ba0846cd..5f13d53160a83 100644
--- a/code/modules/mob/living/basic/lavaland/basilisk/basilisk.dm
+++ b/code/modules/mob/living/basic/lavaland/basilisk/basilisk.dm
@@ -16,7 +16,7 @@
attack_verb_continuous = "bites into"
attack_verb_simple = "bite into"
throw_blocked_message = "bounces off the shell of"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
ai_controller = /datum/ai_controller/basic_controller/basilisk
butcher_results = list(
@@ -30,7 +30,7 @@
/mob/living/basic/mining/basilisk/Initialize(mapload)
. = ..()
AddComponent(/datum/component/basic_mob_attack_telegraph)
- ranged_attacks = AddComponent(/datum/component/ranged_attacks, projectile_type = /obj/projectile/temp/watcher, projectile_sound = 'sound/weapons/pierce.ogg')
+ ranged_attacks = AddComponent(/datum/component/ranged_attacks, projectile_type = /obj/projectile/temp/watcher, projectile_sound = 'sound/items/weapons/pierce.ogg')
RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(check_lava))
/mob/living/basic/mining/basilisk/Destroy()
diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
index ca07c1a043ed5..8e43e43e72c31 100644
--- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
+++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm
@@ -53,7 +53,7 @@
name = "Spew Bile"
desc = "Spews bile everywhere. Must resurface after use to refresh."
projectile_type = /obj/projectile/bileworm_acid
- projectile_sound = 'sound/creatures/bileworm/bileworm_spit.ogg'
+ projectile_sound = 'sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg'
shared_cooldown = MOB_SHARED_COOLDOWN_1 | MOB_SHARED_COOLDOWN_2
/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/bileworm/Activate(atom/target_atom)
@@ -70,7 +70,7 @@
/obj/projectile/bileworm_acid
name = "acidic bile"
icon_state = "neurotoxin"
- hitsound = 'sound/weapons/sear.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
damage = 20
speed = 2
range = 20
diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
index 7c04ed65a61c7..a5740a51ebd9a 100644
--- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
+++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
@@ -51,7 +51,7 @@
owner_has_control = FALSE
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/bileworm_acid
- projectile_sound = 'sound/creatures/bileworm/bileworm_spit.ogg'
+ projectile_sound = 'sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg'
/datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet/New(Target)
firing_directions = GLOB.cardinals.Copy()
diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimbeam.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimbeam.dm
index 61f31f7044dbc..5900289cae569 100644
--- a/code/modules/mob/living/basic/lavaland/brimdemon/brimbeam.dm
+++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimbeam.dm
@@ -52,7 +52,7 @@
/// Create a laser in the direction we are facing
/datum/action/cooldown/mob_cooldown/brimbeam/proc/fire_laser()
owner.visible_message(span_danger("[owner] fires a brimbeam!"))
- playsound(owner, 'sound/creatures/brimdemon.ogg', 150, FALSE, 0, 3)
+ playsound(owner, 'sound/mobs/non-humanoids/brimdemon/brimdemon.ogg', 150, FALSE, 0, 3)
var/turf/target_turf = get_ranged_target_turf(owner, owner.dir, beam_range)
var/turf/origin_turf = get_turf(owner)
var/list/affected_turfs = get_line(origin_turf, target_turf) - origin_turf
diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
index 9a88c636cf511..81dc34002eedb 100644
--- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
+++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
@@ -14,13 +14,13 @@
speak_emote = list("cackles")
melee_damage_lower = 7.5
melee_damage_upper = 7.5
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
melee_attack_cooldown = 0.6 SECONDS
attack_vis_effect = ATTACK_EFFECT_BITE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
death_message = "wails as infernal energy escapes from its wounds, leaving it an empty husk."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
light_color = LIGHT_COLOR_BLOOD_MAGIC
light_power = 5
light_range = 1.4
diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_loot.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_loot.dm
index 0556affe76184..78960b5340d30 100644
--- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_loot.dm
+++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_loot.dm
@@ -12,7 +12,7 @@
/obj/item/crusher_trophy/brimdemon_fang/on_mark_detonation(mob/living/target, mob/living/user)
target.balloon_alert_to_viewers("[pick(comic_phrases)]!")
- playsound(target, 'sound/lavaland/brimdemon_crush.ogg', 100)
+ playsound(target, 'sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg', 100)
/// Reagent pool left by dying brimdemon
/obj/effect/decal/cleanable/brimdust
diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
index 59f7ffb249d07..26c0d79540a73 100644
--- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
+++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm
@@ -19,7 +19,7 @@
melee_damage_upper = 0
attack_verb_continuous = "barrels into"
attack_verb_simple = "barrel into"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
combat_mode = FALSE
speak_emote = list("screeches")
death_message = "stops moving as green liquid oozes from the carcass!"
diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
index 4a28fba66309e..7d6b1dc6e404a 100644
--- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
+++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm
@@ -19,7 +19,7 @@
obj_damage = 100
melee_damage_lower = 25
melee_damage_upper = 25
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_verb_continuous = "pulverizes"
attack_verb_simple = "pulverize"
throw_blocked_message = "does nothing to the tough hide of"
@@ -136,7 +136,7 @@
if (!COOLDOWN_FINISHED(src, ability_animation_cooldown))
return
COOLDOWN_START(src, ability_animation_cooldown, 2 SECONDS)
- playsound(src, 'sound/magic/demon_attack1.ogg', vol = 50, vary = TRUE)
+ playsound(src, 'sound/effects/magic/demon_attack1.ogg', vol = 50, vary = TRUE)
Shake(1, 0, 1.5 SECONDS)
/// Called slightly before tentacles ability comes off cooldown, as a warning
diff --git a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
index f0de6c3272e55..931b568e5ee3f 100644
--- a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
+++ b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
@@ -17,7 +17,7 @@
attack_verb_continuous = "weakly tackles"
attack_verb_simple = "weakly tackles"
speak_emote = list("telepathically cries")
- attack_sound = 'sound/weapons/pierce.ogg'
+ attack_sound = 'sound/items/weapons/pierce.ogg'
throw_blocked_message = "passes between the bodies of the"
obj_damage = 0
pass_flags = PASSTABLE
@@ -94,7 +94,7 @@
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
speak_emote = list("telepathically cries")
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
obj_damage = 0
density = FALSE
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm
index 12bf6555d97d4..76d3f51947e63 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm
@@ -21,7 +21,7 @@
attack_verb_continuous = "lashes out at"
attack_verb_simple = "lash out at"
speak_emote = list("gurgles")
- attack_sound = 'sound/weapons/pierce.ogg'
+ attack_sound = 'sound/items/weapons/pierce.ogg'
throw_blocked_message = "bounces harmlessly off of"
crusher_loot = /obj/item/crusher_trophy/legion_skull
death_message = "wails in chorus and dissolves into quivering flesh."
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm b/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm
index e578067a44576..df493825ec4e9 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion_brood.dm
@@ -26,7 +26,7 @@
attack_verb_simple = "bite"
attack_vis_effect = ATTACK_EFFECT_BITE
speak_emote = list("echoes") // who the fuck speaking as this mob it dies 10 seconds after it spawns
- attack_sound = 'sound/weapons/pierce.ogg'
+ attack_sound = 'sound/items/weapons/pierce.ogg'
density = FALSE
ai_controller = /datum/ai_controller/basic_controller/legion_brood
/// Reference to a guy who made us
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_monkey.dm b/code/modules/mob/living/basic/lavaland/legion/legion_monkey.dm
index 5345adc88da3c..9526dcaef52c6 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion_monkey.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion_monkey.dm
@@ -12,7 +12,7 @@
attack_verb_continuous = "mauls"
attack_verb_simple = "maul"
attack_vis_effect = ATTACK_EFFECT_BITE
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
speak_emote = list("chimpers")
corpse_type = /obj/effect/mob_spawn/corpse/human/monkey
ai_controller = /datum/ai_controller/basic_controller/legion_monkey
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
index 3f678da6910bc..d4503230e482f 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
@@ -7,7 +7,7 @@
icon_state = "legion_remains"
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_PARASITE_EGG
- organ_flags = ORGAN_ORGANIC | ORGAN_EDIBLE | ORGAN_VIRGIN | ORGAN_PROMINENT
+ organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
decay_factor = STANDARD_ORGAN_DECAY * 3 // About 5 minutes outside of a host
/// What stage of growth the corruption has reached.
var/stage = 0
@@ -21,10 +21,10 @@
var/spawn_type = /mob/living/basic/mining/legion
/// Spooky sounds to play as you start to turn
var/static/list/spooky_sounds = list(
- 'sound/voice/lowHiss1.ogg',
- 'sound/voice/lowHiss2.ogg',
- 'sound/voice/lowHiss3.ogg',
- 'sound/voice/lowHiss4.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss1.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss2.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss3.ogg',
+ 'sound/mobs/non-humanoids/hiss/lowHiss4.ogg',
)
/obj/item/organ/internal/legion_tumour/Initialize(mapload)
@@ -117,7 +117,7 @@
to_chat(owner, span_danger("Something flexes under your skin."))
if(SPT_PROB(2, seconds_per_tick))
if (prob(40))
- SEND_SOUND(owner, sound('sound/voice/ghost_whisper.ogg'))
+ SEND_SOUND(owner, sound('sound/music/antag/bloodcult/ghost_whisper.ogg'))
else
SEND_SOUND(owner, sound(pick(spooky_sounds)))
if(SPT_PROB(3, seconds_per_tick))
diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
index 8c879d3ab48c8..b4de3d2321fe6 100644
--- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
+++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
@@ -16,7 +16,7 @@
melee_damage_upper = 19
attack_verb_continuous = "snips"
attack_verb_simple = "snip"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE // Closer than a scratch to a crustacean pinching effect
melee_attack_cooldown = 1 SECONDS
butcher_results = list(
diff --git a/code/modules/mob/living/basic/lavaland/mook/mook.dm b/code/modules/mob/living/basic/lavaland/mook/mook.dm
index 6ecf54bc26482..888023897397e 100644
--- a/code/modules/mob/living/basic/lavaland/mook/mook.dm
+++ b/code/modules/mob/living/basic/lavaland/mook/mook.dm
@@ -15,9 +15,9 @@
move_resist = MOVE_FORCE_VERY_STRONG
melee_damage_lower = 8
melee_damage_upper = 8
- attack_sound = 'sound/weapons/rapierhit.ogg'
+ attack_sound = 'sound/items/weapons/rapierhit.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
- death_sound = 'sound/voice/mook_death.ogg'
+ death_sound = 'sound/mobs/non-humanoids/mook/mook_death.ogg'
ai_controller = /datum/ai_controller/basic_controller/mook/support
speed = 5
pixel_x = -16
@@ -243,8 +243,8 @@
melee_damage_lower = 10
melee_damage_upper = 10
gender = MALE
- attack_sound = 'sound/weapons/stringsmash.ogg'
- death_sound = 'sound/voice/mook_death.ogg'
+ attack_sound = 'sound/items/weapons/stringsmash.ogg'
+ death_sound = 'sound/mobs/non-humanoids/mook/mook_death.ogg'
ai_controller = /datum/ai_controller/basic_controller/mook/bard
///our guitar
var/obj/item/instrument/guitar/held_guitar
diff --git a/code/modules/mob/living/basic/lavaland/mook/mook_abilities.dm b/code/modules/mob/living/basic/lavaland/mook/mook_abilities.dm
index f80f1f3dae29e..90d7cb0d5b42d 100644
--- a/code/modules/mob/living/basic/lavaland/mook/mook_abilities.dm
+++ b/code/modules/mob/living/basic/lavaland/mook/mook_abilities.dm
@@ -53,8 +53,8 @@
/datum/action/cooldown/mob_cooldown/mook_ability/mook_leap/proc/launch_towards_target(atom/target)
new /obj/effect/temp_visual/mook_dust(get_turf(owner))
- playsound(get_turf(owner), 'sound/weapons/thudswoosh.ogg', 25, TRUE)
- playsound(owner, 'sound/voice/mook_leap_yell.ogg', 100, TRUE)
+ playsound(get_turf(owner), 'sound/items/weapons/thudswoosh.ogg', 25, TRUE)
+ playsound(owner, 'sound/mobs/non-humanoids/mook/mook_leap_yell.ogg', 100, TRUE)
var/turf/target_turf = get_turf(target)
if(!target_turf.is_blocked_turf())
@@ -117,7 +117,7 @@
var/mob/living/basic/mining/mook/mook_owner = owner
mook_owner.change_combatant_state(state = MOOK_ATTACK_ACTIVE)
new /obj/effect/temp_visual/mook_dust(get_turf(owner))
- playsound(get_turf(owner), 'sound/weapons/thudswoosh.ogg', 50, TRUE)
+ playsound(get_turf(owner), 'sound/items/weapons/thudswoosh.ogg', 50, TRUE)
animate(owner, pixel_y = owner.base_pixel_y + 146, time = 0.5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(land_on_turf), target), 0.5 SECONDS)
diff --git a/code/modules/mob/living/basic/lavaland/node_drone/node_drone.dm b/code/modules/mob/living/basic/lavaland/node_drone/node_drone.dm
index 87687c5699963..00ca34757c8d6 100644
--- a/code/modules/mob/living/basic/lavaland/node_drone/node_drone.dm
+++ b/code/modules/mob/living/basic/lavaland/node_drone/node_drone.dm
@@ -126,7 +126,7 @@
animate(src, pixel_z = 400, time = 2 SECONDS, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL)
sleep(2 SECONDS)
if(funny_ending)
- playsound(src, 'sound/effects/explosion3.ogg', 50, FALSE) //node drone died on the way back to his home planet.
+ playsound(src, 'sound/effects/explosion/explosion3.ogg', 50, FALSE) //node drone died on the way back to his home planet.
visible_message(span_notice("...or maybe not."))
qdel(src)
diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
index b4531d6c113a2..17e3cdc370753 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm
@@ -36,7 +36,7 @@ GLOBAL_LIST_EMPTY(raptor_population)
maximum_survivable_temperature = INFINITY
attack_verb_continuous = "pecks"
attack_verb_simple = "chomps"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
faction = list(FACTION_RAPTOR, FACTION_NEUTRAL)
speak_emote = list("screeches")
ai_controller = /datum/ai_controller/basic_controller/raptor
@@ -85,11 +85,11 @@ GLOBAL_LIST_EMPTY(raptor_population)
BB_EMOTE_SAY = list("Chirp chirp chirp!", "Kweh!", "Bwark!"),
BB_EMOTE_SEE = list("shakes its feathers!", "stretches!", "flaps its wings!", "pecks at the ground!"),
BB_EMOTE_SOUND = list(
- 'sound/creatures/raptor_1.ogg',
- 'sound/creatures/raptor_2.ogg',
- 'sound/creatures/raptor_3.ogg',
- 'sound/creatures/raptor_4.ogg',
- 'sound/creatures/raptor_5.ogg',
+ 'sound/mobs/non-humanoids/raptor/raptor_1.ogg',
+ 'sound/mobs/non-humanoids/raptor/raptor_2.ogg',
+ 'sound/mobs/non-humanoids/raptor/raptor_3.ogg',
+ 'sound/mobs/non-humanoids/raptor/raptor_4.ogg',
+ 'sound/mobs/non-humanoids/raptor/raptor_5.ogg',
),
BB_SPEAK_CHANCE = 2,
)
diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
index a23bcf7801b2e..8178df7b78c24 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm
@@ -8,8 +8,8 @@
"wags their tail against",
"playfully leans against"
),
- BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/raptor,
- BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/raptor,
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
+ BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
BB_BABIES_PARTNER_TYPES = list(/mob/living/basic/raptor),
BB_BABIES_CHILD_TYPES = list(/mob/living/basic/raptor/baby_raptor),
BB_MAX_CHILDREN = 5,
@@ -23,7 +23,7 @@
/datum/ai_planning_subtree/find_and_hunt_target/heal_raptors,
/datum/ai_planning_subtree/random_speech/blackboard,
/datum/ai_planning_subtree/pet_planning,
- /datum/ai_planning_subtree/target_retaliate,
+ /datum/ai_planning_subtree/target_retaliate/check_faction,
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
/datum/ai_planning_subtree/find_and_hunt_target/raptor_trough,
@@ -41,19 +41,13 @@
RegisterSignal(new_pawn, COMSIG_MOB_ATE, PROC_REF(post_eat))
/datum/ai_controller/basic_controller/raptor/proc/post_eat()
+ SIGNAL_HANDLER
clear_blackboard_key(BB_RAPTOR_TROUGH_TARGET)
set_blackboard_key(BB_RAPTOR_EAT_COOLDOWN, world.time + NEXT_EAT_COOLDOWN)
-/datum/targeting_strategy/basic/raptor
-
-//dont attack anyone that shares our factions.
-/datum/targeting_strategy/basic/raptor/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target)
- . = ..()
- return .
-
/datum/ai_controller/basic_controller/baby_raptor
blackboard = list(
- BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/raptor,
+ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
BB_FIND_MOM_TYPES = list(/mob/living/basic/raptor),
BB_IGNORE_MOM_TYPES = list(/mob/living/basic/raptor/baby_raptor),
)
diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_dex.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_dex.dm
index ef7e6fa3167c6..f6e555adfe31b 100644
--- a/code/modules/mob/living/basic/lavaland/raptor/raptor_dex.dm
+++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_dex.dm
@@ -56,7 +56,7 @@
return NONE
raptor = WEAKREF(attacked_atom)
- playsound(src, 'sound/items/orbie_send_out.ogg', 20)
+ playsound(src, 'sound/mobs/non-humanoids/orbie/orbie_send_out.ogg', 20)
balloon_alert(user, "scanned")
ui_interact(user)
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
index c3c30526dff74..c7648aa38b259 100644
--- a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
+++ b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm
@@ -29,7 +29,7 @@
/// Icon state for our eye overlay
var/eye_glow = "ice_glow"
/// Sound to play when we shoot
- var/shoot_sound = 'sound/weapons/pierce.ogg'
+ var/shoot_sound = 'sound/items/weapons/pierce.ogg'
/// Typepath of our gaze ability
var/gaze_attack = /datum/action/cooldown/mob_cooldown/watcher_gaze
// We attract and eat these things for some reason
diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm
index a61ea0743f9a4..f88624ce125be 100644
--- a/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm
+++ b/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm
@@ -17,7 +17,7 @@
/// Type of projectile to fire
var/projectile_type = /obj/projectile/temp/watcher
/// Sound the projectile we fire makes
- var/projectile_sound = 'sound/weapons/pierce.ogg'
+ var/projectile_sound = 'sound/items/weapons/pierce.ogg'
/// Time to watch for
var/overwatch_duration = 3 SECONDS
diff --git a/code/modules/mob/living/basic/minebots/minebot.dm b/code/modules/mob/living/basic/minebots/minebot.dm
index 54fe9a07367cf..bcf8071d7c289 100644
--- a/code/modules/mob/living/basic/minebots/minebot.dm
+++ b/code/modules/mob/living/basic/minebots/minebot.dm
@@ -18,7 +18,7 @@
obj_damage = 10
attack_verb_continuous = "drills"
attack_verb_simple = "drill"
- attack_sound = 'sound/weapons/circsawhit.ogg'
+ attack_sound = 'sound/items/weapons/circsawhit.ogg'
sentience_type = SENTIENCE_MINEBOT
speak_emote = list("states")
mob_biotypes = MOB_ROBOTIC
diff --git a/code/modules/mob/living/basic/minebots/minebot_abilities.dm b/code/modules/mob/living/basic/minebots/minebot_abilities.dm
index 8d1a93bd42916..a421c5d81f48c 100644
--- a/code/modules/mob/living/basic/minebots/minebot_abilities.dm
+++ b/code/modules/mob/living/basic/minebots/minebot_abilities.dm
@@ -119,7 +119,7 @@
return FALSE
var/obj/effect/mine/minebot/my_mine = new(my_turf)
my_mine.ignore_list = owner.faction.Copy()
- playsound(my_turf, 'sound/weapons/armbomb.ogg', 20)
+ playsound(my_turf, 'sound/items/weapons/armbomb.ogg', 20)
StartCooldown()
return TRUE
@@ -132,7 +132,7 @@
/obj/effect/temp_visual/rising_rocket/Initialize(mapload)
. = ..()
- playsound(src, 'sound/weapons/minebot_rocket.ogg', 100, FALSE)
+ playsound(src, 'sound/items/weapons/minebot_rocket.ogg', 100, FALSE)
animate(src, pixel_y = base_pixel_y + 500, time = duration, easing = EASE_IN)
/obj/effect/temp_visual/falling_rocket
@@ -154,7 +154,7 @@
animate(src, pixel_y = 0, time = duration)
/obj/effect/temp_visual/falling_rocket/proc/create_explosion()
- playsound(src, 'sound/weapons/minebot_rocket.ogg', 100, FALSE)
+ playsound(src, 'sound/items/weapons/minebot_rocket.ogg', 100, FALSE)
var/datum/effect_system/fluid_spread/smoke/smoke = new
smoke.set_up(1, holder = src)
smoke.start()
@@ -176,7 +176,7 @@
var/datum/effect_system/fluid_spread/smoke/smoke = new
smoke.set_up(0, holder = src)
smoke.start()
- playsound(src, 'sound/effects/explosion3.ogg', 100)
+ playsound(src, 'sound/effects/explosion/explosion3.ogg', 100)
victim.apply_damage(damage_to_apply)
/obj/effect/mine/minebot/can_trigger(atom/movable/on_who)
diff --git a/code/modules/mob/living/basic/minebots/minebot_remote_control.dm b/code/modules/mob/living/basic/minebots/minebot_remote_control.dm
index adb6d79e541ae..742785769e90d 100644
--- a/code/modules/mob/living/basic/minebots/minebot_remote_control.dm
+++ b/code/modules/mob/living/basic/minebots/minebot_remote_control.dm
@@ -56,7 +56,7 @@
if(isnull(target_turf) || isclosedturf(target_turf) || isgroundlessturf(target_turf))
user.balloon_alert(user, "invalid target!")
return ITEM_INTERACT_BLOCKING
- playsound(src, 'sound/machines/beep.ogg', 30)
+ playsound(src, 'sound/machines/beep/beep.ogg', 30)
clear_priming()
new /obj/effect/temp_visual/minebot_target(target_turf)
COOLDOWN_START(src, bomb_timer, BOMB_COOLDOWN)
diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm
index 2bcd715d7f5c8..596308fdee169 100644
--- a/code/modules/mob/living/basic/pets/cat/cat.dm
+++ b/code/modules/mob/living/basic/pets/cat/cat.dm
@@ -29,7 +29,7 @@
held_state = "cat2"
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/weapons/slash.ogg'
+ attack_sound = 'sound/items/weapons/slash.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
///icon of the collar we can wear
var/collar_icon_state = "cat"
diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm
index b1c2c5e486fc1..1ff991941d327 100644
--- a/code/modules/mob/living/basic/pets/dog/_dog.dm
+++ b/code/modules/mob/living/basic/pets/dog/_dog.dm
@@ -31,7 +31,7 @@
// The dog attack pet command can raise melee attack above 0
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
melee_attack_cooldown = 0.8 SECONDS
/// Instructions you can give to dogs
diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm
index e1f05b33d81fb..ac213fbf30960 100644
--- a/code/modules/mob/living/basic/pets/dog/corgi.dm
+++ b/code/modules/mob/living/basic/pets/dog/corgi.dm
@@ -116,7 +116,7 @@
user.visible_message(span_notice("[user] starts to shave [src] using \the [attacking_item]."), span_notice("You start to shave [src] using \the [attacking_item]..."))
if(do_after(user, 5 SECONDS, target = src))
user.visible_message(span_notice("[user] shaves [src]'s hair using \the [attacking_item]."))
- playsound(get_turf(src), 'sound/items/welder2.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/items/tools/welder2.ogg', 20, TRUE)
shaved = TRUE
icon_living = "[icon_living]_shaved"
icon_dead = "[icon_living]_shaved_dead"
@@ -399,7 +399,7 @@
place_on_head(new /obj/item/clothing/glasses/eyepatch/medical)
/mob/living/basic/pet/dog/corgi/ian/narsie_act()
- playsound(src, 'sound/magic/demon_dies.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/magic/demon_dies.ogg', 75, TRUE)
var/mob/living/basic/pet/dog/corgi/narsie/narsIan = new(loc)
narsIan.setDir(dir)
investigate_log("has been gibbed and replaced with Nars-Ian by Nar'Sie.", INVESTIGATE_DEATHS)
@@ -486,7 +486,7 @@
return
visible_message(span_warning("Dark magic resonating from [src] devours [prey]!"), \
"DELICIOUS SOULS")
- playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/magic/demon_attack1.ogg', 75, TRUE)
new /obj/effect/temp_visual/cult/sac(get_turf(prey))
narsie_act()
prey.investigate_log("has been sacrificed by [src].", INVESTIGATE_DEATHS)
diff --git a/code/modules/mob/living/basic/pets/fox.dm b/code/modules/mob/living/basic/pets/fox.dm
index e4e978568a0e6..45ea29024ad66 100644
--- a/code/modules/mob/living/basic/pets/fox.dm
+++ b/code/modules/mob/living/basic/pets/fox.dm
@@ -25,7 +25,7 @@
melee_damage_upper = 5
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
ai_controller = /datum/ai_controller/basic_controller/fox
diff --git a/code/modules/mob/living/basic/pets/orbie/orbie.dm b/code/modules/mob/living/basic/pets/orbie/orbie.dm
index c0c6dd7b023fc..a0fbba899e354 100644
--- a/code/modules/mob/living/basic/pets/orbie/orbie.dm
+++ b/code/modules/mob/living/basic/pets/orbie/orbie.dm
@@ -51,6 +51,7 @@
AddComponent(/datum/component/obeys_commands, pet_commands)
AddElement(/datum/element/basic_eating, food_types = food_types)
ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT)
+
RegisterSignal(src, COMSIG_ATOM_CAN_BE_PULLED, PROC_REF(on_pulled))
RegisterSignal(src, COMSIG_VIRTUAL_PET_LEVEL_UP, PROC_REF(on_level_up))
RegisterSignal(src, COMSIG_MOB_CLICKON, PROC_REF(on_click))
diff --git a/code/modules/mob/living/basic/pets/parrot/_parrot.dm b/code/modules/mob/living/basic/pets/parrot/_parrot.dm
index c23481d85a7ec..e61b052217909 100644
--- a/code/modules/mob/living/basic/pets/parrot/_parrot.dm
+++ b/code/modules/mob/living/basic/pets/parrot/_parrot.dm
@@ -152,11 +152,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list(
. = ..()
. += "Held Item: [held_item]"
-/mob/living/basic/parrot/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
- if(stat != DEAD) // parrots have evolved to let them fly in space because fucking uhhhhhhhhhh
- return TRUE
- return ..()
-
/mob/living/basic/parrot/radio(message, list/message_mods = list(), list/spans, language) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be.
. = ..()
if(. != NONE)
diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm
index 83d70336f2c0c..79631c96dca4f 100644
--- a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm
+++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm
@@ -11,4 +11,4 @@
)
summon_radius = 0
create_summon_timer = 5 SECONDS
- sound = 'sound/magic/exit_blood.ogg'
+ sound = 'sound/effects/magic/exit_blood.ogg'
diff --git a/code/modules/mob/living/basic/pets/sloth.dm b/code/modules/mob/living/basic/pets/sloth.dm
index 125a3a7b97d6a..9cd7711aa0672 100644
--- a/code/modules/mob/living/basic/pets/sloth.dm
+++ b/code/modules/mob/living/basic/pets/sloth.dm
@@ -22,7 +22,7 @@ GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth)
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
mob_biotypes = MOB_ORGANIC|MOB_BEAST
diff --git a/code/modules/mob/living/basic/revolutionary.dm b/code/modules/mob/living/basic/revolutionary.dm
index 407f2c0997504..8aa41b3c7230d 100644
--- a/code/modules/mob/living/basic/revolutionary.dm
+++ b/code/modules/mob/living/basic/revolutionary.dm
@@ -13,7 +13,7 @@
melee_damage_lower = 15
melee_damage_upper = 20
obj_damage = 20
- attack_sound = 'sound/weapons/smash.ogg'
+ attack_sound = 'sound/items/weapons/smash.ogg'
ai_controller = /datum/ai_controller/basic_controller/revolutionary
/// list of weapons we can have
var/static/list/possible_weapons = list(
@@ -49,26 +49,26 @@
)
/// Monkey screeches
var/static/list/monkey_screeches = list(
- 'sound/creatures/monkey/monkey_screech_1.ogg',
- 'sound/creatures/monkey/monkey_screech_2.ogg',
- 'sound/creatures/monkey/monkey_screech_3.ogg',
- 'sound/creatures/monkey/monkey_screech_4.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_1.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_2.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_3.ogg',
+ 'sound/mobs/non-humanoids/monkey/monkey_screech_4.ogg',
)
/// Male screams
var/static/list/male_screams = list(
- 'sound/voice/human/malescream_1.ogg',
- 'sound/voice/human/malescream_2.ogg',
- 'sound/voice/human/malescream_3.ogg',
- 'sound/voice/human/malescream_4.ogg',
- 'sound/voice/human/malescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_5.ogg',
)
/// Female screams
var/static/list/female_screams = list(
- 'sound/voice/human/femalescream_1.ogg',
- 'sound/voice/human/femalescream_2.ogg',
- 'sound/voice/human/femalescream_3.ogg',
- 'sound/voice/human/femalescream_4.ogg',
- 'sound/voice/human/femalescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_5.ogg',
)
diff --git a/code/modules/mob/living/basic/ruin_defender/cybersun_aicore.dm b/code/modules/mob/living/basic/ruin_defender/cybersun_aicore.dm
index 7b27da8d9778e..6287c1f25e19e 100644
--- a/code/modules/mob/living/basic/ruin_defender/cybersun_aicore.dm
+++ b/code/modules/mob/living/basic/ruin_defender/cybersun_aicore.dm
@@ -77,7 +77,7 @@
///dramatic death animations
var/turf/my_turf = get_turf(src)
new /obj/effect/gibspawner/robot(my_turf)
- playsound(loc, 'sound/effects/explosion2.ogg', vol = 75, vary = TRUE, pressure_affected = FALSE)
+ playsound(loc, 'sound/effects/explosion/explosion2.ogg', vol = 75, vary = TRUE, pressure_affected = FALSE)
for (var/mob/witness in range(10, src))
if (!witness.client || !isliving(witness))
continue
@@ -119,7 +119,7 @@
. = ..()
//this is where the spell will hit. it will not move even if the target does, allowing the spell to be dodged.
new/obj/effect/temp_visual/lightning_strike(get_turf(target))
- playsound(owner, 'sound/effects/sparks1.ogg', vol = 120, vary = TRUE)
+ playsound(owner, 'sound/effects/sparks/sparks1.ogg', vol = 120, vary = TRUE)
/obj/effect/temp_visual/lightning_strike
name = "lightning strike"
@@ -142,7 +142,7 @@
/obj/effect/temp_visual/lightning_strike/proc/zap()
new/obj/effect/temp_visual/lightning_strike_zap(loc)
- playsound(src, 'sound/magic/lightningbolt.ogg', vol = 70, vary = TRUE)
+ playsound(src, 'sound/effects/magic/lightningbolt.ogg', vol = 70, vary = TRUE)
if (!isturf(loc))
return
for(var/mob/living/victim in loc)
@@ -188,7 +188,7 @@
if(lockon_zone == my_turf)
return
my_turf.Beam(lockon_zone, icon_state = "1-full", beam_color = COLOR_MEDIUM_DARK_RED, time = barrage_delay)
- playsound(lockon_zone, 'sound/machines/terminal_prompt_deny.ogg', vol = 60, vary = TRUE)
+ playsound(lockon_zone, 'sound/machines/terminal/terminal_prompt_deny.ogg', vol = 60, vary = TRUE)
StartCooldown(cooldown_time)
return ..()
diff --git a/code/modules/mob/living/basic/ruin_defender/flesh.dm b/code/modules/mob/living/basic/ruin_defender/flesh.dm
index f95a949faa27f..c5ff2fb90e740 100644
--- a/code/modules/mob/living/basic/ruin_defender/flesh.dm
+++ b/code/modules/mob/living/basic/ruin_defender/flesh.dm
@@ -25,7 +25,7 @@
melee_damage_upper = 10
health = 20
maxHealth = 20
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
attack_verb_continuous = "tries desperately to attach to"
attack_verb_simple = "try to attach to"
diff --git a/code/modules/mob/living/basic/ruin_defender/living_floor.dm b/code/modules/mob/living/basic/ruin_defender/living_floor.dm
index ce4fbc53f51fa..7a9b6ae59f18a 100644
--- a/code/modules/mob/living/basic/ruin_defender/living_floor.dm
+++ b/code/modules/mob/living/basic/ruin_defender/living_floor.dm
@@ -40,7 +40,7 @@
faction = list(FACTION_HOSTILE)
melee_damage_lower = 20
melee_damage_upper = 40 //pranked.....
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
@@ -84,7 +84,7 @@
if(weapon.tool_behaviour != TOOL_CROWBAR)
return ..()
balloon_alert(user, "prying...")
- playsound(src, 'sound/items/crowbar.ogg', 45, TRUE)
+ playsound(src, 'sound/items/tools/crowbar.ogg', 45, TRUE)
if(!do_after(user, 5 SECONDS, src))
return
new /obj/effect/gibspawner/generic(loc)
diff --git a/code/modules/mob/living/basic/ruin_defender/skeleton.dm b/code/modules/mob/living/basic/ruin_defender/skeleton.dm
index fbe3b74c43f27..e6754a80a22da 100644
--- a/code/modules/mob/living/basic/ruin_defender/skeleton.dm
+++ b/code/modules/mob/living/basic/ruin_defender/skeleton.dm
@@ -15,7 +15,7 @@
unsuitable_heat_damage = 0
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/slash.ogg'
+ attack_sound = 'sound/items/weapons/slash.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
faction = list(FACTION_SKELETON)
// Going for a sort of pale bluegreen here, shooting for boneish
@@ -63,7 +63,7 @@
melee_damage_upper = 20
attack_verb_continuous = "jabs"
attack_verb_simple = "jab"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
death_message = "collapses into a pile of bones, its gear falling to the floor!"
loot = list(
@@ -92,7 +92,7 @@
melee_damage_upper = 30
attack_verb_continuous = "slices"
attack_verb_simple = "slice"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
death_message = "collapses into a pile of bones, its gear clanging as it hits the ground!"
loot = list(
@@ -146,7 +146,7 @@
melee_damage_upper = 25
attack_verb_continuous = "blasts"
attack_verb_simple = "blast"
- attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ attack_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
attack_vis_effect = null
loot = list(/obj/effect/decal/remains/plasma, /obj/item/pickaxe/drill/jackhammer)
held_item = /obj/item/pickaxe/drill/jackhammer
diff --git a/code/modules/mob/living/basic/ruin_defender/stickman.dm b/code/modules/mob/living/basic/ruin_defender/stickman.dm
index 588a75c634643..3435f873ea35f 100644
--- a/code/modules/mob/living/basic/ruin_defender/stickman.dm
+++ b/code/modules/mob/living/basic/ruin_defender/stickman.dm
@@ -14,7 +14,7 @@
melee_damage_lower = 10
melee_damage_upper = 10
melee_attack_cooldown = 1.5 SECONDS
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
combat_mode = TRUE
faction = list(FACTION_STICKMAN)
unsuitable_atmos_damage = 7.5
@@ -54,7 +54,7 @@
attack_vis_effect = ATTACK_EFFECT_BITE
sharpness = SHARP_POINTY
mob_biotypes = MOB_BEAST
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
/mob/living/basic/stickman/ranged
name = "Angry Stick Gunman"
@@ -65,7 +65,7 @@
attack_verb_simple = "whack"
melee_damage_lower = 5
melee_damage_upper = 5
- attack_sound = 'sound/weapons/genhit1.ogg'
+ attack_sound = 'sound/items/weapons/genhit1.ogg'
ai_controller = /datum/ai_controller/basic_controller/stickman/ranged
diff --git a/code/modules/mob/living/basic/ruin_defender/wizard/wizard.dm b/code/modules/mob/living/basic/ruin_defender/wizard/wizard.dm
index 7c35184af3717..48dca2eea60f0 100644
--- a/code/modules/mob/living/basic/ruin_defender/wizard/wizard.dm
+++ b/code/modules/mob/living/basic/ruin_defender/wizard/wizard.dm
@@ -14,7 +14,7 @@
melee_damage_upper = 5
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
combat_mode = TRUE
habitable_atmos = list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 7.5
diff --git a/code/modules/mob/living/basic/slime/defense.dm b/code/modules/mob/living/basic/slime/defense.dm
index a3242525170c7..19507b4cd029d 100644
--- a/code/modules/mob/living/basic/slime/defense.dm
+++ b/code/modules/mob/living/basic/slime/defense.dm
@@ -15,11 +15,11 @@
if(buckled == attacker ? prob(60) : prob(30)) //its easier to remove the slime from yourself
attacker.visible_message(span_warning("[attacker] attempts to wrestle \the [defender_slime.name] off [buckled == attacker ? "" : buckled] !"), \
span_danger("[buckled == attacker ? "You attempt" : "[attacker] attempts" ] to wrestle \the [defender_slime.name] off [buckled == attacker ? "" : buckled]!"))
- playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
return
attacker.visible_message(span_warning("[attacker] manages to wrestle \the [defender_slime.name] off!"), span_notice("You manage to wrestle \the [defender_slime.name] off!"))
- playsound(loc, 'sound/weapons/shove.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/shove.ogg', 50, TRUE, -1)
defender_slime.discipline_slime()
@@ -87,7 +87,7 @@
has_found = TRUE
if(applied_crossbreed_amount >= SLIME_EXTRACT_CROSSING_REQUIRED)
to_chat(user, span_notice("You feed the slime as many of the extracts from the bag as you can, and it mutates!"))
- playsound(src, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
spawn_corecross()
has_output = TRUE
break
@@ -99,7 +99,7 @@
to_chat(user, span_warning("There are no extracts in the bag that this slime will accept!"))
else
to_chat(user, span_notice("You feed the slime some extracts from the bag."))
- playsound(src, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
///Handles the adverse effects of water on slimes
/mob/living/basic/slime/proc/apply_water()
diff --git a/code/modules/mob/living/basic/slime/slime.dm b/code/modules/mob/living/basic/slime/slime.dm
index 6adf4e35f3582..010913f44258b 100644
--- a/code/modules/mob/living/basic/slime/slime.dm
+++ b/code/modules/mob/living/basic/slime/slime.dm
@@ -14,7 +14,7 @@
icon_living = "grey-baby"
icon_dead = "grey-baby-dead"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
//Base physiology
@@ -353,7 +353,7 @@
/mob/living/basic/slime/proc/spawn_corecross()
var/static/list/crossbreeds = subtypesof(/obj/item/slimecross)
visible_message(span_danger("[src] shudders, its mutated core consuming the rest of its body!"))
- playsound(src, 'sound/magic/smoke.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/smoke.ogg', 50, TRUE)
var/selected_crossbreed_path
for(var/crossbreed_path in crossbreeds)
var/obj/item/slimecross/cross_item = crossbreed_path
diff --git a/code/modules/mob/living/basic/space_fauna/ant.dm b/code/modules/mob/living/basic/space_fauna/ant.dm
index 26a904340b7c5..7fbbe03e631cd 100644
--- a/code/modules/mob/living/basic/space_fauna/ant.dm
+++ b/code/modules/mob/living/basic/space_fauna/ant.dm
@@ -15,7 +15,7 @@
melee_damage_upper = 10
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
butcher_results = list(/obj/effect/decal/cleanable/ants = 3) //It's just a bunch of ants glued together into a larger ant
response_help_continuous = "pets"
diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
index d13df29806409..9b60f7f815998 100644
--- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
+++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
@@ -26,7 +26,7 @@
sharpness = SHARP_EDGED
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
friendly_verb_continuous = "bear hugs"
friendly_verb_simple = "bear hug"
@@ -135,7 +135,7 @@
attacked_sound = 'sound/items/eatfood.ogg'
death_message = "loses its false life and collapses!"
butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1)
- attack_sound = 'sound/weapons/slap.ogg'
+ attack_sound = 'sound/items/weapons/slap.ogg'
attack_vis_effect = ATTACK_EFFECT_DISARM
attack_verb_simple = "slap"
attack_verb_continuous = "slaps"
diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
index 1d32b7809a89e..3461f5b104e98 100644
--- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm
+++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
@@ -27,7 +27,7 @@
obj_damage = 50
melee_damage_lower = 20
melee_damage_upper = 20
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp_abilities.dm b/code/modules/mob/living/basic/space_fauna/carp/carp_abilities.dm
index 322d4db193c21..24c5fb4ece2ec 100644
--- a/code/modules/mob/living/basic/space_fauna/carp/carp_abilities.dm
+++ b/code/modules/mob/living/basic/space_fauna/carp/carp_abilities.dm
@@ -9,7 +9,7 @@
button_icon = 'icons/obj/weapons/guns/projectiles.dmi'
button_icon_state = "arcane_barrage"
cooldown_time = 5 SECONDS
- projectile_sound = 'sound/weapons/emitter.ogg'
+ projectile_sound = 'sound/items/weapons/emitter.ogg'
melee_cooldown_time = 0 SECONDS // Without this they become extremely hesitant to bite anyone ever
shared_cooldown = MOB_SHARED_COOLDOWN_2
@@ -140,8 +140,8 @@
var/turf/destination = pick(exit_locs)
do_teleport(entered_atom, destination, channel = TELEPORT_CHANNEL_MAGIC)
- playsound(src, 'sound/magic/wand_teleport.ogg', 50)
- playsound(destination, 'sound/magic/wand_teleport.ogg', 50)
+ playsound(src, 'sound/effects/magic/wand_teleport.ogg', 50)
+ playsound(destination, 'sound/effects/magic/wand_teleport.ogg', 50)
/// Doesn't actually do anything, just a visual marker
/obj/effect/temp_visual/lesser_carp_rift/exit
diff --git a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
index 02faf7c2cc9f2..246b025d559dc 100644
--- a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
+++ b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
@@ -19,7 +19,7 @@
melee_damage_upper = 15
attack_verb_continuous = "slashes at"
attack_verb_simple = "slash at"
- attack_sound = 'sound/weapons/circsawhit.ogg'
+ attack_sound = 'sound/items/weapons/circsawhit.ogg'
combat_mode = TRUE
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
sentience_type = SENTIENCE_HUMANOID
diff --git a/code/modules/mob/living/basic/space_fauna/changeling/flesh_spider.dm b/code/modules/mob/living/basic/space_fauna/changeling/flesh_spider.dm
index 80e1768c90eba..844535c01e9ba 100644
--- a/code/modules/mob/living/basic/space_fauna/changeling/flesh_spider.dm
+++ b/code/modules/mob/living/basic/space_fauna/changeling/flesh_spider.dm
@@ -28,7 +28,7 @@
melee_attack_cooldown = CLICK_CD_MELEE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
unsuitable_cold_damage = 4
unsuitable_heat_damage = 4
diff --git a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
index 27a9f7d07ae1e..d7aa8903398a6 100644
--- a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
+++ b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
@@ -16,7 +16,7 @@
melee_damage_upper = 5
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
mob_biotypes = MOB_ORGANIC|MOB_SPECIAL
faction = list(FACTION_CREATURE)
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon.dm b/code/modules/mob/living/basic/space_fauna/demon/demon.dm
index eb424cdce49d4..f61591a10c7e7 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon.dm
@@ -23,7 +23,7 @@
status_flags = CANPUSH
combat_mode = TRUE
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
faction = list(FACTION_HELL)
@@ -34,7 +34,7 @@
melee_damage_upper = 15
melee_attack_cooldown = CLICK_CD_MELEE
death_message = "screams in agony as it sublimates into a sulfurous smoke."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
habitable_atmos = null
minimum_survivable_temperature = T0C - 25 //Weak to cold
@@ -70,5 +70,5 @@
mind.special_role = ROLE_SLAUGHTER_DEMON
mind.add_antag_datum(antag_type)
- SEND_SOUND(src, 'sound/magic/demon_dies.ogg')
+ SEND_SOUND(src, 'sound/effects/magic/demon_dies.ogg')
to_chat(src, span_bold("You are currently not currently in the same plane of existence as the station. Use your Blood Crawl ability near a pool of blood to manifest and wreak havoc."))
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
index 1cc7549f0ea3b..811186d43ad9a 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
@@ -18,7 +18,7 @@
span_warning("[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!"),
span_danger("An unnatural hunger consumes you. You raise [src] your mouth and devour it!"),
)
- playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
if(locate(/datum/action/cooldown/spell/jaunt/bloodcrawl) in user.actions)
to_chat(user, span_warning("...and you don't feel any different."))
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
index 6ad7ff77f1dd4..c036fe461690e 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
@@ -24,7 +24,7 @@
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
faction = list(FACTION_SPOOKY)
diff --git a/code/modules/mob/living/basic/space_fauna/faithless.dm b/code/modules/mob/living/basic/space_fauna/faithless.dm
index 39f5652d1a0a4..1cf8218a0fced 100644
--- a/code/modules/mob/living/basic/space_fauna/faithless.dm
+++ b/code/modules/mob/living/basic/space_fauna/faithless.dm
@@ -17,7 +17,7 @@
melee_damage_upper = 15
attack_verb_continuous = "grips"
attack_verb_simple = "grip"
- attack_sound = 'sound/hallucinations/growl1.ogg'
+ attack_sound = 'sound/effects/hallucinations/growl1.ogg'
melee_attack_cooldown = 1 SECONDS
speak_emote = list("growls")
diff --git a/code/modules/mob/living/basic/space_fauna/garden_gnome.dm b/code/modules/mob/living/basic/space_fauna/garden_gnome.dm
index 6608867f2a391..08e4cc7d2c0ff 100644
--- a/code/modules/mob/living/basic/space_fauna/garden_gnome.dm
+++ b/code/modules/mob/living/basic/space_fauna/garden_gnome.dm
@@ -16,7 +16,7 @@
melee_damage_upper = 10
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
melee_attack_cooldown = 1.2 SECONDS
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, STAMINA = 0, OXY = 1)
speak_emote = list("announces")
diff --git a/code/modules/mob/living/basic/space_fauna/ghost.dm b/code/modules/mob/living/basic/space_fauna/ghost.dm
index 728c5ead9f4a8..00bcc45445e29 100644
--- a/code/modules/mob/living/basic/space_fauna/ghost.dm
+++ b/code/modules/mob/living/basic/space_fauna/ghost.dm
@@ -19,7 +19,7 @@
unsuitable_atmos_damage = 0
unsuitable_cold_damage = 0
unsuitable_heat_damage = 0
- attack_sound = 'sound/hallucinations/growl1.ogg'
+ attack_sound = 'sound/effects/hallucinations/growl1.ogg'
death_message = "wails, disintegrating into a pile of ectoplasm!"
gold_core_spawnable = NO_SPAWN //too spooky for science
light_system = OVERLAY_LIGHT
diff --git a/code/modules/mob/living/basic/space_fauna/hivebot/_hivebot.dm b/code/modules/mob/living/basic/space_fauna/hivebot/_hivebot.dm
index c9e155d2bdaed..6b72f1f09757e 100644
--- a/code/modules/mob/living/basic/space_fauna/hivebot/_hivebot.dm
+++ b/code/modules/mob/living/basic/space_fauna/hivebot/_hivebot.dm
@@ -16,7 +16,7 @@
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
verb_say = "states"
verb_ask = "queries"
diff --git a/code/modules/mob/living/basic/space_fauna/killer_tomato.dm b/code/modules/mob/living/basic/space_fauna/killer_tomato.dm
index c859289b56d7d..a784f57763247 100644
--- a/code/modules/mob/living/basic/space_fauna/killer_tomato.dm
+++ b/code/modules/mob/living/basic/space_fauna/killer_tomato.dm
@@ -26,7 +26,7 @@
melee_damage_upper = 12
attack_verb_continuous = "slams"
attack_verb_simple = "slam"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
faction = list(FACTION_PLANTS)
habitable_atmos = list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
diff --git a/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm b/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm
index a0f9d2fb51be7..b50b089b0ffa4 100644
--- a/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm
+++ b/code/modules/mob/living/basic/space_fauna/meteor_heart/chasing_spikes.dm
@@ -12,7 +12,7 @@
/datum/action/cooldown/mob_cooldown/chasing_spikes/Activate(atom/target)
. = ..()
- playsound(owner, 'sound/magic/demon_attack1.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
+ playsound(owner, 'sound/effects/magic/demon_attack1.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
var/obj/effect/temp_visual/effect_trail/spike_chaser/chaser = new(get_turf(owner), target)
LAZYADD(active_chasers, WEAKREF(chaser))
RegisterSignal(chaser, COMSIG_QDELETING, PROC_REF(on_chaser_destroyed))
@@ -75,6 +75,6 @@
var/target_zone = victim.resting ? BODY_ZONE_CHEST : pick_weight(standing_damage_zones)
victim.apply_damage(impale_damage, damagetype = BRUTE, def_zone = target_zone, sharpness = SHARP_POINTY)
if (hit_someone)
- playsound(src, 'sound/weapons/slice.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
+ playsound(src, 'sound/items/weapons/slice.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
else
playsound(src, 'sound/misc/splort.ogg', vol = 25, vary = TRUE, pressure_affected = FALSE)
diff --git a/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_heart.dm b/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_heart.dm
index 7a46e84435555..ae66369dd9328 100644
--- a/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_heart.dm
+++ b/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_heart.dm
@@ -102,7 +102,7 @@
/obj/effect/temp_visual/meteor_heart_death/Initialize(mapload)
. = ..()
- playsound(src, 'sound/magic/demon_dies.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
+ playsound(src, 'sound/effects/magic/demon_dies.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
Shake(2, 0, 3 SECONDS)
addtimer(CALLBACK(src, PROC_REF(gib)), duration - 1, TIMER_DELETE_ME)
soundloop = new(src, start_immediately = FALSE)
@@ -116,7 +116,7 @@
/// Make this place a mess
/obj/effect/temp_visual/meteor_heart_death/proc/gib()
- playsound(loc, 'sound/effects/attackblob.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', vol = 100, vary = TRUE, pressure_affected = FALSE)
var/turf/my_turf = get_turf(src)
new /obj/effect/gibspawner/human(my_turf)
for (var/obj/structure/eyeball as anything in GLOB.meteor_eyeballs)
diff --git a/code/modules/mob/living/basic/space_fauna/meteor_heart/spine_traps.dm b/code/modules/mob/living/basic/space_fauna/meteor_heart/spine_traps.dm
index 8ddcc1ed9e401..e41fa80a15b1c 100644
--- a/code/modules/mob/living/basic/space_fauna/meteor_heart/spine_traps.dm
+++ b/code/modules/mob/living/basic/space_fauna/meteor_heart/spine_traps.dm
@@ -17,7 +17,7 @@
/datum/action/cooldown/mob_cooldown/spine_traps/Activate(atom/target)
. = ..()
- playsound(owner, 'sound/magic/demon_consume.ogg', vol = 100, falloff_exponent = 2, vary = TRUE, pressure_affected = FALSE)
+ playsound(owner, 'sound/effects/magic/demon_consume.ogg', vol = 100, falloff_exponent = 2, vary = TRUE, pressure_affected = FALSE)
var/list/valid_turfs = list()
var/turf/our_turf = get_turf(owner)
for (var/turf/zone_turf in orange(range, our_turf))
@@ -92,7 +92,7 @@
return
COOLDOWN_START(src, thrust_delay, 0.7 SECONDS)
- playsound(src, 'sound/weapons/pierce.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
+ playsound(src, 'sound/items/weapons/pierce.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
var/mob/living/victim = arrived
flick("spikes_stabbing", src)
var/target_zone = victim.resting ? BODY_ZONE_CHEST : pick_weight(standing_damage_zones)
diff --git a/code/modules/mob/living/basic/space_fauna/morph.dm b/code/modules/mob/living/basic/space_fauna/morph.dm
index 8b4fe3802d73e..f1f568a261b01 100644
--- a/code/modules/mob/living/basic/space_fauna/morph.dm
+++ b/code/modules/mob/living/basic/space_fauna/morph.dm
@@ -30,7 +30,7 @@
attack_verb_continuous = "glomps"
attack_verb_simple = "glomp"
- attack_sound = 'sound/effects/blobattack.ogg'
+ attack_sound = 'sound/effects/blob/blobattack.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE //nom nom nom
butcher_results = list(/obj/item/food/meat/slab = 2)
diff --git a/code/modules/mob/living/basic/space_fauna/mushroom.dm b/code/modules/mob/living/basic/space_fauna/mushroom.dm
index b45c2714d4ab4..ae26754259455 100644
--- a/code/modules/mob/living/basic/space_fauna/mushroom.dm
+++ b/code/modules/mob/living/basic/space_fauna/mushroom.dm
@@ -19,7 +19,7 @@
maxHealth = 60
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
faction = list(FACTION_MUSHROOM)
diff --git a/code/modules/mob/living/basic/space_fauna/netherworld/blankbody.dm b/code/modules/mob/living/basic/space_fauna/netherworld/blankbody.dm
index d49932fb70465..474c2cf77d0e5 100644
--- a/code/modules/mob/living/basic/space_fauna/netherworld/blankbody.dm
+++ b/code/modules/mob/living/basic/space_fauna/netherworld/blankbody.dm
@@ -12,7 +12,7 @@
speed = 1
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
melee_attack_cooldown = 1 SECONDS
faction = list(FACTION_NETHER)
diff --git a/code/modules/mob/living/basic/space_fauna/netherworld/creature.dm b/code/modules/mob/living/basic/space_fauna/netherworld/creature.dm
index 15dfcdc29c045..0fe732554b286 100644
--- a/code/modules/mob/living/basic/space_fauna/netherworld/creature.dm
+++ b/code/modules/mob/living/basic/space_fauna/netherworld/creature.dm
@@ -13,7 +13,7 @@
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
gold_core_spawnable = HOSTILE_SPAWN
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
melee_attack_cooldown = 1 SECONDS
faction = list(FACTION_NETHER)
diff --git a/code/modules/mob/living/basic/space_fauna/netherworld/migo.dm b/code/modules/mob/living/basic/space_fauna/netherworld/migo.dm
index 11e00be288b74..3f7adc2272252 100644
--- a/code/modules/mob/living/basic/space_fauna/netherworld/migo.dm
+++ b/code/modules/mob/living/basic/space_fauna/netherworld/migo.dm
@@ -14,12 +14,12 @@
attack_verb_simple = "lacerate"
melee_attack_cooldown = 1 SECONDS
gold_core_spawnable = HOSTILE_SPAWN
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
faction = list(FACTION_NETHER)
speak_emote = list("screams", "clicks", "chitters", "barks", "moans", "growls", "meows", "reverberates", "roars", "squeaks", "rattles", "exclaims", "yells", "remarks", "mumbles", "jabbers", "stutters", "seethes")
death_message = "wails as its form turns into a pulpy mush."
- death_sound = 'sound/voice/hiss6.ogg'
+ death_sound = 'sound/mobs/non-humanoids/hiss/hiss6.ogg'
unsuitable_atmos_damage = 0
unsuitable_cold_damage = 0
unsuitable_heat_damage = 0
@@ -35,7 +35,7 @@
/mob/living/basic/migo/Initialize(mapload)
. = ..()
- migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_alert.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/footstep/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/runtime/hyperspace/hyperspace_begin.ogg', 'sound/runtime/hyperspace/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desecration-01.ogg', 'sound/misc/desecration-02.ogg', 'sound/misc/desecration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gun/pistol/shot_suppressed.ogg', 'sound/weapons/gun/pistol/shot.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kinetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/ambience/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/default/outbreak5.ogg', 'sound/ai/default/outbreak7.ogg', 'sound/ai/default/poweroff.ogg', 'sound/ai/default/radiation.ogg', 'sound/ai/default/shuttlecalled.ogg', 'sound/ai/default/shuttledock.ogg', 'sound/ai/default/shuttlerecalled.ogg', 'sound/ai/default/aimalf.ogg') //hahahaha fuck you code divers
+ migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/tools/change_jaws.ogg', 'sound/items/tools/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/tools/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/tools/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/tools/wirecutter.ogg', 'sound/items/tools/welder.ogg', 'sound/items/zip/zip.ogg', 'sound/items/tools/rped.ogg', 'sound/items/tools/ratchet.ogg', 'sound/items/polaroid/polaroid1.ogg', 'sound/items/pshoom/pshoom.ogg', 'sound/items/airhorn/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/mobs/non-humanoids/beepsky/creep.ogg', 'sound/mobs/non-humanoids/beepsky/iamthelaw.ogg', 'sound/mobs/non-humanoids/ed209/ed209_20sec.ogg', 'sound/mobs/non-humanoids/hiss/hiss3.ogg', 'sound/mobs/non-humanoids/hiss/hiss6.ogg', 'sound/mobs/non-humanoids/medbot/patchedup.ogg', 'sound/mobs/non-humanoids/medbot/feelbetter.ogg', 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg', 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg', 'sound/items/weapons/sear.ogg', 'sound/music/antag/clockcultalr.ogg', 'sound/music/antag/ling_alert.ogg', 'sound/music/antag/traitor/tatoralert.ogg', 'sound/music/antag/monkey.ogg', 'sound/vehicles/mecha/nominal.ogg', 'sound/vehicles/mecha/weapdestr.ogg', 'sound/vehicles/mecha/critdestr.ogg', 'sound/vehicles/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/blob/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blob/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles/bubbles.ogg', 'sound/effects/bubbles/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/footstep/clownstep2.ogg', 'sound/effects/curse/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion/explosion_distant.ogg', 'sound/effects/explosion/explosionfar.ogg', 'sound/effects/explosion/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/runtime/hyperspace/hyperspace_begin.ogg', 'sound/runtime/hyperspace/hyperspace_end.ogg', 'sound/effects/his_grace/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/pickaxe/picaxe1.ogg', 'sound/effects/sparks/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/effects/desecration/desecration-01.ogg', 'sound/effects/desecration/desecration-02.ogg', 'sound/effects/desecration/desecration-03.ogg', 'sound/announcer/alarm/bloblarm.ogg', 'sound/announcer/alarm/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/announcer/notice/notice1.ogg', 'sound/announcer/notice/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/items/weapons/armbomb.ogg', 'sound/items/weapons/beam_sniper.ogg', 'sound/items/weapons/chainsawhit.ogg', 'sound/items/weapons/emitter.ogg', 'sound/items/weapons/emitter2.ogg', 'sound/items/weapons/blade1.ogg', 'sound/items/weapons/bladeslice.ogg', 'sound/items/weapons/blastcannon.ogg', 'sound/items/weapons/blaster.ogg', 'sound/items/weapons/bulletflyby3.ogg', 'sound/items/weapons/circsawhit.ogg', 'sound/items/weapons/cqchit2.ogg', 'sound/items/weapons/drill.ogg', 'sound/items/weapons/genhit1.ogg', 'sound/items/weapons/gun/pistol/shot_suppressed.ogg', 'sound/items/weapons/gun/pistol/shot.ogg', 'sound/items/weapons/handcuffs.ogg', 'sound/items/weapons/homerun.ogg', 'sound/items/weapons/kinetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock/airlock.ogg', 'sound/machines/airlock/airlock_alien_prying.ogg', 'sound/machines/airlock/airlockclose.ogg', 'sound/machines/airlock/airlockforced.ogg', 'sound/machines/airlock/airlockopen.ogg', 'sound/announcer/alarm/nuke_alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/airlock/boltsdown.ogg', 'sound/machines/airlock/boltsup.ogg', 'sound/machines/buzz/buzz-sigh.ogg', 'sound/machines/buzz/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib/defib_charge.ogg', 'sound/machines/defib/defib_failed.ogg', 'sound/machines/defib/defib_ready.ogg', 'sound/machines/defib/defib_zap.ogg', 'sound/machines/beep/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door/door_close.ogg', 'sound/machines/door/door_open.ogg', 'sound/machines/engine_alert/engine_alert1.ogg', 'sound/machines/engine_alert/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/mobs/non-humanoids/honkbot/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/ambience/misc/signal.ogg', 'sound/machines/synth/synth_no.ogg', 'sound/machines/synth/synth_yes.ogg', 'sound/machines/terminal/terminal_alert.ogg', 'sound/machines/beep/triple_beep.ogg', 'sound/machines/beep/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/announcer/default/outbreak5.ogg', 'sound/announcer/default/outbreak7.ogg', 'sound/announcer/default/poweroff.ogg', 'sound/announcer/default/radiation.ogg', 'sound/announcer/default/shuttlecalled.ogg', 'sound/announcer/default/shuttledock.ogg', 'sound/announcer/default/shuttlerecalled.ogg', 'sound/announcer/default/aimalf.ogg') //hahahaha fuck you code divers
if(!istype(src, /mob/living/basic/migo/hatsune) && prob(0.1)) // chance on-load mi-gos will spawn with a miku wig on (shiny variant)
new /mob/living/basic/migo/hatsune(get_turf(loc), mapload)
@@ -90,7 +90,7 @@
faction = list(FACTION_NEUTRAL)
/mob/living/basic/migo/hatsune/make_migo_sound()
- playsound(src, 'sound/creatures/tourist/tourist_talk_japanese1.ogg', 50, TRUE)
+ playsound(src, 'sound/mobs/non-humanoids/tourist/tourist_talk_japanese1.ogg', 50, TRUE)
/mob/living/basic/migo/hatsune/Initialize(mapload)
. = ..()
diff --git a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
index 720e0c031c0a3..cf76f347be3f3 100644
--- a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
+++ b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm
@@ -18,7 +18,7 @@
melee_damage_lower = 10
melee_damage_upper = 20
obj_damage = 50
- attack_sound = 'sound/hallucinations/growl1.ogg'
+ attack_sound = 'sound/effects/hallucinations/growl1.ogg'
ai_controller = /datum/ai_controller/basic_controller/paper_wizard
///spell to summon minions
var/datum/action/cooldown/spell/conjure/wizard_summon_minions/summon
@@ -161,8 +161,8 @@
/obj/effect/temp_visual/paperwiz_dying/Initialize(mapload)
. = ..()
visible_message(span_boldannounce("The wizard cries out in pain as a gate appears behind him, sucking him in!"))
- playsound(get_turf(src), 'sound/magic/mandswap.ogg', 50, vary = TRUE, pressure_affected = TRUE)
- playsound(get_turf(src), 'sound/hallucinations/wail.ogg', 50, vary = TRUE, pressure_affected = TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/mandswap.ogg', 50, vary = TRUE, pressure_affected = TRUE)
+ playsound(get_turf(src), 'sound/effects/hallucinations/wail.ogg', 50, vary = TRUE, pressure_affected = TRUE)
RegisterSignal(src, COMSIG_PREQDELETED, PROC_REF(on_delete))
/obj/effect/temp_visual/paperwiz_dying/proc/on_delete()
@@ -171,7 +171,7 @@
for(var/mob/nearby in range(7, src))
shake_camera(nearby, duration = 7 SECONDS, strength = 1)
var/turf/current_turf = get_turf(src)
- playsound(current_turf,'sound/magic/summon_magic.ogg', 50, vary = TRUE, vary = TRUE)
+ playsound(current_turf,'sound/effects/magic/summon_magic.ogg', 50, vary = TRUE, vary = TRUE)
new /obj/effect/temp_visual/paper_scatter(current_turf)
new /obj/item/clothing/suit/wizrobe/paper(current_turf)
new /obj/item/clothing/head/collectable/paper(current_turf)
diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
index c0fb9b67e7f73..9f9598b11ae20 100644
--- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
+++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm
@@ -27,7 +27,7 @@
melee_attack_cooldown = CLICK_CD_MELEE
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
// Slightly brown red, for the eyes
lighting_cutoff_red = 22
diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
index 9f565dab11253..fa21d157e9061 100644
--- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
+++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm
@@ -135,7 +135,7 @@
human_mob.electrocute_act(shock_damage, to_shock, flags = SHOCK_NOGLOVES)
do_sparks(4, FALSE, human_mob)
- playsound(human_mob, 'sound/machines/defib_zap.ogg', 50, TRUE, -1)
+ playsound(human_mob, 'sound/machines/defib/defib_zap.ogg', 50, TRUE, -1)
//Defile: Corrupts nearby stuff, unblesses floor tiles.
/datum/action/cooldown/spell/aoe/revenant/defile
diff --git a/code/modules/mob/living/basic/space_fauna/snake/snake.dm b/code/modules/mob/living/basic/space_fauna/snake/snake.dm
index d526189c5626b..78f7d86e0db3f 100644
--- a/code/modules/mob/living/basic/space_fauna/snake/snake.dm
+++ b/code/modules/mob/living/basic/space_fauna/snake/snake.dm
@@ -18,7 +18,7 @@
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
response_help_continuous = "pets"
diff --git a/code/modules/mob/living/basic/space_fauna/snake/snake_ai.dm b/code/modules/mob/living/basic/space_fauna/snake/snake_ai.dm
index 3eb404761c522..189a7fb2eb097 100644
--- a/code/modules/mob/living/basic/space_fauna/snake/snake_ai.dm
+++ b/code/modules/mob/living/basic/space_fauna/snake/snake_ai.dm
@@ -1,6 +1,6 @@
/datum/ai_planning_subtree/random_speech/snake
speech_chance = 5
speak = list("hsssss","sssSSsssss...","hiisssss")
- sound = list('sound/creatures/snake_hissing1.ogg', 'sound/creatures/snake_hissing2.ogg')
+ sound = list('sound/mobs/non-humanoids/snake/snake_hissing1.ogg', 'sound/mobs/non-humanoids/snake/snake_hissing2.ogg')
emote_hear = list("hisses.")
emote_see = list("slithers around.", "glances.", "stares.")
diff --git a/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm b/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
index 1776e69358139..f672e60ee2940 100644
--- a/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
+++ b/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
@@ -30,7 +30,7 @@
speed = 0
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
obj_damage = 50
melee_damage_upper = 35
@@ -43,7 +43,7 @@
maptext_height = 64
maptext_width = 64
mouse_opacity = MOUSE_OPACITY_ICON
- death_sound = 'sound/creatures/space_dragon_roar.ogg'
+ death_sound = 'sound/mobs/non-humanoids/space_dragon/space_dragon_roar.ogg'
death_message = "screeches in agony as it collapses to the floor, its life extinguished."
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
can_buckle_to = FALSE
@@ -176,7 +176,7 @@
adjust_health(-food.maxHealth * 0.25)
if (QDELETED(food) || food.loc == src)
return FALSE
- playsound(src, 'sound/magic/demon_attack1.ogg', 60, TRUE)
+ playsound(src, 'sound/effects/magic/demon_attack1.ogg', 60, TRUE)
visible_message(span_boldwarning("[src] swallows [food] whole!"))
food.extinguish_mob() // It's wet in there, and our food is likely to be on fire. Let's be decent and not husk them.
food.forceMove(src)
diff --git a/code/modules/mob/living/basic/space_fauna/spaceman.dm b/code/modules/mob/living/basic/space_fauna/spaceman.dm
index 8a9ba36287ae3..42f28a74960bf 100644
--- a/code/modules/mob/living/basic/space_fauna/spaceman.dm
+++ b/code/modules/mob/living/basic/space_fauna/spaceman.dm
@@ -21,7 +21,7 @@
melee_damage_upper = 10
attack_verb_continuous = "hits"
attack_verb_simple = "hit"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
ai_controller = /datum/ai_controller/basic_controller/spaceman
diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider.dm b/code/modules/mob/living/basic/space_fauna/spider/spider.dm
index b9938631ec5d5..118487f038392 100644
--- a/code/modules/mob/living/basic/space_fauna/spider/spider.dm
+++ b/code/modules/mob/living/basic/space_fauna/spider/spider.dm
@@ -24,7 +24,7 @@
pass_flags = PASSTABLE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
unique_name = TRUE
lighting_cutoff_red = 22
diff --git a/code/modules/mob/living/basic/space_fauna/statue/statue.dm b/code/modules/mob/living/basic/space_fauna/statue/statue.dm
index 3ddbc2364e81c..3bd308f34a609 100644
--- a/code/modules/mob/living/basic/space_fauna/statue/statue.dm
+++ b/code/modules/mob/living/basic/space_fauna/statue/statue.dm
@@ -25,7 +25,7 @@
melee_damage_upper = 83
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/hallucinations/growl1.ogg'
+ attack_sound = 'sound/effects/hallucinations/growl1.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
melee_attack_cooldown = 1 SECONDS
diff --git a/code/modules/mob/living/basic/space_fauna/wumborian_fugu/wumborian_fugu.dm b/code/modules/mob/living/basic/space_fauna/wumborian_fugu/wumborian_fugu.dm
index 675b32c84b55d..a3670c6e5ac56 100644
--- a/code/modules/mob/living/basic/space_fauna/wumborian_fugu/wumborian_fugu.dm
+++ b/code/modules/mob/living/basic/space_fauna/wumborian_fugu/wumborian_fugu.dm
@@ -27,7 +27,7 @@
obj_damage = 0
melee_damage_lower = 0
melee_damage_upper = 0
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
melee_attack_cooldown = 2.5 SECONDS
attack_verb_continuous = "chomps"
diff --git a/code/modules/mob/living/basic/trader/trader.dm b/code/modules/mob/living/basic/trader/trader.dm
index 29a2bda419930..9b01261fa51a4 100644
--- a/code/modules/mob/living/basic/trader/trader.dm
+++ b/code/modules/mob/living/basic/trader/trader.dm
@@ -9,7 +9,7 @@
melee_damage_upper = 10
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
basic_mob_flags = DEL_ON_DEATH
unsuitable_atmos_damage = 2.5
combat_mode = FALSE
@@ -33,7 +33,7 @@
///Casing used to shoot during retaliation
var/ranged_attack_casing = /obj/item/ammo_casing/shotgun/buckshot
///Sound to make while doing a retalitory attack
- var/ranged_attack_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ var/ranged_attack_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
///Weapon path, for visuals
var/held_weapon_visual = /obj/item/gun/ballistic/shotgun
@@ -69,7 +69,7 @@
ai_controller = /datum/ai_controller/basic_controller/trader/jumpscare
- sell_sound = 'sound/voice/hiss2.ogg'
+ sell_sound = 'sound/mobs/non-humanoids/hiss/hiss2.ogg'
species_path = /datum/species/skeleton
spawner_path = /obj/effect/mob_spawn/corpse/human/skeleton/mrbones
loot = list(/obj/effect/decal/remains/human)
diff --git a/code/modules/mob/living/basic/trader/trader_data.dm b/code/modules/mob/living/basic/trader/trader_data.dm
index 9762dc02be500..c47e200154f28 100644
--- a/code/modules/mob/living/basic/trader/trader_data.dm
+++ b/code/modules/mob/living/basic/trader/trader_data.dm
@@ -85,7 +85,7 @@
/datum/trader_data/mr_bones
shop_spot_type = /obj/structure/chair/wood/wings
sign_type = /obj/structure/trader_sign/mrbones
- sell_sound = 'sound/voice/hiss2.ogg'
+ sell_sound = 'sound/mobs/non-humanoids/hiss/hiss2.ogg'
initial_products = list(
/obj/item/clothing/head/helmet/skull = list(PAYCHECK_CREW * 3, INFINITY),
diff --git a/code/modules/mob/living/basic/tree.dm b/code/modules/mob/living/basic/tree.dm
index 3f3894f190b5e..b6f7e5ca4eb41 100644
--- a/code/modules/mob/living/basic/tree.dm
+++ b/code/modules/mob/living/basic/tree.dm
@@ -28,7 +28,7 @@
melee_damage_upper = 12
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
faction = list(FACTION_HOSTILE)
diff --git a/code/modules/mob/living/basic/trooper/abductor.dm b/code/modules/mob/living/basic/trooper/abductor.dm
index fdb8b41cc5ec5..8163fb72c5af6 100644
--- a/code/modules/mob/living/basic/trooper/abductor.dm
+++ b/code/modules/mob/living/basic/trooper/abductor.dm
@@ -12,7 +12,7 @@
loot = list(/obj/effect/gibspawner/human)
attack_verb_continuous = "beats"
attack_verb_simple = "beat"
- attack_sound = 'sound/weapons/egloves.ogg'
+ attack_sound = 'sound/items/weapons/egloves.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
r_hand = /obj/item/melee/baton/abductor
var/projectile_deflect_chance = 0
@@ -24,7 +24,7 @@
/// Type of bullet we use
var/casingtype = /obj/item/ammo_casing/energy/lasergun
/// Sound to play when firing weapon
- var/projectilesound = 'sound/weapons/laser2.ogg'
+ var/projectilesound = 'sound/items/weapons/laser2.ogg'
/// number of burst shots
var/burst_shots = 1
/// Time between taking shots
diff --git a/code/modules/mob/living/basic/trooper/nanotrasen.dm b/code/modules/mob/living/basic/trooper/nanotrasen.dm
index af32edde7e3f7..6d285b871d83e 100644
--- a/code/modules/mob/living/basic/trooper/nanotrasen.dm
+++ b/code/modules/mob/living/basic/trooper/nanotrasen.dm
@@ -21,7 +21,7 @@
/// Type of bullet we use
var/casingtype = /obj/item/ammo_casing/c45
/// Sound to play when firing weapon
- var/projectilesound = 'sound/weapons/gun/pistol/shot_alt.ogg'
+ var/projectilesound = 'sound/items/weapons/gun/pistol/shot_alt.ogg'
/// number of burst shots
var/burst_shots
/// Time between taking shots
@@ -42,7 +42,7 @@
/mob/living/basic/trooper/nanotrasen/ranged/smg
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged/burst
casingtype = /obj/item/ammo_casing/c46x30mm
- projectilesound = 'sound/weapons/gun/smg/shot.ogg'
+ projectilesound = 'sound/items/weapons/gun/smg/shot.ogg'
r_hand = /obj/item/gun/ballistic/automatic/wt550
burst_shots = 3
ranged_cooldown = 3 SECONDS
@@ -54,7 +54,7 @@
casingtype = /obj/item/ammo_casing/a223/weak
burst_shots = 4
ranged_cooldown = 3 SECONDS
- projectilesound = 'sound/weapons/gun/smg/shot.ogg'
+ projectilesound = 'sound/items/weapons/gun/smg/shot.ogg'
r_hand = /obj/item/gun/ballistic/automatic/ar
loot = list(/obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier)
mob_spawner = /obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier
@@ -68,7 +68,7 @@
unsuitable_cold_damage = 0
casingtype = /obj/item/ammo_casing/energy/laser
burst_shots = 3
- projectilesound = 'sound/weapons/laser.ogg'
+ projectilesound = 'sound/items/weapons/laser.ogg'
ranged_cooldown = 5 SECONDS
faction = list(ROLE_DEATHSQUAD)
loot = list(/obj/effect/gibspawner/human)
diff --git a/code/modules/mob/living/basic/trooper/pirate.dm b/code/modules/mob/living/basic/trooper/pirate.dm
index 6a51b901ebc4d..0af2f2aa6973a 100644
--- a/code/modules/mob/living/basic/trooper/pirate.dm
+++ b/code/modules/mob/living/basic/trooper/pirate.dm
@@ -23,7 +23,7 @@
armour_penetration = 35
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/blade1.ogg'
+ attack_sound = 'sound/items/weapons/blade1.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
loot = list(/obj/effect/mob_spawn/corpse/human/pirate/melee)
light_range = 2
@@ -57,7 +57,7 @@
/// Type of bullet we use
var/projectiletype = /obj/projectile/beam/laser
/// Sound to play when firing weapon
- var/projectilesound = 'sound/weapons/laser.ogg'
+ var/projectilesound = 'sound/items/weapons/laser.ogg'
/// number of burst shots
var/burst_shots = 2
/// Time between taking shots
diff --git a/code/modules/mob/living/basic/trooper/russian.dm b/code/modules/mob/living/basic/trooper/russian.dm
index 6c8ff52c019a9..e3334ddddbd39 100644
--- a/code/modules/mob/living/basic/trooper/russian.dm
+++ b/code/modules/mob/living/basic/trooper/russian.dm
@@ -10,7 +10,7 @@
faction = list(FACTION_RUSSIAN)
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
mob_spawner = /obj/effect/mob_spawn/corpse/human/russian
@@ -29,7 +29,7 @@
/obj/item/gun/ballistic/revolver/nagant,
)
var/casingtype = /obj/item/ammo_casing/n762
- var/projectilesound = 'sound/weapons/gun/revolver/shot.ogg'
+ var/projectilesound = 'sound/items/weapons/gun/revolver/shot.ogg'
/mob/living/basic/trooper/russian/ranged/Initialize(mapload)
. = ..()
diff --git a/code/modules/mob/living/basic/trooper/syndicate.dm b/code/modules/mob/living/basic/trooper/syndicate.dm
index 8f8d564693b66..6d4766db8cd07 100644
--- a/code/modules/mob/living/basic/trooper/syndicate.dm
+++ b/code/modules/mob/living/basic/trooper/syndicate.dm
@@ -32,7 +32,7 @@
loot = list(/obj/effect/gibspawner/human)
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
r_hand = /obj/item/knife/combat/survival
var/projectile_deflect_chance = 0
@@ -67,7 +67,7 @@
melee_damage_upper = 30
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/blade1.ogg'
+ attack_sound = 'sound/items/weapons/blade1.ogg'
armour_penetration = 35
projectile_deflect_chance = 50
light_range = 2
@@ -105,7 +105,7 @@
/// Type of bullet we use
var/casingtype = /obj/item/ammo_casing/c9mm
/// Sound to play when firing weapon
- var/projectilesound = 'sound/weapons/gun/pistol/shot.ogg'
+ var/projectilesound = 'sound/items/weapons/gun/pistol/shot.ogg'
/// number of burst shots
var/burst_shots
/// Time between taking shots
@@ -124,7 +124,7 @@
AddComponent(/datum/component/ranged_mob_full_auto)
/mob/living/basic/trooper/syndicate/ranged/infiltrator //shuttle loan event
- projectilesound = 'sound/weapons/gun/smg/shot_suppressed.ogg'
+ projectilesound = 'sound/items/weapons/gun/smg/shot_suppressed.ogg'
loot = list(/obj/effect/mob_spawn/corpse/human/syndicatesoldier)
/mob/living/basic/trooper/syndicate/ranged/space
@@ -148,7 +148,7 @@
/mob/living/basic/trooper/syndicate/ranged/smg
casingtype = /obj/item/ammo_casing/c45
- projectilesound = 'sound/weapons/gun/smg/shot.ogg'
+ projectilesound = 'sound/items/weapons/gun/smg/shot.ogg'
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged/burst
burst_shots = 3
ranged_cooldown = 3 SECONDS
@@ -236,7 +236,7 @@
obj_damage = 0
attack_verb_continuous = "cuts"
attack_verb_simple = "cut"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
faction = list(ROLE_SYNDICATE)
mob_size = MOB_SIZE_TINY
diff --git a/code/modules/mob/living/basic/trooper/trooper.dm b/code/modules/mob/living/basic/trooper/trooper.dm
index 1886c8fc2ff5e..7c9fd698d0895 100644
--- a/code/modules/mob/living/basic/trooper/trooper.dm
+++ b/code/modules/mob/living/basic/trooper/trooper.dm
@@ -10,7 +10,7 @@
melee_damage_upper = 10
attack_verb_continuous = "punches"
attack_verb_simple = "punch"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
melee_attack_cooldown = 1.2 SECONDS
combat_mode = TRUE
unsuitable_atmos_damage = 7.5
diff --git a/code/modules/mob/living/basic/vermin/cockroach.dm b/code/modules/mob/living/basic/vermin/cockroach.dm
index 0680de631cbae..c6eead9a16661 100644
--- a/code/modules/mob/living/basic/vermin/cockroach.dm
+++ b/code/modules/mob/living/basic/vermin/cockroach.dm
@@ -145,7 +145,7 @@
obj_damage = 10
melee_attack_cooldown = 1 SECONDS
gold_core_spawnable = HOSTILE_SPAWN
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
faction = list(FACTION_HOSTILE, FACTION_MAINT_CREATURES)
sharpness = SHARP_POINTY
diff --git a/code/modules/mob/living/basic/vermin/crab.dm b/code/modules/mob/living/basic/vermin/crab.dm
index 3c1c9146a064d..26eca65b97209 100644
--- a/code/modules/mob/living/basic/vermin/crab.dm
+++ b/code/modules/mob/living/basic/vermin/crab.dm
@@ -23,7 +23,7 @@
///In the case 'melee_damage_upper' is somehow raised above 0
attack_verb_continuous = "snips"
attack_verb_simple = "snip"
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
ai_controller = /datum/ai_controller/basic_controller/crab
diff --git a/code/modules/mob/living/basic/vermin/frog.dm b/code/modules/mob/living/basic/vermin/frog.dm
index 3a288918dbdc1..d2a634b7e9edd 100644
--- a/code/modules/mob/living/basic/vermin/frog.dm
+++ b/code/modules/mob/living/basic/vermin/frog.dm
@@ -26,7 +26,7 @@
response_harm_simple = "splat"
density = FALSE
faction = list(FACTION_HOSTILE, FACTION_MAINT_CREATURES)
- attack_sound = 'sound/effects/reee.ogg'
+ attack_sound = 'sound/mobs/non-humanoids/frog/reee.ogg'
butcher_results = list(/obj/item/food/nugget = 1)
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
@@ -40,7 +40,7 @@
ai_controller = /datum/ai_controller/basic_controller/frog
- var/stepped_sound = 'sound/effects/huuu.ogg'
+ var/stepped_sound = 'sound/mobs/non-humanoids/frog/huuu.ogg'
///How much of a reagent the mob injects on attack
var/poison_per_bite = 3
///What reagent the mob injects targets with
diff --git a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm
index a0079065de437..9659408b8b1aa 100644
--- a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm
+++ b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm
@@ -59,14 +59,14 @@
if(src.stat == DEAD)
return
else
- playsound(loc, 'sound/voice/moth/scream_moth.ogg', 50, TRUE)
+ playsound(loc, 'sound/mobs/humanoids/moth/scream_moth.ogg', 50, TRUE)
/mob/living/basic/mothroach/attackby(obj/item/attacking_item, mob/living/user, params)
. = ..()
if(src.stat == DEAD)
return
else
- playsound(loc, 'sound/voice/moth/scream_moth.ogg', 50, TRUE)
+ playsound(loc, 'sound/mobs/humanoids/moth/scream_moth.ogg', 50, TRUE)
/mob/living/basic/mothroach/bar
name = "mothroach bartender"
diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm
index 5b8aad138fe10..cb62ad956f95c 100644
--- a/code/modules/mob/living/basic/vermin/mouse.dm
+++ b/code/modules/mob/living/basic/vermin/mouse.dm
@@ -51,7 +51,7 @@
held_state = "mouse_[body_color]" // not handled by variety element
AddElement(/datum/element/animal_variety, "mouse", body_color, FALSE)
AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOUSE, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 10)
- AddComponent(/datum/component/squeak, list('sound/creatures/mousesqueek.ogg' = 1), 100, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) //as quiet as a mouse or whatever
+ AddComponent(/datum/component/squeak, list('sound/mobs/non-humanoids/mouse/mousesqueek.ogg' = 1), 100, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) //as quiet as a mouse or whatever
var/static/list/loc_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
)
@@ -232,7 +232,7 @@
span_notice("You chew through \the [cable]."),
)
- playsound(cable, 'sound/effects/sparks2.ogg', 100, TRUE)
+ playsound(cable, 'sound/effects/sparks/sparks2.ogg', 100, TRUE)
cable.deconstruct()
/mob/living/basic/mouse/white
diff --git a/code/modules/mob/living/basic/vermin/space_bat.dm b/code/modules/mob/living/basic/vermin/space_bat.dm
index 53f367f448727..07bce71f2f587 100644
--- a/code/modules/mob/living/basic/vermin/space_bat.dm
+++ b/code/modules/mob/living/basic/vermin/space_bat.dm
@@ -24,7 +24,7 @@
butcher_results = list(/obj/item/food/meat/slab = 1)
pass_flags = PASSTABLE
- attack_sound = 'sound/weapons/bite.ogg'
+ attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
environment_smash = ENVIRONMENT_SMASH_NONE
mob_size = MOB_SIZE_TINY
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 1963e13dbf552..7ae89e8d0ae1d 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -88,10 +88,10 @@
brainmob.set_stat(CONSCIOUS) //we manually revive the brain mob
else if(!fubar_brain && newbrain.organ_flags & ORGAN_FAILING) // the brain is damaged, but not from a suicider
to_chat(user, span_warning("[src]'s indicator light turns yellow and its brain integrity alarm beeps softly. Perhaps you should check [newbrain] for damage."))
- playsound(src, 'sound/machines/synth_no.ogg', 5, TRUE)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 5, TRUE)
else
to_chat(user, span_warning("[src]'s indicator light turns red and its brainwave activity alarm beeps softly. Perhaps you should check [newbrain] again."))
- playsound(src, 'sound/machines/triple_beep.ogg', 5, TRUE)
+ playsound(src, 'sound/machines/beep/triple_beep.ogg', 5, TRUE)
brainmob.reset_perspective()
brain = newbrain
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 46419d70e6dee..ced02095e410b 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -8,7 +8,7 @@
layer = ABOVE_MOB_LAYER
zone = BODY_ZONE_HEAD
slot = ORGAN_SLOT_BRAIN
- organ_flags = ORGAN_ORGANIC | ORGAN_VITAL
+ organ_flags = ORGAN_ORGANIC | ORGAN_VITAL | ORGAN_PROMINENT
attack_verb_continuous = list("attacks", "slaps", "whacks")
attack_verb_simple = list("attack", "slap", "whack")
@@ -258,6 +258,26 @@
else
return span_info("This one is completely devoid of life.")
+/obj/item/organ/internal/brain/get_status_appendix(advanced, add_tooltips)
+ var/list/trauma_text
+ for(var/datum/brain_trauma/trauma as anything in traumas)
+ var/trauma_desc = ""
+ switch(trauma.resilience)
+ if(TRAUMA_RESILIENCE_BASIC)
+ trauma_desc = conditional_tooltip("Mild ", "Repair via brain surgery or medication such as [/datum/reagent/medicine/neurine::name].", add_tooltips)
+ if(TRAUMA_RESILIENCE_SURGERY)
+ trauma_desc = conditional_tooltip("Severe ", "Repair via brain surgery.", add_tooltips)
+ if(TRAUMA_RESILIENCE_LOBOTOMY)
+ trauma_desc = conditional_tooltip("Deep-rooted ", "Repair via Lobotomy.", add_tooltips)
+ if(TRAUMA_RESILIENCE_WOUND)
+ trauma_desc = conditional_tooltip("Fracture-derived ", "Repair via treatment of wounds afflicting the head.", add_tooltips)
+ if(TRAUMA_RESILIENCE_MAGIC, TRAUMA_RESILIENCE_ABSOLUTE)
+ trauma_desc = conditional_tooltip("Permanent ", "Irreparable under normal circumstances.", add_tooltips)
+ trauma_desc += capitalize(trauma.scan_desc)
+ LAZYADD(trauma_text, trauma_desc)
+ if(LAZYLEN(trauma_text))
+ return "Mental trauma: [english_list(trauma_text, and_text = ", and ")]."
+
/obj/item/organ/internal/brain/attack(mob/living/carbon/C, mob/user)
if(!istype(C))
return ..()
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index d883cbc635950..6557d0d1da889 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -11,17 +11,17 @@ GLOBAL_VAR(posibrain_notify_cooldown)
braintype = "Android"
///Message sent to the user when polling ghosts
- var/begin_activation_message = "You carefully locate the manual activation switch and start the positronic brain's boot process."
+ var/begin_activation_message = span_notice("You carefully locate the manual activation switch and start the positronic brain's boot process.")
///Message sent as a visible message on success
- var/success_message = "The positronic brain pings, and its lights start flashing. Success!"
+ var/success_message = span_notice("The positronic brain pings, and its lights start flashing. Success!")
///Message sent as a visible message on failure
- var/fail_message = "The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?"
+ var/fail_message = span_notice("The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?")
///Visible message sent when a player possesses the brain
- var/new_mob_message = "The positronic brain chimes quietly."
+ var/new_mob_message = span_notice("The positronic brain chimes quietly.")
///Examine message when the posibrain has no mob
- var/dead_message = "It appears to be completely inactive. The reset light is blinking."
+ var/dead_message = span_deadsay("It appears to be completely inactive. The reset light is blinking.")
///Examine message when the posibrain cannot poll ghosts due to cooldown
- var/recharge_message = "The positronic brain isn't ready to activate again yet! Give it some time to recharge."
+ var/recharge_message = span_warning("The positronic brain isn't ready to activate again yet! Give it some time to recharge.")
///Can be set to tell ghosts what the brain will be used for
var/ask_role = ""
diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm
index 663419ce22cff..ce95c0e6ce5a7 100644
--- a/code/modules/mob/living/carbon/alien/adult/adult.dm
+++ b/code/modules/mob/living/carbon/alien/adult/adult.dm
@@ -14,7 +14,7 @@
var/leap_on_click = 0
var/pounce_cooldown = 0
var/pounce_cooldown_time = 30
- death_sound = 'sound/voice/hiss6.ogg'
+ death_sound = 'sound/mobs/non-humanoids/hiss/hiss6.ogg'
bodyparts = list(
/obj/item/bodypart/chest/alien,
/obj/item/bodypart/head/alien,
@@ -41,7 +41,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
return ..()
/mob/living/carbon/alien/adult/cuff_resist(obj/item/I)
- playsound(src, 'sound/voice/hiss5.ogg', 40, TRUE, TRUE) //Alien roars when starting to break free
+ playsound(src, 'sound/mobs/non-humanoids/hiss/hiss5.ogg', 40, TRUE, TRUE) //Alien roars when starting to break free
..(I, cuff_break = INSTANT_CUFFBREAK)
/mob/living/carbon/alien/adult/resist_grab(moving_resist)
@@ -67,7 +67,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
/mob/living/carbon/alien/adult/check_breath(datum/gas_mixture/breath)
if(breath?.total_moles() > 0 && !HAS_TRAIT(src, TRAIT_SNEAK))
- playsound(get_turf(src), pick('sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg'), 50, FALSE, -5)
+ playsound(get_turf(src), pick('sound/mobs/non-humanoids/hiss/lowHiss2.ogg', 'sound/mobs/non-humanoids/hiss/lowHiss3.ogg', 'sound/mobs/non-humanoids/hiss/lowHiss4.ogg'), 50, FALSE, -5)
return ..()
/mob/living/carbon/alien/adult/setGrabState(newstate)
@@ -121,7 +121,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
lucky_winner.visible_message(span_danger("[src] is attempting to devour [lucky_winner]!"), \
span_userdanger("[src] is attempting to devour you!"))
- playsound(lucky_winner, 'sound/creatures/alien_eat.ogg', 100)
+ playsound(lucky_winner, 'sound/mobs/non-humanoids/alien/alien_eat.ogg', 100)
if(!do_after(src, devour_time, lucky_winner, extra_checks = CALLBACK(src, PROC_REF(can_consume), lucky_winner)))
return TRUE
if(!can_consume(lucky_winner))
diff --git a/code/modules/mob/living/carbon/alien/adult/adult_defense.dm b/code/modules/mob/living/carbon/alien/adult/adult_defense.dm
index d89f6de30d6e7..3b65549d6d9c0 100644
--- a/code/modules/mob/living/carbon/alien/adult/adult_defense.dm
+++ b/code/modules/mob/living/carbon/alien/adult/adult_defense.dm
@@ -33,7 +33,7 @@
apply_damage(damage, BRUTE, affecting)
log_combat(user, src, "attacked")
else
- playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
visible_message(span_danger("[user]'s punch misses [src]!"), \
span_danger("You avoid [user]'s punch!"), span_hear("You hear a swoosh!"), COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_warning("Your punch misses [src]!"))
diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
index 21a09d82a6965..0b760c0f2e7b9 100644
--- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
@@ -299,7 +299,7 @@ Doesn't work on other aliens/AI.*/
neurotoxin.preparePixelProjectile(target, caller, modifiers)
neurotoxin.firer = caller
neurotoxin.fire()
- caller.newtonian_move(get_dir(target, caller))
+ caller.newtonian_move(get_angle(target, caller))
return TRUE
// Has to return TRUE, otherwise is skipped.
@@ -379,7 +379,7 @@ Doesn't work on other aliens/AI.*/
owner.visible_message(span_danger("[owner] hurls out the contents of their stomach!"))
var/dir_angle = dir2angle(owner.dir)
- playsound(owner, 'sound/creatures/alien_york.ogg', 100)
+ playsound(owner, 'sound/mobs/non-humanoids/alien/alien_york.ogg', 100)
melting_pot.eject_stomach(slice_off_turfs(owner, border_diamond_range_turfs(owner, 9), dir_angle - angle_delta, dir_angle + angle_delta), 4, mob_speed, spit_speed)
/// Gets the plasma level of this carbon's plasma vessel, or -1 if they don't have one
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index 630171ba2c15d..0217a99fa04be 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -27,7 +27,7 @@ In all, this is a lot like the monkey code. /N
visible_message(span_notice("[user.name] nuzzles [src] trying to wake [p_them()] up!"))
else if(health > 0)
user.do_attack_animation(src, ATTACK_EFFECT_BITE)
- playsound(loc, 'sound/weapons/bite.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/bite.ogg', 50, TRUE, -1)
visible_message(span_danger("[user.name] bites [src]!"), \
span_userdanger("[user.name] bites you!"), span_hear("You hear a chomp!"), COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You bite [src]!"))
diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm
index 10d7550bb78fc..717e18c9b3166 100644
--- a/code/modules/mob/living/carbon/alien/emote.dm
+++ b/code/modules/mob/living/carbon/alien/emote.dm
@@ -27,4 +27,4 @@
/datum/emote/living/alien/roar/get_sound(mob/living/user)
if(isalienadult(user))
- return 'sound/voice/hiss5.ogg'
+ return 'sound/mobs/non-humanoids/hiss/hiss5.ogg'
diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm
index 62dd4f88b2177..8f2446d000fde 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm
@@ -17,7 +17,7 @@
var/obj/item/bodypart/affecting = get_bodypart(get_random_valid_zone(user.zone_selected))
apply_damage(damage, BRUTE, affecting)
else
- playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
visible_message(span_danger("[user]'s kick misses [src]!"), \
span_danger("You avoid [user]'s kick!"), span_hear("You hear a swoosh!"), COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_warning("Your kick misses [src]!"))
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 3c063aec7e752..ac9fd81cf976b 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -290,7 +290,7 @@
// At 100% damage, the stomach burts
// Otherwise, we give them a -50% -> 50% chance scaling with damage dealt
if(!prob((damage_ratio * 100) - 50) && damage_ratio != 1)
- playsound(play_from, 'sound/creatures/alien_organ_cut.ogg', 100, 1)
+ playsound(play_from, 'sound/mobs/non-humanoids/alien/alien_organ_cut.ogg', 100, 1)
// We try and line up the "jump" here with the sound of the hit
var/oldx = play_from.pixel_x
var/oldy = play_from.pixel_y
@@ -318,7 +318,7 @@
play_from.visible_message(span_danger("[user] blows a hole in [stomach_text] and escapes!"), \
span_userdanger("[user] escapes from your [stomach_text]. Hell, that hurts."))
- playsound(get_turf(play_from), 'sound/creatures/alien_explode.ogg', 100, extrarange = 4)
+ playsound(get_turf(play_from), 'sound/mobs/non-humanoids/alien/alien_explode.ogg', 100, extrarange = 4)
eject_stomach(border_diamond_range_turfs(play_from, 6), 5, 1.5, 1, 8)
shake_camera(user, 1 SECONDS, 3)
if(owner)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 6d1ad16c8b1c8..f4b0fffb7a085 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -120,7 +120,7 @@
var/atom/xeno_loc = get_turf(owner)
var/mob/living/carbon/alien/larva/new_xeno = new(xeno_loc)
new_xeno.key = ghost.key
- SEND_SOUND(new_xeno, sound('sound/voice/hiss5.ogg',0,0,0,100)) //To get the player's attention
+ SEND_SOUND(new_xeno, sound('sound/mobs/non-humanoids/hiss/hiss5.ogg',0,0,0,100)) //To get the player's attention
new_xeno.add_traits(list(TRAIT_HANDS_BLOCKED, TRAIT_IMMOBILIZED, TRAIT_NO_TRANSFORM), type) //so we don't move during the bursting animation
new_xeno.SetInvisibility(INVISIBILITY_MAXIMUM, id=type)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 0edeeb7fb70f3..47ceecd8a009d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -99,7 +99,7 @@
log_combat(src, victim, "crashed into")
if(oof_noise)
- playsound(src,'sound/weapons/punch1.ogg',50,TRUE)
+ playsound(src,'sound/items/weapons/punch1.ogg',50,TRUE)
//Throwing stuff
/mob/living/carbon/proc/toggle_throw_mode()
@@ -182,13 +182,13 @@
if(thrown_item.throw_verb)
verb_text = thrown_item.throw_verb
do_attack_animation(target, no_effect = 1)
- var/sound/throwsound = 'sound/weapons/throw.ogg'
+ var/sound/throwsound = 'sound/items/weapons/throw.ogg'
var/power_throw_text = "."
if(power_throw > 0) //If we have anything that boosts our throw power like hulk, we use the rougher heavier variant.
- throwsound = 'sound/weapons/throwhard.ogg'
+ throwsound = 'sound/items/weapons/throwhard.ogg'
power_throw_text = " really hard!"
if(power_throw < 0) //if we have anything that weakens our throw power like dward, we use a slower variant.
- throwsound = 'sound/weapons/throwsoft.ogg'
+ throwsound = 'sound/items/weapons/throwsoft.ogg'
power_throw_text = " flimsily."
frequency_number = frequency_number + (rand(-5,5)/100); //Adds a bit of randomness in the frequency to not sound exactly the same.
//The volume of the sound takes the minimum between the distance thrown or the max range an item, but no more than 50. Short throws are quieter. A fast throwing speed also makes the noise sharper.
@@ -202,7 +202,12 @@
if(istype(potential_spine))
extra_throw_range += potential_spine.added_throw_range
- newtonian_move(get_dir(target, src))
+ var/drift_force = max(0.5 NEWTONS, 1 NEWTONS + power_throw)
+ if (isitem(thrown_thing))
+ var/obj/item/thrown_item = thrown_thing
+ drift_force *= WEIGHT_TO_NEWTONS(thrown_item.w_class)
+
+ newtonian_move(get_angle(target, src), drift_force = drift_force)
thrown_thing.safe_throw_at(target, thrown_thing.throw_range + extra_throw_range, max(1,thrown_thing.throw_speed + power_throw), src, null, null, null, move_force)
/mob/living/carbon/proc/canBeHandcuffed()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index dd1d59ebc1043..d9274ee83df33 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -398,7 +398,7 @@
if(body_position != STANDING_UP && !resting && !buckled && !HAS_TRAIT(src, TRAIT_FLOORED))
get_up(TRUE)
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
// Shake animation
if (incapacitated)
@@ -505,7 +505,7 @@
ears.set_organ_damage(ears.maxHealth)
else if(ears.damage >= 5)
to_chat(src, span_warning("Your ears start to ring!"))
- SEND_SOUND(src, sound('sound/weapons/flash_ring.ogg',0,1,0,250))
+ SEND_SOUND(src, sound('sound/items/weapons/flash_ring.ogg',0,1,0,250))
return effect_amount //how soundbanged we are
@@ -651,7 +651,7 @@
var/bleed_rate = grasped_part.get_modified_bleed_rate()
var/bleeding_text = (bleed_rate ? ", trying to stop the bleeding" : "")
user.visible_message(span_danger("[user] grasps at [user.p_their()] [grasped_part.name][bleeding_text]."), span_notice("You grab hold of your [grasped_part.name] tightly."), vision_distance=COMBAT_MESSAGE_RANGE)
- playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(get_turf(src), 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
return TRUE
/// Randomise a body part and organ of this mob
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index 6995defb6dafe..74a5091565c74 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -29,17 +29,17 @@
if(!user.get_bodypart(BODY_ZONE_L_ARM) || !user.get_bodypart(BODY_ZONE_R_ARM))
return
return pick(
- 'sound/misc/clap1.ogg',
- 'sound/misc/clap2.ogg',
- 'sound/misc/clap3.ogg',
- 'sound/misc/clap4.ogg',
+ 'sound/mobs/humanoids/human/clap/clap1.ogg',
+ 'sound/mobs/humanoids/human/clap/clap2.ogg',
+ 'sound/mobs/humanoids/human/clap/clap3.ogg',
+ 'sound/mobs/humanoids/human/clap/clap4.ogg',
)
/datum/emote/living/carbon/crack
key = "crack"
key_third_person = "cracks"
message = "cracks their knuckles."
- sound = 'sound/misc/knuckles.ogg'
+ sound = 'sound/mobs/humanoids/human/knuckle_crack/knuckles.ogg'
hands_use_check = TRUE
cooldown = 6 SECONDS
@@ -180,7 +180,7 @@
/datum/emote/living/carbon/snap/get_sound(mob/living/user)
if(ishuman(user))
- return pick('sound/misc/fingersnap1.ogg', 'sound/misc/fingersnap2.ogg')
+ return pick('sound/mobs/humanoids/human/snap/fingersnap1.ogg', 'sound/mobs/humanoids/human/snap/fingersnap2.ogg')
return null
/datum/emote/living/carbon/shoesteal
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 501f3c782f29b..325abea10d66d 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -63,7 +63,7 @@
message = "screams!"
message_mime = "acts out a scream!"
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE
- only_forced_audio = TRUE
+ audio_cooldown = 5 SECONDS
vary = TRUE
/datum/emote/living/carbon/human/scream/can_run_emote(mob/user, status_check = TRUE , intentional, params)
@@ -105,7 +105,7 @@
message = "salutes."
message_param = "salutes to %t."
hands_use_check = TRUE
- sound = 'sound/misc/salute.ogg'
+ sound = 'sound/mobs/humanoids/human/salute/salute.ogg'
/datum/emote/living/carbon/human/shrug
key = "shrug"
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index bea66f71112d3..c26b22b0711da 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -163,12 +163,12 @@
if(LAZYACCESS(modifiers, RIGHT_CLICK)) //Always drop item in hand, if no item, get stunned instead.
var/obj/item/I = get_active_held_item()
if(I && !(I.item_flags & ABSTRACT) && dropItemToGround(I))
- playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slash.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] disarmed [src]!"), \
span_userdanger("[user] disarmed you!"), span_hear("You hear aggressive shuffling!"), null, user)
to_chat(user, span_danger("You disarm [src]!"))
else if(!user.client || prob(5)) // only natural monkeys get to stun reliably, (they only do it occasionaly)
- playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/pierce.ogg', 25, TRUE, -1)
if (src.IsKnockdown() && !src.IsParalyzed())
Paralyze(40)
log_combat(user, src, "pinned")
@@ -209,25 +209,25 @@
if(LAZYACCESS(modifiers, RIGHT_CLICK)) //Always drop item in hand if there is one. If there's no item, shove the target. If the target is incapacitated, slam them into the ground to stun them.
var/obj/item/I = get_active_held_item()
if(I && dropItemToGround(I))
- playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slash.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] disarms [src]!"), \
span_userdanger("[user] disarms you!"), span_hear("You hear aggressive shuffling!"), null, user)
to_chat(user, span_danger("You disarm [src]!"))
else if(!HAS_TRAIT(src, TRAIT_INCAPACITATED))
- playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/pierce.ogg', 25, TRUE, -1)
var/shovetarget = get_edge_target_turf(user, get_dir(user, get_step_away(src, user)))
adjustStaminaLoss(35)
throw_at(shovetarget, 4, 2, user, force = MOVE_FORCE_OVERPOWERING)
log_combat(user, src, "shoved")
- visible_message("[user] tackles [src] down!", \
- "[user] shoves you with great force!", "You hear aggressive shuffling followed by a loud thud!", null, user)
- to_chat(user, "You shove [src] with great force!")
+ visible_message(span_danger("[user] tackles [src] down!"), \
+ span_userdanger("[user] shoves you with great force!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), null, user)
+ to_chat(user, span_danger("You shove [src] with great force!"))
else
Paralyze(5 SECONDS)
- playsound(loc, 'sound/weapons/punch3.ogg', 25, TRUE, -1)
- visible_message("[user] slams [src] into the floor!", \
- "[user] slams you into the ground!", "You hear something slam loudly onto the floor!", null, user)
- to_chat(user, "You slam [src] into the floor beneath you!")
+ playsound(loc, 'sound/items/weapons/punch3.ogg', 25, TRUE, -1)
+ visible_message(span_danger("[user] slams [src] into the floor!"), \
+ span_userdanger("[user] slams you into the ground!"), span_hear("You hear something slam loudly onto the floor!"), null, user)
+ to_chat(user, span_danger("You slam [src] into the floor beneath you!"))
log_combat(user, src, "slammed into the ground")
return TRUE
@@ -236,7 +236,7 @@
w_uniform.add_fingerprint(user)
var/damage = prob(90) ? rand(user.melee_damage_lower, user.melee_damage_upper) : 0
if(!damage)
- playsound(loc, 'sound/weapons/slashmiss.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slashmiss.ogg', 50, TRUE, -1)
visible_message(span_danger("[user] lunges at [src]!"), \
span_userdanger("[user] lunges at you!"), span_hear("You hear a swoosh!"), null, user)
to_chat(user, span_danger("You lunge at [src]!"))
@@ -244,7 +244,7 @@
var/obj/item/bodypart/affecting = get_bodypart(get_random_valid_zone(user.zone_selected))
var/armor_block = run_armor_check(affecting, MELEE,"","",10)
- playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slice.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] slashes at [src]!"), \
span_userdanger("[user] slashes at you!"), span_hear("You hear a sickening sound of a slice!"), null, user)
to_chat(user, span_danger("You slash at [src]!"))
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index fda6d7a9142ea..52e59e098c1b7 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -30,7 +30,3 @@
if((. && !moving_diagonally) || (!. && moving_diagonally == SECOND_DIAG_STEP))
SEND_SIGNAL(shoes, COMSIG_SHOES_STEP_ACTION)
-/mob/living/carbon/human/Process_Spacemove(movement_dir = 0, continuous_move = FALSE)
- if(movement_type & FLYING || HAS_TRAIT(src, TRAIT_FREE_FLOAT_MOVEMENT))
- return TRUE
- return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 0f27f0e47e69b..a7e88cf7b526c 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -176,9 +176,9 @@
/datum/species/ethereal/get_scream_sound(mob/living/carbon/human/ethereal)
return pick(
- 'sound/voice/ethereal/ethereal_scream_1.ogg',
- 'sound/voice/ethereal/ethereal_scream_2.ogg',
- 'sound/voice/ethereal/ethereal_scream_3.ogg',
+ 'sound/mobs/humanoids/ethereal/ethereal_scream_1.ogg',
+ 'sound/mobs/humanoids/ethereal/ethereal_scream_2.ogg',
+ 'sound/mobs/humanoids/ethereal/ethereal_scream_3.ogg',
)
/datum/species/ethereal/get_physical_attributes()
@@ -267,9 +267,9 @@
/datum/species/ethereal/lustrous/get_scream_sound(mob/living/carbon/human/ethereal)
return pick(
- 'sound/voice/ethereal/lustrous_scream_1.ogg',
- 'sound/voice/ethereal/lustrous_scream_2.ogg',
- 'sound/voice/ethereal/lustrous_scream_3.ogg',
+ 'sound/mobs/humanoids/ethereal/lustrous_scream_1.ogg',
+ 'sound/mobs/humanoids/ethereal/lustrous_scream_2.ogg',
+ 'sound/mobs/humanoids/ethereal/lustrous_scream_3.ogg',
)
/datum/species/ethereal/lustrous/on_species_gain(mob/living/carbon/new_lustrous, datum/species/old_species, pref_load)
diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm
index 8a040425a9747..4c89f9d4b66c1 100644
--- a/code/modules/mob/living/carbon/human/species_types/felinid.dm
+++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm
@@ -53,60 +53,60 @@
/datum/species/human/felinid/get_laugh_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
- return 'sound/voice/human/womanlaugh.ogg'
+ return 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg'
return pick(
- 'sound/voice/human/manlaugh1.ogg',
- 'sound/voice/human/manlaugh2.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh2.ogg',
)
/datum/species/human/felinid/get_cough_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cough1.ogg',
- 'sound/voice/human/female_cough2.ogg',
- 'sound/voice/human/female_cough3.ogg',
- 'sound/voice/human/female_cough4.ogg',
- 'sound/voice/human/female_cough5.ogg',
- 'sound/voice/human/female_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough6.ogg',
)
return pick(
- 'sound/voice/human/male_cough1.ogg',
- 'sound/voice/human/male_cough2.ogg',
- 'sound/voice/human/male_cough3.ogg',
- 'sound/voice/human/male_cough4.ogg',
- 'sound/voice/human/male_cough5.ogg',
- 'sound/voice/human/male_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough6.ogg',
)
/datum/species/human/felinid/get_cry_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cry1.ogg',
- 'sound/voice/human/female_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry2.ogg',
)
return pick(
- 'sound/voice/human/male_cry1.ogg',
- 'sound/voice/human/male_cry2.ogg',
- 'sound/voice/human/male_cry3.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry3.ogg',
)
/datum/species/human/felinid/get_sneeze_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
- return 'sound/voice/human/female_sneeze1.ogg'
- return 'sound/voice/human/male_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg'
/datum/species/human/felinid/get_sigh_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
- return 'sound/voice/human/female_sigh.ogg'
- return 'sound/voice/human/male_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/female_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/male_sigh.ogg'
/datum/species/human/felinid/get_sniff_sound(mob/living/carbon/human/felinid)
if(felinid.physique == FEMALE)
- return 'sound/voice/human/female_sniff.ogg'
- return 'sound/voice/human/male_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/female_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/male_sniff.ogg'
diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm
index be6357f6b4f21..cbb16fea3dccc 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -15,78 +15,78 @@
/datum/species/human/get_scream_sound(mob/living/carbon/human/human)
if(human.physique == MALE)
if(prob(1))
- return 'sound/voice/human/wilhelm_scream.ogg'
+ return 'sound/mobs/humanoids/human/scream/wilhelm_scream.ogg'
return pick(
- 'sound/voice/human/malescream_1.ogg',
- 'sound/voice/human/malescream_2.ogg',
- 'sound/voice/human/malescream_3.ogg',
- 'sound/voice/human/malescream_4.ogg',
- 'sound/voice/human/malescream_5.ogg',
- 'sound/voice/human/malescream_6.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_6.ogg',
)
return pick(
- 'sound/voice/human/femalescream_1.ogg',
- 'sound/voice/human/femalescream_2.ogg',
- 'sound/voice/human/femalescream_3.ogg',
- 'sound/voice/human/femalescream_4.ogg',
- 'sound/voice/human/femalescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_5.ogg',
)
/datum/species/human/get_cough_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cough1.ogg',
- 'sound/voice/human/female_cough2.ogg',
- 'sound/voice/human/female_cough3.ogg',
- 'sound/voice/human/female_cough4.ogg',
- 'sound/voice/human/female_cough5.ogg',
- 'sound/voice/human/female_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough6.ogg',
)
return pick(
- 'sound/voice/human/male_cough1.ogg',
- 'sound/voice/human/male_cough2.ogg',
- 'sound/voice/human/male_cough3.ogg',
- 'sound/voice/human/male_cough4.ogg',
- 'sound/voice/human/male_cough5.ogg',
- 'sound/voice/human/male_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough6.ogg',
)
/datum/species/human/get_cry_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cry1.ogg',
- 'sound/voice/human/female_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry2.ogg',
)
return pick(
- 'sound/voice/human/male_cry1.ogg',
- 'sound/voice/human/male_cry2.ogg',
- 'sound/voice/human/male_cry3.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry3.ogg',
)
/datum/species/human/get_sneeze_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
- return 'sound/voice/human/female_sneeze1.ogg'
- return 'sound/voice/human/male_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg'
/datum/species/human/get_laugh_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
- return 'sound/voice/human/womanlaugh.ogg'
+ return 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg'
return pick(
- 'sound/voice/human/manlaugh1.ogg',
- 'sound/voice/human/manlaugh2.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg',
+ 'sound/mobs/humanoids/human/laugh/manlaugh2.ogg',
)
/datum/species/human/get_sigh_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
- return 'sound/voice/human/female_sigh.ogg'
- return 'sound/voice/human/male_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/female_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/male_sigh.ogg'
/datum/species/human/get_sniff_sound(mob/living/carbon/human/human)
if(human.physique == FEMALE)
- return 'sound/voice/human/female_sniff.ogg'
- return 'sound/voice/human/male_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/female_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/male_sniff.ogg'
/datum/species/human/get_species_description()
return "Humans are the dominant species in the known galaxy. \
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index bcf0e1c0de2de..b7c97b6451bd1 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -462,16 +462,13 @@
if(!can_swap(dupe)) //sanity check
return
if(M.current.stat == CONSCIOUS)
- M.current.visible_message("[M.current] \
- stops moving and starts staring vacantly into space.",
+ M.current.visible_message(span_notice("[M.current] stops moving and starts staring vacantly into space."),
span_notice("You stop moving this body..."))
else
to_chat(M.current, span_notice("You abandon this body..."))
M.current.transfer_quirk_datums(dupe)
M.transfer_to(dupe)
- dupe.visible_message("[dupe] blinks and looks \
- around.",
- span_notice("...and move this one instead."))
+ dupe.visible_message(span_notice("[dupe] blinks and looks around."), span_notice("...and move this one instead."))
///////////////////////////////////LUMINESCENTS//////////////////////////////////////////
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 65945467f5eb1..45faab6713931 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -25,7 +25,7 @@
skinned_type = /obj/item/stack/sheet/animalhide/lizard
exotic_bloodtype = "L"
inert_mutation = /datum/mutation/human/firebreath
- death_sound = 'sound/voice/lizard/deathsound.ogg'
+ death_sound = 'sound/mobs/humanoids/lizard/deathsound.ogg'
species_language_holder = /datum/language_holder/lizard
digitigrade_customization = DIGITIGRADE_OPTIONAL
@@ -53,61 +53,61 @@
/datum/species/lizard/get_scream_sound(mob/living/carbon/human/lizard)
return pick(
- 'sound/voice/lizard/lizard_scream_1.ogg',
- 'sound/voice/lizard/lizard_scream_2.ogg',
- 'sound/voice/lizard/lizard_scream_3.ogg',
+ 'sound/mobs/humanoids/lizard/lizard_scream_1.ogg',
+ 'sound/mobs/humanoids/lizard/lizard_scream_2.ogg',
+ 'sound/mobs/humanoids/lizard/lizard_scream_3.ogg',
)
/datum/species/lizard/get_cough_sound(mob/living/carbon/human/lizard)
if(lizard.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cough1.ogg',
- 'sound/voice/human/female_cough2.ogg',
- 'sound/voice/human/female_cough3.ogg',
- 'sound/voice/human/female_cough4.ogg',
- 'sound/voice/human/female_cough5.ogg',
- 'sound/voice/human/female_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough6.ogg',
)
return pick(
- 'sound/voice/human/male_cough1.ogg',
- 'sound/voice/human/male_cough2.ogg',
- 'sound/voice/human/male_cough3.ogg',
- 'sound/voice/human/male_cough4.ogg',
- 'sound/voice/human/male_cough5.ogg',
- 'sound/voice/human/male_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough6.ogg',
)
/datum/species/lizard/get_cry_sound(mob/living/carbon/human/lizard)
if(lizard.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cry1.ogg',
- 'sound/voice/human/female_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry2.ogg',
)
return pick(
- 'sound/voice/human/male_cry1.ogg',
- 'sound/voice/human/male_cry2.ogg',
- 'sound/voice/human/male_cry3.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry3.ogg',
)
/datum/species/lizard/get_sneeze_sound(mob/living/carbon/human/lizard)
if(lizard.physique == FEMALE)
- return 'sound/voice/human/female_sneeze1.ogg'
- return 'sound/voice/human/male_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg'
/datum/species/lizard/get_laugh_sound(mob/living/carbon/human/lizard)
- return 'sound/voice/lizard/lizard_laugh1.ogg'
+ return 'sound/mobs/humanoids/lizard/lizard_laugh1.ogg'
/datum/species/lizard/get_sigh_sound(mob/living/carbon/human/lizard)
if(lizard.physique == FEMALE)
- return 'sound/voice/human/female_sigh.ogg'
- return 'sound/voice/human/male_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/female_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/male_sigh.ogg'
/datum/species/lizard/get_sniff_sound(mob/living/carbon/human/lizard)
if(lizard.physique == FEMALE)
- return 'sound/voice/human/female_sniff.ogg'
- return 'sound/voice/human/male_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/female_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/male_sniff.ogg'
/datum/species/lizard/get_physical_attributes()
return "Lizardpeople can withstand slightly higher temperatures than most species, but they are very vulnerable to the cold \
diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
index f9a17b310fae9..1ae9c959c3c6e 100644
--- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
@@ -11,7 +11,7 @@
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
species_cookie = /obj/item/food/muffin/moffin
species_language_holder = /datum/language_holder/moth
- death_sound = 'sound/voice/moth/moth_death.ogg'
+ death_sound = 'sound/mobs/humanoids/moth/moth_death.ogg'
payday_modifier = 1.0
family_heirlooms = list(/obj/item/flashlight/lantern/heirloom_moth)
@@ -44,59 +44,59 @@
return features
/datum/species/moth/get_scream_sound(mob/living/carbon/human/moth)
- return 'sound/voice/moth/scream_moth.ogg'
+ return 'sound/mobs/humanoids/moth/scream_moth.ogg'
/datum/species/moth/get_cough_sound(mob/living/carbon/human/moth)
if(moth.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cough1.ogg',
- 'sound/voice/human/female_cough2.ogg',
- 'sound/voice/human/female_cough3.ogg',
- 'sound/voice/human/female_cough4.ogg',
- 'sound/voice/human/female_cough5.ogg',
- 'sound/voice/human/female_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough6.ogg',
)
return pick(
- 'sound/voice/human/male_cough1.ogg',
- 'sound/voice/human/male_cough2.ogg',
- 'sound/voice/human/male_cough3.ogg',
- 'sound/voice/human/male_cough4.ogg',
- 'sound/voice/human/male_cough5.ogg',
- 'sound/voice/human/male_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough6.ogg',
)
/datum/species/moth/get_cry_sound(mob/living/carbon/human/moth)
if(moth.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cry1.ogg',
- 'sound/voice/human/female_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry2.ogg',
)
return pick(
- 'sound/voice/human/male_cry1.ogg',
- 'sound/voice/human/male_cry2.ogg',
- 'sound/voice/human/male_cry3.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry3.ogg',
)
/datum/species/moth/get_sneeze_sound(mob/living/carbon/human/moth)
if(moth.physique == FEMALE)
- return 'sound/voice/human/female_sneeze1.ogg'
- return 'sound/voice/human/male_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg'
/datum/species/moth/get_laugh_sound(mob/living/carbon/human/moth)
- return 'sound/voice/moth/moth_laugh1.ogg'
+ return 'sound/mobs/humanoids/moth/moth_laugh1.ogg'
/datum/species/moth/get_sigh_sound(mob/living/carbon/human/moth)
if(moth.physique == FEMALE)
- return 'sound/voice/human/female_sigh.ogg'
- return 'sound/voice/human/male_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/female_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/male_sigh.ogg'
/datum/species/moth/get_sniff_sound(mob/living/carbon/human/moth)
if(moth.physique == FEMALE)
- return 'sound/voice/human/female_sniff.ogg'
- return 'sound/voice/human/male_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/female_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/male_sniff.ogg'
/datum/species/moth/get_physical_attributes()
return "Moths have large and fluffy wings, which help them navigate the station if gravity is offline by pushing the air around them. \
diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
index 8b347a22cca96..bcbdf0276df6f 100644
--- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
@@ -132,9 +132,9 @@
/datum/species/plasmaman/get_scream_sound(mob/living/carbon/human)
return pick(
- 'sound/voice/plasmaman/plasmeme_scream_1.ogg',
- 'sound/voice/plasmaman/plasmeme_scream_2.ogg',
- 'sound/voice/plasmaman/plasmeme_scream_3.ogg',
+ 'sound/mobs/humanoids/plasmaman/plasmeme_scream_1.ogg',
+ 'sound/mobs/humanoids/plasmaman/plasmeme_scream_2.ogg',
+ 'sound/mobs/humanoids/plasmaman/plasmeme_scream_3.ogg',
)
/datum/species/plasmaman/get_physical_attributes()
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index c763127a4be7b..da7cf8f6be336 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -48,11 +48,11 @@
/// Spooky growls we sometimes play while alive
var/static/list/spooks = list(
- 'sound/hallucinations/growl1.ogg',
- 'sound/hallucinations/growl2.ogg',
- 'sound/hallucinations/growl3.ogg',
- 'sound/hallucinations/veryfar_noise.ogg',
- 'sound/hallucinations/wail.ogg',
+ 'sound/effects/hallucinations/growl1.ogg',
+ 'sound/effects/hallucinations/growl2.ogg',
+ 'sound/effects/hallucinations/growl3.ogg',
+ 'sound/effects/hallucinations/veryfar_noise.ogg',
+ 'sound/effects/hallucinations/wail.ogg',
)
/// Zombies do not stabilize body temperature they are the walking dead and are cold blooded
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index a626cb47cc6d8..c71359c58f12b 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -193,8 +193,8 @@
var/mob/living/carbon/human/human_user = user
if(human_user.physique == FEMALE)
- return pick('sound/voice/human/gasp_female1.ogg', 'sound/voice/human/gasp_female2.ogg', 'sound/voice/human/gasp_female3.ogg')
- return pick('sound/voice/human/gasp_male1.ogg', 'sound/voice/human/gasp_male2.ogg')
+ return pick('sound/mobs/humanoids/human/gasp/gasp_female1.ogg', 'sound/mobs/humanoids/human/gasp/gasp_female2.ogg', 'sound/mobs/humanoids/human/gasp/gasp_female3.ogg')
+ return pick('sound/mobs/humanoids/human/gasp/gasp_male1.ogg', 'sound/mobs/humanoids/human/gasp/gasp_male2.ogg')
/datum/emote/living/gasp/shock
key = "gaspshock"
@@ -743,4 +743,4 @@
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE
/datum/emote/living/carbon/whistle/get_sound(mob/living/user)
- return 'sound/voice/human/whistle1.ogg'
+ return 'sound/mobs/humanoids/human/whistle/whistle1.ogg'
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index fc494befd9053..e3f6b7d1ae981 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -406,7 +406,7 @@
SEND_SIGNAL(src, COMSIG_LIVING_START_PULL, AM, state, force)
if(!supress_message)
- var/sound_to_play = 'sound/weapons/thudswoosh.ogg'
+ var/sound_to_play = 'sound/items/weapons/thudswoosh.ogg'
if(ishuman(src))
var/mob/living/carbon/human/H = src
if(H.dna.species.grab_sound)
@@ -525,7 +525,7 @@
if(!..())
return FALSE
log_message("points at [pointing_at]", LOG_EMOTE)
- visible_message("[span_name("[src]")] points at [pointing_at].", span_notice("You point at [pointing_at]."))
+ visible_message(span_infoplain("[span_name("[src]")] points at [pointing_at]."), span_notice("You point at [pointing_at]."))
/mob/living/verb/succumb(whispered as num|null)
set hidden = TRUE
@@ -1789,13 +1789,13 @@ GLOBAL_LIST_EMPTY(fire_appearances)
// used by secbot and monkeys Crossed
/mob/living/proc/knockOver(mob/living/carbon/C)
if(C.key) //save us from monkey hordes
- C.visible_message("[pick( \
+ C.visible_message(span_warning(pick( \
"[C] dives out of [src]'s way!", \
"[C] stumbles over [src]!", \
"[C] jumps out of [src]'s path!", \
"[C] trips over [src] and falls!", \
"[C] topples over [src]!", \
- "[C] leaps out of [src]'s way!")]")
+ "[C] leaps out of [src]'s way!")))
C.Paralyze(40)
/mob/living/can_be_pulled()
@@ -2830,7 +2830,7 @@ GLOBAL_LIST_EMPTY(fire_appearances)
ADD_TRAIT(src, TRAIT_BLOCKING_PROJECTILES, BLOCKING_TRAIT)
var/icon/selected_overlay = pick(blocking_overlay)
add_overlay(selected_overlay)
- playsound(src, 'sound/weapons/fwoosh.ogg', 90, FALSE, frequency = 0.7)
+ playsound(src, 'sound/items/weapons/fwoosh.ogg', 90, FALSE, frequency = 0.7)
update_transform(1.25)
addtimer(CALLBACK(src, PROC_REF(end_block_effects), selected_overlay), 0.6 SECONDS)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 6f2fe9afd8970..1caa124fc67de 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -167,7 +167,7 @@
skipcatch = TRUE
blocked = TRUE
else
- playsound(loc, 'sound/weapons/genhit.ogg', 50, TRUE, -1) //Item sounds are handled in the item itself
+ playsound(loc, 'sound/items/weapons/genhit.ogg', 50, TRUE, -1) //Item sounds are handled in the item itself
if(!isvendor(AM) && !iscarbon(AM)) //Vendors have special interactions, while carbon mobs already generate visible messages!
visible_message(span_danger("[src] is hit by [AM]!"), \
span_userdanger("You're hit by [AM]!"))
@@ -276,7 +276,7 @@
if(user.grab_state >= user.max_grab)
return
user.changeNext_move(CLICK_CD_GRABBING)
- var/sound_to_play = 'sound/weapons/thudswoosh.ogg'
+ var/sound_to_play = 'sound/items/weapons/thudswoosh.ogg'
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.dna.species.grab_sound)
@@ -423,7 +423,7 @@
user.do_attack_animation(src, ATTACK_EFFECT_BITE)
if (HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER) || prob(75))
log_combat(user, src, "attacked")
- playsound(loc, 'sound/weapons/bite.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/bite.ogg', 50, TRUE, -1)
visible_message(span_danger("[user.name] bites [src]!"), \
span_userdanger("[user.name] bites you!"), span_hear("You hear a chomp!"), COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You bite [src]!"))
@@ -450,7 +450,7 @@
visible_message(span_danger("[L.name] bites [src]!"), \
span_userdanger("[L.name] bites you!"), span_hear("You hear a chomp!"), COMBAT_MESSAGE_RANGE, L)
to_chat(L, span_danger("You bite [src]!"))
- playsound(loc, 'sound/weapons/bite.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/bite.ogg', 50, TRUE, -1)
return TRUE
else
visible_message(span_danger("[L.name]'s bite misses [src]!"), \
@@ -547,7 +547,7 @@
GLOB.cult_narsie.souls += 1
if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE))
GLOB.cult_narsie.resolved = TRUE
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), CULT_VICTORY_MASS_CONVERSION), 12 SECONDS)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)), 27 SECONDS)
if(client)
@@ -658,10 +658,10 @@
var/shove_flags = target.get_shove_flags(src, weapon)
if(weapon)
do_attack_animation(target, used_item = weapon)
- playsound(target, 'sound/effects/glassbash.ogg', 50, TRUE, -1)
+ playsound(target, 'sound/effects/glass/glassbash.ogg', 50, TRUE, -1)
else
do_attack_animation(target, ATTACK_EFFECT_DISARM)
- playsound(target, 'sound/weapons/shove.ogg', 50, TRUE, -1)
+ playsound(target, 'sound/items/weapons/shove.ogg', 50, TRUE, -1)
if (ishuman(target) && isnull(weapon))
var/mob/living/carbon/human/human_target = target
human_target.w_uniform?.add_fingerprint(src)
diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm
index 6116f0f702e5d..22a4c7e2eb2eb 100644
--- a/code/modules/mob/living/living_say.dm
+++ b/code/modules/mob/living/living_say.dm
@@ -288,21 +288,43 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list(
if(raw_message != untranslated_raw_message)
understood = FALSE
+ var/speaker_is_signing = HAS_TRAIT(speaker, TRAIT_SIGN_LANG)
+
+
// if someone is whispering we make an extra type of message that is obfuscated for people out of range
// Less than or equal to 0 means normal hearing. More than 0 and less than or equal to EAVESDROP_EXTRA_RANGE means
// partial hearing. More than EAVESDROP_EXTRA_RANGE means no hearing. Exception for GOOD_HEARING trait
var/dist = get_dist(speaker, src) - message_range
if(dist > 0 && dist <= EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING) && !isobserver(src)) // ghosts can hear all messages clearly
raw_message = stars(raw_message)
- if (message_range != INFINITY && dist > EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING) && !isobserver(src))
- return FALSE // Too far away and don't have good hearing, you can't hear anything
+ if(message_range != INFINITY && dist > EAVESDROP_EXTRA_RANGE && !HAS_TRAIT(src, TRAIT_GOOD_HEARING) && !isobserver(src))
+ // Too far away and don't have good hearing, you can't hear anything
+ if(is_blind() || HAS_TRAIT(speaker, TRAIT_INVISIBLE_MAN)) // Can't see them speak either
+ return FALSE
+ if(!isturf(speaker.loc)) // If they're inside of something, probably can't see them speak
+ return FALSE
+
+ // But we can still see them speak
+ if(speaker_is_signing)
+ deaf_message = "[span_name("[speaker]")] [speaker.get_default_say_verb()] something, but the motions are too subtle to make out from afar."
+ else if(can_hear()) // If we can't hear we want to continue to the default deaf message
+ var/mob/living/living_speaker = speaker
+ if(istype(living_speaker) && living_speaker.is_mouth_covered()) // Can't see them speak if their mouth is covered
+ return FALSE
+ deaf_message = "[span_name("[speaker]")] [speaker.verb_whisper] something, but you are too far away to hear [speaker.p_them()]."
+
+ if(deaf_message)
+ deaf_type = MSG_VISUAL
+ message = deaf_message
+ return show_message(message, MSG_VISUAL, deaf_message, deaf_type, avoid_highlight)
+
// we need to send this signal before compose_message() is used since other signals need to modify
// the raw_message first. After the raw_message is passed through the various signals, it's ready to be formatted
// by compose_message() to be displayed in chat boxes for to_chat or runechat
SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, args)
- if(HAS_TRAIT(speaker, TRAIT_SIGN_LANG)) //Checks if speaker is using sign language
+ if(speaker_is_signing) //Checks if speaker is using sign language
deaf_message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mods, TRUE)
if(speaker != src)
@@ -362,6 +384,9 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list(
if(!(listening_movable in in_view) && !HAS_TRAIT(listening_movable, TRAIT_XRAY_HEARING))
listening.Remove(listening_movable)
+ if(imaginary_group)
+ listening |= imaginary_group
+
if(client) //client is so that ghosts don't have to listen to mice
for(var/mob/player_mob as anything in GLOB.player_list)
if(QDELETED(player_mob)) //Some times nulls and deleteds stay in this list. This is a workaround to prevent ic chat breaking for everyone when they do.
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index fc488471861d3..3550b16829cdb 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -1030,11 +1030,11 @@
if(!istype(apc) || QDELETED(apc) || apc.machine_stat & BROKEN)
to_chat(src, span_danger("Hack aborted. The designated APC no longer exists on the power network."))
- playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, TRUE, ignore_walls = FALSE)
+ playsound(get_turf(src), 'sound/machines/buzz/buzz-two.ogg', 50, TRUE, ignore_walls = FALSE)
return
if(apc.aidisabled)
to_chat(src, span_danger("Hack aborted. [apc] is no longer responding to our systems."))
- playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 50, TRUE, ignore_walls = FALSE)
+ playsound(get_turf(src), 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE, ignore_walls = FALSE)
return
malf_picker.processing_time += 10
diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm
index d69bb2e1cc3b8..79c0d31029022 100644
--- a/code/modules/mob/living/silicon/ai/vox_sounds.dm
+++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm
@@ -8,1296 +8,1296 @@
// For vim
// :%s/\(\(.*\)\.ogg\)/"\2" = 'sound\/vox_fem\/\1',/g
GLOBAL_LIST_INIT(vox_sounds, list(
- "," = 'sound/vox_fem/,.ogg',
- "." = 'sound/vox_fem/..ogg',
- "a" = 'sound/vox_fem/a.ogg',
- "abduction" = 'sound/vox_fem/abduction.ogg',
- "abortions" = 'sound/vox_fem/abortions.ogg',
- "above" = 'sound/vox_fem/above.ogg',
- "absorb" = 'sound/vox_fem/absorb.ogg',
- "absorbed" = 'sound/vox_fem/absorbed.ogg',
- "absorbing" = 'sound/vox_fem/absorbing.ogg',
- "abstain" = 'sound/vox_fem/abstain.ogg',
- "accelerating" = 'sound/vox_fem/accelerating.ogg',
- "accelerator" = 'sound/vox_fem/accelerator.ogg',
- "accepted" = 'sound/vox_fem/accepted.ogg',
- "access" = 'sound/vox_fem/access.ogg',
- "acknowledge" = 'sound/vox_fem/acknowledge.ogg',
- "acknowledged" = 'sound/vox_fem/acknowledged.ogg',
- "acquired" = 'sound/vox_fem/acquired.ogg',
- "acquisition" = 'sound/vox_fem/acquisition.ogg',
- "across" = 'sound/vox_fem/across.ogg',
- "activate" = 'sound/vox_fem/activate.ogg',
- "activated" = 'sound/vox_fem/activated.ogg',
- "activating" = 'sound/vox_fem/activating.ogg',
- "activation" = 'sound/vox_fem/activation.ogg',
- "active" = 'sound/vox_fem/active.ogg',
- "activity" = 'sound/vox_fem/activity.ogg',
- "adios" = 'sound/vox_fem/adios.ogg',
- "administration" = 'sound/vox_fem/administration.ogg',
- "advanced" = 'sound/vox_fem/advanced.ogg',
- "advised" = 'sound/vox_fem/advised.ogg',
- "affect" = 'sound/vox_fem/affect.ogg',
- "affected" = 'sound/vox_fem/affected.ogg',
- "affecting" = 'sound/vox_fem/affecting.ogg',
- "aft" = 'sound/vox_fem/aft.ogg',
- "after" = 'sound/vox_fem/after.ogg',
- "agent" = 'sound/vox_fem/agent.ogg',
- "ai" = 'sound/vox_fem/ai.ogg',
- "air" = 'sound/vox_fem/air.ogg',
- "airlock" = 'sound/vox_fem/airlock.ogg',
- "alarm" = 'sound/vox_fem/alarm.ogg',
- "alarmed" = 'sound/vox_fem/alarmed.ogg',
- "alarming" = 'sound/vox_fem/alarming.ogg',
- "alcohol" = 'sound/vox_fem/alcohol.ogg',
- "alert" = 'sound/vox_fem/alert.ogg',
- "alerted" = 'sound/vox_fem/alerted.ogg',
- "alerting" = 'sound/vox_fem/alerting.ogg',
- "alien" = 'sound/vox_fem/alien.ogg',
- "align" = 'sound/vox_fem/align.ogg',
- "aligned" = 'sound/vox_fem/aligned.ogg',
- "all" = 'sound/vox_fem/all.ogg',
- "allow" = 'sound/vox_fem/allow.ogg',
- "alongside" = 'sound/vox_fem/alongside.ogg',
- "alpha" = 'sound/vox_fem/alpha.ogg',
- "also" = 'sound/vox_fem/also.ogg',
- "am" = 'sound/vox_fem/am.ogg',
- "amigo" = 'sound/vox_fem/amigo.ogg',
- "ammunition" = 'sound/vox_fem/ammunition.ogg',
- "amount" = 'sound/vox_fem/amount.ogg',
- "an" = 'sound/vox_fem/an.ogg',
- "and" = 'sound/vox_fem/and.ogg',
- "animal" = 'sound/vox_fem/animal.ogg',
- "annihilate" = 'sound/vox_fem/annihilate.ogg',
- "annihilated" = 'sound/vox_fem/annihilated.ogg',
- "annihilating" = 'sound/vox_fem/annihilating.ogg',
- "annihilation" = 'sound/vox_fem/annihilation.ogg',
- "announcement" = 'sound/vox_fem/announcement.ogg',
- "anomalous" = 'sound/vox_fem/anomalous.ogg',
- "answer" = 'sound/vox_fem/answer.ogg',
- "antenna" = 'sound/vox_fem/antenna.ogg',
- "anti-noblium" = 'sound/vox_fem/anti-noblium.ogg',
- "any" = 'sound/vox_fem/any.ogg',
- "apc" = 'sound/vox_fem/apc.ogg',
- "apprehend" = 'sound/vox_fem/apprehend.ogg',
- "approach" = 'sound/vox_fem/approach.ogg',
- "arc" = 'sound/vox_fem/arc.ogg',
- "arcs" = 'sound/vox_fem/arcs.ogg',
- "are" = 'sound/vox_fem/are.ogg',
- "area" = 'sound/vox_fem/area.ogg',
- "arm" = 'sound/vox_fem/arm.ogg',
- "armed" = 'sound/vox_fem/armed.ogg',
- "armor" = 'sound/vox_fem/armor.ogg',
- "armory" = 'sound/vox_fem/armory.ogg',
- "around" = 'sound/vox_fem/around.ogg',
- "array" = 'sound/vox_fem/array.ogg',
- "arrest" = 'sound/vox_fem/arrest.ogg',
- "artillery" = 'sound/vox_fem/artillery.ogg',
- "asimov" = 'sound/vox_fem/asimov.ogg',
- "ask" = 'sound/vox_fem/ask.ogg',
- "ass" = 'sound/vox_fem/ass.ogg',
- "asshole" = 'sound/vox_fem/asshole.ogg',
- "assholes" = 'sound/vox_fem/assholes.ogg',
- "assistance" = 'sound/vox_fem/assistance.ogg',
- "assistant" = 'sound/vox_fem/assistant.ogg',
- "at" = 'sound/vox_fem/at.ogg',
- "ate" = 'sound/vox_fem/ate.ogg',
- "atmosphere" = 'sound/vox_fem/atmosphere.ogg',
- "atmospheric" = 'sound/vox_fem/atmospheric.ogg',
- "atmospherics" = 'sound/vox_fem/atmospherics.ogg',
- "atomic" = 'sound/vox_fem/atomic.ogg',
- "attention" = 'sound/vox_fem/attention.ogg',
- "authentication" = 'sound/vox_fem/authentication.ogg',
- "authorize" = 'sound/vox_fem/authorize.ogg',
- "authorized" = 'sound/vox_fem/authorized.ogg',
- "automatic" = 'sound/vox_fem/automatic.ogg',
- "away" = 'sound/vox_fem/away.ogg',
- "awful" = 'sound/vox_fem/awful.ogg',
- "b" = 'sound/vox_fem/b.ogg',
- "back" = 'sound/vox_fem/back.ogg',
- "backman" = 'sound/vox_fem/backman.ogg',
- "bad" = 'sound/vox_fem/bad.ogg',
- "bag" = 'sound/vox_fem/bag.ogg',
- "bailey" = 'sound/vox_fem/bailey.ogg',
- "bar" = 'sound/vox_fem/bar.ogg',
- "barracks" = 'sound/vox_fem/barracks.ogg',
- "bartender" = 'sound/vox_fem/bartender.ogg',
- "base" = 'sound/vox_fem/base.ogg',
- "bay" = 'sound/vox_fem/bay.ogg',
- "be" = 'sound/vox_fem/be.ogg',
- "beaker" = 'sound/vox_fem/beaker.ogg',
- "beam" = 'sound/vox_fem/beam.ogg',
- "been" = 'sound/vox_fem/been.ogg',
- "beep" = 'sound/vox_fem/beep.ogg',
- "before" = 'sound/vox_fem/before.ogg',
- "began" = 'sound/vox_fem/began.ogg',
- "begin" = 'sound/vox_fem/begin.ogg',
- "begins" = 'sound/vox_fem/begins.ogg',
- "below" = 'sound/vox_fem/below.ogg',
- "beside" = 'sound/vox_fem/beside.ogg',
- "beware" = 'sound/vox_fem/beware.ogg',
- "beyond" = 'sound/vox_fem/beyond.ogg',
- "big" = 'sound/vox_fem/big.ogg',
- "billion" = 'sound/vox_fem/billion.ogg',
- "biohazard" = 'sound/vox_fem/biohazard.ogg',
- "biological" = 'sound/vox_fem/biological.ogg',
- "birdwell" = 'sound/vox_fem/birdwell.ogg',
- "bitch" = 'sound/vox_fem/bitch.ogg',
- "bitches" = 'sound/vox_fem/bitches.ogg',
- "bitcoin" = 'sound/vox_fem/bitcoin.ogg',
- "bitrun" = 'sound/vox_fem/bitrun.ogg',
- "bitrunner" = 'sound/vox_fem/bitrunner.ogg',
- "bitrunning" = 'sound/vox_fem/bitrunning.ogg',
- "black" = 'sound/vox_fem/black.ogg',
- "blast" = 'sound/vox_fem/blast.ogg',
- "bleed" = 'sound/vox_fem/bleed.ogg',
- "blob" = 'sound/vox_fem/blob.ogg',
- "blocked" = 'sound/vox_fem/blocked.ogg',
- "blood" = 'sound/vox_fem/blood.ogg',
- "bloop" = 'sound/vox_fem/bloop.ogg',
- "blue" = 'sound/vox_fem/blue.ogg',
- "bluespace" = 'sound/vox_fem/bluespace.ogg',
- "bomb" = 'sound/vox_fem/bomb.ogg',
- "bone" = 'sound/vox_fem/bone.ogg',
- "botanist" = 'sound/vox_fem/botanist.ogg',
- "botany" = 'sound/vox_fem/botany.ogg',
- "bottle" = 'sound/vox_fem/bottle.ogg',
- "bottom" = 'sound/vox_fem/bottom.ogg',
- "bravo" = 'sound/vox_fem/bravo.ogg',
- "breach" = 'sound/vox_fem/breach.ogg',
- "breached" = 'sound/vox_fem/breached.ogg',
- "break" = 'sound/vox_fem/break.ogg',
- "bridge" = 'sound/vox_fem/bridge.ogg',
- "brig" = 'sound/vox_fem/brig.ogg',
- "broke" = 'sound/vox_fem/broke.ogg',
- "broken" = 'sound/vox_fem/broken.ogg',
- "bump" = 'sound/vox_fem/bump.ogg',
- "bumped" = 'sound/vox_fem/bumped.ogg',
- "bumps" = 'sound/vox_fem/bumps.ogg',
- "bust" = 'sound/vox_fem/bust.ogg',
- "but" = 'sound/vox_fem/but.ogg',
- "button" = 'sound/vox_fem/button.ogg',
- "bypass" = 'sound/vox_fem/bypass.ogg',
- "c" = 'sound/vox_fem/c.ogg',
- "cable" = 'sound/vox_fem/cable.ogg',
- "call" = 'sound/vox_fem/call.ogg',
- "called" = 'sound/vox_fem/called.ogg',
- "can" = 'sound/vox_fem/can.ogg',
- "canal" = 'sound/vox_fem/canal.ogg',
- "canister" = 'sound/vox_fem/canister.ogg',
- "cap" = 'sound/vox_fem/cap.ogg',
- "captain" = 'sound/vox_fem/captain.ogg',
- "capture" = 'sound/vox_fem/capture.ogg',
- "carbon" = 'sound/vox_fem/carbon.ogg',
- "cargo" = 'sound/vox_fem/cargo.ogg',
- "cascade" = 'sound/vox_fem/cascade.ogg',
- "cat" = 'sound/vox_fem/cat.ogg',
- "cause" = 'sound/vox_fem/cause.ogg',
- "caused" = 'sound/vox_fem/caused.ogg',
- "causes" = 'sound/vox_fem/causes.ogg',
- "causing" = 'sound/vox_fem/causing.ogg',
- "ce" = 'sound/vox_fem/ce.ogg',
- "cease" = 'sound/vox_fem/cease.ogg',
- "ceiling" = 'sound/vox_fem/ceiling.ogg',
- "celsius" = 'sound/vox_fem/celsius.ogg',
- "centcom" = 'sound/vox_fem/centcom.ogg',
- "center" = 'sound/vox_fem/center.ogg',
- "centi" = 'sound/vox_fem/centi.ogg',
- "central" = 'sound/vox_fem/central.ogg',
- "challenge" = 'sound/vox_fem/challenge.ogg',
- "chamber" = 'sound/vox_fem/chamber.ogg',
- "change" = 'sound/vox_fem/change.ogg',
- "changed" = 'sound/vox_fem/changed.ogg',
- "changeling" = 'sound/vox_fem/changeling.ogg',
- "chapel" = 'sound/vox_fem/chapel.ogg',
- "chaplain" = 'sound/vox_fem/chaplain.ogg',
- "charge" = 'sound/vox_fem/charge.ogg',
- "charlie" = 'sound/vox_fem/charlie.ogg',
- "check" = 'sound/vox_fem/check.ogg',
- "checkpoint" = 'sound/vox_fem/checkpoint.ogg',
- "chemical" = 'sound/vox_fem/chemical.ogg',
- "chemist" = 'sound/vox_fem/chemist.ogg',
- "chief" = 'sound/vox_fem/chief.ogg',
- "christ" = 'sound/vox_fem/christ.ogg',
- "christmas" = 'sound/vox_fem/christmas.ogg',
- "chuckle" = 'sound/vox_fem/chuckle.ogg',
- "circuit" = 'sound/vox_fem/circuit.ogg',
- "cleanup" = 'sound/vox_fem/cleanup.ogg',
- "clear" = 'sound/vox_fem/clear.ogg',
- "clearance" = 'sound/vox_fem/clearance.ogg',
- "clockwork" = 'sound/vox_fem/clockwork.ogg',
- "clog" = 'sound/vox_fem/clog.ogg',
- "close" = 'sound/vox_fem/close.ogg',
- "closed" = 'sound/vox_fem/closed.ogg',
- "closing" = 'sound/vox_fem/closing.ogg',
- "clothing" = 'sound/vox_fem/clothing.ogg',
- "clown" = 'sound/vox_fem/clown.ogg',
- "clowning" = 'sound/vox_fem/clowning.ogg',
- "cmo" = 'sound/vox_fem/cmo.ogg',
- "code" = 'sound/vox_fem/code.ogg',
- "coded" = 'sound/vox_fem/coded.ogg',
- "coil" = 'sound/vox_fem/coil.ogg',
- "coils" = 'sound/vox_fem/coils.ogg',
- "cold" = 'sound/vox_fem/cold.ogg',
- "collider" = 'sound/vox_fem/collider.ogg',
- "combat" = 'sound/vox_fem/combat.ogg',
- "combatant" = 'sound/vox_fem/combatant.ogg',
- "come" = 'sound/vox_fem/come.ogg',
- "command" = 'sound/vox_fem/command.ogg',
- "communication" = 'sound/vox_fem/communication.ogg',
- "complete" = 'sound/vox_fem/complete.ogg',
- "completed" = 'sound/vox_fem/completed.ogg',
- "completion" = 'sound/vox_fem/completion.ogg',
- "complex" = 'sound/vox_fem/complex.ogg',
- "comply" = 'sound/vox_fem/comply.ogg',
- "computer" = 'sound/vox_fem/computer.ogg',
- "condition" = 'sound/vox_fem/condition.ogg',
- "conditions" = 'sound/vox_fem/conditions.ogg',
- "condom" = 'sound/vox_fem/condom.ogg',
- "configure" = 'sound/vox_fem/configure.ogg',
- "configured" = 'sound/vox_fem/configured.ogg',
- "configuring" = 'sound/vox_fem/configuring.ogg',
- "confirmed" = 'sound/vox_fem/confirmed.ogg',
- "connor" = 'sound/vox_fem/connor.ogg',
- "console" = 'sound/vox_fem/console.ogg',
- "console2" = 'sound/vox_fem/console2.ogg',
- "construct" = 'sound/vox_fem/construct.ogg',
- "container" = 'sound/vox_fem/container.ogg',
- "containment" = 'sound/vox_fem/containment.ogg',
- "contamination" = 'sound/vox_fem/contamination.ogg',
- "contraband" = 'sound/vox_fem/contraband.ogg',
- "control" = 'sound/vox_fem/control.ogg',
- "cook" = 'sound/vox_fem/cook.ogg',
- "cool" = 'sound/vox_fem/cool.ogg',
- "coolant" = 'sound/vox_fem/coolant.ogg',
- "cooling" = 'sound/vox_fem/cooling.ogg',
- "coomer" = 'sound/vox_fem/coomer.ogg',
- "core" = 'sound/vox_fem/core.ogg',
- "corgi" = 'sound/vox_fem/corgi.ogg',
- "corporation" = 'sound/vox_fem/corporation.ogg',
- "correct" = 'sound/vox_fem/correct.ogg',
- "corridor" = 'sound/vox_fem/corridor.ogg',
- "corridors" = 'sound/vox_fem/corridors.ogg',
- "could" = 'sound/vox_fem/could.ogg',
- "couldnt" = 'sound/vox_fem/couldnt.ogg',
- "countdown" = 'sound/vox_fem/countdown.ogg',
- "coward" = 'sound/vox_fem/coward.ogg',
- "cowards" = 'sound/vox_fem/cowards.ogg',
- "crate" = 'sound/vox_fem/crate.ogg',
- "create" = 'sound/vox_fem/create.ogg',
- "created" = 'sound/vox_fem/created.ogg',
- "creating" = 'sound/vox_fem/creating.ogg',
- "creature" = 'sound/vox_fem/creature.ogg',
- "crew" = 'sound/vox_fem/crew.ogg',
- "critical" = 'sound/vox_fem/critical.ogg',
- "cross" = 'sound/vox_fem/cross.ogg',
- "cryogenic" = 'sound/vox_fem/cryogenic.ogg',
- "crystal" = 'sound/vox_fem/crystal.ogg',
- "cult" = 'sound/vox_fem/cult.ogg',
- "cultist" = 'sound/vox_fem/cultist.ogg',
- "cunt" = 'sound/vox_fem/cunt.ogg',
- "curator" = 'sound/vox_fem/curator.ogg',
- "cyborg" = 'sound/vox_fem/cyborg.ogg',
- "cyborgs" = 'sound/vox_fem/cyborgs.ogg',
- "d" = 'sound/vox_fem/d.ogg',
- "damage" = 'sound/vox_fem/damage.ogg',
- "damaged" = 'sound/vox_fem/damaged.ogg',
- "danger" = 'sound/vox_fem/danger.ogg',
- "dangerous" = 'sound/vox_fem/dangerous.ogg',
- "day" = 'sound/vox_fem/day.ogg',
- "deactivated" = 'sound/vox_fem/deactivated.ogg',
- "dead" = 'sound/vox_fem/dead.ogg',
- "death" = 'sound/vox_fem/death.ogg',
- "decompression" = 'sound/vox_fem/decompression.ogg',
- "decontamination" = 'sound/vox_fem/decontamination.ogg',
- "deeoo" = 'sound/vox_fem/deeoo.ogg',
- "defense" = 'sound/vox_fem/defense.ogg',
- "degrees" = 'sound/vox_fem/degrees.ogg',
- "delaminating" = 'sound/vox_fem/delaminating.ogg',
- "delamination" = 'sound/vox_fem/delamination.ogg',
- "delta" = 'sound/vox_fem/delta.ogg',
- "demon" = 'sound/vox_fem/demon.ogg',
- "denied" = 'sound/vox_fem/denied.ogg',
- "deny" = 'sound/vox_fem/deny.ogg',
- "departures" = 'sound/vox_fem/departures.ogg',
- "deploy" = 'sound/vox_fem/deploy.ogg',
- "deployed" = 'sound/vox_fem/deployed.ogg',
- "desire" = 'sound/vox_fem/desire.ogg',
- "desist" = 'sound/vox_fem/desist.ogg',
- "destroy" = 'sound/vox_fem/destroy.ogg',
- "destroyed" = 'sound/vox_fem/destroyed.ogg',
- "destruction" = 'sound/vox_fem/destruction.ogg',
- "detain" = 'sound/vox_fem/detain.ogg',
- "detect" = 'sound/vox_fem/detect.ogg',
- "detected" = 'sound/vox_fem/detected.ogg',
- "detecting" = 'sound/vox_fem/detecting.ogg',
- "detective" = 'sound/vox_fem/detective.ogg',
- "detonation" = 'sound/vox_fem/detonation.ogg',
- "device" = 'sound/vox_fem/device.ogg',
- "devil" = 'sound/vox_fem/devil.ogg',
- "did" = 'sound/vox_fem/did.ogg',
- "die" = 'sound/vox_fem/die.ogg',
- "died" = 'sound/vox_fem/died.ogg',
- "different" = 'sound/vox_fem/different.ogg',
- "dimensional" = 'sound/vox_fem/dimensional.ogg',
- "dioxide" = 'sound/vox_fem/dioxide.ogg',
- "direct" = 'sound/vox_fem/direct.ogg',
- "director" = 'sound/vox_fem/director.ogg',
- "dirt" = 'sound/vox_fem/dirt.ogg',
- "disabled" = 'sound/vox_fem/disabled.ogg',
- "disease" = 'sound/vox_fem/disease.ogg',
- "disengaged" = 'sound/vox_fem/disengaged.ogg',
- "dish" = 'sound/vox_fem/dish.ogg',
- "disk" = 'sound/vox_fem/disk.ogg',
- "disposal" = 'sound/vox_fem/disposal.ogg',
- "distance" = 'sound/vox_fem/distance.ogg',
- "distortion" = 'sound/vox_fem/distortion.ogg',
- "do" = 'sound/vox_fem/do.ogg',
- "doctor" = 'sound/vox_fem/doctor.ogg',
- "dog" = 'sound/vox_fem/dog.ogg',
- "dont" = 'sound/vox_fem/dont.ogg',
- "doomsday" = 'sound/vox_fem/doomsday.ogg',
- "doop" = 'sound/vox_fem/doop.ogg',
- "door" = 'sound/vox_fem/door.ogg',
- "dormitory" = 'sound/vox_fem/dormitory.ogg',
- "dot" = 'sound/vox_fem/dot.ogg',
- "double" = 'sound/vox_fem/double.ogg',
- "down" = 'sound/vox_fem/down.ogg',
- "dress" = 'sound/vox_fem/dress.ogg',
- "dressed" = 'sound/vox_fem/dressed.ogg',
- "dressing" = 'sound/vox_fem/dressing.ogg',
- "drone" = 'sound/vox_fem/drone.ogg',
- "dual" = 'sound/vox_fem/dual.ogg',
- "duct" = 'sound/vox_fem/duct.ogg',
- "e" = 'sound/vox_fem/e.ogg',
- "easily" = 'sound/vox_fem/easily.ogg',
- "east" = 'sound/vox_fem/east.ogg',
- "eat" = 'sound/vox_fem/eat.ogg',
- "eaten" = 'sound/vox_fem/eaten.ogg',
- "echo" = 'sound/vox_fem/echo.ogg',
- "ed" = 'sound/vox_fem/ed.ogg',
- "education" = 'sound/vox_fem/education.ogg',
- "effect" = 'sound/vox_fem/effect.ogg',
- "effects" = 'sound/vox_fem/effects.ogg',
- "egress" = 'sound/vox_fem/egress.ogg',
- "eight" = 'sound/vox_fem/eight.ogg',
- "eighteen" = 'sound/vox_fem/eighteen.ogg',
- "eighty" = 'sound/vox_fem/eighty.ogg',
- "electric" = 'sound/vox_fem/electric.ogg',
- "electrical" = 'sound/vox_fem/electrical.ogg',
- "electromagnetic" = 'sound/vox_fem/electromagnetic.ogg',
- "elevator" = 'sound/vox_fem/elevator.ogg',
- "eleven" = 'sound/vox_fem/eleven.ogg',
- "eliminate" = 'sound/vox_fem/eliminate.ogg',
- "emergency" = 'sound/vox_fem/emergency.ogg',
- "emitted" = 'sound/vox_fem/emitted.ogg',
- "emitter" = 'sound/vox_fem/emitter.ogg',
- "emitting" = 'sound/vox_fem/emitting.ogg',
- "enabled" = 'sound/vox_fem/enabled.ogg',
- "end" = 'sound/vox_fem/end.ogg',
- "ends" = 'sound/vox_fem/ends.ogg',
- "energy" = 'sound/vox_fem/energy.ogg',
- "engage" = 'sound/vox_fem/engage.ogg',
- "engaged" = 'sound/vox_fem/engaged.ogg',
- "engine" = 'sound/vox_fem/engine.ogg',
- "engineer" = 'sound/vox_fem/engineer.ogg',
- "engineering" = 'sound/vox_fem/engineering.ogg',
- "enormous" = 'sound/vox_fem/enormous.ogg',
- "enough" = 'sound/vox_fem/enough.ogg',
- "enter" = 'sound/vox_fem/enter.ogg',
- "entity" = 'sound/vox_fem/entity.ogg',
- "entry" = 'sound/vox_fem/entry.ogg',
- "environment" = 'sound/vox_fem/environment.ogg',
- "epic" = 'sound/vox_fem/epic.ogg',
- "equipment" = 'sound/vox_fem/equipment.ogg',
- "error" = 'sound/vox_fem/error.ogg',
- "escape" = 'sound/vox_fem/escape.ogg',
- "ethereal" = 'sound/vox_fem/ethereal.ogg',
- "eva" = 'sound/vox_fem/eva.ogg',
- "evacuate" = 'sound/vox_fem/evacuate.ogg',
- "even" = 'sound/vox_fem/even.ogg',
- "ever" = 'sound/vox_fem/ever.ogg',
- "every" = 'sound/vox_fem/every.ogg',
- "everybody" = 'sound/vox_fem/everybody.ogg',
- "everyone" = 'sound/vox_fem/everyone.ogg',
- "exchange" = 'sound/vox_fem/exchange.ogg',
- "execute" = 'sound/vox_fem/execute.ogg',
- "exit" = 'sound/vox_fem/exit.ogg',
- "expect" = 'sound/vox_fem/expect.ogg',
- "experiment" = 'sound/vox_fem/experiment.ogg',
- "experimental" = 'sound/vox_fem/experimental.ogg',
- "explode" = 'sound/vox_fem/explode.ogg',
- "exploded" = 'sound/vox_fem/exploded.ogg',
- "exploding" = 'sound/vox_fem/exploding.ogg',
- "explosion" = 'sound/vox_fem/explosion.ogg',
- "explosive" = 'sound/vox_fem/explosive.ogg',
- "exposure" = 'sound/vox_fem/exposure.ogg',
- "exterminate" = 'sound/vox_fem/exterminate.ogg',
- "external" = 'sound/vox_fem/external.ogg',
- "extinguish" = 'sound/vox_fem/extinguish.ogg',
- "extinguisher" = 'sound/vox_fem/extinguisher.ogg',
- "extra" = 'sound/vox_fem/extra.ogg',
- "extreme" = 'sound/vox_fem/extreme.ogg',
- "f" = 'sound/vox_fem/f.ogg',
- "facility" = 'sound/vox_fem/facility.ogg',
- "factory" = 'sound/vox_fem/factory.ogg',
- "fahrenheit" = 'sound/vox_fem/fahrenheit.ogg',
- "failed" = 'sound/vox_fem/failed.ogg',
- "failure" = 'sound/vox_fem/failure.ogg',
- "false" = 'sound/vox_fem/false.ogg',
- "farthest" = 'sound/vox_fem/farthest.ogg',
- "fast" = 'sound/vox_fem/fast.ogg',
- "fauna" = 'sound/vox_fem/fauna.ogg',
- "feature" = 'sound/vox_fem/feature.ogg',
- "featured" = 'sound/vox_fem/featured.ogg',
- "features" = 'sound/vox_fem/features.ogg',
- "featuring" = 'sound/vox_fem/featuring.ogg',
- "feet" = 'sound/vox_fem/feet.ogg',
- "felinid" = 'sound/vox_fem/felinid.ogg',
- "few" = 'sound/vox_fem/few.ogg',
- "field" = 'sound/vox_fem/field.ogg',
- "fifteen" = 'sound/vox_fem/fifteen.ogg',
- "fifth" = 'sound/vox_fem/fifth.ogg',
- "fifty" = 'sound/vox_fem/fifty.ogg',
- "filter" = 'sound/vox_fem/filter.ogg',
- "filters" = 'sound/vox_fem/filters.ogg',
- "final" = 'sound/vox_fem/final.ogg',
- "fine" = 'sound/vox_fem/fine.ogg',
- "fire" = 'sound/vox_fem/fire.ogg',
- "first" = 'sound/vox_fem/first.ogg',
- "five" = 'sound/vox_fem/five.ogg',
- "fix" = 'sound/vox_fem/fix.ogg',
- "flooding" = 'sound/vox_fem/flooding.ogg',
- "floor" = 'sound/vox_fem/floor.ogg',
- "flyman" = 'sound/vox_fem/flyman.ogg',
- "fool" = 'sound/vox_fem/fool.ogg',
- "foolish" = 'sound/vox_fem/foolish.ogg',
- "for" = 'sound/vox_fem/for.ogg',
- "forbidden" = 'sound/vox_fem/forbidden.ogg',
- "force" = 'sound/vox_fem/force.ogg',
- "fore" = 'sound/vox_fem/fore.ogg',
- "form" = 'sound/vox_fem/form.ogg',
- "formed" = 'sound/vox_fem/formed.ogg',
- "forms" = 'sound/vox_fem/forms.ogg',
- "forty" = 'sound/vox_fem/forty.ogg',
- "found" = 'sound/vox_fem/found.ogg',
- "four" = 'sound/vox_fem/four.ogg',
- "fourteen" = 'sound/vox_fem/fourteen.ogg',
- "fourth" = 'sound/vox_fem/fourth.ogg',
- "fourty" = 'sound/vox_fem/fourty.ogg',
- "foxtrot" = 'sound/vox_fem/foxtrot.ogg',
- "free" = 'sound/vox_fem/free.ogg',
- "freeman" = 'sound/vox_fem/freeman.ogg',
- "freeze" = 'sound/vox_fem/freeze.ogg',
- "freezer" = 'sound/vox_fem/freezer.ogg',
- "freezing" = 'sound/vox_fem/freezing.ogg',
- "freon" = 'sound/vox_fem/freon.ogg',
- "from" = 'sound/vox_fem/from.ogg',
- "front" = 'sound/vox_fem/front.ogg',
- "froze" = 'sound/vox_fem/froze.ogg',
- "frozen" = 'sound/vox_fem/frozen.ogg',
- "fuck" = 'sound/vox_fem/fuck.ogg',
- "fucking" = 'sound/vox_fem/fucking.ogg',
- "fucks" = 'sound/vox_fem/fucks.ogg',
- "fuel" = 'sound/vox_fem/fuel.ogg',
- "g" = 'sound/vox_fem/g.ogg',
- "gas" = 'sound/vox_fem/gas.ogg',
- "gases" = 'sound/vox_fem/gases.ogg',
- "gave" = 'sound/vox_fem/gave.ogg',
- "gear" = 'sound/vox_fem/gear.ogg',
- "geared" = 'sound/vox_fem/geared.ogg',
- "gearing" = 'sound/vox_fem/gearing.ogg',
- "generate" = 'sound/vox_fem/generate.ogg',
- "generated" = 'sound/vox_fem/generated.ogg',
- "generating" = 'sound/vox_fem/generating.ogg',
- "generator" = 'sound/vox_fem/generator.ogg',
- "geneticist" = 'sound/vox_fem/geneticist.ogg',
- "get" = 'sound/vox_fem/get.ogg',
- "give" = 'sound/vox_fem/give.ogg',
- "given" = 'sound/vox_fem/given.ogg',
- "glory" = 'sound/vox_fem/glory.ogg',
- "go" = 'sound/vox_fem/go.ogg',
- "god" = 'sound/vox_fem/god.ogg',
- "going" = 'sound/vox_fem/going.ogg',
- "golem" = 'sound/vox_fem/golem.ogg',
- "good" = 'sound/vox_fem/good.ogg',
- "goodbye" = 'sound/vox_fem/goodbye.ogg',
- "gordon" = 'sound/vox_fem/gordon.ogg',
- "got" = 'sound/vox_fem/got.ogg',
- "government" = 'sound/vox_fem/government.ogg',
- "granted" = 'sound/vox_fem/granted.ogg',
- "gravity" = 'sound/vox_fem/gravity.ogg',
- "gray" = 'sound/vox_fem/gray.ogg',
- "great" = 'sound/vox_fem/great.ogg',
- "green" = 'sound/vox_fem/green.ogg',
- "grenade" = 'sound/vox_fem/grenade.ogg',
- "guard" = 'sound/vox_fem/guard.ogg',
- "gulf" = 'sound/vox_fem/gulf.ogg',
- "gun" = 'sound/vox_fem/gun.ogg',
- "guthrie" = 'sound/vox_fem/guthrie.ogg',
- "h" = 'sound/vox_fem/h.ogg',
- "hacker" = 'sound/vox_fem/hacker.ogg',
- "hackers" = 'sound/vox_fem/hackers.ogg',
- "had" = 'sound/vox_fem/had.ogg',
- "hall" = 'sound/vox_fem/hall.ogg',
- "hallway" = 'sound/vox_fem/hallway.ogg',
- "halon" = 'sound/vox_fem/halon.ogg',
- "handling" = 'sound/vox_fem/handling.ogg',
- "hangar" = 'sound/vox_fem/hangar.ogg',
- "hard" = 'sound/vox_fem/hard.ogg',
- "hardly" = 'sound/vox_fem/hardly.ogg',
- "harm" = 'sound/vox_fem/harm.ogg',
- "harmful" = 'sound/vox_fem/harmful.ogg',
- "harness" = 'sound/vox_fem/harness.ogg',
- "harnessed" = 'sound/vox_fem/harnessed.ogg',
- "harnessing" = 'sound/vox_fem/harnessing.ogg',
- "has" = 'sound/vox_fem/has.ogg',
- "have" = 'sound/vox_fem/have.ogg',
- "hazard" = 'sound/vox_fem/hazard.ogg',
- "he" = 'sound/vox_fem/he.ogg',
- "head" = 'sound/vox_fem/head.ogg',
- "heal" = 'sound/vox_fem/heal.ogg',
- "healed" = 'sound/vox_fem/healed.ogg',
- "healing" = 'sound/vox_fem/healing.ogg',
- "healium" = 'sound/vox_fem/healium.ogg',
- "health" = 'sound/vox_fem/health.ogg',
- "heat" = 'sound/vox_fem/heat.ogg',
- "heated" = 'sound/vox_fem/heated.ogg',
- "heating" = 'sound/vox_fem/heating.ogg',
- "helicopter" = 'sound/vox_fem/helicopter.ogg',
- "helium" = 'sound/vox_fem/helium.ogg',
- "hello" = 'sound/vox_fem/hello.ogg',
- "help" = 'sound/vox_fem/help.ogg',
- "her" = 'sound/vox_fem/her.ogg',
- "here" = 'sound/vox_fem/here.ogg',
- "heretic" = 'sound/vox_fem/heretic.ogg',
- "hide" = 'sound/vox_fem/hide.ogg',
- "high" = 'sound/vox_fem/high.ogg',
- "highest" = 'sound/vox_fem/highest.ogg',
- "him" = 'sound/vox_fem/him.ogg',
- "hit" = 'sound/vox_fem/hit.ogg',
- "hole" = 'sound/vox_fem/hole.ogg',
- "honk" = 'sound/vox_fem/honk.ogg',
- "hop" = 'sound/vox_fem/hop.ogg',
- "hos" = 'sound/vox_fem/hos.ogg',
- "hostile" = 'sound/vox_fem/hostile.ogg',
- "hot" = 'sound/vox_fem/hot.ogg',
- "hotel" = 'sound/vox_fem/hotel.ogg',
- "hour" = 'sound/vox_fem/hour.ogg',
- "hours" = 'sound/vox_fem/hours.ogg',
- "how" = 'sound/vox_fem/how.ogg',
- "human" = 'sound/vox_fem/human.ogg',
- "humanoid" = 'sound/vox_fem/humanoid.ogg',
- "humans" = 'sound/vox_fem/humans.ogg',
- "hundred" = 'sound/vox_fem/hundred.ogg',
- "hunger" = 'sound/vox_fem/hunger.ogg',
- "hurt" = 'sound/vox_fem/hurt.ogg',
- "hydro" = 'sound/vox_fem/hydro.ogg',
- "hydrogen" = 'sound/vox_fem/hydrogen.ogg',
- "hydroponics" = 'sound/vox_fem/hydroponics.ogg',
- "hyper-noblium" = 'sound/vox_fem/hyper-noblium.ogg',
- "i" = 'sound/vox_fem/i.ogg',
- "ian" = 'sound/vox_fem/ian.ogg',
- "idiot" = 'sound/vox_fem/idiot.ogg',
- "if" = 'sound/vox_fem/if.ogg',
- "if2" = 'sound/vox_fem/if2.ogg',
- "illegal" = 'sound/vox_fem/illegal.ogg',
- "immediate" = 'sound/vox_fem/immediate.ogg',
- "immediately" = 'sound/vox_fem/immediately.ogg',
- "immortal" = 'sound/vox_fem/immortal.ogg',
- "impossible" = 'sound/vox_fem/impossible.ogg',
- "in" = 'sound/vox_fem/in.ogg',
- "inches" = 'sound/vox_fem/inches.ogg',
- "india" = 'sound/vox_fem/india.ogg',
- "inert" = 'sound/vox_fem/inert.ogg',
- "ing" = 'sound/vox_fem/ing.ogg',
- "inoperative" = 'sound/vox_fem/inoperative.ogg',
- "inside" = 'sound/vox_fem/inside.ogg',
- "inspection" = 'sound/vox_fem/inspection.ogg',
- "inspector" = 'sound/vox_fem/inspector.ogg',
- "interchange" = 'sound/vox_fem/interchange.ogg',
- "internal" = 'sound/vox_fem/internal.ogg',
- "internals" = 'sound/vox_fem/internals.ogg',
- "intruder" = 'sound/vox_fem/intruder.ogg',
- "invalid" = 'sound/vox_fem/invalid.ogg',
- "invalidate" = 'sound/vox_fem/invalidate.ogg',
- "invasion" = 'sound/vox_fem/invasion.ogg',
- "irradiate" = 'sound/vox_fem/irradiate.ogg',
- "is" = 'sound/vox_fem/is.ogg',
- "it" = 'sound/vox_fem/it.ogg',
- "its" = 'sound/vox_fem/its.ogg',
- "j" = 'sound/vox_fem/j.ogg',
- "janitor" = 'sound/vox_fem/janitor.ogg',
- "jesus" = 'sound/vox_fem/jesus.ogg',
- "job" = 'sound/vox_fem/job.ogg',
- "jobs" = 'sound/vox_fem/jobs.ogg',
- "johnson" = 'sound/vox_fem/johnson.ogg',
- "jolly" = 'sound/vox_fem/jolly.ogg',
- "juliet" = 'sound/vox_fem/juliet.ogg',
- "k" = 'sound/vox_fem/k.ogg',
- "kelvin" = 'sound/vox_fem/kelvin.ogg',
- "key" = 'sound/vox_fem/key.ogg',
- "kidnapped" = 'sound/vox_fem/kidnapped.ogg',
- "kidnapping" = 'sound/vox_fem/kidnapping.ogg',
- "kill" = 'sound/vox_fem/kill.ogg',
- "killed" = 'sound/vox_fem/killed.ogg',
- "killer" = 'sound/vox_fem/killer.ogg',
- "kilo" = 'sound/vox_fem/kilo.ogg',
- "kit" = 'sound/vox_fem/kit.ogg',
- "kitchen" = 'sound/vox_fem/kitchen.ogg',
- "l" = 'sound/vox_fem/l.ogg',
- "lab" = 'sound/vox_fem/lab.ogg',
- "lambda" = 'sound/vox_fem/lambda.ogg',
- "large" = 'sound/vox_fem/large.ogg',
- "laser" = 'sound/vox_fem/laser.ogg',
- "last" = 'sound/vox_fem/last.ogg',
- "launch" = 'sound/vox_fem/launch.ogg',
- "lavaland" = 'sound/vox_fem/lavaland.ogg',
- "law" = 'sound/vox_fem/law.ogg',
- "laws" = 'sound/vox_fem/laws.ogg',
- "lawyer" = 'sound/vox_fem/lawyer.ogg',
- "leak" = 'sound/vox_fem/leak.ogg',
- "leave" = 'sound/vox_fem/leave.ogg',
- "left" = 'sound/vox_fem/left.ogg',
- "legal" = 'sound/vox_fem/legal.ogg',
- "level" = 'sound/vox_fem/level.ogg',
- "lever" = 'sound/vox_fem/lever.ogg',
- "library" = 'sound/vox_fem/library.ogg',
- "lie" = 'sound/vox_fem/lie.ogg',
- "lieutenant" = 'sound/vox_fem/lieutenant.ogg',
- "life" = 'sound/vox_fem/life.ogg',
- "lifeform" = 'sound/vox_fem/lifeform.ogg',
- "light" = 'sound/vox_fem/light.ogg',
- "lightbulb" = 'sound/vox_fem/lightbulb.ogg',
- "lima" = 'sound/vox_fem/lima.ogg',
- "limit" = 'sound/vox_fem/limit.ogg',
- "limited" = 'sound/vox_fem/limited.ogg',
- "liquid" = 'sound/vox_fem/liquid.ogg',
- "list" = 'sound/vox_fem/list.ogg',
- "live" = 'sound/vox_fem/live.ogg',
- "live2" = 'sound/vox_fem/live2.ogg',
- "lizard" = 'sound/vox_fem/lizard.ogg',
- "lizardperson" = 'sound/vox_fem/lizardperson.ogg',
- "loading" = 'sound/vox_fem/loading.ogg',
- "locate" = 'sound/vox_fem/locate.ogg',
- "located" = 'sound/vox_fem/located.ogg',
- "location" = 'sound/vox_fem/location.ogg',
- "lock" = 'sound/vox_fem/lock.ogg',
- "locked" = 'sound/vox_fem/locked.ogg',
- "locker" = 'sound/vox_fem/locker.ogg',
- "lockout" = 'sound/vox_fem/lockout.ogg',
- "long" = 'sound/vox_fem/long.ogg',
- "look" = 'sound/vox_fem/look.ogg',
- "loop" = 'sound/vox_fem/loop.ogg',
- "loose" = 'sound/vox_fem/loose.ogg',
- "lot" = 'sound/vox_fem/lot.ogg',
- "lower" = 'sound/vox_fem/lower.ogg',
- "lowest" = 'sound/vox_fem/lowest.ogg',
- "lusty" = 'sound/vox_fem/lusty.ogg',
- "m" = 'sound/vox_fem/m.ogg',
- "machine" = 'sound/vox_fem/machine.ogg',
- "made" = 'sound/vox_fem/made.ogg',
- "magic" = 'sound/vox_fem/magic.ogg',
- "magnetic" = 'sound/vox_fem/magnetic.ogg',
- "main" = 'sound/vox_fem/main.ogg',
- "maintainer" = 'sound/vox_fem/maintainer.ogg',
- "maintenance" = 'sound/vox_fem/maintenance.ogg',
- "major" = 'sound/vox_fem/major.ogg',
- "making" = 'sound/vox_fem/making.ogg',
- "malfunction" = 'sound/vox_fem/malfunction.ogg',
- "man" = 'sound/vox_fem/man.ogg',
- "many" = 'sound/vox_fem/many.ogg',
- "mass" = 'sound/vox_fem/mass.ogg',
- "materials" = 'sound/vox_fem/materials.ogg',
- "maximum" = 'sound/vox_fem/maximum.ogg',
- "may" = 'sound/vox_fem/may.ogg',
- "me" = 'sound/vox_fem/me.ogg',
- "mean" = 'sound/vox_fem/mean.ogg',
- "means" = 'sound/vox_fem/means.ogg',
- "meat" = 'sound/vox_fem/meat.ogg',
- "medbay" = 'sound/vox_fem/medbay.ogg',
- "medical" = 'sound/vox_fem/medical.ogg',
- "medium" = 'sound/vox_fem/medium.ogg',
- "megafauna" = 'sound/vox_fem/megafauna.ogg',
- "men" = 'sound/vox_fem/men.ogg',
- "mercy" = 'sound/vox_fem/mercy.ogg',
- "mesa" = 'sound/vox_fem/mesa.ogg',
- "meson" = 'sound/vox_fem/meson.ogg',
- "message" = 'sound/vox_fem/message.ogg',
- "meter" = 'sound/vox_fem/meter.ogg',
- "method" = 'sound/vox_fem/method.ogg',
- "miasma" = 'sound/vox_fem/miasma.ogg',
- "micro" = 'sound/vox_fem/micro.ogg',
- "middle" = 'sound/vox_fem/middle.ogg',
- "mike" = 'sound/vox_fem/mike.ogg',
- "miles" = 'sound/vox_fem/miles.ogg',
- "military" = 'sound/vox_fem/military.ogg',
- "milli" = 'sound/vox_fem/milli.ogg',
- "million" = 'sound/vox_fem/million.ogg',
- "mime" = 'sound/vox_fem/mime.ogg',
- "minefield" = 'sound/vox_fem/minefield.ogg',
- "miner" = 'sound/vox_fem/miner.ogg',
- "minimum" = 'sound/vox_fem/minimum.ogg',
- "minor" = 'sound/vox_fem/minor.ogg',
- "minute" = 'sound/vox_fem/minute.ogg',
- "minutes" = 'sound/vox_fem/minutes.ogg',
- "mister" = 'sound/vox_fem/mister.ogg',
- "mixture" = 'sound/vox_fem/mixture.ogg',
- "mode" = 'sound/vox_fem/mode.ogg',
- "modification" = 'sound/vox_fem/modification.ogg',
- "money" = 'sound/vox_fem/money.ogg',
- "monkey" = 'sound/vox_fem/monkey.ogg',
- "most" = 'sound/vox_fem/most.ogg',
- "moth" = 'sound/vox_fem/moth.ogg',
- "mothperson" = 'sound/vox_fem/mothperson.ogg',
- "motor" = 'sound/vox_fem/motor.ogg',
- "motorpool" = 'sound/vox_fem/motorpool.ogg',
- "move" = 'sound/vox_fem/move.ogg',
- "moved" = 'sound/vox_fem/moved.ogg',
- "moving" = 'sound/vox_fem/moving.ogg',
- "multitude" = 'sound/vox_fem/multitude.ogg',
- "murder" = 'sound/vox_fem/murder.ogg',
- "murderer" = 'sound/vox_fem/murderer.ogg',
- "must" = 'sound/vox_fem/must.ogg',
- "my" = 'sound/vox_fem/my.ogg',
- "mythic" = 'sound/vox_fem/mythic.ogg',
- "n" = 'sound/vox_fem/n.ogg',
- "nanotrasen" = 'sound/vox_fem/nanotrasen.ogg',
- "near" = 'sound/vox_fem/near.ogg',
- "nearest" = 'sound/vox_fem/nearest.ogg',
- "nearly" = 'sound/vox_fem/nearly.ogg',
- "need" = 'sound/vox_fem/need.ogg',
- "never" = 'sound/vox_fem/never.ogg',
- "nice" = 'sound/vox_fem/nice.ogg',
- "night" = 'sound/vox_fem/night.ogg',
- "nine" = 'sound/vox_fem/nine.ogg',
- "nineteen" = 'sound/vox_fem/nineteen.ogg',
- "ninety" = 'sound/vox_fem/ninety.ogg',
- "nitrogen" = 'sound/vox_fem/nitrogen.ogg',
- "no" = 'sound/vox_fem/no.ogg',
- "nominal" = 'sound/vox_fem/nominal.ogg',
- "none" = 'sound/vox_fem/none.ogg',
- "normal" = 'sound/vox_fem/normal.ogg',
- "normally" = 'sound/vox_fem/normally.ogg',
- "north" = 'sound/vox_fem/north.ogg',
- "northeast" = 'sound/vox_fem/northeast.ogg',
- "northwest" = 'sound/vox_fem/northwest.ogg',
- "not" = 'sound/vox_fem/not.ogg',
- "notably" = 'sound/vox_fem/notably.ogg',
- "november" = 'sound/vox_fem/november.ogg',
- "now" = 'sound/vox_fem/now.ogg',
- "nuclear" = 'sound/vox_fem/nuclear.ogg',
- "nuke" = 'sound/vox_fem/nuke.ogg',
- "number" = 'sound/vox_fem/number.ogg',
- "o" = 'sound/vox_fem/o.ogg',
- "object" = 'sound/vox_fem/object.ogg',
- "objective" = 'sound/vox_fem/objective.ogg',
- "obliterate" = 'sound/vox_fem/obliterate.ogg',
- "obliterated" = 'sound/vox_fem/obliterated.ogg',
- "obliterating" = 'sound/vox_fem/obliterating.ogg',
- "observation" = 'sound/vox_fem/observation.ogg',
- "obtain" = 'sound/vox_fem/obtain.ogg',
- "of" = 'sound/vox_fem/of.ogg',
- "off" = 'sound/vox_fem/off.ogg',
- "office" = 'sound/vox_fem/office.ogg',
- "officer" = 'sound/vox_fem/officer.ogg',
- "oh" = 'sound/vox_fem/oh.ogg',
- "ok" = 'sound/vox_fem/ok.ogg',
- "okay" = 'sound/vox_fem/okay.ogg',
- "on" = 'sound/vox_fem/on.ogg',
- "once" = 'sound/vox_fem/once.ogg',
- "one" = 'sound/vox_fem/one.ogg',
- "oof" = 'sound/vox_fem/oof.ogg',
- "open" = 'sound/vox_fem/open.ogg',
- "opened" = 'sound/vox_fem/opened.ogg',
- "opening" = 'sound/vox_fem/opening.ogg',
- "operating" = 'sound/vox_fem/operating.ogg',
- "operations" = 'sound/vox_fem/operations.ogg',
- "operative" = 'sound/vox_fem/operative.ogg',
- "option" = 'sound/vox_fem/option.ogg',
- "or" = 'sound/vox_fem/or.ogg',
- "order" = 'sound/vox_fem/order.ogg',
- "ordered" = 'sound/vox_fem/ordered.ogg',
- "ordering" = 'sound/vox_fem/ordering.ogg',
- "organic" = 'sound/vox_fem/organic.ogg',
- "oscar" = 'sound/vox_fem/oscar.ogg',
- "out" = 'sound/vox_fem/out.ogg',
- "output" = 'sound/vox_fem/output.ogg',
- "outside" = 'sound/vox_fem/outside.ogg',
- "over" = 'sound/vox_fem/over.ogg',
- "overload" = 'sound/vox_fem/overload.ogg',
- "override" = 'sound/vox_fem/override.ogg',
- "own" = 'sound/vox_fem/own.ogg',
- "oxygen" = 'sound/vox_fem/oxygen.ogg',
- "p" = 'sound/vox_fem/p.ogg',
- "pacification" = 'sound/vox_fem/pacification.ogg',
- "pacify" = 'sound/vox_fem/pacify.ogg',
- "pain" = 'sound/vox_fem/pain.ogg',
- "pal" = 'sound/vox_fem/pal.ogg',
- "panel" = 'sound/vox_fem/panel.ogg',
- "panting" = 'sound/vox_fem/panting.ogg',
- "pathetic" = 'sound/vox_fem/pathetic.ogg',
- "pda" = 'sound/vox_fem/pda.ogg',
- "percent" = 'sound/vox_fem/percent.ogg',
- "perfect" = 'sound/vox_fem/perfect.ogg',
- "perhaps" = 'sound/vox_fem/perhaps.ogg',
- "perimeter" = 'sound/vox_fem/perimeter.ogg',
- "permitted" = 'sound/vox_fem/permitted.ogg',
- "personal" = 'sound/vox_fem/personal.ogg',
- "personnel" = 'sound/vox_fem/personnel.ogg',
- "pipe" = 'sound/vox_fem/pipe.ogg',
- "piping" = 'sound/vox_fem/piping.ogg',
- "piss" = 'sound/vox_fem/piss.ogg',
- "plant" = 'sound/vox_fem/plant.ogg',
- "plasma" = 'sound/vox_fem/plasma.ogg',
- "plasmaman" = 'sound/vox_fem/plasmaman.ogg',
- "platform" = 'sound/vox_fem/platform.ogg',
- "plating" = 'sound/vox_fem/plating.ogg',
- "plausible" = 'sound/vox_fem/plausible.ogg',
- "please" = 'sound/vox_fem/please.ogg',
- "pluoxium" = 'sound/vox_fem/pluoxium.ogg',
- "point" = 'sound/vox_fem/point.ogg',
- "port" = 'sound/vox_fem/port.ogg',
- "portal" = 'sound/vox_fem/portal.ogg',
- "portion" = 'sound/vox_fem/portion.ogg',
- "possible" = 'sound/vox_fem/possible.ogg',
- "power" = 'sound/vox_fem/power.ogg',
- "powered" = 'sound/vox_fem/powered.ogg',
- "powering" = 'sound/vox_fem/powering.ogg',
- "premature" = 'sound/vox_fem/premature.ogg',
- "prematurely" = 'sound/vox_fem/prematurely.ogg',
- "presence" = 'sound/vox_fem/presence.ogg',
- "present" = 'sound/vox_fem/present.ogg',
- "presents" = 'sound/vox_fem/presents.ogg',
- "press" = 'sound/vox_fem/press.ogg',
- "pressure" = 'sound/vox_fem/pressure.ogg',
- "primary" = 'sound/vox_fem/primary.ogg',
- "priority" = 'sound/vox_fem/priority.ogg',
- "prison" = 'sound/vox_fem/prison.ogg',
- "prisoner" = 'sound/vox_fem/prisoner.ogg',
- "proceed" = 'sound/vox_fem/proceed.ogg',
- "processing" = 'sound/vox_fem/processing.ogg',
- "progress" = 'sound/vox_fem/progress.ogg',
- "projectile" = 'sound/vox_fem/projectile.ogg',
- "proper" = 'sound/vox_fem/proper.ogg',
- "propulsion" = 'sound/vox_fem/propulsion.ogg',
- "prosecute" = 'sound/vox_fem/prosecute.ogg',
- "protect" = 'sound/vox_fem/protect.ogg',
- "protected" = 'sound/vox_fem/protected.ogg',
- "protection" = 'sound/vox_fem/protection.ogg',
- "protective" = 'sound/vox_fem/protective.ogg',
- "proto-nitrate" = 'sound/vox_fem/proto-nitrate.ogg',
- "pull" = 'sound/vox_fem/pull.ogg',
- "pulled" = 'sound/vox_fem/pulled.ogg',
- "pulling" = 'sound/vox_fem/pulling.ogg',
- "pump" = 'sound/vox_fem/pump.ogg',
- "pumps" = 'sound/vox_fem/pumps.ogg',
- "push" = 'sound/vox_fem/push.ogg',
- "put" = 'sound/vox_fem/put.ogg',
- "q" = 'sound/vox_fem/q.ogg',
- "quantum" = 'sound/vox_fem/quantum.ogg',
- "quarantine" = 'sound/vox_fem/quarantine.ogg',
- "quartermaster" = 'sound/vox_fem/quartermaster.ogg',
- "quebec" = 'sound/vox_fem/quebec.ogg',
- "queen" = 'sound/vox_fem/queen.ogg',
- "question" = 'sound/vox_fem/question.ogg',
- "questionable" = 'sound/vox_fem/questionable.ogg',
- "questioning" = 'sound/vox_fem/questioning.ogg',
- "quick" = 'sound/vox_fem/quick.ogg',
- "quit" = 'sound/vox_fem/quit.ogg',
- "r" = 'sound/vox_fem/r.ogg',
- "radiation" = 'sound/vox_fem/radiation.ogg',
- "radioactive" = 'sound/vox_fem/radioactive.ogg',
- "rads" = 'sound/vox_fem/rads.ogg',
- "raider" = 'sound/vox_fem/raider.ogg',
- "raiders" = 'sound/vox_fem/raiders.ogg',
- "rapid" = 'sound/vox_fem/rapid.ogg',
- "reach" = 'sound/vox_fem/reach.ogg',
- "reached" = 'sound/vox_fem/reached.ogg',
- "reactor" = 'sound/vox_fem/reactor.ogg',
- "red" = 'sound/vox_fem/red.ogg',
- "relay" = 'sound/vox_fem/relay.ogg',
- "release" = 'sound/vox_fem/release.ogg',
- "released" = 'sound/vox_fem/released.ogg',
- "releasing" = 'sound/vox_fem/releasing.ogg',
- "remaining" = 'sound/vox_fem/remaining.ogg',
- "removal" = 'sound/vox_fem/removal.ogg',
- "remove" = 'sound/vox_fem/remove.ogg',
- "removed" = 'sound/vox_fem/removed.ogg',
- "removing" = 'sound/vox_fem/removing.ogg',
- "renegade" = 'sound/vox_fem/renegade.ogg',
- "repair" = 'sound/vox_fem/repair.ogg',
- "report" = 'sound/vox_fem/report.ogg',
- "reports" = 'sound/vox_fem/reports.ogg',
- "request" = 'sound/vox_fem/request.ogg',
- "requested" = 'sound/vox_fem/requested.ogg',
- "requesting" = 'sound/vox_fem/requesting.ogg',
- "require" = 'sound/vox_fem/require.ogg',
- "required" = 'sound/vox_fem/required.ogg',
- "research" = 'sound/vox_fem/research.ogg',
- "resevoir" = 'sound/vox_fem/resevoir.ogg',
- "resistance" = 'sound/vox_fem/resistance.ogg',
- "resistant" = 'sound/vox_fem/resistant.ogg',
- "resisting" = 'sound/vox_fem/resisting.ogg',
- "resonance" = 'sound/vox_fem/resonance.ogg',
- "rest" = 'sound/vox_fem/rest.ogg',
- "restoration" = 'sound/vox_fem/restoration.ogg',
- "revolution" = 'sound/vox_fem/revolution.ogg',
- "revolutionary" = 'sound/vox_fem/revolutionary.ogg',
- "right" = 'sound/vox_fem/right.ogg',
- "riot" = 'sound/vox_fem/riot.ogg',
- "roboticist" = 'sound/vox_fem/roboticist.ogg',
- "rocket" = 'sound/vox_fem/rocket.ogg',
- "roger" = 'sound/vox_fem/roger.ogg',
- "rogue" = 'sound/vox_fem/rogue.ogg',
- "romeo" = 'sound/vox_fem/romeo.ogg',
- "room" = 'sound/vox_fem/room.ogg',
- "round" = 'sound/vox_fem/round.ogg',
- "run" = 'sound/vox_fem/run.ogg',
- "rune" = 'sound/vox_fem/rune.ogg',
- "runtime" = 'sound/vox_fem/runtime.ogg',
- "s" = 'sound/vox_fem/s.ogg',
- "sabotage" = 'sound/vox_fem/sabotage.ogg',
- "sabotaged" = 'sound/vox_fem/sabotaged.ogg',
- "sabotaging" = 'sound/vox_fem/sabotaging.ogg',
- "safe" = 'sound/vox_fem/safe.ogg',
- "safety" = 'sound/vox_fem/safety.ogg',
- "sairhorn" = 'sound/vox_fem/sairhorn.ogg',
- "same" = 'sound/vox_fem/same.ogg',
- "sarah" = 'sound/vox_fem/sarah.ogg',
- "sargeant" = 'sound/vox_fem/sargeant.ogg',
- "satellite" = 'sound/vox_fem/satellite.ogg',
- "save" = 'sound/vox_fem/save.ogg',
- "saw" = 'sound/vox_fem/saw.ogg',
- "scan" = 'sound/vox_fem/scan.ogg',
- "scanned" = 'sound/vox_fem/scanned.ogg',
- "scanner" = 'sound/vox_fem/scanner.ogg',
- "scanners" = 'sound/vox_fem/scanners.ogg',
- "scanning" = 'sound/vox_fem/scanning.ogg',
- "scensor" = 'sound/vox_fem/scensor.ogg',
- "science" = 'sound/vox_fem/science.ogg',
- "scientist" = 'sound/vox_fem/scientist.ogg',
- "scream" = 'sound/vox_fem/scream.ogg',
- "screen" = 'sound/vox_fem/screen.ogg',
- "screw" = 'sound/vox_fem/screw.ogg',
- "search" = 'sound/vox_fem/search.ogg',
- "second" = 'sound/vox_fem/second.ogg',
- "secondary" = 'sound/vox_fem/secondary.ogg',
- "seconds" = 'sound/vox_fem/seconds.ogg',
- "section" = 'sound/vox_fem/section.ogg',
- "sector" = 'sound/vox_fem/sector.ogg',
- "secure" = 'sound/vox_fem/secure.ogg',
- "secured" = 'sound/vox_fem/secured.ogg',
- "security" = 'sound/vox_fem/security.ogg',
- "seen" = 'sound/vox_fem/seen.ogg',
- "select" = 'sound/vox_fem/select.ogg',
- "selected" = 'sound/vox_fem/selected.ogg',
- "self" = 'sound/vox_fem/self.ogg',
- "sensors" = 'sound/vox_fem/sensors.ogg',
- "server" = 'sound/vox_fem/server.ogg',
- "service" = 'sound/vox_fem/service.ogg',
- "set" = 'sound/vox_fem/set.ogg',
- "seven" = 'sound/vox_fem/seven.ogg',
- "seventeen" = 'sound/vox_fem/seventeen.ogg',
- "seventy" = 'sound/vox_fem/seventy.ogg',
- "sever" = 'sound/vox_fem/sever.ogg',
- "severe" = 'sound/vox_fem/severe.ogg',
- "severed" = 'sound/vox_fem/severed.ogg',
- "severing" = 'sound/vox_fem/severing.ogg',
- "sewage" = 'sound/vox_fem/sewage.ogg',
- "sewer" = 'sound/vox_fem/sewer.ogg',
- "shaft" = 'sound/vox_fem/shaft.ogg',
- "shame" = 'sound/vox_fem/shame.ogg',
- "shameful" = 'sound/vox_fem/shameful.ogg',
- "shameless" = 'sound/vox_fem/shameless.ogg',
- "shard" = 'sound/vox_fem/shard.ogg',
- "she" = 'sound/vox_fem/she.ogg',
- "shield" = 'sound/vox_fem/shield.ogg',
- "shift" = 'sound/vox_fem/shift.ogg',
- "shifts" = 'sound/vox_fem/shifts.ogg',
- "shipment" = 'sound/vox_fem/shipment.ogg',
- "shirt" = 'sound/vox_fem/shirt.ogg',
- "shit" = 'sound/vox_fem/shit.ogg',
- "shitlord" = 'sound/vox_fem/shitlord.ogg',
- "shits" = 'sound/vox_fem/shits.ogg',
- "shitting" = 'sound/vox_fem/shitting.ogg',
- "shock" = 'sound/vox_fem/shock.ogg',
- "shonk" = 'sound/vox_fem/shonk.ogg',
- "shoot" = 'sound/vox_fem/shoot.ogg',
- "shower" = 'sound/vox_fem/shower.ogg',
- "shut" = 'sound/vox_fem/shut.ogg',
- "shuttle" = 'sound/vox_fem/shuttle.ogg',
- "sick" = 'sound/vox_fem/sick.ogg',
- "side" = 'sound/vox_fem/side.ogg',
- "sides" = 'sound/vox_fem/sides.ogg',
- "sierra" = 'sound/vox_fem/sierra.ogg',
- "sight" = 'sound/vox_fem/sight.ogg',
- "silicon" = 'sound/vox_fem/silicon.ogg',
- "silo" = 'sound/vox_fem/silo.ogg',
- "single" = 'sound/vox_fem/single.ogg',
- "singularity" = 'sound/vox_fem/singularity.ogg',
- "siphon" = 'sound/vox_fem/siphon.ogg',
- "siphoning" = 'sound/vox_fem/siphoning.ogg',
- "six" = 'sound/vox_fem/six.ogg',
- "sixteen" = 'sound/vox_fem/sixteen.ogg',
- "sixty" = 'sound/vox_fem/sixty.ogg',
- "skeleton" = 'sound/vox_fem/skeleton.ogg',
- "slaughter" = 'sound/vox_fem/slaughter.ogg',
- "slime" = 'sound/vox_fem/slime.ogg',
- "slip" = 'sound/vox_fem/slip.ogg',
- "slippery" = 'sound/vox_fem/slippery.ogg',
- "slow" = 'sound/vox_fem/slow.ogg',
- "sm" = 'sound/vox_fem/sm.ogg',
- "small" = 'sound/vox_fem/small.ogg',
- "sockmuncher" = 'sound/vox_fem/sockmuncher.ogg',
- "soft" = 'sound/vox_fem/soft.ogg',
- "solar" = 'sound/vox_fem/solar.ogg',
- "solars" = 'sound/vox_fem/solars.ogg',
- "soldier" = 'sound/vox_fem/soldier.ogg',
- "some" = 'sound/vox_fem/some.ogg',
- "someone" = 'sound/vox_fem/someone.ogg',
- "something" = 'sound/vox_fem/something.ogg',
- "son" = 'sound/vox_fem/son.ogg',
- "sorry" = 'sound/vox_fem/sorry.ogg',
- "source" = 'sound/vox_fem/source.ogg',
- "south" = 'sound/vox_fem/south.ogg',
- "southeast" = 'sound/vox_fem/southeast.ogg',
- "southwest" = 'sound/vox_fem/southwest.ogg',
- "space" = 'sound/vox_fem/space.ogg',
- "special" = 'sound/vox_fem/special.ogg',
- "spew" = 'sound/vox_fem/spew.ogg',
- "squad" = 'sound/vox_fem/squad.ogg',
- "square" = 'sound/vox_fem/square.ogg',
- "ss13" = 'sound/vox_fem/ss13.ogg',
- "stairway" = 'sound/vox_fem/stairway.ogg',
- "starboard" = 'sound/vox_fem/starboard.ogg',
- "start" = 'sound/vox_fem/start.ogg',
- "starts" = 'sound/vox_fem/starts.ogg',
- "station" = 'sound/vox_fem/station.ogg',
- "stations" = 'sound/vox_fem/stations.ogg',
- "stationwide" = 'sound/vox_fem/stationwide.ogg',
- "status" = 'sound/vox_fem/status.ogg',
- "stay" = 'sound/vox_fem/stay.ogg',
- "sterile" = 'sound/vox_fem/sterile.ogg',
- "sterilization" = 'sound/vox_fem/sterilization.ogg',
- "stop" = 'sound/vox_fem/stop.ogg',
- "storage" = 'sound/vox_fem/storage.ogg',
- "strong" = 'sound/vox_fem/strong.ogg',
- "stuck" = 'sound/vox_fem/stuck.ogg',
- "sub" = 'sound/vox_fem/sub.ogg',
- "subsurface" = 'sound/vox_fem/subsurface.ogg',
- "such" = 'sound/vox_fem/such.ogg',
- "sudden" = 'sound/vox_fem/sudden.ogg',
- "suffer" = 'sound/vox_fem/suffer.ogg',
- "suit" = 'sound/vox_fem/suit.ogg',
- "suited" = 'sound/vox_fem/suited.ogg',
- "super" = 'sound/vox_fem/super.ogg',
- "superconducting" = 'sound/vox_fem/superconducting.ogg',
- "supercooled" = 'sound/vox_fem/supercooled.ogg',
- "supermatter" = 'sound/vox_fem/supermatter.ogg',
- "supply" = 'sound/vox_fem/supply.ogg',
- "surface" = 'sound/vox_fem/surface.ogg',
- "surrender" = 'sound/vox_fem/surrender.ogg',
- "surround" = 'sound/vox_fem/surround.ogg',
- "surrounded" = 'sound/vox_fem/surrounded.ogg',
- "sweating" = 'sound/vox_fem/sweating.ogg',
- "swhitenoise" = 'sound/vox_fem/swhitenoise.ogg',
- "switch" = 'sound/vox_fem/switch.ogg',
- "syndicate" = 'sound/vox_fem/syndicate.ogg',
- "system" = 'sound/vox_fem/system.ogg',
- "systems" = 'sound/vox_fem/systems.ogg',
- "t" = 'sound/vox_fem/t.ogg',
- "table" = 'sound/vox_fem/table.ogg',
- "tactical" = 'sound/vox_fem/tactical.ogg',
- "taildragger" = 'sound/vox_fem/taildragger.ogg',
- "take" = 'sound/vox_fem/take.ogg',
- "talk" = 'sound/vox_fem/talk.ogg',
- "tampered" = 'sound/vox_fem/tampered.ogg',
- "tango" = 'sound/vox_fem/tango.ogg',
- "tank" = 'sound/vox_fem/tank.ogg',
- "target" = 'sound/vox_fem/target.ogg',
- "team" = 'sound/vox_fem/team.ogg',
- "tech" = 'sound/vox_fem/tech.ogg',
- "technician" = 'sound/vox_fem/technician.ogg',
- "technology" = 'sound/vox_fem/technology.ogg',
- "teleporter" = 'sound/vox_fem/teleporter.ogg',
- "temperature" = 'sound/vox_fem/temperature.ogg',
- "temporal" = 'sound/vox_fem/temporal.ogg',
- "ten" = 'sound/vox_fem/ten.ogg',
- "terminal" = 'sound/vox_fem/terminal.ogg',
- "terminate" = 'sound/vox_fem/terminate.ogg',
- "terminated" = 'sound/vox_fem/terminated.ogg',
- "termination" = 'sound/vox_fem/termination.ogg',
- "tesla" = 'sound/vox_fem/tesla.ogg',
- "test" = 'sound/vox_fem/test.ogg',
- "text" = 'sound/vox_fem/text.ogg',
- "thank" = 'sound/vox_fem/thank.ogg',
- "thanks" = 'sound/vox_fem/thanks.ogg',
- "that" = 'sound/vox_fem/that.ogg',
- "the" = 'sound/vox_fem/the.ogg',
- "theater" = 'sound/vox_fem/theater.ogg',
- "them" = 'sound/vox_fem/them.ogg',
- "then" = 'sound/vox_fem/then.ogg',
- "there" = 'sound/vox_fem/there.ogg',
- "they" = 'sound/vox_fem/they.ogg',
- "third" = 'sound/vox_fem/third.ogg',
- "thirteen" = 'sound/vox_fem/thirteen.ogg',
- "thirty" = 'sound/vox_fem/thirty.ogg',
- "this" = 'sound/vox_fem/this.ogg',
- "those" = 'sound/vox_fem/those.ogg',
- "thousand" = 'sound/vox_fem/thousand.ogg',
- "threat" = 'sound/vox_fem/threat.ogg',
- "three" = 'sound/vox_fem/three.ogg',
- "through" = 'sound/vox_fem/through.ogg',
- "tick" = 'sound/vox_fem/tick.ogg',
- "tide" = 'sound/vox_fem/tide.ogg',
- "tile" = 'sound/vox_fem/tile.ogg',
- "time" = 'sound/vox_fem/time.ogg',
- "tiny" = 'sound/vox_fem/tiny.ogg',
- "to" = 'sound/vox_fem/to.ogg',
- "top" = 'sound/vox_fem/top.ogg',
- "topside" = 'sound/vox_fem/topside.ogg',
- "touch" = 'sound/vox_fem/touch.ogg',
- "touched" = 'sound/vox_fem/touched.ogg',
- "touching" = 'sound/vox_fem/touching.ogg',
- "towards" = 'sound/vox_fem/towards.ogg',
- "toxins" = 'sound/vox_fem/toxins.ogg',
- "track" = 'sound/vox_fem/track.ogg',
- "train" = 'sound/vox_fem/train.ogg',
- "traitor" = 'sound/vox_fem/traitor.ogg',
- "transportation" = 'sound/vox_fem/transportation.ogg',
- "trigger" = 'sound/vox_fem/trigger.ogg',
- "triggered" = 'sound/vox_fem/triggered.ogg',
- "triggering" = 'sound/vox_fem/triggering.ogg',
- "triple" = 'sound/vox_fem/triple.ogg',
- "tritium" = 'sound/vox_fem/tritium.ogg',
- "truck" = 'sound/vox_fem/truck.ogg',
- "true" = 'sound/vox_fem/true.ogg',
- "tunnel" = 'sound/vox_fem/tunnel.ogg',
- "turn" = 'sound/vox_fem/turn.ogg',
- "turned" = 'sound/vox_fem/turned.ogg',
- "turret" = 'sound/vox_fem/turret.ogg',
- "twelve" = 'sound/vox_fem/twelve.ogg',
- "twenty" = 'sound/vox_fem/twenty.ogg',
- "two" = 'sound/vox_fem/two.ogg',
- "u" = 'sound/vox_fem/u.ogg',
- "ugh" = 'sound/vox_fem/ugh.ogg',
- "ughh" = 'sound/vox_fem/ughh.ogg',
- "unable" = 'sound/vox_fem/unable.ogg',
- "unauthorized" = 'sound/vox_fem/unauthorized.ogg',
- "under" = 'sound/vox_fem/under.ogg',
- "uniform" = 'sound/vox_fem/uniform.ogg',
- "unique" = 'sound/vox_fem/unique.ogg',
- "unknown" = 'sound/vox_fem/unknown.ogg',
- "unlocked" = 'sound/vox_fem/unlocked.ogg',
- "unsafe" = 'sound/vox_fem/unsafe.ogg',
- "until" = 'sound/vox_fem/until.ogg',
- "unwrench" = 'sound/vox_fem/unwrench.ogg',
- "unwrenching" = 'sound/vox_fem/unwrenching.ogg',
- "up" = 'sound/vox_fem/up.ogg',
- "update" = 'sound/vox_fem/update.ogg',
- "updated" = 'sound/vox_fem/updated.ogg',
- "updating" = 'sound/vox_fem/updating.ogg',
- "upload" = 'sound/vox_fem/upload.ogg',
- "upper" = 'sound/vox_fem/upper.ogg',
- "uranium" = 'sound/vox_fem/uranium.ogg',
- "us" = 'sound/vox_fem/us.ogg',
- "usa" = 'sound/vox_fem/usa.ogg',
- "use" = 'sound/vox_fem/use.ogg',
- "used" = 'sound/vox_fem/used.ogg',
- "useful" = 'sound/vox_fem/useful.ogg',
- "useless" = 'sound/vox_fem/useless.ogg',
- "user" = 'sound/vox_fem/user.ogg',
- "v" = 'sound/vox_fem/v.ogg',
- "vacate" = 'sound/vox_fem/vacate.ogg',
- "vacuum" = 'sound/vox_fem/vacuum.ogg',
- "valid" = 'sound/vox_fem/valid.ogg',
- "validate" = 'sound/vox_fem/validate.ogg',
- "vapor" = 'sound/vox_fem/vapor.ogg',
- "vendor" = 'sound/vox_fem/vendor.ogg',
- "vent" = 'sound/vox_fem/vent.ogg',
- "ventilation" = 'sound/vox_fem/ventilation.ogg',
- "very" = 'sound/vox_fem/very.ogg',
- "victor" = 'sound/vox_fem/victor.ogg',
- "violated" = 'sound/vox_fem/violated.ogg',
- "violation" = 'sound/vox_fem/violation.ogg',
- "virologist" = 'sound/vox_fem/virologist.ogg',
- "virology" = 'sound/vox_fem/virology.ogg',
- "virus" = 'sound/vox_fem/virus.ogg',
- "vitals" = 'sound/vox_fem/vitals.ogg',
- "voltage" = 'sound/vox_fem/voltage.ogg',
- "vox" = 'sound/vox_fem/vox.ogg',
- "voxtest" = 'sound/vox_fem/voxtest.ogg',
- "vox_login" = 'sound/vox_fem/vox_login.ogg',
- "w" = 'sound/vox_fem/w.ogg',
- "walk" = 'sound/vox_fem/walk.ogg',
- "wall" = 'sound/vox_fem/wall.ogg',
- "wanker" = 'sound/vox_fem/wanker.ogg',
- "want" = 'sound/vox_fem/want.ogg',
- "wanted" = 'sound/vox_fem/wanted.ogg',
- "warden" = 'sound/vox_fem/warden.ogg',
- "warm" = 'sound/vox_fem/warm.ogg',
- "warn" = 'sound/vox_fem/warn.ogg',
- "warning" = 'sound/vox_fem/warning.ogg',
- "was" = 'sound/vox_fem/was.ogg',
- "waste" = 'sound/vox_fem/waste.ogg',
- "water" = 'sound/vox_fem/water.ogg',
- "way" = 'sound/vox_fem/way.ogg',
- "ways" = 'sound/vox_fem/ways.ogg',
- "we" = 'sound/vox_fem/we.ogg',
- "weak" = 'sound/vox_fem/weak.ogg',
- "weapon" = 'sound/vox_fem/weapon.ogg',
- "welcome" = 'sound/vox_fem/welcome.ogg',
- "weld" = 'sound/vox_fem/weld.ogg',
- "west" = 'sound/vox_fem/west.ogg',
- "wew" = 'sound/vox_fem/wew.ogg',
- "what" = 'sound/vox_fem/what.ogg',
- "when" = 'sound/vox_fem/when.ogg',
- "where" = 'sound/vox_fem/where.ogg',
- "which" = 'sound/vox_fem/which.ogg',
- "while" = 'sound/vox_fem/while.ogg',
- "whiskey" = 'sound/vox_fem/whiskey.ogg',
- "white" = 'sound/vox_fem/white.ogg',
- "why" = 'sound/vox_fem/why.ogg',
- "wilco" = 'sound/vox_fem/wilco.ogg',
- "will" = 'sound/vox_fem/will.ogg',
- "wing" = 'sound/vox_fem/wing.ogg',
- "wire" = 'sound/vox_fem/wire.ogg',
- "with" = 'sound/vox_fem/with.ogg',
- "without" = 'sound/vox_fem/without.ogg',
- "wizard" = 'sound/vox_fem/wizard.ogg',
- "wood" = 'sound/vox_fem/wood.ogg',
- "woody" = 'sound/vox_fem/woody.ogg',
- "woop" = 'sound/vox_fem/woop.ogg',
- "work" = 'sound/vox_fem/work.ogg',
- "worked" = 'sound/vox_fem/worked.ogg',
- "working" = 'sound/vox_fem/working.ogg',
- "works" = 'sound/vox_fem/works.ogg',
- "would" = 'sound/vox_fem/would.ogg',
- "wouldnt" = 'sound/vox_fem/wouldnt.ogg',
- "wow" = 'sound/vox_fem/wow.ogg',
- "wrench" = 'sound/vox_fem/wrench.ogg',
- "wrenching" = 'sound/vox_fem/wrenching.ogg',
- "x" = 'sound/vox_fem/x.ogg',
- "xeno" = 'sound/vox_fem/xeno.ogg',
- "xenobiology" = 'sound/vox_fem/xenobiology.ogg',
- "xenomorph" = 'sound/vox_fem/xenomorph.ogg',
- "xenomorphs" = 'sound/vox_fem/xenomorphs.ogg',
- "y" = 'sound/vox_fem/y.ogg',
- "yankee" = 'sound/vox_fem/yankee.ogg',
- "yards" = 'sound/vox_fem/yards.ogg',
- "year" = 'sound/vox_fem/year.ogg',
- "yellow" = 'sound/vox_fem/yellow.ogg',
- "yes" = 'sound/vox_fem/yes.ogg',
- "you" = 'sound/vox_fem/you.ogg',
- "your" = 'sound/vox_fem/your.ogg',
- "yourself" = 'sound/vox_fem/yourself.ogg',
- "z" = 'sound/vox_fem/z.ogg',
- "zap" = 'sound/vox_fem/zap.ogg',
- "zauker" = 'sound/vox_fem/zauker.ogg',
- "zero" = 'sound/vox_fem/zero.ogg',
- "zombie" = 'sound/vox_fem/zombie.ogg',
- "zone" = 'sound/vox_fem/zone.ogg',
- "zulu" = 'sound/vox_fem/zulu.ogg',
+ "," = 'sound/announcer/vox_fem/,.ogg',
+ "." = 'sound/announcer/vox_fem/..ogg',
+ "a" = 'sound/announcer/vox_fem/a.ogg',
+ "abduction" = 'sound/announcer/vox_fem/abduction.ogg',
+ "abortions" = 'sound/announcer/vox_fem/abortions.ogg',
+ "above" = 'sound/announcer/vox_fem/above.ogg',
+ "absorb" = 'sound/announcer/vox_fem/absorb.ogg',
+ "absorbed" = 'sound/announcer/vox_fem/absorbed.ogg',
+ "absorbing" = 'sound/announcer/vox_fem/absorbing.ogg',
+ "abstain" = 'sound/announcer/vox_fem/abstain.ogg',
+ "accelerating" = 'sound/announcer/vox_fem/accelerating.ogg',
+ "accelerator" = 'sound/announcer/vox_fem/accelerator.ogg',
+ "accepted" = 'sound/announcer/vox_fem/accepted.ogg',
+ "access" = 'sound/announcer/vox_fem/access.ogg',
+ "acknowledge" = 'sound/announcer/vox_fem/acknowledge.ogg',
+ "acknowledged" = 'sound/announcer/vox_fem/acknowledged.ogg',
+ "acquired" = 'sound/announcer/vox_fem/acquired.ogg',
+ "acquisition" = 'sound/announcer/vox_fem/acquisition.ogg',
+ "across" = 'sound/announcer/vox_fem/across.ogg',
+ "activate" = 'sound/announcer/vox_fem/activate.ogg',
+ "activated" = 'sound/announcer/vox_fem/activated.ogg',
+ "activating" = 'sound/announcer/vox_fem/activating.ogg',
+ "activation" = 'sound/announcer/vox_fem/activation.ogg',
+ "active" = 'sound/announcer/vox_fem/active.ogg',
+ "activity" = 'sound/announcer/vox_fem/activity.ogg',
+ "adios" = 'sound/announcer/vox_fem/adios.ogg',
+ "administration" = 'sound/announcer/vox_fem/administration.ogg',
+ "advanced" = 'sound/announcer/vox_fem/advanced.ogg',
+ "advised" = 'sound/announcer/vox_fem/advised.ogg',
+ "affect" = 'sound/announcer/vox_fem/affect.ogg',
+ "affected" = 'sound/announcer/vox_fem/affected.ogg',
+ "affecting" = 'sound/announcer/vox_fem/affecting.ogg',
+ "aft" = 'sound/announcer/vox_fem/aft.ogg',
+ "after" = 'sound/announcer/vox_fem/after.ogg',
+ "agent" = 'sound/announcer/vox_fem/agent.ogg',
+ "ai" = 'sound/announcer/vox_fem/ai.ogg',
+ "air" = 'sound/announcer/vox_fem/air.ogg',
+ "airlock" = 'sound/announcer/vox_fem/airlock.ogg',
+ "alarm" = 'sound/announcer/vox_fem/alarm.ogg',
+ "alarmed" = 'sound/announcer/vox_fem/alarmed.ogg',
+ "alarming" = 'sound/announcer/vox_fem/alarming.ogg',
+ "alcohol" = 'sound/announcer/vox_fem/alcohol.ogg',
+ "alert" = 'sound/announcer/vox_fem/alert.ogg',
+ "alerted" = 'sound/announcer/vox_fem/alerted.ogg',
+ "alerting" = 'sound/announcer/vox_fem/alerting.ogg',
+ "alien" = 'sound/announcer/vox_fem/alien.ogg',
+ "align" = 'sound/announcer/vox_fem/align.ogg',
+ "aligned" = 'sound/announcer/vox_fem/aligned.ogg',
+ "all" = 'sound/announcer/vox_fem/all.ogg',
+ "allow" = 'sound/announcer/vox_fem/allow.ogg',
+ "alongside" = 'sound/announcer/vox_fem/alongside.ogg',
+ "alpha" = 'sound/announcer/vox_fem/alpha.ogg',
+ "also" = 'sound/announcer/vox_fem/also.ogg',
+ "am" = 'sound/announcer/vox_fem/am.ogg',
+ "amigo" = 'sound/announcer/vox_fem/amigo.ogg',
+ "ammunition" = 'sound/announcer/vox_fem/ammunition.ogg',
+ "amount" = 'sound/announcer/vox_fem/amount.ogg',
+ "an" = 'sound/announcer/vox_fem/an.ogg',
+ "and" = 'sound/announcer/vox_fem/and.ogg',
+ "animal" = 'sound/announcer/vox_fem/animal.ogg',
+ "annihilate" = 'sound/announcer/vox_fem/annihilate.ogg',
+ "annihilated" = 'sound/announcer/vox_fem/annihilated.ogg',
+ "annihilating" = 'sound/announcer/vox_fem/annihilating.ogg',
+ "annihilation" = 'sound/announcer/vox_fem/annihilation.ogg',
+ "announcement" = 'sound/announcer/vox_fem/announcement.ogg',
+ "anomalous" = 'sound/announcer/vox_fem/anomalous.ogg',
+ "answer" = 'sound/announcer/vox_fem/answer.ogg',
+ "antenna" = 'sound/announcer/vox_fem/antenna.ogg',
+ "anti-noblium" = 'sound/announcer/vox_fem/anti-noblium.ogg',
+ "any" = 'sound/announcer/vox_fem/any.ogg',
+ "apc" = 'sound/announcer/vox_fem/apc.ogg',
+ "apprehend" = 'sound/announcer/vox_fem/apprehend.ogg',
+ "approach" = 'sound/announcer/vox_fem/approach.ogg',
+ "arc" = 'sound/announcer/vox_fem/arc.ogg',
+ "arcs" = 'sound/announcer/vox_fem/arcs.ogg',
+ "are" = 'sound/announcer/vox_fem/are.ogg',
+ "area" = 'sound/announcer/vox_fem/area.ogg',
+ "arm" = 'sound/announcer/vox_fem/arm.ogg',
+ "armed" = 'sound/announcer/vox_fem/armed.ogg',
+ "armor" = 'sound/announcer/vox_fem/armor.ogg',
+ "armory" = 'sound/announcer/vox_fem/armory.ogg',
+ "around" = 'sound/announcer/vox_fem/around.ogg',
+ "array" = 'sound/announcer/vox_fem/array.ogg',
+ "arrest" = 'sound/announcer/vox_fem/arrest.ogg',
+ "artillery" = 'sound/announcer/vox_fem/artillery.ogg',
+ "asimov" = 'sound/announcer/vox_fem/asimov.ogg',
+ "ask" = 'sound/announcer/vox_fem/ask.ogg',
+ "ass" = 'sound/announcer/vox_fem/ass.ogg',
+ "asshole" = 'sound/announcer/vox_fem/asshole.ogg',
+ "assholes" = 'sound/announcer/vox_fem/assholes.ogg',
+ "assistance" = 'sound/announcer/vox_fem/assistance.ogg',
+ "assistant" = 'sound/announcer/vox_fem/assistant.ogg',
+ "at" = 'sound/announcer/vox_fem/at.ogg',
+ "ate" = 'sound/announcer/vox_fem/ate.ogg',
+ "atmosphere" = 'sound/announcer/vox_fem/atmosphere.ogg',
+ "atmospheric" = 'sound/announcer/vox_fem/atmospheric.ogg',
+ "atmospherics" = 'sound/announcer/vox_fem/atmospherics.ogg',
+ "atomic" = 'sound/announcer/vox_fem/atomic.ogg',
+ "attention" = 'sound/announcer/vox_fem/attention.ogg',
+ "authentication" = 'sound/announcer/vox_fem/authentication.ogg',
+ "authorize" = 'sound/announcer/vox_fem/authorize.ogg',
+ "authorized" = 'sound/announcer/vox_fem/authorized.ogg',
+ "automatic" = 'sound/announcer/vox_fem/automatic.ogg',
+ "away" = 'sound/announcer/vox_fem/away.ogg',
+ "awful" = 'sound/announcer/vox_fem/awful.ogg',
+ "b" = 'sound/announcer/vox_fem/b.ogg',
+ "back" = 'sound/announcer/vox_fem/back.ogg',
+ "backman" = 'sound/announcer/vox_fem/backman.ogg',
+ "bad" = 'sound/announcer/vox_fem/bad.ogg',
+ "bag" = 'sound/announcer/vox_fem/bag.ogg',
+ "bailey" = 'sound/announcer/vox_fem/bailey.ogg',
+ "bar" = 'sound/announcer/vox_fem/bar.ogg',
+ "barracks" = 'sound/announcer/vox_fem/barracks.ogg',
+ "bartender" = 'sound/announcer/vox_fem/bartender.ogg',
+ "base" = 'sound/announcer/vox_fem/base.ogg',
+ "bay" = 'sound/announcer/vox_fem/bay.ogg',
+ "be" = 'sound/announcer/vox_fem/be.ogg',
+ "beaker" = 'sound/announcer/vox_fem/beaker.ogg',
+ "beam" = 'sound/announcer/vox_fem/beam.ogg',
+ "been" = 'sound/announcer/vox_fem/been.ogg',
+ "beep" = 'sound/announcer/vox_fem/beep.ogg',
+ "before" = 'sound/announcer/vox_fem/before.ogg',
+ "began" = 'sound/announcer/vox_fem/began.ogg',
+ "begin" = 'sound/announcer/vox_fem/begin.ogg',
+ "begins" = 'sound/announcer/vox_fem/begins.ogg',
+ "below" = 'sound/announcer/vox_fem/below.ogg',
+ "beside" = 'sound/announcer/vox_fem/beside.ogg',
+ "beware" = 'sound/announcer/vox_fem/beware.ogg',
+ "beyond" = 'sound/announcer/vox_fem/beyond.ogg',
+ "big" = 'sound/announcer/vox_fem/big.ogg',
+ "billion" = 'sound/announcer/vox_fem/billion.ogg',
+ "biohazard" = 'sound/announcer/vox_fem/biohazard.ogg',
+ "biological" = 'sound/announcer/vox_fem/biological.ogg',
+ "birdwell" = 'sound/announcer/vox_fem/birdwell.ogg',
+ "bitch" = 'sound/announcer/vox_fem/bitch.ogg',
+ "bitches" = 'sound/announcer/vox_fem/bitches.ogg',
+ "bitcoin" = 'sound/announcer/vox_fem/bitcoin.ogg',
+ "bitrun" = 'sound/announcer/vox_fem/bitrun.ogg',
+ "bitrunner" = 'sound/announcer/vox_fem/bitrunner.ogg',
+ "bitrunning" = 'sound/announcer/vox_fem/bitrunning.ogg',
+ "black" = 'sound/announcer/vox_fem/black.ogg',
+ "blast" = 'sound/announcer/vox_fem/blast.ogg',
+ "bleed" = 'sound/announcer/vox_fem/bleed.ogg',
+ "blob" = 'sound/announcer/vox_fem/blob.ogg',
+ "blocked" = 'sound/announcer/vox_fem/blocked.ogg',
+ "blood" = 'sound/announcer/vox_fem/blood.ogg',
+ "bloop" = 'sound/announcer/vox_fem/bloop.ogg',
+ "blue" = 'sound/announcer/vox_fem/blue.ogg',
+ "bluespace" = 'sound/announcer/vox_fem/bluespace.ogg',
+ "bomb" = 'sound/announcer/vox_fem/bomb.ogg',
+ "bone" = 'sound/announcer/vox_fem/bone.ogg',
+ "botanist" = 'sound/announcer/vox_fem/botanist.ogg',
+ "botany" = 'sound/announcer/vox_fem/botany.ogg',
+ "bottle" = 'sound/announcer/vox_fem/bottle.ogg',
+ "bottom" = 'sound/announcer/vox_fem/bottom.ogg',
+ "bravo" = 'sound/announcer/vox_fem/bravo.ogg',
+ "breach" = 'sound/announcer/vox_fem/breach.ogg',
+ "breached" = 'sound/announcer/vox_fem/breached.ogg',
+ "break" = 'sound/announcer/vox_fem/break.ogg',
+ "bridge" = 'sound/announcer/vox_fem/bridge.ogg',
+ "brig" = 'sound/announcer/vox_fem/brig.ogg',
+ "broke" = 'sound/announcer/vox_fem/broke.ogg',
+ "broken" = 'sound/announcer/vox_fem/broken.ogg',
+ "bump" = 'sound/announcer/vox_fem/bump.ogg',
+ "bumped" = 'sound/announcer/vox_fem/bumped.ogg',
+ "bumps" = 'sound/announcer/vox_fem/bumps.ogg',
+ "bust" = 'sound/announcer/vox_fem/bust.ogg',
+ "but" = 'sound/announcer/vox_fem/but.ogg',
+ "button" = 'sound/announcer/vox_fem/button.ogg',
+ "bypass" = 'sound/announcer/vox_fem/bypass.ogg',
+ "c" = 'sound/announcer/vox_fem/c.ogg',
+ "cable" = 'sound/announcer/vox_fem/cable.ogg',
+ "call" = 'sound/announcer/vox_fem/call.ogg',
+ "called" = 'sound/announcer/vox_fem/called.ogg',
+ "can" = 'sound/announcer/vox_fem/can.ogg',
+ "canal" = 'sound/announcer/vox_fem/canal.ogg',
+ "canister" = 'sound/announcer/vox_fem/canister.ogg',
+ "cap" = 'sound/announcer/vox_fem/cap.ogg',
+ "captain" = 'sound/announcer/vox_fem/captain.ogg',
+ "capture" = 'sound/announcer/vox_fem/capture.ogg',
+ "carbon" = 'sound/announcer/vox_fem/carbon.ogg',
+ "cargo" = 'sound/announcer/vox_fem/cargo.ogg',
+ "cascade" = 'sound/announcer/vox_fem/cascade.ogg',
+ "cat" = 'sound/announcer/vox_fem/cat.ogg',
+ "cause" = 'sound/announcer/vox_fem/cause.ogg',
+ "caused" = 'sound/announcer/vox_fem/caused.ogg',
+ "causes" = 'sound/announcer/vox_fem/causes.ogg',
+ "causing" = 'sound/announcer/vox_fem/causing.ogg',
+ "ce" = 'sound/announcer/vox_fem/ce.ogg',
+ "cease" = 'sound/announcer/vox_fem/cease.ogg',
+ "ceiling" = 'sound/announcer/vox_fem/ceiling.ogg',
+ "celsius" = 'sound/announcer/vox_fem/celsius.ogg',
+ "centcom" = 'sound/announcer/vox_fem/centcom.ogg',
+ "center" = 'sound/announcer/vox_fem/center.ogg',
+ "centi" = 'sound/announcer/vox_fem/centi.ogg',
+ "central" = 'sound/announcer/vox_fem/central.ogg',
+ "challenge" = 'sound/announcer/vox_fem/challenge.ogg',
+ "chamber" = 'sound/announcer/vox_fem/chamber.ogg',
+ "change" = 'sound/announcer/vox_fem/change.ogg',
+ "changed" = 'sound/announcer/vox_fem/changed.ogg',
+ "changeling" = 'sound/announcer/vox_fem/changeling.ogg',
+ "chapel" = 'sound/announcer/vox_fem/chapel.ogg',
+ "chaplain" = 'sound/announcer/vox_fem/chaplain.ogg',
+ "charge" = 'sound/announcer/vox_fem/charge.ogg',
+ "charlie" = 'sound/announcer/vox_fem/charlie.ogg',
+ "check" = 'sound/announcer/vox_fem/check.ogg',
+ "checkpoint" = 'sound/announcer/vox_fem/checkpoint.ogg',
+ "chemical" = 'sound/announcer/vox_fem/chemical.ogg',
+ "chemist" = 'sound/announcer/vox_fem/chemist.ogg',
+ "chief" = 'sound/announcer/vox_fem/chief.ogg',
+ "christ" = 'sound/announcer/vox_fem/christ.ogg',
+ "christmas" = 'sound/announcer/vox_fem/christmas.ogg',
+ "chuckle" = 'sound/announcer/vox_fem/chuckle.ogg',
+ "circuit" = 'sound/announcer/vox_fem/circuit.ogg',
+ "cleanup" = 'sound/announcer/vox_fem/cleanup.ogg',
+ "clear" = 'sound/announcer/vox_fem/clear.ogg',
+ "clearance" = 'sound/announcer/vox_fem/clearance.ogg',
+ "clockwork" = 'sound/announcer/vox_fem/clockwork.ogg',
+ "clog" = 'sound/announcer/vox_fem/clog.ogg',
+ "close" = 'sound/announcer/vox_fem/close.ogg',
+ "closed" = 'sound/announcer/vox_fem/closed.ogg',
+ "closing" = 'sound/announcer/vox_fem/closing.ogg',
+ "clothing" = 'sound/announcer/vox_fem/clothing.ogg',
+ "clown" = 'sound/announcer/vox_fem/clown.ogg',
+ "clowning" = 'sound/announcer/vox_fem/clowning.ogg',
+ "cmo" = 'sound/announcer/vox_fem/cmo.ogg',
+ "code" = 'sound/announcer/vox_fem/code.ogg',
+ "coded" = 'sound/announcer/vox_fem/coded.ogg',
+ "coil" = 'sound/announcer/vox_fem/coil.ogg',
+ "coils" = 'sound/announcer/vox_fem/coils.ogg',
+ "cold" = 'sound/announcer/vox_fem/cold.ogg',
+ "collider" = 'sound/announcer/vox_fem/collider.ogg',
+ "combat" = 'sound/announcer/vox_fem/combat.ogg',
+ "combatant" = 'sound/announcer/vox_fem/combatant.ogg',
+ "come" = 'sound/announcer/vox_fem/come.ogg',
+ "command" = 'sound/announcer/vox_fem/command.ogg',
+ "communication" = 'sound/announcer/vox_fem/communication.ogg',
+ "complete" = 'sound/announcer/vox_fem/complete.ogg',
+ "completed" = 'sound/announcer/vox_fem/completed.ogg',
+ "completion" = 'sound/announcer/vox_fem/completion.ogg',
+ "complex" = 'sound/announcer/vox_fem/complex.ogg',
+ "comply" = 'sound/announcer/vox_fem/comply.ogg',
+ "computer" = 'sound/announcer/vox_fem/computer.ogg',
+ "condition" = 'sound/announcer/vox_fem/condition.ogg',
+ "conditions" = 'sound/announcer/vox_fem/conditions.ogg',
+ "condom" = 'sound/announcer/vox_fem/condom.ogg',
+ "configure" = 'sound/announcer/vox_fem/configure.ogg',
+ "configured" = 'sound/announcer/vox_fem/configured.ogg',
+ "configuring" = 'sound/announcer/vox_fem/configuring.ogg',
+ "confirmed" = 'sound/announcer/vox_fem/confirmed.ogg',
+ "connor" = 'sound/announcer/vox_fem/connor.ogg',
+ "console" = 'sound/announcer/vox_fem/console.ogg',
+ "console2" = 'sound/announcer/vox_fem/console2.ogg',
+ "construct" = 'sound/announcer/vox_fem/construct.ogg',
+ "container" = 'sound/announcer/vox_fem/container.ogg',
+ "containment" = 'sound/announcer/vox_fem/containment.ogg',
+ "contamination" = 'sound/announcer/vox_fem/contamination.ogg',
+ "contraband" = 'sound/announcer/vox_fem/contraband.ogg',
+ "control" = 'sound/announcer/vox_fem/control.ogg',
+ "cook" = 'sound/announcer/vox_fem/cook.ogg',
+ "cool" = 'sound/announcer/vox_fem/cool.ogg',
+ "coolant" = 'sound/announcer/vox_fem/coolant.ogg',
+ "cooling" = 'sound/announcer/vox_fem/cooling.ogg',
+ "coomer" = 'sound/announcer/vox_fem/coomer.ogg',
+ "core" = 'sound/announcer/vox_fem/core.ogg',
+ "corgi" = 'sound/announcer/vox_fem/corgi.ogg',
+ "corporation" = 'sound/announcer/vox_fem/corporation.ogg',
+ "correct" = 'sound/announcer/vox_fem/correct.ogg',
+ "corridor" = 'sound/announcer/vox_fem/corridor.ogg',
+ "corridors" = 'sound/announcer/vox_fem/corridors.ogg',
+ "could" = 'sound/announcer/vox_fem/could.ogg',
+ "couldnt" = 'sound/announcer/vox_fem/couldnt.ogg',
+ "countdown" = 'sound/announcer/vox_fem/countdown.ogg',
+ "coward" = 'sound/announcer/vox_fem/coward.ogg',
+ "cowards" = 'sound/announcer/vox_fem/cowards.ogg',
+ "crate" = 'sound/announcer/vox_fem/crate.ogg',
+ "create" = 'sound/announcer/vox_fem/create.ogg',
+ "created" = 'sound/announcer/vox_fem/created.ogg',
+ "creating" = 'sound/announcer/vox_fem/creating.ogg',
+ "creature" = 'sound/announcer/vox_fem/creature.ogg',
+ "crew" = 'sound/announcer/vox_fem/crew.ogg',
+ "critical" = 'sound/announcer/vox_fem/critical.ogg',
+ "cross" = 'sound/announcer/vox_fem/cross.ogg',
+ "cryogenic" = 'sound/announcer/vox_fem/cryogenic.ogg',
+ "crystal" = 'sound/announcer/vox_fem/crystal.ogg',
+ "cult" = 'sound/announcer/vox_fem/cult.ogg',
+ "cultist" = 'sound/announcer/vox_fem/cultist.ogg',
+ "cunt" = 'sound/announcer/vox_fem/cunt.ogg',
+ "curator" = 'sound/announcer/vox_fem/curator.ogg',
+ "cyborg" = 'sound/announcer/vox_fem/cyborg.ogg',
+ "cyborgs" = 'sound/announcer/vox_fem/cyborgs.ogg',
+ "d" = 'sound/announcer/vox_fem/d.ogg',
+ "damage" = 'sound/announcer/vox_fem/damage.ogg',
+ "damaged" = 'sound/announcer/vox_fem/damaged.ogg',
+ "danger" = 'sound/announcer/vox_fem/danger.ogg',
+ "dangerous" = 'sound/announcer/vox_fem/dangerous.ogg',
+ "day" = 'sound/announcer/vox_fem/day.ogg',
+ "deactivated" = 'sound/announcer/vox_fem/deactivated.ogg',
+ "dead" = 'sound/announcer/vox_fem/dead.ogg',
+ "death" = 'sound/announcer/vox_fem/death.ogg',
+ "decompression" = 'sound/announcer/vox_fem/decompression.ogg',
+ "decontamination" = 'sound/announcer/vox_fem/decontamination.ogg',
+ "deeoo" = 'sound/announcer/vox_fem/deeoo.ogg',
+ "defense" = 'sound/announcer/vox_fem/defense.ogg',
+ "degrees" = 'sound/announcer/vox_fem/degrees.ogg',
+ "delaminating" = 'sound/announcer/vox_fem/delaminating.ogg',
+ "delamination" = 'sound/announcer/vox_fem/delamination.ogg',
+ "delta" = 'sound/announcer/vox_fem/delta.ogg',
+ "demon" = 'sound/announcer/vox_fem/demon.ogg',
+ "denied" = 'sound/announcer/vox_fem/denied.ogg',
+ "deny" = 'sound/announcer/vox_fem/deny.ogg',
+ "departures" = 'sound/announcer/vox_fem/departures.ogg',
+ "deploy" = 'sound/announcer/vox_fem/deploy.ogg',
+ "deployed" = 'sound/announcer/vox_fem/deployed.ogg',
+ "desire" = 'sound/announcer/vox_fem/desire.ogg',
+ "desist" = 'sound/announcer/vox_fem/desist.ogg',
+ "destroy" = 'sound/announcer/vox_fem/destroy.ogg',
+ "destroyed" = 'sound/announcer/vox_fem/destroyed.ogg',
+ "destruction" = 'sound/announcer/vox_fem/destruction.ogg',
+ "detain" = 'sound/announcer/vox_fem/detain.ogg',
+ "detect" = 'sound/announcer/vox_fem/detect.ogg',
+ "detected" = 'sound/announcer/vox_fem/detected.ogg',
+ "detecting" = 'sound/announcer/vox_fem/detecting.ogg',
+ "detective" = 'sound/announcer/vox_fem/detective.ogg',
+ "detonation" = 'sound/announcer/vox_fem/detonation.ogg',
+ "device" = 'sound/announcer/vox_fem/device.ogg',
+ "devil" = 'sound/announcer/vox_fem/devil.ogg',
+ "did" = 'sound/announcer/vox_fem/did.ogg',
+ "die" = 'sound/announcer/vox_fem/die.ogg',
+ "died" = 'sound/announcer/vox_fem/died.ogg',
+ "different" = 'sound/announcer/vox_fem/different.ogg',
+ "dimensional" = 'sound/announcer/vox_fem/dimensional.ogg',
+ "dioxide" = 'sound/announcer/vox_fem/dioxide.ogg',
+ "direct" = 'sound/announcer/vox_fem/direct.ogg',
+ "director" = 'sound/announcer/vox_fem/director.ogg',
+ "dirt" = 'sound/announcer/vox_fem/dirt.ogg',
+ "disabled" = 'sound/announcer/vox_fem/disabled.ogg',
+ "disease" = 'sound/announcer/vox_fem/disease.ogg',
+ "disengaged" = 'sound/announcer/vox_fem/disengaged.ogg',
+ "dish" = 'sound/announcer/vox_fem/dish.ogg',
+ "disk" = 'sound/announcer/vox_fem/disk.ogg',
+ "disposal" = 'sound/announcer/vox_fem/disposal.ogg',
+ "distance" = 'sound/announcer/vox_fem/distance.ogg',
+ "distortion" = 'sound/announcer/vox_fem/distortion.ogg',
+ "do" = 'sound/announcer/vox_fem/do.ogg',
+ "doctor" = 'sound/announcer/vox_fem/doctor.ogg',
+ "dog" = 'sound/announcer/vox_fem/dog.ogg',
+ "dont" = 'sound/announcer/vox_fem/dont.ogg',
+ "doomsday" = 'sound/announcer/vox_fem/doomsday.ogg',
+ "doop" = 'sound/announcer/vox_fem/doop.ogg',
+ "door" = 'sound/announcer/vox_fem/door.ogg',
+ "dormitory" = 'sound/announcer/vox_fem/dormitory.ogg',
+ "dot" = 'sound/announcer/vox_fem/dot.ogg',
+ "double" = 'sound/announcer/vox_fem/double.ogg',
+ "down" = 'sound/announcer/vox_fem/down.ogg',
+ "dress" = 'sound/announcer/vox_fem/dress.ogg',
+ "dressed" = 'sound/announcer/vox_fem/dressed.ogg',
+ "dressing" = 'sound/announcer/vox_fem/dressing.ogg',
+ "drone" = 'sound/announcer/vox_fem/drone.ogg',
+ "dual" = 'sound/announcer/vox_fem/dual.ogg',
+ "duct" = 'sound/announcer/vox_fem/duct.ogg',
+ "e" = 'sound/announcer/vox_fem/e.ogg',
+ "easily" = 'sound/announcer/vox_fem/easily.ogg',
+ "east" = 'sound/announcer/vox_fem/east.ogg',
+ "eat" = 'sound/announcer/vox_fem/eat.ogg',
+ "eaten" = 'sound/announcer/vox_fem/eaten.ogg',
+ "echo" = 'sound/announcer/vox_fem/echo.ogg',
+ "ed" = 'sound/announcer/vox_fem/ed.ogg',
+ "education" = 'sound/announcer/vox_fem/education.ogg',
+ "effect" = 'sound/announcer/vox_fem/effect.ogg',
+ "effects" = 'sound/announcer/vox_fem/effects.ogg',
+ "egress" = 'sound/announcer/vox_fem/egress.ogg',
+ "eight" = 'sound/announcer/vox_fem/eight.ogg',
+ "eighteen" = 'sound/announcer/vox_fem/eighteen.ogg',
+ "eighty" = 'sound/announcer/vox_fem/eighty.ogg',
+ "electric" = 'sound/announcer/vox_fem/electric.ogg',
+ "electrical" = 'sound/announcer/vox_fem/electrical.ogg',
+ "electromagnetic" = 'sound/announcer/vox_fem/electromagnetic.ogg',
+ "elevator" = 'sound/announcer/vox_fem/elevator.ogg',
+ "eleven" = 'sound/announcer/vox_fem/eleven.ogg',
+ "eliminate" = 'sound/announcer/vox_fem/eliminate.ogg',
+ "emergency" = 'sound/announcer/vox_fem/emergency.ogg',
+ "emitted" = 'sound/announcer/vox_fem/emitted.ogg',
+ "emitter" = 'sound/announcer/vox_fem/emitter.ogg',
+ "emitting" = 'sound/announcer/vox_fem/emitting.ogg',
+ "enabled" = 'sound/announcer/vox_fem/enabled.ogg',
+ "end" = 'sound/announcer/vox_fem/end.ogg',
+ "ends" = 'sound/announcer/vox_fem/ends.ogg',
+ "energy" = 'sound/announcer/vox_fem/energy.ogg',
+ "engage" = 'sound/announcer/vox_fem/engage.ogg',
+ "engaged" = 'sound/announcer/vox_fem/engaged.ogg',
+ "engine" = 'sound/announcer/vox_fem/engine.ogg',
+ "engineer" = 'sound/announcer/vox_fem/engineer.ogg',
+ "engineering" = 'sound/announcer/vox_fem/engineering.ogg',
+ "enormous" = 'sound/announcer/vox_fem/enormous.ogg',
+ "enough" = 'sound/announcer/vox_fem/enough.ogg',
+ "enter" = 'sound/announcer/vox_fem/enter.ogg',
+ "entity" = 'sound/announcer/vox_fem/entity.ogg',
+ "entry" = 'sound/announcer/vox_fem/entry.ogg',
+ "environment" = 'sound/announcer/vox_fem/environment.ogg',
+ "epic" = 'sound/announcer/vox_fem/epic.ogg',
+ "equipment" = 'sound/announcer/vox_fem/equipment.ogg',
+ "error" = 'sound/announcer/vox_fem/error.ogg',
+ "escape" = 'sound/announcer/vox_fem/escape.ogg',
+ "ethereal" = 'sound/announcer/vox_fem/ethereal.ogg',
+ "eva" = 'sound/announcer/vox_fem/eva.ogg',
+ "evacuate" = 'sound/announcer/vox_fem/evacuate.ogg',
+ "even" = 'sound/announcer/vox_fem/even.ogg',
+ "ever" = 'sound/announcer/vox_fem/ever.ogg',
+ "every" = 'sound/announcer/vox_fem/every.ogg',
+ "everybody" = 'sound/announcer/vox_fem/everybody.ogg',
+ "everyone" = 'sound/announcer/vox_fem/everyone.ogg',
+ "exchange" = 'sound/announcer/vox_fem/exchange.ogg',
+ "execute" = 'sound/announcer/vox_fem/execute.ogg',
+ "exit" = 'sound/announcer/vox_fem/exit.ogg',
+ "expect" = 'sound/announcer/vox_fem/expect.ogg',
+ "experiment" = 'sound/announcer/vox_fem/experiment.ogg',
+ "experimental" = 'sound/announcer/vox_fem/experimental.ogg',
+ "explode" = 'sound/announcer/vox_fem/explode.ogg',
+ "exploded" = 'sound/announcer/vox_fem/exploded.ogg',
+ "exploding" = 'sound/announcer/vox_fem/exploding.ogg',
+ "explosion" = 'sound/announcer/vox_fem/explosion.ogg',
+ "explosive" = 'sound/announcer/vox_fem/explosive.ogg',
+ "exposure" = 'sound/announcer/vox_fem/exposure.ogg',
+ "exterminate" = 'sound/announcer/vox_fem/exterminate.ogg',
+ "external" = 'sound/announcer/vox_fem/external.ogg',
+ "extinguish" = 'sound/announcer/vox_fem/extinguish.ogg',
+ "extinguisher" = 'sound/announcer/vox_fem/extinguisher.ogg',
+ "extra" = 'sound/announcer/vox_fem/extra.ogg',
+ "extreme" = 'sound/announcer/vox_fem/extreme.ogg',
+ "f" = 'sound/announcer/vox_fem/f.ogg',
+ "facility" = 'sound/announcer/vox_fem/facility.ogg',
+ "factory" = 'sound/announcer/vox_fem/factory.ogg',
+ "fahrenheit" = 'sound/announcer/vox_fem/fahrenheit.ogg',
+ "failed" = 'sound/announcer/vox_fem/failed.ogg',
+ "failure" = 'sound/announcer/vox_fem/failure.ogg',
+ "false" = 'sound/announcer/vox_fem/false.ogg',
+ "farthest" = 'sound/announcer/vox_fem/farthest.ogg',
+ "fast" = 'sound/announcer/vox_fem/fast.ogg',
+ "fauna" = 'sound/announcer/vox_fem/fauna.ogg',
+ "feature" = 'sound/announcer/vox_fem/feature.ogg',
+ "featured" = 'sound/announcer/vox_fem/featured.ogg',
+ "features" = 'sound/announcer/vox_fem/features.ogg',
+ "featuring" = 'sound/announcer/vox_fem/featuring.ogg',
+ "feet" = 'sound/announcer/vox_fem/feet.ogg',
+ "felinid" = 'sound/announcer/vox_fem/felinid.ogg',
+ "few" = 'sound/announcer/vox_fem/few.ogg',
+ "field" = 'sound/announcer/vox_fem/field.ogg',
+ "fifteen" = 'sound/announcer/vox_fem/fifteen.ogg',
+ "fifth" = 'sound/announcer/vox_fem/fifth.ogg',
+ "fifty" = 'sound/announcer/vox_fem/fifty.ogg',
+ "filter" = 'sound/announcer/vox_fem/filter.ogg',
+ "filters" = 'sound/announcer/vox_fem/filters.ogg',
+ "final" = 'sound/announcer/vox_fem/final.ogg',
+ "fine" = 'sound/announcer/vox_fem/fine.ogg',
+ "fire" = 'sound/announcer/vox_fem/fire.ogg',
+ "first" = 'sound/announcer/vox_fem/first.ogg',
+ "five" = 'sound/announcer/vox_fem/five.ogg',
+ "fix" = 'sound/announcer/vox_fem/fix.ogg',
+ "flooding" = 'sound/announcer/vox_fem/flooding.ogg',
+ "floor" = 'sound/announcer/vox_fem/floor.ogg',
+ "flyman" = 'sound/announcer/vox_fem/flyman.ogg',
+ "fool" = 'sound/announcer/vox_fem/fool.ogg',
+ "foolish" = 'sound/announcer/vox_fem/foolish.ogg',
+ "for" = 'sound/announcer/vox_fem/for.ogg',
+ "forbidden" = 'sound/announcer/vox_fem/forbidden.ogg',
+ "force" = 'sound/announcer/vox_fem/force.ogg',
+ "fore" = 'sound/announcer/vox_fem/fore.ogg',
+ "form" = 'sound/announcer/vox_fem/form.ogg',
+ "formed" = 'sound/announcer/vox_fem/formed.ogg',
+ "forms" = 'sound/announcer/vox_fem/forms.ogg',
+ "forty" = 'sound/announcer/vox_fem/forty.ogg',
+ "found" = 'sound/announcer/vox_fem/found.ogg',
+ "four" = 'sound/announcer/vox_fem/four.ogg',
+ "fourteen" = 'sound/announcer/vox_fem/fourteen.ogg',
+ "fourth" = 'sound/announcer/vox_fem/fourth.ogg',
+ "fourty" = 'sound/announcer/vox_fem/fourty.ogg',
+ "foxtrot" = 'sound/announcer/vox_fem/foxtrot.ogg',
+ "free" = 'sound/announcer/vox_fem/free.ogg',
+ "freeman" = 'sound/announcer/vox_fem/freeman.ogg',
+ "freeze" = 'sound/announcer/vox_fem/freeze.ogg',
+ "freezer" = 'sound/announcer/vox_fem/freezer.ogg',
+ "freezing" = 'sound/announcer/vox_fem/freezing.ogg',
+ "freon" = 'sound/announcer/vox_fem/freon.ogg',
+ "from" = 'sound/announcer/vox_fem/from.ogg',
+ "front" = 'sound/announcer/vox_fem/front.ogg',
+ "froze" = 'sound/announcer/vox_fem/froze.ogg',
+ "frozen" = 'sound/announcer/vox_fem/frozen.ogg',
+ "fuck" = 'sound/announcer/vox_fem/fuck.ogg',
+ "fucking" = 'sound/announcer/vox_fem/fucking.ogg',
+ "fucks" = 'sound/announcer/vox_fem/fucks.ogg',
+ "fuel" = 'sound/announcer/vox_fem/fuel.ogg',
+ "g" = 'sound/announcer/vox_fem/g.ogg',
+ "gas" = 'sound/announcer/vox_fem/gas.ogg',
+ "gases" = 'sound/announcer/vox_fem/gases.ogg',
+ "gave" = 'sound/announcer/vox_fem/gave.ogg',
+ "gear" = 'sound/announcer/vox_fem/gear.ogg',
+ "geared" = 'sound/announcer/vox_fem/geared.ogg',
+ "gearing" = 'sound/announcer/vox_fem/gearing.ogg',
+ "generate" = 'sound/announcer/vox_fem/generate.ogg',
+ "generated" = 'sound/announcer/vox_fem/generated.ogg',
+ "generating" = 'sound/announcer/vox_fem/generating.ogg',
+ "generator" = 'sound/announcer/vox_fem/generator.ogg',
+ "geneticist" = 'sound/announcer/vox_fem/geneticist.ogg',
+ "get" = 'sound/announcer/vox_fem/get.ogg',
+ "give" = 'sound/announcer/vox_fem/give.ogg',
+ "given" = 'sound/announcer/vox_fem/given.ogg',
+ "glory" = 'sound/announcer/vox_fem/glory.ogg',
+ "go" = 'sound/announcer/vox_fem/go.ogg',
+ "god" = 'sound/announcer/vox_fem/god.ogg',
+ "going" = 'sound/announcer/vox_fem/going.ogg',
+ "golem" = 'sound/announcer/vox_fem/golem.ogg',
+ "good" = 'sound/announcer/vox_fem/good.ogg',
+ "goodbye" = 'sound/announcer/vox_fem/goodbye.ogg',
+ "gordon" = 'sound/announcer/vox_fem/gordon.ogg',
+ "got" = 'sound/announcer/vox_fem/got.ogg',
+ "government" = 'sound/announcer/vox_fem/government.ogg',
+ "granted" = 'sound/announcer/vox_fem/granted.ogg',
+ "gravity" = 'sound/announcer/vox_fem/gravity.ogg',
+ "gray" = 'sound/announcer/vox_fem/gray.ogg',
+ "great" = 'sound/announcer/vox_fem/great.ogg',
+ "green" = 'sound/announcer/vox_fem/green.ogg',
+ "grenade" = 'sound/announcer/vox_fem/grenade.ogg',
+ "guard" = 'sound/announcer/vox_fem/guard.ogg',
+ "gulf" = 'sound/announcer/vox_fem/gulf.ogg',
+ "gun" = 'sound/announcer/vox_fem/gun.ogg',
+ "guthrie" = 'sound/announcer/vox_fem/guthrie.ogg',
+ "h" = 'sound/announcer/vox_fem/h.ogg',
+ "hacker" = 'sound/announcer/vox_fem/hacker.ogg',
+ "hackers" = 'sound/announcer/vox_fem/hackers.ogg',
+ "had" = 'sound/announcer/vox_fem/had.ogg',
+ "hall" = 'sound/announcer/vox_fem/hall.ogg',
+ "hallway" = 'sound/announcer/vox_fem/hallway.ogg',
+ "halon" = 'sound/announcer/vox_fem/halon.ogg',
+ "handling" = 'sound/announcer/vox_fem/handling.ogg',
+ "hangar" = 'sound/announcer/vox_fem/hangar.ogg',
+ "hard" = 'sound/announcer/vox_fem/hard.ogg',
+ "hardly" = 'sound/announcer/vox_fem/hardly.ogg',
+ "harm" = 'sound/announcer/vox_fem/harm.ogg',
+ "harmful" = 'sound/announcer/vox_fem/harmful.ogg',
+ "harness" = 'sound/announcer/vox_fem/harness.ogg',
+ "harnessed" = 'sound/announcer/vox_fem/harnessed.ogg',
+ "harnessing" = 'sound/announcer/vox_fem/harnessing.ogg',
+ "has" = 'sound/announcer/vox_fem/has.ogg',
+ "have" = 'sound/announcer/vox_fem/have.ogg',
+ "hazard" = 'sound/announcer/vox_fem/hazard.ogg',
+ "he" = 'sound/announcer/vox_fem/he.ogg',
+ "head" = 'sound/announcer/vox_fem/head.ogg',
+ "heal" = 'sound/announcer/vox_fem/heal.ogg',
+ "healed" = 'sound/announcer/vox_fem/healed.ogg',
+ "healing" = 'sound/announcer/vox_fem/healing.ogg',
+ "healium" = 'sound/announcer/vox_fem/healium.ogg',
+ "health" = 'sound/announcer/vox_fem/health.ogg',
+ "heat" = 'sound/announcer/vox_fem/heat.ogg',
+ "heated" = 'sound/announcer/vox_fem/heated.ogg',
+ "heating" = 'sound/announcer/vox_fem/heating.ogg',
+ "helicopter" = 'sound/announcer/vox_fem/helicopter.ogg',
+ "helium" = 'sound/announcer/vox_fem/helium.ogg',
+ "hello" = 'sound/announcer/vox_fem/hello.ogg',
+ "help" = 'sound/announcer/vox_fem/help.ogg',
+ "her" = 'sound/announcer/vox_fem/her.ogg',
+ "here" = 'sound/announcer/vox_fem/here.ogg',
+ "heretic" = 'sound/announcer/vox_fem/heretic.ogg',
+ "hide" = 'sound/announcer/vox_fem/hide.ogg',
+ "high" = 'sound/announcer/vox_fem/high.ogg',
+ "highest" = 'sound/announcer/vox_fem/highest.ogg',
+ "him" = 'sound/announcer/vox_fem/him.ogg',
+ "hit" = 'sound/announcer/vox_fem/hit.ogg',
+ "hole" = 'sound/announcer/vox_fem/hole.ogg',
+ "honk" = 'sound/announcer/vox_fem/honk.ogg',
+ "hop" = 'sound/announcer/vox_fem/hop.ogg',
+ "hos" = 'sound/announcer/vox_fem/hos.ogg',
+ "hostile" = 'sound/announcer/vox_fem/hostile.ogg',
+ "hot" = 'sound/announcer/vox_fem/hot.ogg',
+ "hotel" = 'sound/announcer/vox_fem/hotel.ogg',
+ "hour" = 'sound/announcer/vox_fem/hour.ogg',
+ "hours" = 'sound/announcer/vox_fem/hours.ogg',
+ "how" = 'sound/announcer/vox_fem/how.ogg',
+ "human" = 'sound/announcer/vox_fem/human.ogg',
+ "humanoid" = 'sound/announcer/vox_fem/humanoid.ogg',
+ "humans" = 'sound/announcer/vox_fem/humans.ogg',
+ "hundred" = 'sound/announcer/vox_fem/hundred.ogg',
+ "hunger" = 'sound/announcer/vox_fem/hunger.ogg',
+ "hurt" = 'sound/announcer/vox_fem/hurt.ogg',
+ "hydro" = 'sound/announcer/vox_fem/hydro.ogg',
+ "hydrogen" = 'sound/announcer/vox_fem/hydrogen.ogg',
+ "hydroponics" = 'sound/announcer/vox_fem/hydroponics.ogg',
+ "hyper-noblium" = 'sound/announcer/vox_fem/hyper-noblium.ogg',
+ "i" = 'sound/announcer/vox_fem/i.ogg',
+ "ian" = 'sound/announcer/vox_fem/ian.ogg',
+ "idiot" = 'sound/announcer/vox_fem/idiot.ogg',
+ "if" = 'sound/announcer/vox_fem/if.ogg',
+ "if2" = 'sound/announcer/vox_fem/if2.ogg',
+ "illegal" = 'sound/announcer/vox_fem/illegal.ogg',
+ "immediate" = 'sound/announcer/vox_fem/immediate.ogg',
+ "immediately" = 'sound/announcer/vox_fem/immediately.ogg',
+ "immortal" = 'sound/announcer/vox_fem/immortal.ogg',
+ "impossible" = 'sound/announcer/vox_fem/impossible.ogg',
+ "in" = 'sound/announcer/vox_fem/in.ogg',
+ "inches" = 'sound/announcer/vox_fem/inches.ogg',
+ "india" = 'sound/announcer/vox_fem/india.ogg',
+ "inert" = 'sound/announcer/vox_fem/inert.ogg',
+ "ing" = 'sound/announcer/vox_fem/ing.ogg',
+ "inoperative" = 'sound/announcer/vox_fem/inoperative.ogg',
+ "inside" = 'sound/announcer/vox_fem/inside.ogg',
+ "inspection" = 'sound/announcer/vox_fem/inspection.ogg',
+ "inspector" = 'sound/announcer/vox_fem/inspector.ogg',
+ "interchange" = 'sound/announcer/vox_fem/interchange.ogg',
+ "internal" = 'sound/announcer/vox_fem/internal.ogg',
+ "internals" = 'sound/announcer/vox_fem/internals.ogg',
+ "intruder" = 'sound/announcer/vox_fem/intruder.ogg',
+ "invalid" = 'sound/announcer/vox_fem/invalid.ogg',
+ "invalidate" = 'sound/announcer/vox_fem/invalidate.ogg',
+ "invasion" = 'sound/announcer/vox_fem/invasion.ogg',
+ "irradiate" = 'sound/announcer/vox_fem/irradiate.ogg',
+ "is" = 'sound/announcer/vox_fem/is.ogg',
+ "it" = 'sound/announcer/vox_fem/it.ogg',
+ "its" = 'sound/announcer/vox_fem/its.ogg',
+ "j" = 'sound/announcer/vox_fem/j.ogg',
+ "janitor" = 'sound/announcer/vox_fem/janitor.ogg',
+ "jesus" = 'sound/announcer/vox_fem/jesus.ogg',
+ "job" = 'sound/announcer/vox_fem/job.ogg',
+ "jobs" = 'sound/announcer/vox_fem/jobs.ogg',
+ "johnson" = 'sound/announcer/vox_fem/johnson.ogg',
+ "jolly" = 'sound/announcer/vox_fem/jolly.ogg',
+ "juliet" = 'sound/announcer/vox_fem/juliet.ogg',
+ "k" = 'sound/announcer/vox_fem/k.ogg',
+ "kelvin" = 'sound/announcer/vox_fem/kelvin.ogg',
+ "key" = 'sound/announcer/vox_fem/key.ogg',
+ "kidnapped" = 'sound/announcer/vox_fem/kidnapped.ogg',
+ "kidnapping" = 'sound/announcer/vox_fem/kidnapping.ogg',
+ "kill" = 'sound/announcer/vox_fem/kill.ogg',
+ "killed" = 'sound/announcer/vox_fem/killed.ogg',
+ "killer" = 'sound/announcer/vox_fem/killer.ogg',
+ "kilo" = 'sound/announcer/vox_fem/kilo.ogg',
+ "kit" = 'sound/announcer/vox_fem/kit.ogg',
+ "kitchen" = 'sound/announcer/vox_fem/kitchen.ogg',
+ "l" = 'sound/announcer/vox_fem/l.ogg',
+ "lab" = 'sound/announcer/vox_fem/lab.ogg',
+ "lambda" = 'sound/announcer/vox_fem/lambda.ogg',
+ "large" = 'sound/announcer/vox_fem/large.ogg',
+ "laser" = 'sound/announcer/vox_fem/laser.ogg',
+ "last" = 'sound/announcer/vox_fem/last.ogg',
+ "launch" = 'sound/announcer/vox_fem/launch.ogg',
+ "lavaland" = 'sound/announcer/vox_fem/lavaland.ogg',
+ "law" = 'sound/announcer/vox_fem/law.ogg',
+ "laws" = 'sound/announcer/vox_fem/laws.ogg',
+ "lawyer" = 'sound/announcer/vox_fem/lawyer.ogg',
+ "leak" = 'sound/announcer/vox_fem/leak.ogg',
+ "leave" = 'sound/announcer/vox_fem/leave.ogg',
+ "left" = 'sound/announcer/vox_fem/left.ogg',
+ "legal" = 'sound/announcer/vox_fem/legal.ogg',
+ "level" = 'sound/announcer/vox_fem/level.ogg',
+ "lever" = 'sound/announcer/vox_fem/lever.ogg',
+ "library" = 'sound/announcer/vox_fem/library.ogg',
+ "lie" = 'sound/announcer/vox_fem/lie.ogg',
+ "lieutenant" = 'sound/announcer/vox_fem/lieutenant.ogg',
+ "life" = 'sound/announcer/vox_fem/life.ogg',
+ "lifeform" = 'sound/announcer/vox_fem/lifeform.ogg',
+ "light" = 'sound/announcer/vox_fem/light.ogg',
+ "lightbulb" = 'sound/announcer/vox_fem/lightbulb.ogg',
+ "lima" = 'sound/announcer/vox_fem/lima.ogg',
+ "limit" = 'sound/announcer/vox_fem/limit.ogg',
+ "limited" = 'sound/announcer/vox_fem/limited.ogg',
+ "liquid" = 'sound/announcer/vox_fem/liquid.ogg',
+ "list" = 'sound/announcer/vox_fem/list.ogg',
+ "live" = 'sound/announcer/vox_fem/live.ogg',
+ "live2" = 'sound/announcer/vox_fem/live2.ogg',
+ "lizard" = 'sound/announcer/vox_fem/lizard.ogg',
+ "lizardperson" = 'sound/announcer/vox_fem/lizardperson.ogg',
+ "loading" = 'sound/announcer/vox_fem/loading.ogg',
+ "locate" = 'sound/announcer/vox_fem/locate.ogg',
+ "located" = 'sound/announcer/vox_fem/located.ogg',
+ "location" = 'sound/announcer/vox_fem/location.ogg',
+ "lock" = 'sound/announcer/vox_fem/lock.ogg',
+ "locked" = 'sound/announcer/vox_fem/locked.ogg',
+ "locker" = 'sound/announcer/vox_fem/locker.ogg',
+ "lockout" = 'sound/announcer/vox_fem/lockout.ogg',
+ "long" = 'sound/announcer/vox_fem/long.ogg',
+ "look" = 'sound/announcer/vox_fem/look.ogg',
+ "loop" = 'sound/announcer/vox_fem/loop.ogg',
+ "loose" = 'sound/announcer/vox_fem/loose.ogg',
+ "lot" = 'sound/announcer/vox_fem/lot.ogg',
+ "lower" = 'sound/announcer/vox_fem/lower.ogg',
+ "lowest" = 'sound/announcer/vox_fem/lowest.ogg',
+ "lusty" = 'sound/announcer/vox_fem/lusty.ogg',
+ "m" = 'sound/announcer/vox_fem/m.ogg',
+ "machine" = 'sound/announcer/vox_fem/machine.ogg',
+ "made" = 'sound/announcer/vox_fem/made.ogg',
+ "magic" = 'sound/announcer/vox_fem/magic.ogg',
+ "magnetic" = 'sound/announcer/vox_fem/magnetic.ogg',
+ "main" = 'sound/announcer/vox_fem/main.ogg',
+ "maintainer" = 'sound/announcer/vox_fem/maintainer.ogg',
+ "maintenance" = 'sound/announcer/vox_fem/maintenance.ogg',
+ "major" = 'sound/announcer/vox_fem/major.ogg',
+ "making" = 'sound/announcer/vox_fem/making.ogg',
+ "malfunction" = 'sound/announcer/vox_fem/malfunction.ogg',
+ "man" = 'sound/announcer/vox_fem/man.ogg',
+ "many" = 'sound/announcer/vox_fem/many.ogg',
+ "mass" = 'sound/announcer/vox_fem/mass.ogg',
+ "materials" = 'sound/announcer/vox_fem/materials.ogg',
+ "maximum" = 'sound/announcer/vox_fem/maximum.ogg',
+ "may" = 'sound/announcer/vox_fem/may.ogg',
+ "me" = 'sound/announcer/vox_fem/me.ogg',
+ "mean" = 'sound/announcer/vox_fem/mean.ogg',
+ "means" = 'sound/announcer/vox_fem/means.ogg',
+ "meat" = 'sound/announcer/vox_fem/meat.ogg',
+ "medbay" = 'sound/announcer/vox_fem/medbay.ogg',
+ "medical" = 'sound/announcer/vox_fem/medical.ogg',
+ "medium" = 'sound/announcer/vox_fem/medium.ogg',
+ "megafauna" = 'sound/announcer/vox_fem/megafauna.ogg',
+ "men" = 'sound/announcer/vox_fem/men.ogg',
+ "mercy" = 'sound/announcer/vox_fem/mercy.ogg',
+ "mesa" = 'sound/announcer/vox_fem/mesa.ogg',
+ "meson" = 'sound/announcer/vox_fem/meson.ogg',
+ "message" = 'sound/announcer/vox_fem/message.ogg',
+ "meter" = 'sound/announcer/vox_fem/meter.ogg',
+ "method" = 'sound/announcer/vox_fem/method.ogg',
+ "miasma" = 'sound/announcer/vox_fem/miasma.ogg',
+ "micro" = 'sound/announcer/vox_fem/micro.ogg',
+ "middle" = 'sound/announcer/vox_fem/middle.ogg',
+ "mike" = 'sound/announcer/vox_fem/mike.ogg',
+ "miles" = 'sound/announcer/vox_fem/miles.ogg',
+ "military" = 'sound/announcer/vox_fem/military.ogg',
+ "milli" = 'sound/announcer/vox_fem/milli.ogg',
+ "million" = 'sound/announcer/vox_fem/million.ogg',
+ "mime" = 'sound/announcer/vox_fem/mime.ogg',
+ "minefield" = 'sound/announcer/vox_fem/minefield.ogg',
+ "miner" = 'sound/announcer/vox_fem/miner.ogg',
+ "minimum" = 'sound/announcer/vox_fem/minimum.ogg',
+ "minor" = 'sound/announcer/vox_fem/minor.ogg',
+ "minute" = 'sound/announcer/vox_fem/minute.ogg',
+ "minutes" = 'sound/announcer/vox_fem/minutes.ogg',
+ "mister" = 'sound/announcer/vox_fem/mister.ogg',
+ "mixture" = 'sound/announcer/vox_fem/mixture.ogg',
+ "mode" = 'sound/announcer/vox_fem/mode.ogg',
+ "modification" = 'sound/announcer/vox_fem/modification.ogg',
+ "money" = 'sound/announcer/vox_fem/money.ogg',
+ "monkey" = 'sound/announcer/vox_fem/monkey.ogg',
+ "most" = 'sound/announcer/vox_fem/most.ogg',
+ "moth" = 'sound/announcer/vox_fem/moth.ogg',
+ "mothperson" = 'sound/announcer/vox_fem/mothperson.ogg',
+ "motor" = 'sound/announcer/vox_fem/motor.ogg',
+ "motorpool" = 'sound/announcer/vox_fem/motorpool.ogg',
+ "move" = 'sound/announcer/vox_fem/move.ogg',
+ "moved" = 'sound/announcer/vox_fem/moved.ogg',
+ "moving" = 'sound/announcer/vox_fem/moving.ogg',
+ "multitude" = 'sound/announcer/vox_fem/multitude.ogg',
+ "murder" = 'sound/announcer/vox_fem/murder.ogg',
+ "murderer" = 'sound/announcer/vox_fem/murderer.ogg',
+ "must" = 'sound/announcer/vox_fem/must.ogg',
+ "my" = 'sound/announcer/vox_fem/my.ogg',
+ "mythic" = 'sound/announcer/vox_fem/mythic.ogg',
+ "n" = 'sound/announcer/vox_fem/n.ogg',
+ "nanotrasen" = 'sound/announcer/vox_fem/nanotrasen.ogg',
+ "near" = 'sound/announcer/vox_fem/near.ogg',
+ "nearest" = 'sound/announcer/vox_fem/nearest.ogg',
+ "nearly" = 'sound/announcer/vox_fem/nearly.ogg',
+ "need" = 'sound/announcer/vox_fem/need.ogg',
+ "never" = 'sound/announcer/vox_fem/never.ogg',
+ "nice" = 'sound/announcer/vox_fem/nice.ogg',
+ "night" = 'sound/announcer/vox_fem/night.ogg',
+ "nine" = 'sound/announcer/vox_fem/nine.ogg',
+ "nineteen" = 'sound/announcer/vox_fem/nineteen.ogg',
+ "ninety" = 'sound/announcer/vox_fem/ninety.ogg',
+ "nitrogen" = 'sound/announcer/vox_fem/nitrogen.ogg',
+ "no" = 'sound/announcer/vox_fem/no.ogg',
+ "nominal" = 'sound/announcer/vox_fem/nominal.ogg',
+ "none" = 'sound/announcer/vox_fem/none.ogg',
+ "normal" = 'sound/announcer/vox_fem/normal.ogg',
+ "normally" = 'sound/announcer/vox_fem/normally.ogg',
+ "north" = 'sound/announcer/vox_fem/north.ogg',
+ "northeast" = 'sound/announcer/vox_fem/northeast.ogg',
+ "northwest" = 'sound/announcer/vox_fem/northwest.ogg',
+ "not" = 'sound/announcer/vox_fem/not.ogg',
+ "notably" = 'sound/announcer/vox_fem/notably.ogg',
+ "november" = 'sound/announcer/vox_fem/november.ogg',
+ "now" = 'sound/announcer/vox_fem/now.ogg',
+ "nuclear" = 'sound/announcer/vox_fem/nuclear.ogg',
+ "nuke" = 'sound/announcer/vox_fem/nuke.ogg',
+ "number" = 'sound/announcer/vox_fem/number.ogg',
+ "o" = 'sound/announcer/vox_fem/o.ogg',
+ "object" = 'sound/announcer/vox_fem/object.ogg',
+ "objective" = 'sound/announcer/vox_fem/objective.ogg',
+ "obliterate" = 'sound/announcer/vox_fem/obliterate.ogg',
+ "obliterated" = 'sound/announcer/vox_fem/obliterated.ogg',
+ "obliterating" = 'sound/announcer/vox_fem/obliterating.ogg',
+ "observation" = 'sound/announcer/vox_fem/observation.ogg',
+ "obtain" = 'sound/announcer/vox_fem/obtain.ogg',
+ "of" = 'sound/announcer/vox_fem/of.ogg',
+ "off" = 'sound/announcer/vox_fem/off.ogg',
+ "office" = 'sound/announcer/vox_fem/office.ogg',
+ "officer" = 'sound/announcer/vox_fem/officer.ogg',
+ "oh" = 'sound/announcer/vox_fem/oh.ogg',
+ "ok" = 'sound/announcer/vox_fem/ok.ogg',
+ "okay" = 'sound/announcer/vox_fem/okay.ogg',
+ "on" = 'sound/announcer/vox_fem/on.ogg',
+ "once" = 'sound/announcer/vox_fem/once.ogg',
+ "one" = 'sound/announcer/vox_fem/one.ogg',
+ "oof" = 'sound/announcer/vox_fem/oof.ogg',
+ "open" = 'sound/announcer/vox_fem/open.ogg',
+ "opened" = 'sound/announcer/vox_fem/opened.ogg',
+ "opening" = 'sound/announcer/vox_fem/opening.ogg',
+ "operating" = 'sound/announcer/vox_fem/operating.ogg',
+ "operations" = 'sound/announcer/vox_fem/operations.ogg',
+ "operative" = 'sound/announcer/vox_fem/operative.ogg',
+ "option" = 'sound/announcer/vox_fem/option.ogg',
+ "or" = 'sound/announcer/vox_fem/or.ogg',
+ "order" = 'sound/announcer/vox_fem/order.ogg',
+ "ordered" = 'sound/announcer/vox_fem/ordered.ogg',
+ "ordering" = 'sound/announcer/vox_fem/ordering.ogg',
+ "organic" = 'sound/announcer/vox_fem/organic.ogg',
+ "oscar" = 'sound/announcer/vox_fem/oscar.ogg',
+ "out" = 'sound/announcer/vox_fem/out.ogg',
+ "output" = 'sound/announcer/vox_fem/output.ogg',
+ "outside" = 'sound/announcer/vox_fem/outside.ogg',
+ "over" = 'sound/announcer/vox_fem/over.ogg',
+ "overload" = 'sound/announcer/vox_fem/overload.ogg',
+ "override" = 'sound/announcer/vox_fem/override.ogg',
+ "own" = 'sound/announcer/vox_fem/own.ogg',
+ "oxygen" = 'sound/announcer/vox_fem/oxygen.ogg',
+ "p" = 'sound/announcer/vox_fem/p.ogg',
+ "pacification" = 'sound/announcer/vox_fem/pacification.ogg',
+ "pacify" = 'sound/announcer/vox_fem/pacify.ogg',
+ "pain" = 'sound/announcer/vox_fem/pain.ogg',
+ "pal" = 'sound/announcer/vox_fem/pal.ogg',
+ "panel" = 'sound/announcer/vox_fem/panel.ogg',
+ "panting" = 'sound/announcer/vox_fem/panting.ogg',
+ "pathetic" = 'sound/announcer/vox_fem/pathetic.ogg',
+ "pda" = 'sound/announcer/vox_fem/pda.ogg',
+ "percent" = 'sound/announcer/vox_fem/percent.ogg',
+ "perfect" = 'sound/announcer/vox_fem/perfect.ogg',
+ "perhaps" = 'sound/announcer/vox_fem/perhaps.ogg',
+ "perimeter" = 'sound/announcer/vox_fem/perimeter.ogg',
+ "permitted" = 'sound/announcer/vox_fem/permitted.ogg',
+ "personal" = 'sound/announcer/vox_fem/personal.ogg',
+ "personnel" = 'sound/announcer/vox_fem/personnel.ogg',
+ "pipe" = 'sound/announcer/vox_fem/pipe.ogg',
+ "piping" = 'sound/announcer/vox_fem/piping.ogg',
+ "piss" = 'sound/announcer/vox_fem/piss.ogg',
+ "plant" = 'sound/announcer/vox_fem/plant.ogg',
+ "plasma" = 'sound/announcer/vox_fem/plasma.ogg',
+ "plasmaman" = 'sound/announcer/vox_fem/plasmaman.ogg',
+ "platform" = 'sound/announcer/vox_fem/platform.ogg',
+ "plating" = 'sound/announcer/vox_fem/plating.ogg',
+ "plausible" = 'sound/announcer/vox_fem/plausible.ogg',
+ "please" = 'sound/announcer/vox_fem/please.ogg',
+ "pluoxium" = 'sound/announcer/vox_fem/pluoxium.ogg',
+ "point" = 'sound/announcer/vox_fem/point.ogg',
+ "port" = 'sound/announcer/vox_fem/port.ogg',
+ "portal" = 'sound/announcer/vox_fem/portal.ogg',
+ "portion" = 'sound/announcer/vox_fem/portion.ogg',
+ "possible" = 'sound/announcer/vox_fem/possible.ogg',
+ "power" = 'sound/announcer/vox_fem/power.ogg',
+ "powered" = 'sound/announcer/vox_fem/powered.ogg',
+ "powering" = 'sound/announcer/vox_fem/powering.ogg',
+ "premature" = 'sound/announcer/vox_fem/premature.ogg',
+ "prematurely" = 'sound/announcer/vox_fem/prematurely.ogg',
+ "presence" = 'sound/announcer/vox_fem/presence.ogg',
+ "present" = 'sound/announcer/vox_fem/present.ogg',
+ "presents" = 'sound/announcer/vox_fem/presents.ogg',
+ "press" = 'sound/announcer/vox_fem/press.ogg',
+ "pressure" = 'sound/announcer/vox_fem/pressure.ogg',
+ "primary" = 'sound/announcer/vox_fem/primary.ogg',
+ "priority" = 'sound/announcer/vox_fem/priority.ogg',
+ "prison" = 'sound/announcer/vox_fem/prison.ogg',
+ "prisoner" = 'sound/announcer/vox_fem/prisoner.ogg',
+ "proceed" = 'sound/announcer/vox_fem/proceed.ogg',
+ "processing" = 'sound/announcer/vox_fem/processing.ogg',
+ "progress" = 'sound/announcer/vox_fem/progress.ogg',
+ "projectile" = 'sound/announcer/vox_fem/projectile.ogg',
+ "proper" = 'sound/announcer/vox_fem/proper.ogg',
+ "propulsion" = 'sound/announcer/vox_fem/propulsion.ogg',
+ "prosecute" = 'sound/announcer/vox_fem/prosecute.ogg',
+ "protect" = 'sound/announcer/vox_fem/protect.ogg',
+ "protected" = 'sound/announcer/vox_fem/protected.ogg',
+ "protection" = 'sound/announcer/vox_fem/protection.ogg',
+ "protective" = 'sound/announcer/vox_fem/protective.ogg',
+ "proto-nitrate" = 'sound/announcer/vox_fem/proto-nitrate.ogg',
+ "pull" = 'sound/announcer/vox_fem/pull.ogg',
+ "pulled" = 'sound/announcer/vox_fem/pulled.ogg',
+ "pulling" = 'sound/announcer/vox_fem/pulling.ogg',
+ "pump" = 'sound/announcer/vox_fem/pump.ogg',
+ "pumps" = 'sound/announcer/vox_fem/pumps.ogg',
+ "push" = 'sound/announcer/vox_fem/push.ogg',
+ "put" = 'sound/announcer/vox_fem/put.ogg',
+ "q" = 'sound/announcer/vox_fem/q.ogg',
+ "quantum" = 'sound/announcer/vox_fem/quantum.ogg',
+ "quarantine" = 'sound/announcer/vox_fem/quarantine.ogg',
+ "quartermaster" = 'sound/announcer/vox_fem/quartermaster.ogg',
+ "quebec" = 'sound/announcer/vox_fem/quebec.ogg',
+ "queen" = 'sound/announcer/vox_fem/queen.ogg',
+ "question" = 'sound/announcer/vox_fem/question.ogg',
+ "questionable" = 'sound/announcer/vox_fem/questionable.ogg',
+ "questioning" = 'sound/announcer/vox_fem/questioning.ogg',
+ "quick" = 'sound/announcer/vox_fem/quick.ogg',
+ "quit" = 'sound/announcer/vox_fem/quit.ogg',
+ "r" = 'sound/announcer/vox_fem/r.ogg',
+ "radiation" = 'sound/announcer/vox_fem/radiation.ogg',
+ "radioactive" = 'sound/announcer/vox_fem/radioactive.ogg',
+ "rads" = 'sound/announcer/vox_fem/rads.ogg',
+ "raider" = 'sound/announcer/vox_fem/raider.ogg',
+ "raiders" = 'sound/announcer/vox_fem/raiders.ogg',
+ "rapid" = 'sound/announcer/vox_fem/rapid.ogg',
+ "reach" = 'sound/announcer/vox_fem/reach.ogg',
+ "reached" = 'sound/announcer/vox_fem/reached.ogg',
+ "reactor" = 'sound/announcer/vox_fem/reactor.ogg',
+ "red" = 'sound/announcer/vox_fem/red.ogg',
+ "relay" = 'sound/announcer/vox_fem/relay.ogg',
+ "release" = 'sound/announcer/vox_fem/release.ogg',
+ "released" = 'sound/announcer/vox_fem/released.ogg',
+ "releasing" = 'sound/announcer/vox_fem/releasing.ogg',
+ "remaining" = 'sound/announcer/vox_fem/remaining.ogg',
+ "removal" = 'sound/announcer/vox_fem/removal.ogg',
+ "remove" = 'sound/announcer/vox_fem/remove.ogg',
+ "removed" = 'sound/announcer/vox_fem/removed.ogg',
+ "removing" = 'sound/announcer/vox_fem/removing.ogg',
+ "renegade" = 'sound/announcer/vox_fem/renegade.ogg',
+ "repair" = 'sound/announcer/vox_fem/repair.ogg',
+ "report" = 'sound/announcer/vox_fem/report.ogg',
+ "reports" = 'sound/announcer/vox_fem/reports.ogg',
+ "request" = 'sound/announcer/vox_fem/request.ogg',
+ "requested" = 'sound/announcer/vox_fem/requested.ogg',
+ "requesting" = 'sound/announcer/vox_fem/requesting.ogg',
+ "require" = 'sound/announcer/vox_fem/require.ogg',
+ "required" = 'sound/announcer/vox_fem/required.ogg',
+ "research" = 'sound/announcer/vox_fem/research.ogg',
+ "resevoir" = 'sound/announcer/vox_fem/resevoir.ogg',
+ "resistance" = 'sound/announcer/vox_fem/resistance.ogg',
+ "resistant" = 'sound/announcer/vox_fem/resistant.ogg',
+ "resisting" = 'sound/announcer/vox_fem/resisting.ogg',
+ "resonance" = 'sound/announcer/vox_fem/resonance.ogg',
+ "rest" = 'sound/announcer/vox_fem/rest.ogg',
+ "restoration" = 'sound/announcer/vox_fem/restoration.ogg',
+ "revolution" = 'sound/announcer/vox_fem/revolution.ogg',
+ "revolutionary" = 'sound/announcer/vox_fem/revolutionary.ogg',
+ "right" = 'sound/announcer/vox_fem/right.ogg',
+ "riot" = 'sound/announcer/vox_fem/riot.ogg',
+ "roboticist" = 'sound/announcer/vox_fem/roboticist.ogg',
+ "rocket" = 'sound/announcer/vox_fem/rocket.ogg',
+ "roger" = 'sound/announcer/vox_fem/roger.ogg',
+ "rogue" = 'sound/announcer/vox_fem/rogue.ogg',
+ "romeo" = 'sound/announcer/vox_fem/romeo.ogg',
+ "room" = 'sound/announcer/vox_fem/room.ogg',
+ "round" = 'sound/announcer/vox_fem/round.ogg',
+ "run" = 'sound/announcer/vox_fem/run.ogg',
+ "rune" = 'sound/announcer/vox_fem/rune.ogg',
+ "runtime" = 'sound/announcer/vox_fem/runtime.ogg',
+ "s" = 'sound/announcer/vox_fem/s.ogg',
+ "sabotage" = 'sound/announcer/vox_fem/sabotage.ogg',
+ "sabotaged" = 'sound/announcer/vox_fem/sabotaged.ogg',
+ "sabotaging" = 'sound/announcer/vox_fem/sabotaging.ogg',
+ "safe" = 'sound/announcer/vox_fem/safe.ogg',
+ "safety" = 'sound/announcer/vox_fem/safety.ogg',
+ "sairhorn" = 'sound/announcer/vox_fem/sairhorn.ogg',
+ "same" = 'sound/announcer/vox_fem/same.ogg',
+ "sarah" = 'sound/announcer/vox_fem/sarah.ogg',
+ "sargeant" = 'sound/announcer/vox_fem/sargeant.ogg',
+ "satellite" = 'sound/announcer/vox_fem/satellite.ogg',
+ "save" = 'sound/announcer/vox_fem/save.ogg',
+ "saw" = 'sound/announcer/vox_fem/saw.ogg',
+ "scan" = 'sound/announcer/vox_fem/scan.ogg',
+ "scanned" = 'sound/announcer/vox_fem/scanned.ogg',
+ "scanner" = 'sound/announcer/vox_fem/scanner.ogg',
+ "scanners" = 'sound/announcer/vox_fem/scanners.ogg',
+ "scanning" = 'sound/announcer/vox_fem/scanning.ogg',
+ "scensor" = 'sound/announcer/vox_fem/scensor.ogg',
+ "science" = 'sound/announcer/vox_fem/science.ogg',
+ "scientist" = 'sound/announcer/vox_fem/scientist.ogg',
+ "scream" = 'sound/announcer/vox_fem/scream.ogg',
+ "screen" = 'sound/announcer/vox_fem/screen.ogg',
+ "screw" = 'sound/announcer/vox_fem/screw.ogg',
+ "search" = 'sound/announcer/vox_fem/search.ogg',
+ "second" = 'sound/announcer/vox_fem/second.ogg',
+ "secondary" = 'sound/announcer/vox_fem/secondary.ogg',
+ "seconds" = 'sound/announcer/vox_fem/seconds.ogg',
+ "section" = 'sound/announcer/vox_fem/section.ogg',
+ "sector" = 'sound/announcer/vox_fem/sector.ogg',
+ "secure" = 'sound/announcer/vox_fem/secure.ogg',
+ "secured" = 'sound/announcer/vox_fem/secured.ogg',
+ "security" = 'sound/announcer/vox_fem/security.ogg',
+ "seen" = 'sound/announcer/vox_fem/seen.ogg',
+ "select" = 'sound/announcer/vox_fem/select.ogg',
+ "selected" = 'sound/announcer/vox_fem/selected.ogg',
+ "self" = 'sound/announcer/vox_fem/self.ogg',
+ "sensors" = 'sound/announcer/vox_fem/sensors.ogg',
+ "server" = 'sound/announcer/vox_fem/server.ogg',
+ "service" = 'sound/announcer/vox_fem/service.ogg',
+ "set" = 'sound/announcer/vox_fem/set.ogg',
+ "seven" = 'sound/announcer/vox_fem/seven.ogg',
+ "seventeen" = 'sound/announcer/vox_fem/seventeen.ogg',
+ "seventy" = 'sound/announcer/vox_fem/seventy.ogg',
+ "sever" = 'sound/announcer/vox_fem/sever.ogg',
+ "severe" = 'sound/announcer/vox_fem/severe.ogg',
+ "severed" = 'sound/announcer/vox_fem/severed.ogg',
+ "severing" = 'sound/announcer/vox_fem/severing.ogg',
+ "sewage" = 'sound/announcer/vox_fem/sewage.ogg',
+ "sewer" = 'sound/announcer/vox_fem/sewer.ogg',
+ "shaft" = 'sound/announcer/vox_fem/shaft.ogg',
+ "shame" = 'sound/announcer/vox_fem/shame.ogg',
+ "shameful" = 'sound/announcer/vox_fem/shameful.ogg',
+ "shameless" = 'sound/announcer/vox_fem/shameless.ogg',
+ "shard" = 'sound/announcer/vox_fem/shard.ogg',
+ "she" = 'sound/announcer/vox_fem/she.ogg',
+ "shield" = 'sound/announcer/vox_fem/shield.ogg',
+ "shift" = 'sound/announcer/vox_fem/shift.ogg',
+ "shifts" = 'sound/announcer/vox_fem/shifts.ogg',
+ "shipment" = 'sound/announcer/vox_fem/shipment.ogg',
+ "shirt" = 'sound/announcer/vox_fem/shirt.ogg',
+ "shit" = 'sound/announcer/vox_fem/shit.ogg',
+ "shitlord" = 'sound/announcer/vox_fem/shitlord.ogg',
+ "shits" = 'sound/announcer/vox_fem/shits.ogg',
+ "shitting" = 'sound/announcer/vox_fem/shitting.ogg',
+ "shock" = 'sound/announcer/vox_fem/shock.ogg',
+ "shonk" = 'sound/announcer/vox_fem/shonk.ogg',
+ "shoot" = 'sound/announcer/vox_fem/shoot.ogg',
+ "shower" = 'sound/announcer/vox_fem/shower.ogg',
+ "shut" = 'sound/announcer/vox_fem/shut.ogg',
+ "shuttle" = 'sound/announcer/vox_fem/shuttle.ogg',
+ "sick" = 'sound/announcer/vox_fem/sick.ogg',
+ "side" = 'sound/announcer/vox_fem/side.ogg',
+ "sides" = 'sound/announcer/vox_fem/sides.ogg',
+ "sierra" = 'sound/announcer/vox_fem/sierra.ogg',
+ "sight" = 'sound/announcer/vox_fem/sight.ogg',
+ "silicon" = 'sound/announcer/vox_fem/silicon.ogg',
+ "silo" = 'sound/announcer/vox_fem/silo.ogg',
+ "single" = 'sound/announcer/vox_fem/single.ogg',
+ "singularity" = 'sound/announcer/vox_fem/singularity.ogg',
+ "siphon" = 'sound/announcer/vox_fem/siphon.ogg',
+ "siphoning" = 'sound/announcer/vox_fem/siphoning.ogg',
+ "six" = 'sound/announcer/vox_fem/six.ogg',
+ "sixteen" = 'sound/announcer/vox_fem/sixteen.ogg',
+ "sixty" = 'sound/announcer/vox_fem/sixty.ogg',
+ "skeleton" = 'sound/announcer/vox_fem/skeleton.ogg',
+ "slaughter" = 'sound/announcer/vox_fem/slaughter.ogg',
+ "slime" = 'sound/announcer/vox_fem/slime.ogg',
+ "slip" = 'sound/announcer/vox_fem/slip.ogg',
+ "slippery" = 'sound/announcer/vox_fem/slippery.ogg',
+ "slow" = 'sound/announcer/vox_fem/slow.ogg',
+ "sm" = 'sound/announcer/vox_fem/sm.ogg',
+ "small" = 'sound/announcer/vox_fem/small.ogg',
+ "sockmuncher" = 'sound/announcer/vox_fem/sockmuncher.ogg',
+ "soft" = 'sound/announcer/vox_fem/soft.ogg',
+ "solar" = 'sound/announcer/vox_fem/solar.ogg',
+ "solars" = 'sound/announcer/vox_fem/solars.ogg',
+ "soldier" = 'sound/announcer/vox_fem/soldier.ogg',
+ "some" = 'sound/announcer/vox_fem/some.ogg',
+ "someone" = 'sound/announcer/vox_fem/someone.ogg',
+ "something" = 'sound/announcer/vox_fem/something.ogg',
+ "son" = 'sound/announcer/vox_fem/son.ogg',
+ "sorry" = 'sound/announcer/vox_fem/sorry.ogg',
+ "source" = 'sound/announcer/vox_fem/source.ogg',
+ "south" = 'sound/announcer/vox_fem/south.ogg',
+ "southeast" = 'sound/announcer/vox_fem/southeast.ogg',
+ "southwest" = 'sound/announcer/vox_fem/southwest.ogg',
+ "space" = 'sound/announcer/vox_fem/space.ogg',
+ "special" = 'sound/announcer/vox_fem/special.ogg',
+ "spew" = 'sound/announcer/vox_fem/spew.ogg',
+ "squad" = 'sound/announcer/vox_fem/squad.ogg',
+ "square" = 'sound/announcer/vox_fem/square.ogg',
+ "ss13" = 'sound/announcer/vox_fem/ss13.ogg',
+ "stairway" = 'sound/announcer/vox_fem/stairway.ogg',
+ "starboard" = 'sound/announcer/vox_fem/starboard.ogg',
+ "start" = 'sound/announcer/vox_fem/start.ogg',
+ "starts" = 'sound/announcer/vox_fem/starts.ogg',
+ "station" = 'sound/announcer/vox_fem/station.ogg',
+ "stations" = 'sound/announcer/vox_fem/stations.ogg',
+ "stationwide" = 'sound/announcer/vox_fem/stationwide.ogg',
+ "status" = 'sound/announcer/vox_fem/status.ogg',
+ "stay" = 'sound/announcer/vox_fem/stay.ogg',
+ "sterile" = 'sound/announcer/vox_fem/sterile.ogg',
+ "sterilization" = 'sound/announcer/vox_fem/sterilization.ogg',
+ "stop" = 'sound/announcer/vox_fem/stop.ogg',
+ "storage" = 'sound/announcer/vox_fem/storage.ogg',
+ "strong" = 'sound/announcer/vox_fem/strong.ogg',
+ "stuck" = 'sound/announcer/vox_fem/stuck.ogg',
+ "sub" = 'sound/announcer/vox_fem/sub.ogg',
+ "subsurface" = 'sound/announcer/vox_fem/subsurface.ogg',
+ "such" = 'sound/announcer/vox_fem/such.ogg',
+ "sudden" = 'sound/announcer/vox_fem/sudden.ogg',
+ "suffer" = 'sound/announcer/vox_fem/suffer.ogg',
+ "suit" = 'sound/announcer/vox_fem/suit.ogg',
+ "suited" = 'sound/announcer/vox_fem/suited.ogg',
+ "super" = 'sound/announcer/vox_fem/super.ogg',
+ "superconducting" = 'sound/announcer/vox_fem/superconducting.ogg',
+ "supercooled" = 'sound/announcer/vox_fem/supercooled.ogg',
+ "supermatter" = 'sound/announcer/vox_fem/supermatter.ogg',
+ "supply" = 'sound/announcer/vox_fem/supply.ogg',
+ "surface" = 'sound/announcer/vox_fem/surface.ogg',
+ "surrender" = 'sound/announcer/vox_fem/surrender.ogg',
+ "surround" = 'sound/announcer/vox_fem/surround.ogg',
+ "surrounded" = 'sound/announcer/vox_fem/surrounded.ogg',
+ "sweating" = 'sound/announcer/vox_fem/sweating.ogg',
+ "swhitenoise" = 'sound/announcer/vox_fem/swhitenoise.ogg',
+ "switch" = 'sound/announcer/vox_fem/switch.ogg',
+ "syndicate" = 'sound/announcer/vox_fem/syndicate.ogg',
+ "system" = 'sound/announcer/vox_fem/system.ogg',
+ "systems" = 'sound/announcer/vox_fem/systems.ogg',
+ "t" = 'sound/announcer/vox_fem/t.ogg',
+ "table" = 'sound/announcer/vox_fem/table.ogg',
+ "tactical" = 'sound/announcer/vox_fem/tactical.ogg',
+ "taildragger" = 'sound/announcer/vox_fem/taildragger.ogg',
+ "take" = 'sound/announcer/vox_fem/take.ogg',
+ "talk" = 'sound/announcer/vox_fem/talk.ogg',
+ "tampered" = 'sound/announcer/vox_fem/tampered.ogg',
+ "tango" = 'sound/announcer/vox_fem/tango.ogg',
+ "tank" = 'sound/announcer/vox_fem/tank.ogg',
+ "target" = 'sound/announcer/vox_fem/target.ogg',
+ "team" = 'sound/announcer/vox_fem/team.ogg',
+ "tech" = 'sound/announcer/vox_fem/tech.ogg',
+ "technician" = 'sound/announcer/vox_fem/technician.ogg',
+ "technology" = 'sound/announcer/vox_fem/technology.ogg',
+ "teleporter" = 'sound/announcer/vox_fem/teleporter.ogg',
+ "temperature" = 'sound/announcer/vox_fem/temperature.ogg',
+ "temporal" = 'sound/announcer/vox_fem/temporal.ogg',
+ "ten" = 'sound/announcer/vox_fem/ten.ogg',
+ "terminal" = 'sound/announcer/vox_fem/terminal.ogg',
+ "terminate" = 'sound/announcer/vox_fem/terminate.ogg',
+ "terminated" = 'sound/announcer/vox_fem/terminated.ogg',
+ "termination" = 'sound/announcer/vox_fem/termination.ogg',
+ "tesla" = 'sound/announcer/vox_fem/tesla.ogg',
+ "test" = 'sound/announcer/vox_fem/test.ogg',
+ "text" = 'sound/announcer/vox_fem/text.ogg',
+ "thank" = 'sound/announcer/vox_fem/thank.ogg',
+ "thanks" = 'sound/announcer/vox_fem/thanks.ogg',
+ "that" = 'sound/announcer/vox_fem/that.ogg',
+ "the" = 'sound/announcer/vox_fem/the.ogg',
+ "theater" = 'sound/announcer/vox_fem/theater.ogg',
+ "them" = 'sound/announcer/vox_fem/them.ogg',
+ "then" = 'sound/announcer/vox_fem/then.ogg',
+ "there" = 'sound/announcer/vox_fem/there.ogg',
+ "they" = 'sound/announcer/vox_fem/they.ogg',
+ "third" = 'sound/announcer/vox_fem/third.ogg',
+ "thirteen" = 'sound/announcer/vox_fem/thirteen.ogg',
+ "thirty" = 'sound/announcer/vox_fem/thirty.ogg',
+ "this" = 'sound/announcer/vox_fem/this.ogg',
+ "those" = 'sound/announcer/vox_fem/those.ogg',
+ "thousand" = 'sound/announcer/vox_fem/thousand.ogg',
+ "threat" = 'sound/announcer/vox_fem/threat.ogg',
+ "three" = 'sound/announcer/vox_fem/three.ogg',
+ "through" = 'sound/announcer/vox_fem/through.ogg',
+ "tick" = 'sound/announcer/vox_fem/tick.ogg',
+ "tide" = 'sound/announcer/vox_fem/tide.ogg',
+ "tile" = 'sound/announcer/vox_fem/tile.ogg',
+ "time" = 'sound/announcer/vox_fem/time.ogg',
+ "tiny" = 'sound/announcer/vox_fem/tiny.ogg',
+ "to" = 'sound/announcer/vox_fem/to.ogg',
+ "top" = 'sound/announcer/vox_fem/top.ogg',
+ "topside" = 'sound/announcer/vox_fem/topside.ogg',
+ "touch" = 'sound/announcer/vox_fem/touch.ogg',
+ "touched" = 'sound/announcer/vox_fem/touched.ogg',
+ "touching" = 'sound/announcer/vox_fem/touching.ogg',
+ "towards" = 'sound/announcer/vox_fem/towards.ogg',
+ "toxins" = 'sound/announcer/vox_fem/toxins.ogg',
+ "track" = 'sound/announcer/vox_fem/track.ogg',
+ "train" = 'sound/announcer/vox_fem/train.ogg',
+ "traitor" = 'sound/announcer/vox_fem/traitor.ogg',
+ "transportation" = 'sound/announcer/vox_fem/transportation.ogg',
+ "trigger" = 'sound/announcer/vox_fem/trigger.ogg',
+ "triggered" = 'sound/announcer/vox_fem/triggered.ogg',
+ "triggering" = 'sound/announcer/vox_fem/triggering.ogg',
+ "triple" = 'sound/announcer/vox_fem/triple.ogg',
+ "tritium" = 'sound/announcer/vox_fem/tritium.ogg',
+ "truck" = 'sound/announcer/vox_fem/truck.ogg',
+ "true" = 'sound/announcer/vox_fem/true.ogg',
+ "tunnel" = 'sound/announcer/vox_fem/tunnel.ogg',
+ "turn" = 'sound/announcer/vox_fem/turn.ogg',
+ "turned" = 'sound/announcer/vox_fem/turned.ogg',
+ "turret" = 'sound/announcer/vox_fem/turret.ogg',
+ "twelve" = 'sound/announcer/vox_fem/twelve.ogg',
+ "twenty" = 'sound/announcer/vox_fem/twenty.ogg',
+ "two" = 'sound/announcer/vox_fem/two.ogg',
+ "u" = 'sound/announcer/vox_fem/u.ogg',
+ "ugh" = 'sound/announcer/vox_fem/ugh.ogg',
+ "ughh" = 'sound/announcer/vox_fem/ughh.ogg',
+ "unable" = 'sound/announcer/vox_fem/unable.ogg',
+ "unauthorized" = 'sound/announcer/vox_fem/unauthorized.ogg',
+ "under" = 'sound/announcer/vox_fem/under.ogg',
+ "uniform" = 'sound/announcer/vox_fem/uniform.ogg',
+ "unique" = 'sound/announcer/vox_fem/unique.ogg',
+ "unknown" = 'sound/announcer/vox_fem/unknown.ogg',
+ "unlocked" = 'sound/announcer/vox_fem/unlocked.ogg',
+ "unsafe" = 'sound/announcer/vox_fem/unsafe.ogg',
+ "until" = 'sound/announcer/vox_fem/until.ogg',
+ "unwrench" = 'sound/announcer/vox_fem/unwrench.ogg',
+ "unwrenching" = 'sound/announcer/vox_fem/unwrenching.ogg',
+ "up" = 'sound/announcer/vox_fem/up.ogg',
+ "update" = 'sound/announcer/vox_fem/update.ogg',
+ "updated" = 'sound/announcer/vox_fem/updated.ogg',
+ "updating" = 'sound/announcer/vox_fem/updating.ogg',
+ "upload" = 'sound/announcer/vox_fem/upload.ogg',
+ "upper" = 'sound/announcer/vox_fem/upper.ogg',
+ "uranium" = 'sound/announcer/vox_fem/uranium.ogg',
+ "us" = 'sound/announcer/vox_fem/us.ogg',
+ "usa" = 'sound/announcer/vox_fem/usa.ogg',
+ "use" = 'sound/announcer/vox_fem/use.ogg',
+ "used" = 'sound/announcer/vox_fem/used.ogg',
+ "useful" = 'sound/announcer/vox_fem/useful.ogg',
+ "useless" = 'sound/announcer/vox_fem/useless.ogg',
+ "user" = 'sound/announcer/vox_fem/user.ogg',
+ "v" = 'sound/announcer/vox_fem/v.ogg',
+ "vacate" = 'sound/announcer/vox_fem/vacate.ogg',
+ "vacuum" = 'sound/announcer/vox_fem/vacuum.ogg',
+ "valid" = 'sound/announcer/vox_fem/valid.ogg',
+ "validate" = 'sound/announcer/vox_fem/validate.ogg',
+ "vapor" = 'sound/announcer/vox_fem/vapor.ogg',
+ "vendor" = 'sound/announcer/vox_fem/vendor.ogg',
+ "vent" = 'sound/announcer/vox_fem/vent.ogg',
+ "ventilation" = 'sound/announcer/vox_fem/ventilation.ogg',
+ "very" = 'sound/announcer/vox_fem/very.ogg',
+ "victor" = 'sound/announcer/vox_fem/victor.ogg',
+ "violated" = 'sound/announcer/vox_fem/violated.ogg',
+ "violation" = 'sound/announcer/vox_fem/violation.ogg',
+ "virologist" = 'sound/announcer/vox_fem/virologist.ogg',
+ "virology" = 'sound/announcer/vox_fem/virology.ogg',
+ "virus" = 'sound/announcer/vox_fem/virus.ogg',
+ "vitals" = 'sound/announcer/vox_fem/vitals.ogg',
+ "voltage" = 'sound/announcer/vox_fem/voltage.ogg',
+ "vox" = 'sound/announcer/vox_fem/vox.ogg',
+ "voxtest" = 'sound/announcer/vox_fem/voxtest.ogg',
+ "vox_login" = 'sound/announcer/vox_fem/vox_login.ogg',
+ "w" = 'sound/announcer/vox_fem/w.ogg',
+ "walk" = 'sound/announcer/vox_fem/walk.ogg',
+ "wall" = 'sound/announcer/vox_fem/wall.ogg',
+ "wanker" = 'sound/announcer/vox_fem/wanker.ogg',
+ "want" = 'sound/announcer/vox_fem/want.ogg',
+ "wanted" = 'sound/announcer/vox_fem/wanted.ogg',
+ "warden" = 'sound/announcer/vox_fem/warden.ogg',
+ "warm" = 'sound/announcer/vox_fem/warm.ogg',
+ "warn" = 'sound/announcer/vox_fem/warn.ogg',
+ "warning" = 'sound/announcer/vox_fem/warning.ogg',
+ "was" = 'sound/announcer/vox_fem/was.ogg',
+ "waste" = 'sound/announcer/vox_fem/waste.ogg',
+ "water" = 'sound/announcer/vox_fem/water.ogg',
+ "way" = 'sound/announcer/vox_fem/way.ogg',
+ "ways" = 'sound/announcer/vox_fem/ways.ogg',
+ "we" = 'sound/announcer/vox_fem/we.ogg',
+ "weak" = 'sound/announcer/vox_fem/weak.ogg',
+ "weapon" = 'sound/announcer/vox_fem/weapon.ogg',
+ "welcome" = 'sound/announcer/vox_fem/welcome.ogg',
+ "weld" = 'sound/announcer/vox_fem/weld.ogg',
+ "west" = 'sound/announcer/vox_fem/west.ogg',
+ "wew" = 'sound/announcer/vox_fem/wew.ogg',
+ "what" = 'sound/announcer/vox_fem/what.ogg',
+ "when" = 'sound/announcer/vox_fem/when.ogg',
+ "where" = 'sound/announcer/vox_fem/where.ogg',
+ "which" = 'sound/announcer/vox_fem/which.ogg',
+ "while" = 'sound/announcer/vox_fem/while.ogg',
+ "whiskey" = 'sound/announcer/vox_fem/whiskey.ogg',
+ "white" = 'sound/announcer/vox_fem/white.ogg',
+ "why" = 'sound/announcer/vox_fem/why.ogg',
+ "wilco" = 'sound/announcer/vox_fem/wilco.ogg',
+ "will" = 'sound/announcer/vox_fem/will.ogg',
+ "wing" = 'sound/announcer/vox_fem/wing.ogg',
+ "wire" = 'sound/announcer/vox_fem/wire.ogg',
+ "with" = 'sound/announcer/vox_fem/with.ogg',
+ "without" = 'sound/announcer/vox_fem/without.ogg',
+ "wizard" = 'sound/announcer/vox_fem/wizard.ogg',
+ "wood" = 'sound/announcer/vox_fem/wood.ogg',
+ "woody" = 'sound/announcer/vox_fem/woody.ogg',
+ "woop" = 'sound/announcer/vox_fem/woop.ogg',
+ "work" = 'sound/announcer/vox_fem/work.ogg',
+ "worked" = 'sound/announcer/vox_fem/worked.ogg',
+ "working" = 'sound/announcer/vox_fem/working.ogg',
+ "works" = 'sound/announcer/vox_fem/works.ogg',
+ "would" = 'sound/announcer/vox_fem/would.ogg',
+ "wouldnt" = 'sound/announcer/vox_fem/wouldnt.ogg',
+ "wow" = 'sound/announcer/vox_fem/wow.ogg',
+ "wrench" = 'sound/announcer/vox_fem/wrench.ogg',
+ "wrenching" = 'sound/announcer/vox_fem/wrenching.ogg',
+ "x" = 'sound/announcer/vox_fem/x.ogg',
+ "xeno" = 'sound/announcer/vox_fem/xeno.ogg',
+ "xenobiology" = 'sound/announcer/vox_fem/xenobiology.ogg',
+ "xenomorph" = 'sound/announcer/vox_fem/xenomorph.ogg',
+ "xenomorphs" = 'sound/announcer/vox_fem/xenomorphs.ogg',
+ "y" = 'sound/announcer/vox_fem/y.ogg',
+ "yankee" = 'sound/announcer/vox_fem/yankee.ogg',
+ "yards" = 'sound/announcer/vox_fem/yards.ogg',
+ "year" = 'sound/announcer/vox_fem/year.ogg',
+ "yellow" = 'sound/announcer/vox_fem/yellow.ogg',
+ "yes" = 'sound/announcer/vox_fem/yes.ogg',
+ "you" = 'sound/announcer/vox_fem/you.ogg',
+ "your" = 'sound/announcer/vox_fem/your.ogg',
+ "yourself" = 'sound/announcer/vox_fem/yourself.ogg',
+ "z" = 'sound/announcer/vox_fem/z.ogg',
+ "zap" = 'sound/announcer/vox_fem/zap.ogg',
+ "zauker" = 'sound/announcer/vox_fem/zauker.ogg',
+ "zero" = 'sound/announcer/vox_fem/zero.ogg',
+ "zombie" = 'sound/announcer/vox_fem/zombie.ogg',
+ "zone" = 'sound/announcer/vox_fem/zone.ogg',
+ "zulu" = 'sound/announcer/vox_fem/zulu.ogg',
))
#endif
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index 2215864782325..f304cbbc400dc 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -13,7 +13,7 @@
message = "beeps."
message_param = "beeps at %t."
emote_type = EMOTE_AUDIBLE
- sound = 'sound/machines/twobeep.ogg'
+ sound = 'sound/machines/beep/twobeep.ogg'
/datum/emote/silicon/buzz
key = "buzz"
@@ -21,13 +21,13 @@
message = "buzzes."
message_param = "buzzes at %t."
emote_type = EMOTE_AUDIBLE
- sound = 'sound/machines/buzz-sigh.ogg'
+ sound = 'sound/machines/buzz/buzz-sigh.ogg'
/datum/emote/silicon/buzz2
key = "buzz2"
message = "buzzes twice."
emote_type = EMOTE_AUDIBLE
- sound = 'sound/machines/buzz-two.ogg'
+ sound = 'sound/machines/buzz/buzz-two.ogg'
/datum/emote/silicon/chime
key = "chime"
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 3ab7b25f8268d..6deab5f08e0ac 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -248,7 +248,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
log_combat(user, src, "pushed")
visible_message(span_danger("[user] forces back [src]!"), \
span_userdanger("[user] forces back [src]!"), null, COMBAT_MESSAGE_RANGE)
- playsound(loc, 'sound/weapons/pierce.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/pierce.ogg', 50, TRUE, -1)
else
..()
return
diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm
index 7aabdafaa4825..221b1d18478cf 100644
--- a/code/modules/mob/living/silicon/robot/robot_model.dm
+++ b/code/modules/mob/living/silicon/robot/robot_model.dm
@@ -208,7 +208,7 @@
storage_datum.energy += charger.materials.use_materials(list(GET_MATERIAL_REF(storage_datum.mat_type) = to_stock), action = "resupplied", name = "units")
charger.balloon_alert(robot, "+ [to_stock]u [initial(storage_datum.mat_type.name)]")
- playsound(charger, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 50, vary = FALSE)
+ playsound(charger, 'sound/items/weapons/gun/general/mag_bullet_insert.ogg', 50, vary = FALSE)
return
charger.balloon_alert(robot, "restock process complete")
charger.sendmats = FALSE
@@ -303,7 +303,7 @@
cyborg.logevent("Chassis model has been set to [name].")
sleep(0.1 SECONDS)
for(var/i in 1 to 4)
- playsound(cyborg, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1)
+ playsound(cyborg, pick('sound/items/tools/drill_use.ogg', 'sound/items/tools/jaws_cut.ogg', 'sound/items/tools/jaws_pry.ogg', 'sound/items/tools/welder.ogg', 'sound/items/tools/ratchet.ogg'), 80, TRUE, -1)
sleep(0.7 SECONDS)
cyborg.SetLockdown(FALSE)
cyborg.ai_lockdown = FALSE
@@ -755,8 +755,8 @@
/obj/item/robot_model/peacekeeper/do_transform_animation()
..()
- to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
- You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.")
+ to_chat(loc, span_userdanger("Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
+ You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you."))
/obj/item/robot_model/security
name = "Security"
@@ -779,8 +779,8 @@
/obj/item/robot_model/security/do_transform_animation()
..()
- to_chat(loc, "While you have picked the security model, you still have to follow your laws, NOT Space Law. \
- For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.")
+ to_chat(loc, span_userdanger("While you have picked the security model, you still have to follow your laws, NOT Space Law. \
+ For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to."))
/obj/item/robot_model/security/respawn_consumable(mob/living/silicon/robot/cyborg, coeff = 1)
..()
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 507008caf943c..2142d1bb0a3d7 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -7,7 +7,7 @@
initial_language_holder = /datum/language_holder/synthetic
bubble_icon = "machine"
mob_biotypes = MOB_ROBOTIC
- death_sound = 'sound/voice/borg_deathsound.ogg'
+ death_sound = 'sound/mobs/non-humanoids/cyborg/borg_deathsound.ogg'
speech_span = SPAN_ROBOT
flags_1 = PREVENT_CONTENTS_EXPLOSION_1
examine_cursor_icon = null
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 73d6ac25bdd0f..ddad79afacb91 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -10,7 +10,7 @@
var/damage = rand(user.melee_damage_lower, user.melee_damage_upper)
if (prob(90))
log_combat(user, src, "attacked")
- playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slash.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] slashes at [src]!"), \
span_userdanger("[user] slashes at you!"), null, null, user)
to_chat(user, span_danger("You slash at [src]!"))
@@ -19,7 +19,7 @@
log_combat(user, src, "attacked")
adjustBruteLoss(damage)
else
- playsound(loc, 'sound/weapons/slashmiss.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slashmiss.ogg', 25, TRUE, -1)
visible_message(span_danger("[user]'s swipe misses [src]!"), \
span_danger("You avoid [user]'s swipe!"), null, null, user)
to_chat(user, span_warning("Your swipe misses [src]!"))
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index baaf1b39b3c56..2c7bc4583e2cf 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -13,7 +13,7 @@
visible_message(span_notice("[user] [response_help_continuous] [src]."), \
span_notice("[user] [response_help_continuous] you."), null, null, user)
to_chat(user, span_notice("You [response_help_simple] [src]."))
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
else
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, span_warning("You don't want to hurt [src]!"))
@@ -61,13 +61,13 @@
visible_message(span_notice("[user.name] [response_help_continuous] [src]."), \
span_notice("[user.name] [response_help_continuous] you."), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_notice("You [response_help_simple] [src]."))
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
/mob/living/simple_animal/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers)
if(..()) //if harm or disarm intent.
if(LAZYACCESS(modifiers, RIGHT_CLICK))
- playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/pierce.ogg', 25, TRUE, -1)
visible_message(span_danger("[user] [response_disarm_continuous] [name]!"), \
span_userdanger("[user] [response_disarm_continuous] you!"), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You [response_disarm_simple] [name]!"))
@@ -77,7 +77,7 @@
visible_message(span_danger("[user] slashes at [src]!"), \
span_userdanger("You're slashed at by [user]!"), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("You slash at [src]!"))
- playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slice.ogg', 25, TRUE, -1)
apply_damage(damage)
log_combat(user, src, "attacked")
return 1
diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
index f09361e9bdf48..eefc3389e87c9 100644
--- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
@@ -31,14 +31,14 @@
return NONE
visible_message(span_warning("[source] deflects [hitting_projectile] with its energy swords!"))
- playsound(source, 'sound/weapons/blade1.ogg', 50, TRUE)
+ playsound(source, 'sound/items/weapons/blade1.ogg', 50, TRUE)
return COMPONENT_BULLET_BLOCKED
/mob/living/simple_animal/bot/secbot/grievous/on_entered(datum/source, atom/movable/AM)
. = ..()
if(ismob(AM) && AM == target)
visible_message(span_warning("[src] flails his swords and cuts [AM]!"))
- playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1)
+ playsound(src,'sound/mobs/non-humanoids/beepsky/beepskyspinsabre.ogg',100,TRUE,-1)
INVOKE_ASYNC(src, PROC_REF(stun_attack), AM)
/mob/living/simple_animal/bot/secbot/grievous/Initialize(mapload)
@@ -54,12 +54,12 @@
return
if(prob(block_chance))
visible_message(span_warning("[src] deflects [user]'s attack with his energy swords!"))
- playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/items/weapons/blade1.ogg', 50, TRUE, -1)
return TRUE
/mob/living/simple_animal/bot/secbot/grievous/stun_attack(mob/living/carbon/C) //Criminals don't deserve to live
weapon.attack(C, src)
- playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/items/weapons/blade1.ogg', 50, TRUE, -1)
if(C.stat == DEAD)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 0.2 SECONDS)
back_to_idle()
@@ -77,7 +77,7 @@
mode = BOT_START_PATROL // switch to patrol mode
if(BOT_HUNT) // hunting for perp
update_appearance()
- playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1)
+ playsound(src,'sound/mobs/non-humanoids/beepsky/beepskyspinsabre.ogg',100,TRUE,-1)
// general beepsky doesn't give up so easily, jedi scum
if(frustration >= 20)
GLOB.move_manager.stop_looping(src)
@@ -124,8 +124,8 @@
target = C
oldtarget_name = C.name
speak("Level [threatlevel] infraction alert!")
- playsound(src, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE)
- playsound(src,'sound/weapons/saberon.ogg',50,TRUE,-1)
+ playsound(src, pick('sound/mobs/non-humanoids/beepsky/criminal.ogg', 'sound/mobs/non-humanoids/beepsky/justice.ogg', 'sound/mobs/non-humanoids/beepsky/freeze.ogg'), 50, FALSE)
+ playsound(src,'sound/items/weapons/saberon.ogg',50,TRUE,-1)
visible_message(span_warning("[src] ignites his energy swords!"))
icon_state = "grievous-c"
visible_message("[src] points at [C.name]!")
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index ee7cd1357989e..2c5d4c6aa91bd 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -117,8 +117,8 @@
if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player.
return paicard ? "pAI Controlled" : "Autonomous"
if(!(bot_mode_flags & BOT_MODE_ON))
- return "Inactive"
- return "[mode]"
+ return span_bad("Inactive")
+ return span_average("[mode]")
/**
* Returns a status string about the bot's current status, if it's moving, manually controlled, or idle.
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index bbd45e12a2733..c2ff78cb76bf7 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -13,11 +13,11 @@
bot_type = ADVANCED_SEC_BOT
hackables = "combat inhibitors"
- automated_announcements = list(ED209_VOICED_DOWN_WEAPONS = 'sound/voice/ed209_20sec.ogg')
+ automated_announcements = list(ED209_VOICED_DOWN_WEAPONS = 'sound/mobs/non-humanoids/ed209/ed209_20sec.ogg')
var/lastfired = 0
var/shot_delay = 15
- var/shoot_sound = 'sound/weapons/laser.ogg'
+ var/shoot_sound = 'sound/items/weapons/laser.ogg'
var/projectile = /obj/projectile/beam/disabler
var/fair_market_projectile = /obj/projectile/bullet/c38 // For shooting the worst scumbags of all: the poor
@@ -59,10 +59,10 @@
/mob/living/simple_animal/bot/secbot/ed209/threat_react(threatlevel)
speak("Level [threatlevel] infraction alert!")
- playsound(src, pick('sound/voice/ed209_20sec.ogg', 'sound/voice/edplaceholder.ogg'), 50, FALSE)
+ playsound(src, pick('sound/mobs/non-humanoids/ed209/ed209_20sec.ogg', 'sound/mobs/non-humanoids/ed209/edplaceholder.ogg'), 50, FALSE)
/mob/living/simple_animal/bot/secbot/ed209/proc/set_weapon() //used to update the projectile type and firing sound
- shoot_sound = 'sound/weapons/laser.ogg'
+ shoot_sound = 'sound/items/weapons/laser.ogg'
if(bot_cover_flags & BOT_COVER_EMAGGED)
projectile = /obj/projectile/beam
else
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index c670f6561c86b..ae17e58686c65 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -316,7 +316,7 @@
if(check_bot_working(target_turf))
add_to_ignore(target_turf)
target = null
- playsound(src, 'sound/effects/whistlereset.ogg', 50, TRUE)
+ playsound(src, 'sound/mobs/non-humanoids/floorbot/whistlereset.ogg', 50, TRUE)
return
if(isspaceturf(target_turf))
//Must be a hull breach or in line mode to continue.
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 68579730e8dd0..dd3303f35230d 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -360,10 +360,10 @@
switch(type)
if(SIGH)
audible_message(span_hear("[src] makes a sighing buzz."))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
if(ANNOYED)
audible_message(span_hear("[src] makes an annoyed buzzing sound."))
- playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE)
if(DELIGHT)
audible_message(span_hear("[src] makes a delighted ping!"))
playsound(src, 'sound/machines/ping.ogg', 50, FALSE)
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index d946367f6c3bd..269f08629e175 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -25,12 +25,12 @@
possessed_message = "You are a securitron! Guard the station to the best of your ability!"
automated_announcements = list(
- BEEPSKY_VOICED_CRIMINAL_DETECTED = 'sound/voice/beepsky/criminal.ogg',
- BEEPSKY_VOICED_FREEZE = 'sound/voice/beepsky/freeze.ogg',
- BEEPSKY_VOICED_JUSTICE = 'sound/voice/beepsky/justice.ogg',
- BEEPSKY_VOICED_YOUR_MOVE = 'sound/voice/beepsky/creep.ogg',
- BEEPSKY_VOICED_I_AM_THE_LAW = 'sound/voice/beepsky/iamthelaw.ogg',
- BEEPSKY_VOICED_SECURE_DAY = 'sound/voice/beepsky/secureday.ogg',
+ BEEPSKY_VOICED_CRIMINAL_DETECTED = 'sound/mobs/non-humanoids/beepsky/criminal.ogg',
+ BEEPSKY_VOICED_FREEZE = 'sound/mobs/non-humanoids/beepsky/freeze.ogg',
+ BEEPSKY_VOICED_JUSTICE = 'sound/mobs/non-humanoids/beepsky/justice.ogg',
+ BEEPSKY_VOICED_YOUR_MOVE = 'sound/mobs/non-humanoids/beepsky/creep.ogg',
+ BEEPSKY_VOICED_I_AM_THE_LAW = 'sound/mobs/non-humanoids/beepsky/iamthelaw.ogg',
+ BEEPSKY_VOICED_SECURE_DAY = 'sound/mobs/non-humanoids/beepsky/secureday.ogg',
)
///Whether this secbot is considered 'commissioned' and given the trait on Initialize.
@@ -180,7 +180,7 @@
if(base_speed < initial(base_speed) + 3)
base_speed += 3
addtimer(VARSET_CALLBACK(src, base_speed, base_speed - 3), 6 SECONDS)
- playsound(src, 'sound/machines/defib_zap.ogg', 50)
+ playsound(src, 'sound/machines/defib/defib_zap.ogg', 50)
visible_message(span_warning("[src] shakes and speeds up!"))
/mob/living/simple_animal/bot/secbot/Exited(atom/movable/gone, direction)
@@ -289,7 +289,7 @@
if(bot_type == HONK_BOT)
audible_message(span_danger("[src] gives out an evil laugh!"))
- playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 75, TRUE, -1) // evil laughter
+ playsound(src, 'sound/mobs/non-humanoids/honkbot/honkbot_evil_laugh.ogg', 75, TRUE, -1) // evil laughter
else
audible_message(span_danger("[src] buzzes oddly!"))
@@ -334,7 +334,7 @@
/mob/living/simple_animal/bot/secbot/proc/start_handcuffing(mob/living/carbon/current_target)
mode = BOT_ARREST
- playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2)
+ playsound(src, 'sound/items/weapons/cablecuff.ogg', 30, TRUE, -2)
current_target.visible_message(span_danger("[src] is trying to put zipties on [current_target]!"),\
span_userdanger("[src] is trying to put zipties on you!"))
addtimer(CALLBACK(src, PROC_REF(handcuff_target), current_target), 6 SECONDS)
@@ -354,7 +354,7 @@
/mob/living/simple_animal/bot/secbot/proc/stun_attack(mob/living/carbon/current_target, harm = FALSE)
var/judgement_criteria = judgement_criteria()
- playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/items/weapons/egloves.ogg', 50, TRUE, -1)
icon_state = "[initial(icon_state)]-c"
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 0.2 SECONDS)
var/threat = 5
@@ -509,7 +509,7 @@
/// React to detecting criminal scum by making some kind of noise
/mob/living/simple_animal/bot/secbot/proc/threat_react(threatlevel)
speak("Level [threatlevel] infraction alert!")
- playsound(src, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE)
+ playsound(src, pick('sound/mobs/non-humanoids/beepsky/criminal.ogg', 'sound/mobs/non-humanoids/beepsky/justice.ogg', 'sound/mobs/non-humanoids/beepsky/freeze.ogg'), 50, FALSE)
/mob/living/simple_animal/bot/secbot/explode()
var/atom/Tsec = drop_location()
diff --git a/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
index ca1ae3b70d612..e2c2aca2693ce 100644
--- a/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/dark_wizard.dm
@@ -6,7 +6,7 @@
icon_living = "dark_wizard"
move_to_delay = 10
projectiletype = /obj/projectile/temp/earth_bolt
- projectilesound = 'sound/magic/ethereal_enter.ogg'
+ projectilesound = 'sound/effects/magic/ethereal_enter.ogg'
ranged = TRUE
ranged_message = "earth bolts"
ranged_cooldown_time = 20
@@ -19,7 +19,7 @@
attack_verb_continuous = "staves"
combat_mode = TRUE
speak_emote = list("chants")
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
aggro_vision_range = 9
turns_per_move = 5
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 5b0cfdcc51e7e..201c83497dfd5 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -483,7 +483,7 @@
if(projectiletype)
fire_projectile(projectiletype, targeted_atom, projectilesound)
if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space
- newtonian_move(get_dir(targeted_atom, target_from))
+ newtonian_move(get_angle(targeted_atom, target_from))
/mob/living/simple_animal/hostile/proc/CanSmashTurfs(turf/T)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 935ed7a7215b0..ae3b10b11990a 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -76,7 +76,7 @@ Difficulty: Medium
dash_attack.Grant(src)
transform_weapon.Grant(src)
- AddComponent(/datum/component/boss_music, 'sound/lavaland/bdm_boss.ogg', 167 SECONDS)
+ AddComponent(/datum/component/boss_music, 'sound/music/boss/bdm_boss.ogg', 167 SECONDS)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Destroy()
dash = null
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index 00cc37fe618cb..70d27f023f188 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -34,7 +34,7 @@ Difficulty: Hard
maxHealth = 2500
attack_verb_continuous = "rends"
attack_verb_simple = "rend"
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
icon_state = "bubblegum"
icon_living = "bubblegum"
icon_dead = ""
@@ -66,7 +66,7 @@ Difficulty: Hard
crusher_achievement_type = /datum/award/achievement/boss/bubblegum_crusher
score_achievement_type = /datum/award/score/bubblegum_score
death_message = "sinks into a pool of blood, fleeing the battle. You've won, for now... "
- death_sound = 'sound/magic/enter_blood.ogg'
+ death_sound = 'sound/effects/magic/enter_blood.ogg'
faction = list(FACTION_MINING, FACTION_BOSS, FACTION_HELL)
summon_line = "GRAAAAAAAHHHHHHHHH!"
/// Check to see if we should spawn blood
@@ -221,10 +221,10 @@ Difficulty: Hard
if(!faction_check_atom(L))
if(L.stat != CONSCIOUS)
to_chat(L, span_userdanger("[src] drags you through the blood!"))
- playsound(T, 'sound/magic/enter_blood.ogg', 100, TRUE, -1)
+ playsound(T, 'sound/effects/magic/enter_blood.ogg', 100, TRUE, -1)
var/turf/targetturf = get_step(src, dir)
L.forceMove(targetturf)
- playsound(targetturf, 'sound/magic/exit_blood.ogg', 100, TRUE, -1)
+ playsound(targetturf, 'sound/effects/magic/exit_blood.ogg', 100, TRUE, -1)
addtimer(CALLBACK(src, PROC_REF(devour), L), 0.2 SECONDS)
SLEEP_CHECK_DEATH(1, src)
@@ -300,7 +300,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/P)
if(BUBBLEGUM_IS_ENRAGED)
visible_message(span_danger("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!"))
- playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 300, TRUE)
+ playsound(src, pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg'), 300, TRUE)
return BULLET_ACT_BLOCK
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm
index d7e82507f747c..cba3de73669c8 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm
@@ -16,7 +16,7 @@ I'd rather there be something than the clockwork ruin be entirely empty though s
icon = 'icons/mob/simple/icemoon/icemoon_monsters.dmi'
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
weather_immunities = list(TRAIT_SNOWSTORM_IMMUNE)
speak_emote = list("roars")
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 3cfc4e7dd35c7..3af739f736c0a 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -27,7 +27,7 @@
maxHealth = 2500
attack_verb_continuous = "judges"
attack_verb_simple = "judge"
- attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg'
+ attack_sound = 'sound/effects/magic/clockwork/ratvar_attack.ogg'
icon_state = "eva"
icon_living = "eva"
icon_dead = ""
@@ -54,7 +54,7 @@
crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher)
loot = list(/obj/structure/closet/crate/necropolis/colossus)
death_message = "disintegrates, leaving a glowing core in its wake."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
summon_line = "Your trial begins now."
/// Spiral shots ability
var/datum/action/cooldown/mob_cooldown/projectile_attack/spiral_shots/colossus/spiral_shots
@@ -129,7 +129,7 @@
if(viewer.client)
flash_color(viewer.client, "#C80000", 1)
shake_camera(viewer, 4, 3)
- playsound(src, 'sound/magic/clockwork/narsie_attack.ogg', 200, TRUE)
+ playsound(src, 'sound/effects/magic/clockwork/narsie_attack.ogg', 200, TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/start_attack(mob/living/owner, datum/action/cooldown/activated)
SIGNAL_HANDLER
@@ -306,7 +306,7 @@
active = TRUE
set_anchored(TRUE)
balloon_alert_to_viewers("charging...")
- playsound(src, 'sound/magic/disable_tech.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/disable_tech.ogg', 50, TRUE)
sleep(use_time)
icon_state = initial(icon_state)
active = FALSE
@@ -412,7 +412,7 @@
/obj/machinery/anomalous_crystal/dark_reprise //Revives anyone nearby, but turns them into shadowpeople and renders them uncloneable, so the crystal is your only hope of getting up again if you go down.
observer_desc = "When activated, this crystal revives anyone nearby, but turns them into Shadowpeople and makes them unclonable, making the crystal their only hope of getting up again."
activation_method = ACTIVATE_TOUCH
- activation_sound = 'sound/hallucinations/growl1.ogg'
+ activation_sound = 'sound/effects/hallucinations/growl1.ogg'
use_time = 3 SECONDS
/obj/machinery/anomalous_crystal/dark_reprise/ActivationReaction(mob/user, method)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 448896e3700de..350a1a68fd8e3 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -17,7 +17,7 @@ Difficulty: Extremely Hard
icon = 'icons/mob/simple/icemoon/icemoon_monsters.dmi'
attack_verb_continuous = "pummels"
attack_verb_simple = "pummels"
- attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ attack_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_SPECIAL
light_color = COLOR_LIGHT_GRAYISH_RED
movement_type = GROUND
@@ -81,7 +81,7 @@ Difficulty: Extremely Hard
AddElement(/datum/element/knockback, 7, FALSE, TRUE)
AddElement(/datum/element/lifesteal, 50)
ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT)
- AddComponent(/datum/component/boss_music, 'sound/lavaland/bdm_boss.ogg', 167 SECONDS)
+ AddComponent(/datum/component/boss_music, 'sound/music/boss/bdm_boss.ogg', 167 SECONDS)
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/Destroy()
frost_orbs = null
@@ -143,7 +143,7 @@ Difficulty: Extremely Hard
animate(src, pixel_y = pixel_y + 96, time = 100, easing = ELASTIC_EASING)
spin(100, 10)
SLEEP_CHECK_DEATH(60, src)
- playsound(src, 'sound/effects/explosion3.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/explosion/explosion3.ogg', 100, TRUE)
icon_state = "demonic_miner_phase2"
animate(src, pixel_y = pixel_y - 96, time = 8, flags = ANIMATION_END_NOW)
spin(8, 2)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index 831589ceaf632..f8569897accf1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -36,7 +36,7 @@
maxHealth = 2500
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
icon = 'icons/mob/simple/lavaland/96x96megafauna.dmi'
icon_state = "dragon"
@@ -67,7 +67,7 @@
crusher_achievement_type = /datum/award/achievement/boss/drake_crusher
score_achievement_type = /datum/award/score/drake_score
death_message = "collapses into a pile of bones, its flesh sloughing away."
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
footstep_type = FOOTSTEP_MOB_HEAVY
summon_line = "ROOOOOOOOAAAAAAAAAAAR!"
/// Fire cone ability
@@ -212,9 +212,9 @@
/obj/effect/temp_visual/lava_warning/proc/fall(reset_time)
var/turf/T = get_turf(src)
- playsound(T,'sound/magic/fleshtostone.ogg', 80, TRUE)
+ playsound(T,'sound/effects/magic/fleshtostone.ogg', 80, TRUE)
sleep(duration)
- playsound(T,'sound/magic/fireball.ogg', 200, TRUE)
+ playsound(T,'sound/effects/magic/fireball.ogg', 200, TRUE)
for(var/mob/living/L in T.contents - owner)
if(istype(L, /mob/living/simple_animal/hostile/megafauna/dragon))
@@ -281,7 +281,7 @@
/obj/effect/temp_visual/target/proc/fall(list/flame_hit)
var/turf/T = get_turf(src)
- playsound(T,'sound/magic/fleshtostone.ogg', 80, TRUE)
+ playsound(T,'sound/effects/magic/fleshtostone.ogg', 80, TRUE)
new /obj/effect/temp_visual/fireball(T)
sleep(duration)
if(ismineralturf(T))
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 3d1b56d77e131..9383718e7bd30 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -41,7 +41,7 @@ Difficulty: Hard
maxHealth = 2500
attack_verb_continuous = "clubs"
attack_verb_simple = "club"
- attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ attack_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
icon_state = "hierophant"
icon_living = "hierophant"
health_doll_icon = "hierophant"
@@ -66,7 +66,7 @@ Difficulty: Hard
crusher_achievement_type = /datum/award/achievement/boss/hierophant_crusher
score_achievement_type = /datum/award/score/hierophant_score
del_on_death = TRUE
- death_sound = 'sound/magic/repulse.ogg'
+ death_sound = 'sound/effects/magic/repulse.ogg'
attack_action_types = list(/datum/action/innate/megafauna_attack/blink,
/datum/action/innate/megafauna_attack/chaser_swarm,
/datum/action/innate/megafauna_attack/cross_blasts,
@@ -101,7 +101,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/hierophant/Initialize(mapload)
. = ..()
spawned_beacon_ref = WEAKREF(new /obj/effect/hierophant(loc))
- AddComponent(/datum/component/boss_music, 'sound/lavaland/hiero_boss.ogg', 145 SECONDS)
+ AddComponent(/datum/component/boss_music, 'sound/music/boss/hiero_boss.ogg', 145 SECONDS)
/mob/living/simple_animal/hostile/megafauna/hierophant/Destroy()
QDEL_NULL(spawned_beacon_ref)
@@ -111,28 +111,28 @@ Difficulty: Hard
name = "Blink To Target"
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
- chosen_message = "You are now blinking to your target."
+ chosen_message = span_colossus("You are now blinking to your target.")
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/chaser_swarm
name = "Chaser Swarm"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "hierophant_squares_indefinite"
- chosen_message = "You are firing a chaser swarm at your target."
+ chosen_message = span_colossus("You are firing a chaser swarm at your target.")
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/cross_blasts
name = "Cross Blasts"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "hierophant_blast_indefinite"
- chosen_message = "You are now firing cross blasts at your target."
+ chosen_message = span_colossus("You are now firing cross blasts at your target.")
chosen_attack_num = 3
/datum/action/innate/megafauna_attack/blink_spam
name = "Blink Chase"
button_icon = 'icons/obj/mining_zones/artefacts.dmi'
button_icon_state = "hierophant_club_ready_beacon"
- chosen_message = "You are now repeatedly blinking at your target."
+ chosen_message = span_colossus("You are now repeatedly blinking at your target.")
chosen_attack_num = 4
/mob/living/simple_animal/hostile/megafauna/hierophant/update_cooldowns(list/cooldown_updates, ignore_staggered = FALSE)
@@ -305,7 +305,7 @@ Difficulty: Hard
new /obj/effect/temp_visual/hierophant/telegraph/diagonal(T, src)
else
new /obj/effect/temp_visual/hierophant/telegraph(T, src)
- playsound(T, 'sound/effects/bin_close.ogg', 75, TRUE)
+ playsound(T, 'sound/effects/bin/bin_close.ogg', 75, TRUE)
SLEEP_CHECK_DEATH(2, src)
new /obj/effect/temp_visual/hierophant/blast/damaging(T, src, FALSE)
for(var/d in directions)
@@ -353,8 +353,8 @@ Difficulty: Hard
var/turf/source = get_turf(src)
new /obj/effect/temp_visual/hierophant/telegraph(T, src)
new /obj/effect/temp_visual/hierophant/telegraph(source, src)
- playsound(T,'sound/magic/wand_teleport.ogg', 80, TRUE)
- playsound(source,'sound/machines/airlockopen.ogg', 80, TRUE)
+ playsound(T,'sound/effects/magic/wand_teleport.ogg', 80, TRUE)
+ playsound(source,'sound/machines/airlock/airlockopen.ogg', 80, TRUE)
blinking = TRUE
SLEEP_CHECK_DEATH(2, src) //short delay before we start...
new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src)
@@ -386,14 +386,14 @@ Difficulty: Hard
if(!T)
return
new /obj/effect/temp_visual/hierophant/telegraph(T, src)
- playsound(T,'sound/effects/bin_close.ogg', 75, TRUE)
+ playsound(T,'sound/effects/bin/bin_close.ogg', 75, TRUE)
SLEEP_CHECK_DEATH(2, src)
for(var/t in RANGE_TURFS(1, T))
new /obj/effect/temp_visual/hierophant/blast/damaging(t, src, FALSE)
//expanding square
/proc/hierophant_burst(mob/caster, turf/original, burst_range, spread_speed = 0.5)
- playsound(original,'sound/machines/airlockopen.ogg', 750, TRUE)
+ playsound(original,'sound/machines/airlock/airlockopen.ogg', 750, TRUE)
var/last_dist = 0
for(var/t in spiral_range_turfs(burst_range, original))
var/turf/T = t
@@ -505,7 +505,7 @@ Difficulty: Hard
if(!stat && .)
var/obj/effect/temp_visual/hierophant/squares/HS = new(old_loc)
HS.setDir(movement_dir)
- playsound(src, 'sound/mecha/mechmove04.ogg', 80, TRUE, -4)
+ playsound(src, 'sound/vehicles/mecha/mechmove04.ogg', 80, TRUE, -4)
if(target)
arena_trap(target)
@@ -697,7 +697,7 @@ Difficulty: Hard
var/turf/T = get_turf(src)
if(!T)
return
- playsound(T,'sound/magic/blind.ogg', 65, TRUE, -5) //make a sound
+ playsound(T,'sound/effects/magic/blind.ogg', 65, TRUE, -5) //make a sound
sleep(0.6 SECONDS) //wait a little
bursting = TRUE
do_damage(T) //do damage and mark us as bursting
@@ -718,7 +718,7 @@ Difficulty: Hard
continue
if(L.client)
flash_color(L.client, "#660099", 1)
- playsound(L,'sound/weapons/sear.ogg', 50, TRUE, -4)
+ playsound(L,'sound/items/weapons/sear.ogg', 50, TRUE, -4)
to_chat(L, span_userdanger("You're struck by a [name]!"))
var/limb_to_hit = L.get_bodypart(L.get_random_valid_zone(even_weights = TRUE))
var/armor = L.run_armor_check(limb_to_hit, MELEE, "Your armor absorbs [src]!", "Your armor blocks part of [src]!", FALSE, 50, "Your armor was penetrated by [src]!")
@@ -742,7 +742,7 @@ Difficulty: Hard
if(friendly_fire_check && caster?.faction_check_atom(occupant))
continue
to_chat(occupant, span_userdanger("Your [M.name] is struck by a [name]!"))
- playsound(M,'sound/weapons/sear.ogg', 50, TRUE, -4)
+ playsound(M,'sound/items/weapons/sear.ogg', 50, TRUE, -4)
M.take_damage(damage, BURN, 0, 0)
/obj/effect/temp_visual/hierophant/blast/visual
@@ -756,7 +756,7 @@ Difficulty: Hard
/obj/effect/temp_visual/hierophant/blast/visual/Initialize(mapload, new_caster)
. = ..()
var/turf/src_turf = get_turf(src)
- playsound(src_turf,'sound/magic/blind.ogg', 65, TRUE, -5)
+ playsound(src_turf,'sound/effects/magic/blind.ogg', 65, TRUE, -5)
/obj/effect/hierophant
name = "hierophant beacon"
@@ -773,7 +773,7 @@ Difficulty: Hard
if(club.beacon == src)
to_chat(user, span_notice("You start removing your hierophant beacon..."))
if(do_after(user, 5 SECONDS, target = src))
- playsound(src,'sound/magic/blind.ogg', 100, TRUE, -4)
+ playsound(src,'sound/effects/magic/blind.ogg', 100, TRUE, -4)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user)
to_chat(user, span_hierophant_warning("You collect [src], reattaching it to the club!"))
club.beacon = null
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 5077b3781e6a2..bb2f1025b00ee 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -32,7 +32,7 @@
icon = 'icons/mob/simple/lavaland/96x96megafauna.dmi'
attack_verb_continuous = "chomps"
attack_verb_simple = "chomp"
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
speak_emote = list("echoes")
armour_penetration = 50
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index 8b3a6b253e6dc..a7db852492442 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -17,7 +17,7 @@ Difficulty: Hard
icon = 'icons/mob/simple/icemoon/64x64megafauna.dmi'
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/magic/demon_attack1.ogg'
+ attack_sound = 'sound/effects/magic/demon_attack1.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
weather_immunities = list(TRAIT_SNOWSTORM_IMMUNE)
speak_emote = list("roars")
@@ -149,7 +149,7 @@ Difficulty: Hard
/proc/wendigo_scream(mob/owner)
SLEEP_CHECK_DEATH(5, owner)
- playsound(owner.loc, 'sound/magic/demon_dies.ogg', 600, FALSE, 10)
+ playsound(owner.loc, 'sound/effects/magic/demon_dies.ogg', 600, FALSE, 10)
var/pixel_shift = rand(5, 15)
animate(owner, pixel_z = pixel_shift, time = 1, loop = 20, flags = ANIMATION_RELATIVE)
animate(pixel_z = -pixel_shift, time = 1, flags = ANIMATION_RELATIVE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 78bd8a9c5b648..253fe799bfd2c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list(
harm_intent_damage = 5
melee_damage_lower = 8
melee_damage_upper = 12
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
emote_taunt = list("growls")
speak_emote = list("creaks")
taunt_chance = 30
@@ -298,10 +298,10 @@ GLOBAL_LIST_INIT(animatable_blacklist, typecacheof(list(
speak_emote = list("clatters")
gold_core_spawnable = HOSTILE_SPAWN
var/opened = FALSE
- var/open_sound = 'sound/machines/crate_open.ogg'
- var/close_sound = 'sound/machines/crate_close.ogg'
+ var/open_sound = 'sound/machines/crate/crate_open.ogg'
+ var/close_sound = 'sound/machines/crate/crate_close.ogg'
///sound played when the mimic attempts to eat more items than it can
- var/full_sound = 'sound/items/trayhit2.ogg'
+ var/full_sound = 'sound/items/trayhit/trayhit2.ogg'
var/max_mob_size = MOB_SIZE_HUMAN
var/locked = FALSE
var/datum/action/innate/mimic/lock/lock
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
index 95744d0a2d310..03d79c108d60d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm
@@ -16,7 +16,7 @@
melee_damage_type = BURN
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
- attack_sound = 'sound/effects/curseattack.ogg'
+ attack_sound = 'sound/effects/curse/curseattack.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
throw_message = "passes through the smokey body of"
obj_damage = 0
@@ -30,7 +30,7 @@
. = ..()
QDEL_IN(src, 60 SECONDS)
AddElement(/datum/element/simple_flying)
- playsound(src, 'sound/effects/curse1.ogg', 100, TRUE, -1)
+ playsound(src, 'sound/effects/curse/curse1.ogg', 100, TRUE, -1)
/mob/living/simple_animal/hostile/asteroid/curseblob/Destroy()
new /obj/effect/temp_visual/dir_setting/curse/blob(loc, dir)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index ae0011f998a68..b40a793f0fc74 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -353,7 +353,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
to_chat(mychild, "Your max health has been halved, but can now heal by standing on your tumor. Note, it's your only way to heal.\n\
Bear in mind, if anyone interacts with your tumor, you'll be resummoned here to carry out another fight. In such a case, you will regain your full max health.\n\
Also, be weary of your fellow inhabitants, they likely won't be happy to see you!")
- to_chat(mychild, "Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!")
+ to_chat(mychild, span_boldbig("Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!"))
/obj/item/tumor_shard
name = "tumor shard"
@@ -380,8 +380,8 @@ While using this makes the system rely on OnFire, it still gives options for tim
E.revive(HEAL_ALL)
user.visible_message(span_notice("[user] stabs [E] with [src], reviving it."))
E.playsound_local(get_turf(E), 'sound/effects/magic.ogg', 40, 0)
- to_chat(E, "You have been revived by [user]. While you can't speak to them, you owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk.")
- to_chat(E, "Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!")
+ to_chat(E, span_userdanger("You have been revived by [user]. While you can't speak to them, you owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk."))
+ to_chat(E, span_boldbig("Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!"))
E.maxHealth = E.maxHealth * 0.4
E.health = E.maxHealth
E.desc = "[E.desc] However, this one appears to be less wild in nature, and calmer around people."
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 821045b51690d..e3cccde2bc6d6 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -36,7 +36,7 @@
armour_penetration = 30
attack_verb_continuous = "beats down on"
attack_verb_simple = "beat down on"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
throw_message = "does nothing to the rocky hide of the"
speed = 2
move_to_delay = 5
@@ -60,25 +60,25 @@
/datum/action/innate/elite_attack/tentacle_patch
name = "Tentacle Patch"
button_icon_state = "tentacle_patch"
- chosen_message = "You are now attacking with a patch of tentacles."
+ chosen_message = span_boldwarning("You are now attacking with a patch of tentacles.")
chosen_attack_num = TENTACLE_PATCH
/datum/action/innate/elite_attack/spawn_children
name = "Spawn Children"
button_icon_state = "spawn_children"
- chosen_message = "You will spawn two children at your location to assist you in combat. You can have up to 8."
+ chosen_message = span_boldwarning("You will spawn two children at your location to assist you in combat. You can have up to 8.")
chosen_attack_num = SPAWN_CHILDREN
/datum/action/innate/elite_attack/rage
name = "Rage"
button_icon_state = "rage"
- chosen_message = "You will temporarily increase your movement speed."
+ chosen_message = span_boldwarning("You will temporarily increase your movement speed.")
chosen_attack_num = RAGE
/datum/action/innate/elite_attack/call_children
name = "Call Children"
button_icon_state = "call_children"
- chosen_message = "You will summon your children to your location."
+ chosen_message = span_boldwarning("You will summon your children to your location.")
chosen_attack_num = CALL_CHILDREN
/mob/living/simple_animal/hostile/asteroid/elite/broodmother/OpenFire()
@@ -142,7 +142,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/rage()
ranged_cooldown = world.time + 100
- playsound(src,'sound/voice/insane_low_laugh.ogg', 200, 1)
+ playsound(src,'sound/misc/insane_low_laugh.ogg', 200, 1)
visible_message(span_warning("[src] starts picking up speed!"))
color = COLOR_RED
set_varspeed(0)
@@ -181,7 +181,7 @@
melee_damage_upper = 5
attack_verb_continuous = "bashes against"
attack_verb_simple = "bash against"
- attack_sound = 'sound/weapons/punch1.ogg'
+ attack_sound = 'sound/items/weapons/punch1.ogg'
throw_message = "does nothing to the rocky hide of the"
speed = 2
move_to_delay = 5
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index 0a01777fb1fd7..b12be32587e3d 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -34,12 +34,12 @@
melee_damage_upper = 20
attack_verb_continuous = "preaches to"
attack_verb_simple = "preach to"
- attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg'
+ attack_sound = 'sound/effects/magic/clockwork/ratvar_attack.ogg'
throw_message = "doesn't affect the purity of"
speed = 2
move_to_delay = 10
mouse_opacity = MOUSE_OPACITY_ICON
- death_sound = 'sound/magic/demon_dies.ogg'
+ death_sound = 'sound/effects/magic/demon_dies.ogg'
death_message = "begins to shudder as it becomes transparent..."
loot_drop = /obj/item/clothing/neck/cloak/herald_cloak
@@ -67,30 +67,30 @@
. = ..()
if(stat != CONSCIOUS)
return
- playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(src, 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
/datum/action/innate/elite_attack/herald_trishot
name = "Triple Shot"
button_icon_state = "herald_trishot"
- chosen_message = "You are now firing three shots in your chosen direction."
+ chosen_message = span_boldwarning("You are now firing three shots in your chosen direction.")
chosen_attack_num = HERALD_TRISHOT
/datum/action/innate/elite_attack/herald_directionalshot
name = "Circular Shot"
button_icon_state = "herald_directionalshot"
- chosen_message = "You are firing projectiles in all directions."
+ chosen_message = span_boldwarning("You are firing projectiles in all directions.")
chosen_attack_num = HERALD_DIRECTIONALSHOT
/datum/action/innate/elite_attack/herald_teleshot
name = "Teleport Shot"
button_icon_state = "herald_teleshot"
- chosen_message = "You will now fire a shot which teleports you where it lands."
+ chosen_message = span_boldwarning("You will now fire a shot which teleports you where it lands.")
chosen_attack_num = HERALD_TELESHOT
/datum/action/innate/elite_attack/herald_mirror
name = "Summon Mirror"
button_icon_state = "herald_mirror"
- chosen_message = "You will spawn a mirror which duplicates your attacks."
+ chosen_message = span_boldwarning("You will spawn a mirror which duplicates your attacks.")
chosen_attack_num = HERALD_MIRROR
/mob/living/simple_animal/hostile/asteroid/elite/herald/OpenFire()
@@ -146,14 +146,14 @@
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_trishot(target)
ranged_cooldown = world.time + 30
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
var/target_turf = get_turf(target)
var/angle_to_target = get_angle(src, target_turf)
shoot_projectile(target_turf, angle_to_target, FALSE, TRUE)
addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE, TRUE), 0.2 SECONDS)
addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE, TRUE), 0.4 SECONDS)
if(health < maxHealth * 0.5 && !is_mirror)
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE, TRUE), 1 SECONDS)
addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE, TRUE), 1.2 SECONDS)
addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE, TRUE), 1.4 SECONDS)
@@ -172,23 +172,23 @@
ranged_cooldown = world.time + 3 SECONDS
if(!is_mirror)
icon_state = "herald_enraged"
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, PROC_REF(herald_circleshot), 0), 0.5 SECONDS)
if(health < maxHealth * 0.5 && !is_mirror)
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, PROC_REF(herald_circleshot), 22.5), 1.5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(unenrage)), 2 SECONDS)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target)
ranged_cooldown = world.time + 30
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
var/target_turf = get_turf(target)
var/angle_to_target = get_angle(src, target_turf)
shoot_projectile(target_turf, angle_to_target, TRUE, FALSE)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_mirror()
ranged_cooldown = world.time + 4 SECONDS
- playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(src), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
if(my_mirror != null)
qdel(my_mirror)
my_mirror = null
@@ -207,7 +207,7 @@
pixel_x = -16
base_pixel_x = -16
death_message = "shatters violently!"
- death_sound = 'sound/effects/glassbr1.ogg'
+ death_sound = 'sound/effects/glass/glassbr1.ogg'
del_on_death = TRUE
is_mirror = TRUE
move_resist = MOVE_FORCE_OVERPOWERING // no dragging your mirror around
@@ -286,7 +286,7 @@
return
owner.visible_message(span_danger("[owner]'s [src] emits a loud noise as [owner] is struck!"))
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
- playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
+ playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 20, TRUE)
addtimer(CALLBACK(src, PROC_REF(reactionshot), owner), 1 SECONDS)
#undef HERALD_TRISHOT
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index ba9e8daa99621..4853e0f3d019b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -31,13 +31,13 @@
melee_damage_upper = 35
attack_verb_continuous = "slashes its arms at"
attack_verb_simple = "slash your arms at"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
throw_message = "doesn't affect the sturdiness of"
speed = 1
move_to_delay = 3
mouse_opacity = MOUSE_OPACITY_ICON
- death_sound = 'sound/magic/curse.ogg'
+ death_sound = 'sound/effects/magic/curse.ogg'
death_message = "'s arms reach out before it falls apart onto the floor, lifeless."
loot_drop = /obj/item/crusher_trophy/legionnaire_spine
@@ -55,25 +55,25 @@
/datum/action/innate/elite_attack/legionnaire_charge
name = "Legionnaire Charge"
button_icon_state = "legionnaire_charge"
- chosen_message = "You will attempt to grab your opponent and throw them."
+ chosen_message = span_boldwarning("You will attempt to grab your opponent and throw them.")
chosen_attack_num = LEGIONNAIRE_CHARGE
/datum/action/innate/elite_attack/head_detach
name = "Release Head"
button_icon_state = "head_detach"
- chosen_message = "You will now detach your head or kill it if it is already released."
+ chosen_message = span_boldwarning("You will now detach your head or kill it if it is already released.")
chosen_attack_num = HEAD_DETACH
/datum/action/innate/elite_attack/bonfire_teleport
name = "Bonfire Teleport"
button_icon_state = "bonfire_teleport"
- chosen_message = "You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it."
+ chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.")
chosen_attack_num = BONFIRE_TELEPORT
/datum/action/innate/elite_attack/spew_smoke
name = "Spew Smoke"
button_icon_state = "spew_smoke"
- chosen_message = "Your head will spew smoke in an area, wherever it may be."
+ chosen_message = span_boldwarning("Your head will spew smoke in an area, wherever it may be.")
chosen_attack_num = SPEW_SMOKE
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/OpenFire()
@@ -121,7 +121,7 @@
for(var/i in 1 to 6)
new /obj/effect/temp_visual/dragon_swoop/legionnaire(T)
T = get_step(T, dir_to_target)
- playsound(src,'sound/magic/demon_attack1.ogg', 200, 1)
+ playsound(src,'sound/effects/magic/demon_attack1.ogg', 200, 1)
visible_message(span_boldwarning("[src] prepares to charge!"))
addtimer(CALLBACK(src, PROC_REF(legionnaire_charge_2), dir_to_target, 0), 0.4 SECONDS)
@@ -200,7 +200,7 @@
var/obj/structure/legionnaire_bonfire/newpile = new /obj/structure/legionnaire_bonfire(loc)
mypile = newpile
mypile.myowner = src
- playsound(get_turf(src),'sound/items/fultext_deploy.ogg', 200, 1)
+ playsound(get_turf(src),'sound/items/fulton/fultext_deploy.ogg', 200, 1)
visible_message(span_boldwarning("[src] summons a bonfire on [get_turf(src)]!"))
return
else
@@ -210,8 +210,8 @@
mypile.take_damage(100)
mypile = null
return
- playsound(pileturf,'sound/items/fultext_deploy.ogg', 200, 1)
- playsound(legionturf,'sound/items/fultext_deploy.ogg', 200, 1)
+ playsound(pileturf,'sound/items/fulton/fultext_deploy.ogg', 200, 1)
+ playsound(legionturf,'sound/items/fulton/fultext_deploy.ogg', 200, 1)
visible_message(span_boldwarning("[src] melts down into a burning pile of bones!"))
forceMove(pileturf)
visible_message(span_boldwarning("[src] forms from the bonfire!"))
@@ -249,7 +249,7 @@
melee_damage_upper = 20
attack_verb_continuous = "bites at"
attack_verb_simple = "bite at"
- attack_sound = 'sound/effects/curse1.ogg'
+ attack_sound = 'sound/effects/curse/curse1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
throw_message = "simply misses"
speed = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
index 33bcb4dc9d704..e865c40c1f71a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
@@ -31,12 +31,12 @@
melee_damage_upper = 15
attack_verb_continuous = "smashes into the side of"
attack_verb_simple = "smash into the side of"
- attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
+ attack_sound = 'sound/items/weapons/sonic_jackhammer.ogg'
throw_message = "merely dinks off of the"
speed = 3
move_to_delay = 10
mouse_opacity = MOUSE_OPACITY_ICON
- death_sound = 'sound/magic/repulse.ogg'
+ death_sound = 'sound/effects/magic/repulse.ogg'
death_message = "'s lights flicker, before its top part falls down."
loot_drop = /obj/item/clothing/accessory/pandora_hope
@@ -51,25 +51,25 @@
/datum/action/innate/elite_attack/singular_shot
name = "Singular Shot"
button_icon_state = "singular_shot"
- chosen_message = "You are now creating a single linear magic square."
+ chosen_message = span_boldwarning("You are now creating a single linear magic square.")
chosen_attack_num = SINGULAR_SHOT
/datum/action/innate/elite_attack/magic_box
name = "Magic Box"
button_icon_state = "magic_box"
- chosen_message = "You are now attacking with a box of magic squares."
+ chosen_message = span_boldwarning("You are now attacking with a box of magic squares.")
chosen_attack_num = MAGIC_BOX
/datum/action/innate/elite_attack/pandora_teleport
name = "Line Teleport"
button_icon_state = "pandora_teleport"
- chosen_message = "You will now teleport to your target."
+ chosen_message = span_boldwarning("You will now teleport to your target.")
chosen_attack_num = PANDORA_TELEPORT
/datum/action/innate/elite_attack/aoe_squares
name = "AOE Blast"
button_icon_state = "aoe_squares"
- chosen_message = "Your attacks will spawn an AOE blast at your target location."
+ chosen_message = span_boldwarning("Your attacks will spawn an AOE blast at your target location.")
chosen_attack_num = AOE_SQUARES
/mob/living/simple_animal/hostile/asteroid/elite/pandora/OpenFire()
@@ -135,7 +135,7 @@
var/turf/source = get_turf(src)
new /obj/effect/temp_visual/hierophant/telegraph(turf_target, src)
new /obj/effect/temp_visual/hierophant/telegraph(source, src)
- playsound(source,'sound/machines/airlockopen.ogg', 200, 1)
+ playsound(source,'sound/machines/airlock/airlockopen.ogg', 200, 1)
addtimer(CALLBACK(src, PROC_REF(pandora_teleport_2), turf_target, source), 0.2 SECONDS)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(turf/T, turf/source)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
index 57b49047436ee..5dba83e25320e 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
@@ -19,7 +19,7 @@
melee_damage_upper = 25
attack_verb_continuous = "claws"
attack_verb_simple = "claw"
- attack_sound = 'sound/weapons/bladeslice.ogg'
+ attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_CLAW
vision_range = 2 // don't aggro unless you basically antagonize it, though they will kill you worse than a goliath will
aggro_vision_range = 9
diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm
index f69c010ac6bfb..a44cae6f139f5 100644
--- a/code/modules/mob/living/simple_animal/hostile/ooze.dm
+++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm
@@ -21,7 +21,7 @@
maxHealth = 200
attack_verb_continuous = "slimes"
attack_verb_simple = "slime"
- attack_sound = 'sound/effects/blobattack.ogg'
+ attack_sound = 'sound/effects/blob/blobattack.ogg'
combat_mode = TRUE
environment_smash = ENVIRONMENT_SMASH_STRUCTURES
mob_size = MOB_SIZE_LARGE
@@ -196,7 +196,7 @@
///This action lets you consume the mob you're currently pulling. I'M GONNA CONSUUUUUME (this is considered one of the funny memes in the 2019-2020 era)
/datum/action/consume
name = "Consume"
- desc = "Consume a mob that you are dragging to gain nutrition from them"
+ desc = "Consume a mob that you are dragging to gain nutrition from them."
background_icon_state = "bg_hive"
overlay_icon_state = "bg_hive_border"
button_icon = 'icons/mob/actions/actions_slime.dmi'
@@ -216,16 +216,16 @@
if(!.)
return
var/mob/living/simple_animal/hostile/ooze/gelatinous/ooze = owner
+ if(vored_mob) //one happy meal at a time, buddy
+ stop_consuming()
+ return FALSE
if(!isliving(ooze.pulling))
to_chat(src, span_warning("You need to be pulling a creature for this to work!"))
return FALSE
- if(vored_mob)
- to_chat(src, span_warning("You are already consuming another creature!"))
- return FALSE
- owner.visible_message(span_warning("[ooze] starts attempting to devour [target]!"), span_notice("You start attempting to devour [target]."))
- if(!do_after(ooze, 1.5 SECONDS, target = ooze.pulling))
- return FALSE
var/mob/living/eat_target = ooze.pulling
+ owner.visible_message(span_warning("[ooze] starts attempting to devour [eat_target]!"), span_notice("You start attempting to devour [eat_target]."))
+ if(!do_after(ooze, 1.5 SECONDS, eat_target))
+ return FALSE
if(!(eat_target.mob_biotypes & MOB_ORGANIC) || eat_target.stat == DEAD)
to_chat(src, span_warning("This creature isn't to my tastes!"))
@@ -240,6 +240,7 @@
playsound(owner,'sound/items/eatfood.ogg', rand(30,50), TRUE)
owner.visible_message(span_warning("[src] devours [target]!"), span_notice("You devour [target]."))
START_PROCESSING(SSprocessing, src)
+ build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON)
///Stop consuming the mob; dump them on the floor
/datum/action/consume/proc/stop_consuming()
@@ -252,6 +253,7 @@
owner.visible_message(span_warning("[owner] pukes out [vored_mob]!"), span_notice("You puke out [vored_mob]."))
UnregisterSignal(vored_mob, COMSIG_QDELETING)
vored_mob = null
+ build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON)
///Gain health for the consumption and dump some brute loss on the target.
/datum/action/consume/process()
@@ -260,14 +262,26 @@
ooze.heal_ordered_damage((ooze.maxHealth * 0.03), list(BRUTE, BURN, OXY)) ///Heal 6% of these specific damage types each process
ooze.adjust_ooze_nutrition(3)
- ///Dump em at 200 bruteloss.
- if(vored_mob.getBruteLoss() >= 200)
+ ///Dump 'em if they're dead.
+ if(vored_mob.stat == DEAD)
stop_consuming()
/datum/action/consume/Remove(mob/remove_from)
stop_consuming()
return ..()
+/datum/action/consume/update_button_name(atom/movable/screen/movable/action_button/button, force)
+ if(vored_mob)
+ name = "Eject Mob"
+ desc = "Eject the mob you're currently consuming."
+ else
+ name = "Consume"
+ desc = "Consume a mob that you are dragging to gain nutrition from them."
+ return ..()
+
+/datum/action/consume/apply_button_icon(atom/movable/screen/movable/action_button/current_button, force)
+ button_icon_state = vored_mob ? "eject" : "consume"
+ return ..()
///* Gelatinious Grapes code below *\\\\
diff --git a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
index fb7ac24da657f..d77649562430c 100644
--- a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
+++ b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm
@@ -22,7 +22,7 @@
lighting_cutoff_red = 10
lighting_cutoff_green = 25
lighting_cutoff_blue = 20
- attack_sound = 'sound/weapons/punch3.ogg'
+ attack_sound = 'sound/items/weapons/punch3.ogg'
attack_verb_continuous = "slaps"
attack_verb_simple = "slap"
@@ -108,7 +108,7 @@
span_warning("[owner] slaps [to_slap] with its tentacle!"),
span_notice("You slap [to_slap] with your tentacle."),
)
- playsound(owner, 'sound/effects/assslap.ogg', 90)
+ playsound(owner, 'sound/effects/emotes/assslap.ogg', 90)
var/atom/throw_target = get_edge_target_turf(to_slap, owner.dir)
living_to_slap.throw_at(throw_target, 6, 4, owner)
living_to_slap.apply_damage(30, BRUTE)
diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm
index 6bcb7afbd5402..45bcf6cd3acd7 100644
--- a/code/modules/mob/living/simple_animal/hostile/zombie.dm
+++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm
@@ -13,7 +13,7 @@
melee_damage_upper = 21
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
- attack_sound = 'sound/hallucinations/growl1.ogg'
+ attack_sound = 'sound/effects/hallucinations/growl1.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
combat_mode = TRUE
atmos_requirements = null
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 179b50710c1d3..3bdc67a3c8984 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -561,7 +561,7 @@
if(isliving(hunted)) // Are we hunting a living mob?
var/mob/living/prey = hunted
if(inept_hunter) // Make your hunter inept to have them unable to catch their prey.
- visible_message("[src] chases [prey] around, to no avail!")
+ visible_message(span_warning("[src] chases [prey] around, to no avail!"))
step(prey, pick(GLOB.cardinals))
COOLDOWN_START(src, emote_cooldown, 1 MINUTES)
return
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index d86d3dd700d9c..dda3d0f3ffc1e 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -292,7 +292,7 @@
var/raw_msg = message
if(visible_message_flags & EMOTE_MESSAGE)
- message = "[src][separation][message]" // DOPPLER EDIT ADDITION - Better emotes
+ message = span_emote("[src][separation][message]") // DOPPLER EDIT ADDITION - Better emotes
for(var/mob/M in hearers)
if(!M.client)
@@ -329,7 +329,7 @@
var/raw_self_message = self_message
var/self_runechat = FALSE
if(visible_message_flags & EMOTE_MESSAGE)
- self_message = "[src] [self_message]" // May make more sense as "You do x"
+ self_message = span_emote("[src] [self_message]") // May make more sense as "You do x"
if(visible_message_flags & ALWAYS_SHOW_SELF_MESSAGE)
to_chat(src, self_message)
@@ -371,7 +371,7 @@
hearers -= src
var/raw_msg = message
if(audible_message_flags & EMOTE_MESSAGE)
- message = "[src][separation][message]" //DOPPLER EDIT CHANGE
+ message = span_emote("[src][separation][message]") //DOPPLER EDIT CHANGE
for(var/mob/M in hearers)
if(audible_message_flags & EMOTE_MESSAGE && runechat_prefs_check(M, audible_message_flags) && M.can_hear())
M.create_chat_message(src, raw_message = raw_msg, runechat_flags = audible_message_flags)
@@ -395,7 +395,7 @@
var/raw_self_message = self_message
var/self_runechat = FALSE
if(audible_message_flags & EMOTE_MESSAGE)
- self_message = "[src] [self_message]"
+ self_message = span_emote("[src] [self_message]")
if(audible_message_flags & ALWAYS_SHOW_SELF_MESSAGE)
to_chat(src, self_message)
self_runechat = TRUE
@@ -1010,7 +1010,7 @@
)
antimagic_effect = mutable_appearance('icons/effects/effects.dmi', "shield-red", MOB_SHIELD_LAYER)
antimagic_color = LIGHT_COLOR_BLOOD_MAGIC
- playsound(src, 'sound/magic/magic_block.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/magic_block.ogg', 50, TRUE)
else if(magic_flags & MAGIC_RESISTANCE_HOLY)
visible_message(
@@ -1019,7 +1019,7 @@
)
antimagic_effect = mutable_appearance('icons/mob/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)
antimagic_color = LIGHT_COLOR_HOLY_MAGIC
- playsound(src, 'sound/magic/magic_block_holy.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/magic_block_holy.ogg', 50, TRUE)
else if(magic_flags & MAGIC_RESISTANCE_MIND)
visible_message(
@@ -1028,7 +1028,7 @@
)
antimagic_effect = mutable_appearance('icons/mob/effects/genetics.dmi', "telekinesishead", MOB_SHIELD_LAYER)
antimagic_color = LIGHT_COLOR_DARK_BLUE
- playsound(src, 'sound/magic/magic_block_mind.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/magic_block_mind.ogg', 50, TRUE)
mob_light(range = 2, power = 2, color = antimagic_color, duration = 5 SECONDS)
add_overlay(antimagic_effect)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 33a4ea12f753b..13bd8ee2318e8 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -93,6 +93,7 @@
return loc_atom.relaymove(mob, direct)
if(!mob.Process_Spacemove(direct))
+ SEND_SIGNAL(mob, COMSIG_MOB_CLIENT_MOVE_NOGRAV, args)
return FALSE
if(SEND_SIGNAL(mob, COMSIG_MOB_CLIENT_PRE_MOVE, args) & COMSIG_MOB_CLIENT_BLOCK_PRE_MOVE)
@@ -264,19 +265,29 @@
if(. || HAS_TRAIT(src, TRAIT_SPACEWALK))
return TRUE
- // FUCK OFF
if(buckled)
return TRUE
+ if(movement_type & FLYING || HAS_TRAIT(src, TRAIT_FREE_FLOAT_MOVEMENT))
+ return TRUE
+
+ if (HAS_TRAIT(src, TRAIT_NOGRAV_ALWAYS_DRIFT))
+ return FALSE
+
var/atom/movable/backup = get_spacemove_backup(movement_dir, continuous_move)
if(!backup)
return FALSE
+
+ if (SEND_SIGNAL(src, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, movement_dir, continuous_move, backup) & COMPONENT_PREVENT_SPACEMOVE_HALT)
+ return FALSE
+
if(continuous_move || !istype(backup) || !movement_dir || backup.anchored)
return TRUE
+
// last pushoff exists for one reason
// to ensure pushing a mob doesn't just lead to it considering us as backup, and failing
last_pushoff = world.time
- if(backup.newtonian_move(REVERSE_DIR(movement_dir), instant = TRUE)) //You're pushing off something movable, so it moves
+ if(backup.newtonian_move(dir2angle(REVERSE_DIR(movement_dir)), instant = TRUE)) //You're pushing off something movable, so it moves
// We set it down here so future calls to Process_Spacemove by the same pair in the same tick don't lead to fucky
backup.last_pushoff = world.time
to_chat(src, span_info("You push off of [backup] to propel yourself."))
@@ -287,6 +298,8 @@
* Takes the intended movement direction as input, alongside if the context is checking if we're allowed to continue drifting
*/
/mob/get_spacemove_backup(moving_direction, continuous_move)
+ var/atom/secondary_backup
+ var/list/priority_dirs = (moving_direction in GLOB.cardinals) ? GLOB.cardinals : GLOB.diagonals
for(var/atom/pushover as anything in range(1, get_turf(src)))
if(pushover == src)
continue
@@ -298,7 +311,10 @@
continue
if(!turf.density && !mob_negates_gravity())
continue
- return pushover
+ if (get_dir(src, pushover) in priority_dirs)
+ return pushover
+ secondary_backup = pushover
+ continue
var/atom/movable/rebound = pushover
if(rebound == buckled)
@@ -315,7 +331,7 @@
if(rebound.last_pushoff == world.time)
continue
if(continuous_move && !pass_allowed)
- var/datum/move_loop/move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSspacedrift)
+ var/datum/move_loop/move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSnewtonian_movement)
// If you're moving toward it and you're both going the same direction, stop
if(moving_direction == get_dir(src, pushover) && rebound_engine && moving_direction == rebound_engine.direction)
continue
@@ -323,10 +339,16 @@
if(moving_direction == get_dir(src, pushover)) // Can't push "off" of something that you're walking into
continue
if(rebound.anchored)
- return rebound
+ if (get_dir(src, rebound) in priority_dirs)
+ return rebound
+ secondary_backup = rebound
+ continue
if(pulling == rebound)
continue
- return rebound
+ if (get_dir(src, rebound) in priority_dirs)
+ return rebound
+ secondary_backup = rebound
+ return secondary_backup
/mob/has_gravity(turf/gravity_turf)
return mob_negates_gravity() || ..()
diff --git a/code/modules/mob_spawn/ghost_roles/mining_roles.dm b/code/modules/mob_spawn/ghost_roles/mining_roles.dm
index 00ff1b5a8fd1e..12b5c6deb2f2f 100644
--- a/code/modules/mob_spawn/ghost_roles/mining_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/mining_roles.dm
@@ -179,12 +179,12 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/blob/attackblob.ogg', 100, TRUE)
else
- playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
if(damage_amount)
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/ash_walker_eggshell/attack_ghost(mob/user) //Pass on ghost clicks to the mob spawner
if(egg)
diff --git a/code/modules/mob_spawn/ghost_roles/unused_roles.dm b/code/modules/mob_spawn/ghost_roles/unused_roles.dm
index d533c2365c47b..df651eb29c77c 100644
--- a/code/modules/mob_spawn/ghost_roles/unused_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/unused_roles.dm
@@ -167,7 +167,7 @@
message = "You wished for power. Little good it did you, cast out of the light. You are the [gender == MALE ? "king" : "queen"] of a hell that holds no subjects. You feel only remorse."
if(4)
message = "You wished for immortality, even as your friends lay dying behind you. No matter how many times you cast yourself into the lava, you awaken in this room again within a few days. There is no escape."
- to_chat(new_spawn, "[message]")
+ to_chat(new_spawn, span_infoplain("[message]"))
/obj/effect/mob_spawn/ghost_role/human/nanotrasensoldier
name = "sleeper"
diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm
index ca724ab405857..b39707b97aff5 100644
--- a/code/modules/mob_spawn/mob_spawn.dm
+++ b/code/modules/mob_spawn/mob_spawn.dm
@@ -278,7 +278,7 @@
spawned_mind.name = spawned_mob.real_name
if(show_flavor)
- var/output_message = "[you_are_text]"
+ var/output_message = span_infoplain("[you_are_text]")
if(flavour_text != "")
output_message += "\n[flavour_text]"
if(important_text != "")
diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm
index 8c4de3be84d84..7da28c17a3a46 100644
--- a/code/modules/mod/mod_activation.dm
+++ b/code/modules/mod/mod_activation.dm
@@ -22,7 +22,7 @@
return
if(active || activating)
balloon_alert(user, "deactivate the suit first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
var/parts_to_check = parts - part
if(part.loc == src)
@@ -46,7 +46,7 @@
/obj/item/mod/control/proc/quick_deploy(mob/user)
if(active || activating)
balloon_alert(user, "deactivate the suit first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
var/deploy = TRUE
for(var/obj/item/part as anything in get_parts())
@@ -62,7 +62,7 @@
wearer.visible_message(span_notice("[wearer]'s [src] [deploy ? "deploys" : "retracts"] its parts with a mechanical hiss."),
span_notice("[src] [deploy ? "deploys" : "retracts"] its parts with a mechanical hiss."),
span_hear("You hear a mechanical hiss."))
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
if(deploy)
SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
else
@@ -73,13 +73,13 @@
/obj/item/mod/control/proc/deploy(mob/user, obj/item/part)
var/datum/mod_part/part_datum = get_part_datum(part)
if(!wearer)
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE // pAI is trying to deploy it from your hands
if(part.loc != src)
if(!user)
return FALSE
balloon_alert(user, "[part.name] already deployed!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
if(part_datum.can_overslot)
var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags)
if(overslot)
@@ -93,14 +93,14 @@
wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
span_hear("You hear a mechanical hiss."))
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part)
return TRUE
else
if(!user)
return FALSE
balloon_alert(user, "bodypart clothed!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
/// Retract a part of the suit from the user.
@@ -110,7 +110,7 @@
if(!user)
return FALSE
balloon_alert(user, "[part.name] already retracted!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
wearer.transferItemToLoc(part, src, force = TRUE)
if(part_datum.overslotting)
@@ -125,39 +125,39 @@
wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."),
span_notice("[part] retract[part.p_s()] back into [src] with a mechanical hiss."),
span_hear("You hear a mechanical hiss."))
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
/// Starts the activation sequence, where parts of the suit activate one by one until the whole suit is on.
/obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE)
if(!wearer)
if(!force_deactivate)
balloon_alert(user, "equip suit first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE))
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
for(var/obj/item/part as anything in get_parts())
if(!force_deactivate && part.loc == src)
balloon_alert(user, "deploy all parts first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(locked && !active && !allowed(user) && !force_deactivate)
balloon_alert(user, "access insufficient!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(!get_charge() && !force_deactivate)
balloon_alert(user, "suit not powered!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(open && !force_deactivate)
balloon_alert(user, "close the suit panel!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(activating)
if(!force_deactivate)
balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
for(var/obj/item/mod/module/module as anything in modules)
if(!module.active || (module.allow_flags & MODULE_ALLOW_INACTIVE))
@@ -170,7 +170,7 @@
var/datum/mod_part/part_datum = get_part_datum(part)
if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE))
to_chat(wearer, span_notice("[part] [active ? part_datum.unsealed_message : part_datum.sealed_message]."))
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
seal_part(part, is_sealed = !active)
if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE))
to_chat(wearer, span_notice("Systems [active ? "shut down. Parts unsealed. Goodbye" : "started up. Parts sealed. Welcome"], [wearer]."))
@@ -178,11 +178,11 @@
to_chat(ai_assistant, span_notice("SYSTEMS [active ? "DEACTIVATED. GOODBYE" : "ACTIVATED. WELCOME"]: \"[ai_assistant]\""))
finish_activation(is_on = !active)
if(active)
- playsound(src, 'sound/machines/synth_yes.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, frequency = 6000)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, frequency = 6000)
if(!malfunctioning)
- wearer.playsound_local(get_turf(src), 'sound/mecha/nominal.ogg', 50)
+ wearer.playsound_local(get_turf(src), 'sound/vehicles/mecha/nominal.ogg', 50)
else
- playsound(src, 'sound/machines/synth_no.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, frequency = 6000)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, frequency = 6000)
activating = FALSE
SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user)
return TRUE
diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm
index 4f855fa8bc999..1336ff1707449 100644
--- a/code/modules/mod/mod_ai.dm
+++ b/code/modules/mod/mod_ai.dm
@@ -143,7 +143,7 @@
return FALSE
COOLDOWN_START(src, cooldown_mod_move, movedelay * timemodifier + slowdown_active)
subtract_charge(CHARGE_PER_STEP)
- playsound(src, 'sound/mecha/mechmove01.ogg', 25, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechmove01.ogg', 25, TRUE)
if(ismovable(wearer?.loc))
return wearer.loc.relaymove(wearer, direction)
else if(wearer)
diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm
index 1faadafe0ec6d..df2096ae367a4 100644
--- a/code/modules/mod/mod_control.dm
+++ b/code/modules/mod/mod_control.dm
@@ -222,7 +222,7 @@
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
balloon_alert(user, "retract parts first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return FALSE
/obj/item/mod/control/mouse_drop_dragged(atom/over_object, mob/user)
@@ -231,7 +231,7 @@
for(var/obj/item/part as anything in get_parts())
if(part.loc != src)
balloon_alert(wearer, "retract parts first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
return
if(!wearer.incapacitated)
var/atom/movable/screen/inventory/hand/ui_hand = over_object
@@ -259,7 +259,7 @@
/obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver)
if(active || activating || ai_controller)
balloon_alert(user, "deactivate suit first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
balloon_alert(user, "[open ? "closing" : "opening"] cover...")
screwdriver.play_tool_sound(src, 100)
@@ -276,14 +276,14 @@
/obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar)
if(!open)
balloon_alert(user, "open the cover first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(!allowed(user))
balloon_alert(user, "insufficient access!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(SEND_SIGNAL(src, COMSIG_MOD_MODULE_REMOVAL, user) & MOD_CANCEL_REMOVAL)
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(length(modules))
var/list/removable_modules = list()
@@ -300,7 +300,7 @@
SEND_SIGNAL(src, COMSIG_MOD_MODULE_REMOVED, user)
return ITEM_INTERACT_SUCCESS
balloon_alert(user, "no modules!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
// Makes use of tool act to prevent shoving stuff into our internal storage
@@ -334,7 +334,7 @@
if(istype(tool, /obj/item/mod/module))
if(!open)
balloon_alert(user, "open the cover first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
install(tool, user)
SEND_SIGNAL(src, COMSIG_MOD_MODULE_ADDED, user)
@@ -342,11 +342,11 @@
if(istype(tool, /obj/item/mod/core))
if(!open)
balloon_alert(user, "open the cover first!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
if(core)
balloon_alert(user, "core already installed!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return ITEM_INTERACT_BLOCKING
var/obj/item/mod/core/attacking_core = tool
attacking_core.install(src)
@@ -548,24 +548,24 @@
if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules))
if(user)
balloon_alert(user, "[new_module] incompatible with [old_module]!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
var/complexity_with_module = complexity
complexity_with_module += new_module.complexity
if(complexity_with_module > complexity_max)
if(user)
balloon_alert(user, "[new_module] would make [src] too complex!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.has_required_parts(mod_parts))
if(user)
balloon_alert(user, "[new_module] incompatible with [src]'s parts!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(!new_module.can_install(src))
if(user)
balloon_alert(user, "[new_module] cannot be installed into [src]!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
new_module.forceMove(src)
modules += new_module
@@ -602,7 +602,7 @@
/obj/item/mod/control/proc/update_access(mob/user, obj/item/card/id/card)
if(!allowed(user))
balloon_alert(user, "insufficient access!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
req_access = card.access.Copy()
balloon_alert(user, "access updated")
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 5c8d4a2e2ee47..791c5347722b6 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -223,11 +223,11 @@
return FALSE
if(!mod.open)
mod.balloon_alert(user, "open the cover first!")
- playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
if(cell)
mod.balloon_alert(user, "cell already installed!")
- playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return FALSE
install_cell(attacking_item)
mod.balloon_alert(user, "cell installed")
diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm
index aa5307957f981..e7a5a20d9f370 100644
--- a/code/modules/mod/mod_link.dm
+++ b/code/modules/mod/mod_link.dm
@@ -15,7 +15,7 @@
/proc/get_link_visual_generic(datum/mod_link/mod_link, atom/movable/visuals, proc_path)
var/mob/living/user = mod_link.get_user_callback.Invoke()
- playsound(mod_link.holder, 'sound/machines/terminal_processing.ogg', 50, vary = TRUE)
+ playsound(mod_link.holder, 'sound/machines/terminal/terminal_processing.ogg', 50, vary = TRUE)
visuals.add_overlay(mutable_appearance('icons/effects/effects.dmi', "static_base", ABOVE_NORMAL_TURF_LAYER))
visuals.add_overlay(mutable_appearance('icons/effects/effects.dmi', "modlink", ABOVE_ALL_MOB_LAYER))
visuals.add_filter("crop_square", 1, alpha_mask_filter(icon = icon('icons/effects/effects.dmi', "modlink_filter")))
@@ -30,7 +30,7 @@
/proc/delete_link_visual_generic(datum/mod_link/mod_link)
var/mob/living/user = mod_link.get_user_callback.Invoke()
- playsound(mod_link.get_other().holder, 'sound/machines/terminal_processing.ogg', 50, vary = TRUE, frequency = -1)
+ playsound(mod_link.get_other().holder, 'sound/machines/terminal/terminal_processing.ogg', 50, vary = TRUE, frequency = -1)
LAZYREMOVE(mod_link.holder.update_on_z, mod_link.visual)
mod_link.holder.lose_hearing_sensitivity(REF(mod_link))
mod_link.holder.UnregisterSignal(user, list(COMSIG_CARBON_APPLY_OVERLAY, COMSIG_CARBON_REMOVE_OVERLAY, COMSIG_ATOM_DIR_CHANGE))
@@ -421,7 +421,7 @@
if(!can_call_callback.Invoke() || !called.can_call_callback.Invoke())
holder.balloon_alert(user, "can't call!")
return
- link_target.playsound_local(get_turf(called.holder), 'sound/weapons/ring.ogg', 15, vary = TRUE)
+ link_target.playsound_local(get_turf(called.holder), 'sound/items/weapons/ring.ogg', 15, vary = TRUE)
var/atom/movable/screen/alert/modlink_call/alert = link_target.throw_alert("[REF(src)]_modlink", /atom/movable/screen/alert/modlink_call)
alert.desc = "[holder] ([id]) is calling you! Left-click this to accept the call. Right-click to deny it."
alert.caller_ref = WEAKREF(src)
diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm
index b20efa4c66641..626144bf3e114 100644
--- a/code/modules/mod/mod_types.dm
+++ b/code/modules/mod/mod_types.dm
@@ -98,11 +98,13 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
/obj/item/mod/module/headprotector,
+ /obj/item/mod/module/tether,
)
default_pins = list(
/obj/item/mod/module/magboot/advanced,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
+ /obj/item/mod/module/tether,
)
/obj/item/mod/control/pre_equipped/loader
@@ -208,13 +210,13 @@
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/hat_stabilizer,
/obj/item/mod/module/magnetic_harness,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/pathfinder,
/obj/item/mod/module/quick_cuff,
/obj/item/mod/module/headprotector,
)
default_pins = list(
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/cosmohonk
@@ -256,7 +258,7 @@
/obj/item/mod/module/shock_absorber,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/dna_lock,
@@ -265,7 +267,7 @@
)
default_pins = list(
/obj/item/mod/module/armor_booster,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
)
@@ -279,7 +281,7 @@
/obj/item/mod/module/shock_absorber,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/hat_stabilizer/syndicate,
@@ -287,14 +289,14 @@
)
default_pins = list(
/obj/item/mod/module/armor_booster,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
)
/obj/item/mod/control/pre_equipped/nuclear/no_jetpack
/obj/item/mod/control/pre_equipped/nuclear/no_jetpack/Initialize(mapload, new_theme, new_skin, new_core)
- applied_modules -= list(/obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet)
+ applied_modules -= list(/obj/item/mod/module/jetpack/advanced, /obj/item/mod/module/jump_jet)
return ..()
/obj/item/mod/control/pre_equipped/nuclear/plasmaman
@@ -316,7 +318,7 @@
/obj/item/mod/module/shock_absorber,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/hat_stabilizer/syndicate,
@@ -324,7 +326,7 @@
)
default_pins = list(
/obj/item/mod/module/armor_booster,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
)
@@ -335,7 +337,7 @@
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/thermal_regulator,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/hat_stabilizer/syndicate,
@@ -344,7 +346,7 @@
)
default_pins = list(
/obj/item/mod/module/armor_booster,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flamethrower,
)
@@ -440,13 +442,13 @@
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/magnetic_harness,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/jump_jet,
)
@@ -637,7 +639,7 @@
/obj/item/mod/module/stealth/ninja,
/obj/item/mod/module/quick_carry/advanced,
/obj/item/mod/module/magboot/advanced,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/anomaly_locked/kinesis/admin,
/obj/item/mod/module/shove_blocker,
/obj/item/mod/module/quick_cuff,
@@ -645,7 +647,7 @@
default_pins = list(
/obj/item/mod/module/stealth/ninja,
/obj/item/mod/module/magboot/advanced,
- /obj/item/mod/module/jetpack,
+ /obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/anomaly_locked/kinesis/admin,
)
diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm
index f994b91060fea..2a8ccf7b4bf94 100644
--- a/code/modules/mod/mod_ui.dm
+++ b/code/modules/mod/mod_ui.dm
@@ -92,7 +92,7 @@
balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!")
else
balloon_alert(ui.user, "access insufficent!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
if("call")
if(!mod_link.link_call)
call_link(ui.user, mod_link)
diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm
index 374be840d9507..c17f03747b13f 100644
--- a/code/modules/mod/modules/module_kinesis.dm
+++ b/code/modules/mod/modules/module_kinesis.dm
@@ -161,7 +161,7 @@
RegisterSignal(grabbed_atom, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange))
ADD_TRAIT(grabbed_atom, TRAIT_NO_FLOATING_ANIM, REF(src))
RegisterSignal(grabbed_atom, COMSIG_MOVABLE_SET_ANCHORED, PROC_REF(on_setanchored))
- playsound(grabbed_atom, 'sound/effects/contractorbatonhit.ogg', 75, TRUE)
+ playsound(grabbed_atom, 'sound/items/weapons/contractor_baton/contractorbatonhit.ogg', 75, TRUE)
kinesis_icon = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "kinesis", layer = grabbed_atom.layer - 0.1)
kinesis_icon.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
kinesis_icon.overlays += emissive_appearance(icon = 'icons/effects/effects.dmi', icon_state = "kinesis", offset_spokesman = grabbed_atom)
@@ -223,7 +223,7 @@
clear_grab()
/obj/item/mod/module/anomaly_locked/kinesis/proc/launch(atom/movable/launched_object)
- playsound(launched_object, 'sound/magic/repulse.ogg', 100, TRUE)
+ playsound(launched_object, 'sound/effects/magic/repulse.ogg', 100, TRUE)
RegisterSignal(launched_object, COMSIG_MOVABLE_IMPACT, PROC_REF(launch_impact))
var/turf/target_turf = get_turf_in_angle(get_angle(mod.wearer, launched_object), get_turf(src), 10)
launched_object.throw_at(target_turf, range = grab_range, speed = launched_object.density ? 3 : 4, thrower = mod.wearer, spin = isitem(launched_object))
diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm
index c67fd7755d8c6..8fa2670c76091 100644
--- a/code/modules/mod/modules/modules_antag.dm
+++ b/code/modules/mod/modules/modules_antag.dm
@@ -49,7 +49,7 @@
head_cover.flash_protect = initial(head_cover.flash_protect)
/obj/item/mod/module/armor_booster/on_activation()
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor boosted, EVA lost")
actual_speed_added = max(0, min(mod.slowdown_active, speed_added))
mod.slowdown -= actual_speed_added
@@ -68,7 +68,7 @@
/obj/item/mod/module/armor_booster/on_deactivation(display_message = TRUE, deleting = FALSE)
if(!deleting)
- playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
balloon_alert(mod.wearer, "armor retracts, EVA ready")
mod.slowdown += actual_speed_added
mod.wearer.update_equipment_speed_mods()
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index 40e1889efd968..dffa66e3931b5 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -93,13 +93,6 @@
cooldown_time = 1.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
-/obj/item/mod/module/tether/used()
- if(mod.wearer.has_gravity(get_turf(src)))
- balloon_alert(mod.wearer, "too much gravity!")
- playsound(src, 'sound/weapons/gun/general/dry_fire.ogg', 25, TRUE)
- return FALSE
- return ..()
-
/obj/item/mod/module/tether/on_select_use(atom/target)
. = ..()
if(!.)
@@ -107,7 +100,7 @@
var/obj/projectile/tether = new /obj/projectile/tether(mod.wearer.loc)
tether.preparePixelProjectile(target, mod.wearer)
tether.firer = mod.wearer
- playsound(src, 'sound/weapons/batonextend.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 25, TRUE)
INVOKE_ASYNC(tether, TYPE_PROC_REF(/obj/projectile, fire))
drain_power(use_energy_cost)
@@ -117,12 +110,30 @@
icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
damage = 0
range = 10
- hitsound = 'sound/weapons/batonextend.ogg'
- hitsound_wall = 'sound/weapons/batonextend.ogg'
+ hitsound = 'sound/items/weapons/batonextend.ogg'
+ hitsound_wall = 'sound/items/weapons/batonextend.ogg'
suppressed = SUPPRESSED_VERY
hit_threshhold = ABOVE_NORMAL_TURF_LAYER
+ embed_type = /datum/embed_data/tether_projectile
+ shrapnel_type = /obj/item/tether_anchor
/// Reference to the beam following the projectile.
var/line
+ /// Last turf that we passed before impact
+ var/turf/open/last_turf
+
+/obj/projectile/tether/Initialize(mapload)
+ . = ..()
+ RegisterSignal(src, COMSIG_PROJECTILE_ON_EMBEDDED, PROC_REF(on_embedded))
+
+/obj/projectile/tether/proc/on_embedded(datum/source, obj/item/payload, atom/hit)
+ SIGNAL_HANDLER
+
+ firer.AddComponent(/datum/component/tether, hit, 7, "MODtether", payload)
+
+/obj/projectile/tether/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
+ . = ..()
+ if (isopenturf(loc))
+ last_turf = loc
/obj/projectile/tether/fire(setAngle)
if(firer)
@@ -131,13 +142,102 @@
/obj/projectile/tether/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
- if(firer)
- firer.throw_at(target, 10, 1, firer, FALSE, FALSE, null, MOVE_FORCE_NORMAL, TRUE)
+ if (!firer)
+ return
+
+ // Funni is handled separately
+ if (ismob(target))
+ return
+
+ if (istype(target, /obj/item/tether_anchor) || isstructure(target) || ismachinery(target))
+ firer.AddComponent(/datum/component/tether, target, 7, "MODtether")
+ return
+
+ var/hitx
+ var/hity
+ if(target == original)
+ hitx = target.pixel_x + p_x - 16
+ hity = target.pixel_y + p_y - 16
+ else
+ hitx = target.pixel_x + rand(-8, 8)
+ hity = target.pixel_y + rand(-8, 8)
+
+ if (!isnull(last_turf) && last_turf != target && last_turf != target.loc)
+ var/turf_dir = get_dir(last_turf, get_turf(target))
+ if (turf_dir & NORTH)
+ hity += 32
+ if (turf_dir & SOUTH)
+ hity -= 32
+ if (turf_dir & EAST)
+ hitx += 32
+ if (turf_dir & WEST)
+ hitx -= 32
+
+ var/obj/item/tether_anchor/anchor = new(last_turf || get_turf(target))
+ anchor.pixel_x = hitx
+ anchor.pixel_y = hity
+ anchor.anchored = TRUE
+ firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether")
/obj/projectile/tether/Destroy()
QDEL_NULL(line)
return ..()
+/obj/item/tether_anchor
+ name = "tether anchor"
+ desc = "A reinforced anchor with a tether attachment point. A centuries old EVA tool which saved countless engineers' lives."
+ icon_state = "tether_latched"
+ icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
+ max_integrity = 60
+ interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
+
+/obj/item/tether_anchor/examine(mob/user)
+ . = ..()
+ . += span_info("It can be secured by using a wrench on it. Use right-click to tether yourself to [src].")
+
+/obj/item/tether_anchor/wrench_act(mob/living/user, obj/item/tool)
+ . = ..()
+ default_unfasten_wrench(user, tool)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/tether_anchor/attack_hand_secondary(mob/user, list/modifiers)
+ if (!can_interact(user) || !user.CanReach(src) || !isturf(loc))
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+
+ balloon_alert(user, "attached tether")
+ user.AddComponent(/datum/component/tether, src, 7, "tether")
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+
+/obj/item/tether_anchor/mouse_drop_receive(atom/target, mob/user, params)
+ if (!can_interact(user) || !user.CanReach(src) || !isturf(loc))
+ return
+
+ if (!isliving(target) || !target.CanReach(src))
+ return
+
+ if (target == user)
+ balloon_alert(user, "attached tether")
+ user.AddComponent(/datum/component/tether, src, 7, "tether")
+ return
+
+ balloon_alert(user, "attaching tether...")
+ to_chat(target, span_userdanger("[user] is trying to attach a tether to you!"))
+ if (!do_after(user, 5 SECONDS, target))
+ return
+
+ balloon_alert(user, "attached tether")
+ to_chat(target, span_userdanger("[user] attaches a tether to you!"))
+ target.AddComponent(/datum/component/tether, src, 7, "tether")
+
+/datum/embed_data/tether_projectile
+ embed_chance=65 // spiky
+ fall_chance=2
+ ignore_throwspeed_threshold=TRUE
+ pain_stam_pct=0.4
+ pain_mult=3
+ jostle_pain_mult=2
+ rip_time=1 SECONDS
+
///Radiation Protection - Protects the user from radiation, gives them a geiger counter and rad info in the panel.
/obj/item/mod/module/rad_protection
name = "MOD radiation protection module"
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index 2a2d29bb08f6a..3faf44fe2f088 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -112,6 +112,10 @@
var/stabilize = TRUE
/// Callback to see if we can thrust the user.
var/thrust_callback
+ /// How much force this module can apply per tick
+ var/drift_force = 1.5 NEWTONS
+ /// How much force this module's stabilizier can put out
+ var/stabilizer_force = 1.2 NEWTONS
/obj/item/mod/module/jetpack/Initialize(mapload)
. = ..()
@@ -134,13 +138,21 @@
AddComponent( \
/datum/component/jetpack, \
src.stabilize, \
+ drift_force, \
+ stabilizer_force, \
COMSIG_MODULE_TRIGGERED, \
COMSIG_MODULE_DEACTIVATED, \
MOD_ABORT_USE, \
thrust_callback, \
- /datum/effect_system/trail_follow/ion/grav_allowed \
+ /datum/effect_system/trail_follow/ion/grav_allowed, \
)
+ if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src)
+ if (!stabilize)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+ else
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+
/obj/item/mod/module/jetpack/get_configuration()
. = ..()
.["stabilizers"] = add_ui_configuration("Stabilizers", "bool", stabilize)
@@ -157,6 +169,25 @@
return FALSE
return TRUE
+/obj/item/mod/module/jetpack/on_activation()
+ mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
+ if (!stabilize)
+ ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+
+/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE)
+ mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+
+/obj/item/mod/module/jetpack/advanced
+ name = "MOD advanced ion jetpack module"
+ desc = "An improvement on the previous model of electric thrusters. This one achieves higher precision \
+ and spartial stability through mounting of more jets and application of red paint."
+ icon_state = "jetpack_advanced"
+ overlay_state_inactive = "module_jetpackadv"
+ overlay_state_active = "module_jetpackadv_on"
+ drift_force = 2 NEWTONS
+ stabilizer_force = 2 NEWTONS
+
/// Cooldown to use if we didn't actually launch a jump jet
#define FAILED_ACTIVATION_COOLDOWN 3 SECONDS
@@ -920,7 +951,7 @@
playsound(src, 'sound/machines/microwave/microwave-end.ogg', 50, TRUE)
return
balloon_alert(mod.wearer, "not enough material")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
/obj/item/mod/module/recycler/proc/InsertSheets(obj/item/recycler, obj/item/stack/sheets, atom/context)
SIGNAL_HANDLER
@@ -949,7 +980,7 @@
/obj/item/mod/module/recycler/donk/dispense(atom/target)
if(!container.use_amount_mat(required_amount, /datum/material/iron))
balloon_alert(mod.wearer, "not enough material")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return
var/obj/item/ammo_box/product = new ammobox_type(target)
attempt_insert_storage(product)
diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm
index 0d45bc4a44db8..f59076fa4b5ff 100644
--- a/code/modules/mod/modules/modules_maint.dm
+++ b/code/modules/mod/modules/modules_maint.dm
@@ -107,7 +107,7 @@
QDEL_NULL(music_player)
if(deleting)
return
- SEND_SOUND(mod.wearer, sound('sound/machines/terminal_off.ogg', volume = 50, channel = CHANNEL_JUKEBOX))
+ SEND_SOUND(mod.wearer, sound('sound/machines/terminal/terminal_off.ogg', volume = 50, channel = CHANNEL_JUKEBOX))
/obj/item/mod/module/visor/rave/generate_worn_overlay(mutable_appearance/standing)
. = ..()
@@ -270,7 +270,7 @@
var/you_fucked_up = FALSE
/obj/item/mod/module/atrocinator/on_activation()
- playsound(src, 'sound/effects/curseattack.ogg', 50)
+ playsound(src, 'sound/effects/curse/curseattack.ogg', 50)
mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY)
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs))
RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk))
@@ -286,7 +286,7 @@
/obj/item/mod/module/atrocinator/on_deactivation(display_message = TRUE, deleting = FALSE)
if(!deleting)
- playsound(src, 'sound/effects/curseattack.ogg', 50)
+ playsound(src, 'sound/effects/curse/curseattack.ogg', 50)
qdel(mod.wearer.RemoveElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY))
UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
UnregisterSignal(mod.wearer, COMSIG_MOB_SAY)
diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm
index 22c30cf5c36c2..1d83f91dac81f 100644
--- a/code/modules/mod/modules/modules_medical.dm
+++ b/code/modules/mod/modules/modules_medical.dm
@@ -160,7 +160,7 @@
organ_list += organ
organ.forceMove(src)
balloon_alert(mod.wearer, "picked up [organ]")
- playsound(src, 'sound/mecha/hydraulic.ogg', 25, TRUE)
+ playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE)
drain_power(use_energy_cost)
return
if(!length(organ_list))
@@ -169,15 +169,15 @@
var/obj/projectile/organ/projectile = new /obj/projectile/organ(mod.wearer.loc, fired_organ)
projectile.preparePixelProjectile(target, mod.wearer)
projectile.firer = mod.wearer
- playsound(src, 'sound/mecha/hydraulic.ogg', 25, TRUE)
+ playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE)
INVOKE_ASYNC(projectile, TYPE_PROC_REF(/obj/projectile, fire))
drain_power(use_energy_cost)
/obj/projectile/organ
name = "organ"
damage = 0
- hitsound = 'sound/effects/attackblob.ogg'
- hitsound_wall = 'sound/effects/attackblob.ogg'
+ hitsound = 'sound/effects/blob/attackblob.ogg'
+ hitsound_wall = 'sound/effects/blob/attackblob.ogg'
/// A reference to the organ we "are".
var/obj/item/organ/organ
@@ -338,7 +338,7 @@
balloon_alert(mod.wearer, "already ripped!")
return
balloon_alert(mod.wearer, "ripping clothing...")
- playsound(src, 'sound/items/zip.ogg', 25, TRUE, frequency = -1)
+ playsound(src, 'sound/items/zip/zip.ogg', 25, TRUE, frequency = -1)
if(!do_after(mod.wearer, 1.5 SECONDS, target = carbon_target))
balloon_alert(mod.wearer, "interrupted!")
return
@@ -369,7 +369,7 @@
clothing.body_parts_covered |= ripped_clothing[clothing]
ripped_clothing -= clothing
if(zipped)
- playsound(src, 'sound/items/zip.ogg', 25, TRUE)
+ playsound(src, 'sound/items/zip/zip.ogg', 25, TRUE)
balloon_alert(mod.wearer, "clothing mended")
/obj/item/mod/module/thread_ripper/on_suit_deactivation(deleting = FALSE)
@@ -382,7 +382,7 @@
clothing.body_parts_covered |= ripped_clothing[clothing]
ripped_clothing = list()
if(!deleting)
- playsound(src, 'sound/items/zip.ogg', 25, TRUE)
+ playsound(src, 'sound/items/zip/zip.ogg', 25, TRUE)
///Surgical Processor - Lets you do advanced surgeries portably.
/obj/item/mod/module/surgical_processor
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index a5215341a06d2..bce377c71e935 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -325,7 +325,7 @@
var/obj/projectile/net = new /obj/projectile/energy_net(mod.wearer.loc, src)
net.preparePixelProjectile(target, mod.wearer)
net.firer = mod.wearer
- playsound(src, 'sound/weapons/punchmiss.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/punchmiss.ogg', 25, TRUE)
INVOKE_ASYNC(net, TYPE_PROC_REF(/obj/projectile, fire))
drain_power(use_energy_cost)
@@ -343,8 +343,8 @@
icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
damage = 0
range = 9
- hitsound = 'sound/items/fultext_deploy.ogg'
- hitsound_wall = 'sound/items/fultext_deploy.ogg'
+ hitsound = 'sound/items/fulton/fultext_deploy.ogg'
+ hitsound_wall = 'sound/items/fulton/fultext_deploy.ogg'
/// Reference to the beam following the projectile.
var/line
/// Reference to the energy net module.
diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm
index 5da8ff00241c9..8edcaff7715f0 100644
--- a/code/modules/mod/modules/modules_security.dm
+++ b/code/modules/mod/modules/modules_security.dm
@@ -128,10 +128,10 @@
if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE))
holstered = holding
balloon_alert(mod.wearer, "weapon holstered")
- playsound(src, 'sound/weapons/gun/revolver/empty.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/gun/revolver/empty.ogg', 100, TRUE)
else if(mod.wearer.put_in_active_hand(holstered, forced = FALSE, ignore_animation = TRUE))
balloon_alert(mod.wearer, "weapon drawn")
- playsound(src, 'sound/weapons/gun/revolver/empty.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/gun/revolver/empty.ogg', 100, TRUE)
else
balloon_alert(mod.wearer, "holster full!")
@@ -232,14 +232,14 @@
return
linked_bodybag = new bodybag_type(target_turf)
linked_bodybag.take_contents()
- playsound(linked_bodybag, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(linked_bodybag, 'sound/items/weapons/egloves.ogg', 80, TRUE)
RegisterSignal(linked_bodybag, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
/obj/item/mod/module/criminalcapture/proc/packup()
if(!linked_bodybag)
return
- playsound(linked_bodybag, 'sound/weapons/egloves.ogg', 80, TRUE)
+ playsound(linked_bodybag, 'sound/items/weapons/egloves.ogg', 80, TRUE)
apply_wibbly_filters(linked_bodybag)
animate(linked_bodybag, 0.5 SECONDS, alpha = 50, flags = ANIMATION_PARALLEL)
addtimer(CALLBACK(src, PROC_REF(delete_bag), linked_bodybag), 0.5 SECONDS)
@@ -452,7 +452,7 @@
/obj/item/mod/module/active_sonar/on_use()
balloon_alert(mod.wearer, "readying sonar...")
- playsound(mod.wearer, 'sound/mecha/skyfall_power_up.ogg', vol = 20, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(mod.wearer, 'sound/vehicles/mecha/skyfall_power_up.ogg', vol = 20, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
if(!do_after(mod.wearer, 1.1 SECONDS, target = mod))
return
playsound(mod.wearer, 'sound/effects/ping_hit.ogg', vol = 75, vary = TRUE) // Should be audible for the radius of the sonar
@@ -503,7 +503,7 @@
return
if(new_mode != SHOOTING_ASSISTANT_OFF && !mod.get_charge())
balloon_alert(mod.wearer, "no charge!")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
//Remove the effects of the previously selected mode
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 18c1ac6926763..1ce0a2f316d49 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -53,7 +53,7 @@
var/atom/movable/picked_crate = target
if(!check_crate_pickup(picked_crate))
return
- playsound(src, 'sound/mecha/hydraulic.ogg', 25, TRUE)
+ playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE)
if(!do_after(mod.wearer, load_time, target = target))
balloon_alert(mod.wearer, "interrupted!")
return
@@ -67,7 +67,7 @@
var/turf/target_turf = get_turf(target)
if(target_turf.is_blocked_turf())
return
- playsound(src, 'sound/mecha/hydraulic.ogg', 25, TRUE)
+ playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE)
if(!do_after(mod.wearer, load_time, target = target))
balloon_alert(mod.wearer, "interrupted!")
return
@@ -154,7 +154,7 @@
var/turf/closed/mineral/mineral_turf = bumped_into
var/turf/closed/mineral/gibtonite/giberal_turf = mineral_turf
if(istype(giberal_turf) && giberal_turf.stage != GIBTONITE_UNSTRUCK)
- playsound(bumper, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(bumper, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
to_chat(bumper, span_warning("[icon2html(src, bumper)] Unstable gibtonite ore deposit detected! Drills disabled."))
on_deactivation()
return
@@ -442,7 +442,7 @@
balloon_alert(mod.wearer, "fully ash covered")
mod.wearer.color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,3) //make them super light
animate(mod.wearer, 1 SECONDS, color = null, flags = ANIMATION_PARALLEL)
- playsound(src, 'sound/effects/sparks1.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/sparks/sparks1.ogg', 100, TRUE)
actual_speed_added = max(0, min(mod.slowdown_active, speed_added))
mod.slowdown -= actual_speed_added
mod.wearer.update_equipment_speed_mods()
@@ -519,7 +519,7 @@
/obj/item/mod/module/sphere_transform/used()
if(!lavaland_equipment_pressure_check(get_turf(src)))
balloon_alert(mod.wearer, "too much pressure!")
- playsound(src, 'sound/weapons/gun/general/dry_fire.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/gun/general/dry_fire.ogg', 25, TRUE)
return FALSE
return ..()
@@ -530,7 +530,7 @@
var/obj/projectile/bomb = new /obj/projectile/bullet/mining_bomb(mod.wearer.loc)
bomb.preparePixelProjectile(target, mod.wearer)
bomb.firer = mod.wearer
- playsound(src, 'sound/weapons/gun/general/grenade_launch.ogg', 75, TRUE)
+ playsound(src, 'sound/items/weapons/gun/general/grenade_launch.ogg', 75, TRUE)
INVOKE_ASYNC(bomb, TYPE_PROC_REF(/obj/projectile, fire))
drain_power(use_energy_cost)
@@ -617,7 +617,7 @@
/obj/structure/mining_bomb/proc/boom(atom/movable/firer)
visible_message(span_danger("[src] explodes!"))
- playsound(src, 'sound/magic/magic_missile.ogg', 200, vary = TRUE)
+ playsound(src, 'sound/effects/magic/magic_missile.ogg', 200, vary = TRUE)
for(var/turf/closed/mineral/rock in circle_range_turfs(src, 2))
rock.gets_drilled()
for(var/mob/living/mob in range(1, src))
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index d8e41c67cb5d6..3f29e3006befa 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -196,7 +196,7 @@
/obj/item/modular_computer/pre_attack_secondary(atom/A, mob/living/user, params)
if(active_program?.tap(A, user, params))
user.do_attack_animation(A) //Emulate this animation since we kill the attack in three lines
- playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), TRUE, -1) //Likewise for the tap sound
+ playsound(loc, 'sound/items/weapons/tap.ogg', get_clamped_volume(), TRUE, -1) //Likewise for the tap sound
addtimer(CALLBACK(src, PROC_REF(play_ping)), 0.5 SECONDS, TIMER_UNIQUE) //Slightly delayed ping to indicate success
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
return ..()
@@ -288,7 +288,7 @@
to_chat(user, span_notice("You insert \the [inserting_id] into the card slot."))
balloon_alert(user, "inserted ID")
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
if(ishuman(loc))
var/mob/living/carbon/human/human_wearer = loc
@@ -322,7 +322,7 @@
if(!silent && !isnull(user))
to_chat(user, span_notice("You remove the card from the card slot."))
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
balloon_alert(user, "removed ID")
if(ishuman(loc))
@@ -549,7 +549,7 @@
* The program calling this proc.
* The message that the program wishes to display.
*/
-/obj/item/modular_computer/proc/alert_call(datum/computer_file/program/caller, alerttext, sound = 'sound/machines/twobeep_high.ogg')
+/obj/item/modular_computer/proc/alert_call(datum/computer_file/program/caller, alerttext, sound = 'sound/machines/beep/twobeep_high.ogg')
if(!caller || !caller.alert_able || caller.alert_silenced || !alerttext) //Yeah, we're checking alert_able. No, you don't get to make alerts that the user can't silence.
return FALSE
playsound(src, sound, 50, TRUE)
@@ -559,13 +559,13 @@
if(!use_energy())
return
if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED))
- playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 50, TRUE)
+ playsound(src, pick('sound/machines/beep/twobeep_voice1.ogg', 'sound/machines/beep/twobeep_voice2.ogg'), 50, TRUE)
else
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
audible_message("*[ringtone]*")
/obj/item/modular_computer/proc/send_sound()
- playsound(src, 'sound/machines/terminal_success.ogg', 15, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 15, TRUE)
// Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_"
/obj/item/modular_computer/proc/get_header_data()
diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm
index 4313bf2efbd08..d8b97c523019d 100644
--- a/code/modules/modular_computers/computers/item/computer_ui.dm
+++ b/code/modules/modular_computers/computers/item/computer_ui.dm
@@ -211,7 +211,7 @@
if("PC_Imprint_ID")
imprint_id()
UpdateDisplay()
- playsound(src, 'sound/machines/terminal_processing.ogg', 15, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_processing.ogg', 15, TRUE)
if("PC_Pai_Interact")
switch(params["option"])
diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm
index 37021e4fb0f82..d21a3e2047559 100644
--- a/code/modules/modular_computers/computers/item/pda.dm
+++ b/code/modules/modular_computers/computers/item/pda.dm
@@ -162,7 +162,7 @@
else
balloon_alert(user, "inserted [tool]")
inserted_item = tool
- playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/pda_button/pda_button1.ogg', 50, TRUE)
return ITEM_INTERACT_SUCCESS
@@ -189,7 +189,7 @@
user.put_in_hands(inserted_item)
inserted_item = null
update_appearance()
- playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/pda_button/pda_button2.ogg', 50, TRUE)
/obj/item/modular_computer/pda/proc/swap_pen(mob/user, obj/item/tool)
if(inserted_item)
@@ -197,7 +197,7 @@
user.put_in_hands(inserted_item)
inserted_item = tool
update_appearance()
- playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/pda_button/pda_button1.ogg', 50, TRUE)
/obj/item/modular_computer/pda/proc/explode(mob/target, mob/bomber, from_message_menu = FALSE)
var/turf/current_turf = get_turf(src)
@@ -322,6 +322,12 @@
///Ref to the silicon we're installed in. Set by the silicon itself during its creation.
var/mob/living/silicon/silicon_owner
+/obj/item/modular_computer/pda/silicon/pai
+ starting_programs = list(
+ /datum/computer_file/program/messenger,
+ /datum/computer_file/program/chatclient,
+ )
+
/obj/item/modular_computer/pda/silicon/cyborg
starting_programs = list(
/datum/computer_file/program/filemanager,
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/contractor_program.dm b/code/modules/modular_computers/file_system/programs/antagonist/contractor_program.dm
index d357d0f12f7de..5d77be0250018 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/contractor_program.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/contractor_program.dm
@@ -54,7 +54,7 @@
if(!traitor_data.uplink_handler.contractor_hub)
traitor_data.uplink_handler.contractor_hub = new
traitor_data.uplink_handler.contractor_hub.create_contracts(traitor_user.owner)
- user.playsound_local(user, 'sound/effects/contractstartup.ogg', 100, FALSE)
+ user.playsound_local(user, 'sound/music/antag/contractstartup.ogg', 100, FALSE)
program_open_overlay = "contractor-contractlist"
return TRUE
@@ -66,10 +66,10 @@
program_open_overlay = "contractor-extracted"
else
- user.playsound_local(user, 'sound/machines/uplinkerror.ogg', 50)
+ user.playsound_local(user, 'sound/machines/uplink/uplinkerror.ogg', 50)
error = "Either both you or your target aren't at the dropoff location, or the pod hasn't got a valid place to land. Clear space, or make sure you're both inside."
else
- user.playsound_local(user, 'sound/machines/uplinkerror.ogg', 50)
+ user.playsound_local(user, 'sound/machines/uplink/uplinkerror.ogg', 50)
error = "Already extracting... Place the target into the pod. If the pod was destroyed, this contract is no longer possible."
return TRUE
@@ -96,7 +96,7 @@
traitor_data.uplink_handler.contractor_hub.contract_TC_to_redeem = 0
return TRUE
else
- user.playsound_local(user, 'sound/machines/uplinkerror.ogg', 50)
+ user.playsound_local(user, 'sound/machines/uplink/uplinkerror.ogg', 50)
return TRUE
if ("PRG_clear_error")
error = ""
diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm
index fd52792bc8bdc..a731e95a94423 100644
--- a/code/modules/modular_computers/file_system/programs/arcade.dm
+++ b/code/modules/modular_computers/file_system/programs/arcade.dm
@@ -42,7 +42,7 @@
user?.mind?.adjust_experience(/datum/skill/gaming, 1)
if(boss_hp <= 0)
heads_up = "You have crushed [boss_name]! Rejoice!"
- playsound(computer.loc, 'sound/arcade/win.ogg', 50)
+ playsound(computer.loc, 'sound/machines/arcade/win.ogg', 50)
game_active = FALSE
program_open_overlay = "arcade_off"
if(istype(computer))
@@ -53,7 +53,7 @@
sleep(1 SECONDS)
else if(player_hp <= 0 || player_mp <= 0)
heads_up = "You have been defeated... how will the station survive?"
- playsound(computer.loc, 'sound/arcade/lose.ogg', 50)
+ playsound(computer.loc, 'sound/machines/arcade/lose.ogg', 50)
game_active = FALSE
program_open_overlay = "arcade_off"
if(istype(computer))
@@ -74,17 +74,17 @@
return
if (boss_mp <= 5)
heads_up = "[boss_mpamt] magic power has been stolen from you!"
- playsound(computer.loc, 'sound/arcade/steal.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/steal.ogg', 50, TRUE)
player_mp -= boss_mpamt
boss_mp += boss_mpamt
else if(boss_mp > 5 && boss_hp <12)
heads_up = "[boss_name] heals for [bossheal] health!"
- playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/heal.ogg', 50, TRUE)
boss_hp += bossheal
boss_mp -= boss_mpamt
else
heads_up = "[boss_name] attacks you for [boss_attackamt] damage!"
- playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/hit.ogg', 50, TRUE)
player_hp -= boss_attackamt
pause_state = FALSE
@@ -122,7 +122,7 @@
attackamt = rand(2,6) + rand(0, gamerSkill)
pause_state = TRUE
heads_up = "You attack for [attackamt] damage."
- playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/hit.ogg', 50, TRUE)
boss_hp -= attackamt
sleep(1 SECONDS)
game_check()
@@ -139,7 +139,7 @@
healcost = rand(1, maxPointCost)
pause_state = TRUE
heads_up = "You heal for [healamt] damage."
- playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/heal.ogg', 50, TRUE)
player_hp += healamt
player_mp -= healcost
sleep(1 SECONDS)
@@ -152,7 +152,7 @@
rechargeamt = rand(4,7) + rand(0, gamerSkill)
pause_state = TRUE
heads_up = "You regain [rechargeamt] magic power."
- playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE)
+ playsound(computer.loc, 'sound/machines/arcade/mana.ogg', 50, TRUE)
player_mp += rechargeamt
sleep(1 SECONDS)
game_check()
diff --git a/code/modules/modular_computers/file_system/programs/borg_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
index 48966f2f2616f..90213963e3e64 100644
--- a/code/modules/modular_computers/file_system/programs/borg_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/borg_monitor.dm
@@ -139,10 +139,10 @@
if(user)
to_chat(user, "Message sent to [robot]: [message]")
robot.logevent("Message from [ID] -- \"[message]\"")
- SEND_SOUND(robot, 'sound/machines/twobeep_high.ogg')
+ SEND_SOUND(robot, 'sound/machines/beep/twobeep_high.ogg')
if(robot.connected_ai)
to_chat(robot.connected_ai, "
[span_notice("Message from [ID] to [robot] -- \"[message]\"")] ")
- SEND_SOUND(robot.connected_ai, 'sound/machines/twobeep_high.ogg')
+ SEND_SOUND(robot.connected_ai, 'sound/machines/beep/twobeep_high.ogg')
user?.log_talk(message, LOG_PDA, tag = "Cyborg Monitor Program: ID name \"[ID]\" to [robot]")
return TRUE
diff --git a/code/modules/modular_computers/file_system/programs/bounty_board.dm b/code/modules/modular_computers/file_system/programs/bounty_board.dm
index 86590192041ce..da86b112689c0 100644
--- a/code/modules/modular_computers/file_system/programs/bounty_board.dm
+++ b/code/modules/modular_computers/file_system/programs/bounty_board.dm
@@ -75,7 +75,7 @@
switch(action)
if("createBounty")
if(!current_user || !bounty_text)
- playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
for(var/datum/station_request/i in GLOB.request_list)
if("[i.req_number]" == "[current_user.account_id]")
@@ -92,14 +92,14 @@
computer.say("Please swipe a valid ID first.")
return TRUE
if(current_user.account_holder == active_request.owner)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
active_request.applicants += list(current_user)
if("payApplicant")
if(!current_user)
return
if(!current_user.has_money(active_request.value) || (current_user.account_holder != active_request.owner))
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return
request_target.transfer_money(current_user, active_request.value, "Bounties: Request Completed")
computer.say("Paid out [active_request.value] credits.")
@@ -112,10 +112,10 @@
return TRUE
if("deleteRequest")
if(!current_user)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
if(active_request.owner != current_user.account_holder)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE)
return TRUE
computer.say("Deleted current request.")
GLOB.request_list.Remove(active_request)
diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm
index d1ce57bda61d8..511c664c137ab 100644
--- a/code/modules/modular_computers/file_system/programs/budgetordering.dm
+++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm
@@ -245,12 +245,12 @@
return
if(pack.goody && !self_paid)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
computer.say("ERROR: Small crates may only be purchased by private accounts.")
return
if(SSshuttle.supply.get_order_count(pack) == OVER_ORDER_LIMIT)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
computer.say("ERROR: No more then [CARGO_MAX_ORDER] of any pack may be ordered at once")
return
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index a9bbff8db1b91..fe5fbbdfce10b 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -95,16 +95,16 @@
// Log in.
if("PRG_authenticate")
if(!computer || !inserted_auth_card)
- playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_prompt_deny.ogg', 50, FALSE)
return TRUE
if(authenticate(user, inserted_auth_card))
- playsound(computer, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
return TRUE
// Log out.
if("PRG_logout")
authenticated_card = null
authenticated_user = null
- playsound(computer, 'sound/machines/terminal_off.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_off.ogg', 50, FALSE)
return TRUE
// Print a report.
if("PRG_print")
@@ -129,7 +129,7 @@
to_chat(usr, span_notice("Printer is out of paper."))
return TRUE
else
- playsound(computer, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
computer.visible_message(span_notice("\The [computer] prints out a paper."))
return TRUE
if("PRG_eject_id")
@@ -153,7 +153,7 @@
inserted_auth_card.assignment = is_centcom ? "Fired" : "Demoted"
SSid_access.remove_trim_from_card(inserted_auth_card)
- playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_prompt_deny.ogg', 50, FALSE)
return TRUE
// Change ID card assigned name.
if("PRG_edit")
diff --git a/code/modules/modular_computers/file_system/programs/cargoship.dm b/code/modules/modular_computers/file_system/programs/cargoship.dm
index fa73149dc850a..9df7bbd56d3b5 100644
--- a/code/modules/modular_computers/file_system/programs/cargoship.dm
+++ b/code/modules/modular_computers/file_system/programs/cargoship.dm
@@ -36,7 +36,7 @@
computer.RemoveID(usr)
if("selectid")
if(!computer.computer_id_slot.registered_account)
- playsound(get_turf(computer.ui_host()), 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1)
+ playsound(get_turf(computer.ui_host()), 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE, -1)
return TRUE
payments_acc = computer.computer_id_slot.registered_account
playsound(get_turf(computer.ui_host()), 'sound/machines/ping.ogg', 50, TRUE, -1)
diff --git a/code/modules/modular_computers/file_system/programs/dept_order.dm b/code/modules/modular_computers/file_system/programs/dept_order.dm
index 2229628d3921e..405e202e30949 100644
--- a/code/modules/modular_computers/file_system/programs/dept_order.dm
+++ b/code/modules/modular_computers/file_system/programs/dept_order.dm
@@ -156,7 +156,7 @@
var/new_dept_type = find_department_to_link(computer.computer_id_slot)
if(isnull(new_dept_type))
computer.physical.balloon_alert(orderer, "no department found!")
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
else
computer.physical.balloon_alert(orderer, "linked")
playsound(computer, 'sound/machines/ping.ogg', 30, TRUE)
@@ -171,7 +171,7 @@
if(length(use_access & id_card_access) <= 0)
computer.physical.balloon_alert(orderer, "access denied!")
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return TRUE
if(action == "override_order")
@@ -179,7 +179,7 @@
return TRUE
if(length(download_access & id_card_access) <= 0)
computer.physical.balloon_alert(orderer, "requires head of staff access!")
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return TRUE
department_cooldowns[linked_department] = 0
@@ -222,7 +222,7 @@
break
if(SSshuttle.supply.get_order_count(pack) == OVER_ORDER_LIMIT)
- playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
computer.physical.say("ERROR: No more then [CARGO_MAX_ORDER] of any pack may be ordered at once!")
return
diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm
index 74af88ac87045..5c5d29d6672d0 100644
--- a/code/modules/modular_computers/file_system/programs/file_browser.dm
+++ b/code/modules/modular_computers/file_system/programs/file_browser.dm
@@ -35,7 +35,7 @@
return
var/newname = reject_bad_name(params["new_name"])
if(!newname || newname != params["new_name"])
- playsound(computer, 'sound/machines/terminal_error.ogg', 25, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
return
file.filename = newname
return TRUE
@@ -47,7 +47,7 @@
return
var/newname = reject_bad_name(params["new_name"])
if(!newname || newname != params["new_name"])
- playsound(computer, 'sound/machines/terminal_error.ogg', 25, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
return
file.filename = newname
return TRUE
diff --git a/code/modules/modular_computers/file_system/programs/frontier.dm b/code/modules/modular_computers/file_system/programs/frontier.dm
index 04e902a5e8d4c..53d13008bc1f2 100644
--- a/code/modules/modular_computers/file_system/programs/frontier.dm
+++ b/code/modules/modular_computers/file_system/programs/frontier.dm
@@ -222,7 +222,7 @@
computer.say("Purchase succesful.")
playsound(computer, 'sound/machines/ping.ogg', 25)
return TRUE
- playsound(computer, 'sound/machines/terminal_error.ogg', 25)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25)
return TRUE
/// Publication and adding points.
@@ -235,5 +235,5 @@
SStgui.update_uis(src)
playsound(computer, 'sound/machines/ping.ogg', 25)
return TRUE
- playsound(computer, 'sound/machines/terminal_error.ogg', 25)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25)
return FALSE
diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
index 2d51840886395..fefb76c7f84e9 100644
--- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm
+++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm
@@ -70,7 +70,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
j.total_positions++
opened_positions[edit_job_target]++
log_job_debug("[key_name(usr)] opened a [j.title] job position, for a total of [j.total_positions] open job slots.")
- playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
return TRUE
if("PRG_close_job")
var/edit_job_target = params["target"]
@@ -83,7 +83,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
j.total_positions--
opened_positions[edit_job_target]--
log_job_debug("[key_name(usr)] closed a [j.title] job position, leaving [j.total_positions] open job slots.")
- playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
return TRUE
if("PRG_priority")
var/priority_target = params["target"]
@@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
SSjob.prioritized_jobs += j
else
computer.say("Error: CentCom employment protocols restrict prioritising more than 5 jobs.")
- playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
return TRUE
diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
index 3d7c735e4661c..bec3ca91a079e 100644
--- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
+++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
@@ -589,7 +589,7 @@
if(sender)
to_chat(sender, span_notice("ERROR: Network unavailable, please try again later."))
if(alert_able && !alert_silenced)
- playsound(computer, 'sound/machines/terminal_error.ogg', 15, TRUE)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 15, TRUE)
return FALSE
// used for logging
@@ -620,7 +620,7 @@
if(sender)
to_chat(sender, span_notice("ERROR: Server is not responding."))
if(alert_able && !alert_silenced)
- playsound(computer, 'sound/machines/terminal_error.ogg', 15, TRUE)
+ playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 15, TRUE)
return FALSE
var/shell_addendum = ""
diff --git a/code/modules/modular_computers/file_system/programs/portrait_printer.dm b/code/modules/modular_computers/file_system/programs/portrait_printer.dm
index 0e69dd4969da7..5285bbc09bd1d 100644
--- a/code/modules/modular_computers/file_system/programs/portrait_printer.dm
+++ b/code/modules/modular_computers/file_system/programs/portrait_printer.dm
@@ -96,6 +96,6 @@
printed_canvas.no_save = TRUE
printed_canvas.update_icon()
to_chat(usr, span_notice("You have printed [chosen_portrait.title] onto a new canvas."))
- playsound(computer.physical, 'sound/items/poster_being_created.ogg', 100, TRUE)
+ playsound(computer.physical, 'sound/items/poster/poster_being_created.ogg', 100, TRUE)
#undef CANVAS_PAPER_COST
diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm
index 694c84eaeea4d..75c6bb545f289 100644
--- a/code/modules/modular_computers/file_system/programs/robocontrol.dm
+++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm
@@ -122,7 +122,7 @@
GLOB.manifest.modify(id_card.registered_name, id_card.assignment, id_card.get_trim_assignment())
computer.RemoveID(usr)
else
- playsound(get_turf(computer.ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE)
+ playsound(get_turf(computer.ui_host()) , 'sound/machines/buzz/buzz-sigh.ogg', 25, FALSE)
if("changedroneaccess")
if(!computer || !computer.computer_id_slot || !id_card)
to_chat(current_user, span_notice("No ID found, authorization failed."))
@@ -143,4 +143,4 @@
var/msg = span_boldnotice("NON-DRONE PING: [current_user.name]: [params["ping_type"]] priority alert in [current_area.name]!")
_alert_drones(msg, TRUE, current_user)
to_chat(current_user, msg)
- playsound(src, 'sound/machines/terminal_success.ogg', 15, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 15, TRUE)
diff --git a/code/modules/modular_computers/file_system/programs/robotact.dm b/code/modules/modular_computers/file_system/programs/robotact.dm
index 1738943b53399..c213790b80a80 100644
--- a/code/modules/modular_computers/file_system/programs/robotact.dm
+++ b/code/modules/modular_computers/file_system/programs/robotact.dm
@@ -111,7 +111,7 @@
if(!cyborg.cell || !cyborg.cell.charge)
cyborg.visible_message(span_notice("The power warning light on [span_name("[cyborg]")] flashes urgently."), \
"You announce you are operating in low power mode.")
- playsound(cyborg, 'sound/machines/buzz-two.ogg', 50, FALSE)
+ playsound(cyborg, 'sound/machines/buzz/buzz-two.ogg', 50, FALSE)
if("toggleSensors")
cyborg.toggle_sensors()
diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm
index c7a24a6e8b7b9..b38200cfce185 100644
--- a/code/modules/modular_computers/file_system/programs/secureye.dm
+++ b/code/modules/modular_computers/file_system/programs/secureye.dm
@@ -198,7 +198,7 @@
camera_ref = null
last_camera_turf = null
if(!spying)
- playsound(computer, 'sound/machines/terminal_off.ogg', 25, FALSE)
+ playsound(computer, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE)
/datum/computer_file/program/secureye/proc/update_active_camera_screen()
var/obj/machinery/camera/active_camera = camera_ref?.resolve()
diff --git a/code/modules/modular_computers/file_system/programs/virtual_pet.dm b/code/modules/modular_computers/file_system/programs/virtual_pet.dm
index 8f1eef074d46a..eacdb1323b368 100644
--- a/code/modules/modular_computers/file_system/programs/virtual_pet.dm
+++ b/code/modules/modular_computers/file_system/programs/virtual_pet.dm
@@ -54,22 +54,47 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
var/static/list/hat_selections = list(
/obj/item/clothing/head/hats/tophat = 1,
/obj/item/clothing/head/fedora = 1,
+ /obj/item/clothing/head/soft/fishing_hat = 1,
+ /obj/item/cigarette/dart = 1,
/obj/item/clothing/head/hats/bowler = 2,
/obj/item/clothing/head/hats/warden/police = 2,
+ /obj/item/clothing/head/wizard/tape = 2,
+ /obj/item/clothing/head/utility/hardhat/cakehat/energycake = 2,
+ /obj/item/clothing/head/cowboy/bounty = 2,
/obj/item/clothing/head/hats/warden/red = 3,
/obj/item/clothing/head/hats/caphat = 3,
+ /obj/item/clothing/head/costume/crown/fancy = 3,
+ )
+ ///hat options that are locked behind achievements
+ var/static/list/cheevo_hats = list(
+ /obj/item/clothing/head/soft/fishing_hat = /datum/award/achievement/skill/legendary_fisher,
+ /obj/item/cigarette/dart = /datum/award/achievement/misc/cigarettes,
+ /obj/item/clothing/head/wizard/tape = /datum/award/achievement/misc/grand_ritual_finale,
+ /obj/item/clothing/head/utility/hardhat/cakehat/energycake = /datum/award/achievement/misc/cayenne_disk,
+ /obj/item/clothing/head/cowboy/bounty = /datum/award/achievement/misc/hot_damn,
+ /obj/item/clothing/head/costume/crown/fancy = /datum/award/achievement/misc/debt_extinguished,
+ )
+ ///A list of hats that override the hat offsets and transform variable
+ var/static/list/special_hat_placement = list(
+ /obj/item/cigarette/dart = list(
+ "west" = list(2,-1),
+ "east" = list(-2,-1),
+ "north" = list(0,0),
+ "south" = list(0, -3),
+ "transform" = list(1, 1),
+ ),
)
///hologram hat we have selected for our pet
var/list/selected_hat = list()
- ///area we have picked as dropoff location for petfeed
- var/area/selected_area
///manage hat offsets for when we turn directions
var/static/list/hat_offsets = list(
"west" = list(0,1),
"east" = list(0,1),
"north" = list(1,1),
- "south" = list(0,1),
+ "south" = list(1,1),
)
+ ///area we have picked as dropoff location for petfeed
+ var/area/selected_area
///possible colors our pet can have
var/static/list/possible_colors= list(
"white" = null, //default color state
@@ -171,12 +196,11 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
/datum/computer_file/program/virtual_pet/proc/set_hat_offsets(new_dir)
var/direction_text = dir2text(new_dir)
- var/list/offsets_list = hat_offsets[direction_text]
- if(isnull(offsets_list))
- return
+ var/hat_type = selected_hat["type"]
+ var/list/offsets_list = special_hat_placement[hat_type]?[direction_text] || hat_offsets[direction_text]
var/mutable_appearance/hat_appearance = selected_hat["appearance"]
- hat_appearance.pixel_x = offsets_list[1]
- hat_appearance.pixel_y = offsets_list[2]
+ hat_appearance.pixel_w = offsets_list[1]
+ hat_appearance.pixel_z = offsets_list[2] + selected_hat["worn_offset"]
pet.update_appearance(UPDATE_OVERLAYS)
///give our pet his hologram hat
@@ -195,10 +219,15 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
if(length(selected_hat))
var/mutable_appearance/our_selected_hat = selected_hat["appearance"]
var/mutable_appearance/hat_preview = mutable_appearance(our_selected_hat.icon, our_selected_hat.icon_state)
- hat_preview.pixel_y = -9
+ hat_preview.pixel_y = -9 + selected_hat["worn_offset"]
+ var/list/spec_hat = special_hat_placement[selected_hat["type"]]?["south"]
+ if(spec_hat)
+ hat_preview.pixel_w += spec_hat[1]
+ hat_preview.pixel_z += spec_hat[2]
+ hat_preview.appearance_flags = RESET_COLOR
pet_preview.add_overlay(hat_preview)
- profile_picture = getFlatIcon(pet_preview)
+ profile_picture = getFlatIcon(pet_preview, no_anim = TRUE)
COOLDOWN_START(src, alter_appearance_cooldown, 10 SECONDS)
@@ -281,7 +310,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
level++
grant_level_abilities()
pet.ai_controller?.set_blackboard_key(BB_VIRTUAL_PET_LEVEL, level)
- playsound(computer.loc, 'sound/items/orbie_level_up.ogg', 50)
+ playsound(computer.loc, 'sound/mobs/non-humanoids/orbie/orbie_level_up.ogg', 50)
to_next_level += (level**2) + 500
SEND_SIGNAL(pet, COMSIG_VIRTUAL_PET_LEVEL_UP, level) //its a signal so different path types of virtual pets can handle leveling up differently
announce_global_updates(message = "has reached level [level]!")
@@ -312,7 +341,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
GLOB.global_pet_updates.Cut(1,2)
GLOB.global_pet_updates += list(message_to_announce)
- playsound(computer.loc, 'sound/items/orbie_notification_sound.ogg', 50)
+ playsound(computer.loc, 'sound/mobs/non-humanoids/orbie/orbie_notification_sound.ogg', 50)
/datum/computer_file/program/virtual_pet/proc/remove_pet(datum/source)
SIGNAL_HANDLER
@@ -344,12 +373,13 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
/datum/computer_file/program/virtual_pet/ui_data(mob/user)
var/list/data = list()
+ var/obj/item/hat_type = selected_hat?["type"]
data["currently_summoned"] = (pet.loc != computer)
data["selected_area"] = (selected_area ? selected_area.name : "No location set")
data["pet_state"] = get_pet_state()
data["hunger"] = hunger
data["maximum_hunger"] = max_hunger
- data["pet_hat"] = (length(selected_hat) ? selected_hat["name"] : "none")
+ data["pet_hat"] = (hat_type ? initial(hat_type.name) : "none")
data["can_reroll"] = COOLDOWN_FINISHED(src, area_reroll)
data["can_summon"] = COOLDOWN_FINISHED(src, summon_cooldown)
data["can_alter_appearance"] = COOLDOWN_FINISHED(src, alter_appearance_cooldown)
@@ -415,9 +445,14 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
for(var/type_index as anything in hat_selections)
if(level >= hat_selections[type_index])
var/obj/item/hat = type_index
+ var/obj/item/hat_name = initial(hat.name)
+ if(length(SSachievements.achievements)) // The Achievements subsystem is active.
+ var/datum/award/required_cheevo = cheevo_hats[hat]
+ if(required_cheevo && !user.client.get_award_status(required_cheevo))
+ hat_name = "LOCKED"
data["hat_selections"] += list(list(
"hat_id" = type_index,
- "hat_name" = initial(hat.name),
+ "hat_name" = hat_name,
))
data["possible_colors"] = list()
@@ -461,12 +496,22 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
if(isnull(chosen_type))
selected_hat.Cut()
- else if((chosen_type in hat_selections))
- selected_hat["name"] = initial(chosen_type.name)
- var/mutable_appearance/selected_hat_appearance = mutable_appearance(icon = initial(chosen_type.worn_icon), icon_state = initial(chosen_type.icon_state), layer = ABOVE_ALL_MOB_LAYER)
- selected_hat_appearance.transform = selected_hat_appearance.transform.Scale(0.8, 1)
- selected_hat["appearance"] = selected_hat_appearance
- set_hat_offsets(pet.dir)
+ else if(hat_selections[chosen_type])
+ var/datum/award/required_cheevo = cheevo_hats[chosen_type]
+ if(length(SSachievements.achievements) && required_cheevo && !ui.user.client.get_award_status(required_cheevo))
+ to_chat(ui.user, span_info("This customization requires the \"[span_bold(initial(required_cheevo.name))]\ achievement to be unlocked."))
+ else
+ selected_hat["type"] = chosen_type
+ var/state_to_use = initial(chosen_type.worn_icon_state) || initial(chosen_type.icon_state)
+ var/mutable_appearance/selected_hat_appearance = mutable_appearance(initial(chosen_type.worn_icon), state_to_use, appearance_flags = RESET_COLOR)
+ selected_hat["worn_offset"] = initial(chosen_type.worn_y_offset)
+ var/list/scale_list = special_hat_placement[chosen_type]?["scale"]
+ if(scale_list)
+ selected_hat_appearance.transform = selected_hat_appearance.transform.Scale(scale_list[1], scale_list[2])
+ else
+ selected_hat_appearance.transform = selected_hat_appearance.transform.Scale(0.8, 1)
+ selected_hat["appearance"] = selected_hat_appearance
+ set_hat_offsets(pet.dir)
var/chosen_color = params["chosen_color"]
if(isnull(chosen_color))
@@ -515,7 +560,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
if(!isnull(trick_name))
pet.ai_controller.set_blackboard_key(BB_TRICK_NAME, trick_name)
pet.ai_controller.override_blackboard_key(BB_TRICK_SEQUENCE, trick_sequence)
- playsound(computer.loc, 'sound/items/orbie_trick_learned.ogg', 50)
+ playsound(computer.loc, 'sound/mobs/non-humanoids/orbie/orbie_trick_learned.ogg', 50)
return TRUE
@@ -553,7 +598,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list)
pet.befriend(our_user) //befriend whoever set us out
animate(pet, transform = matrix(), time = 1.5 SECONDS)
pet.forceMove(final_turf)
- playsound(computer.loc, 'sound/items/orbie_send_out.ogg', 20)
+ playsound(computer.loc, 'sound/mobs/non-humanoids/orbie/orbie_send_out.ogg', 20)
new /obj/effect/temp_visual/guardian/phase(pet.loc)
#undef PET_MAX_LEVEL
diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm
index 601ecc2289261..1f988f50c57ac 100644
--- a/code/modules/movespeed/modifiers/items.dm
+++ b/code/modules/movespeed/modifiers/items.dm
@@ -3,7 +3,13 @@
movetypes = FLOATING
/datum/movespeed_modifier/jetpack/cybernetic
- multiplicative_slowdown = -0.5
+ multiplicative_slowdown = -0.3
+
+/datum/movespeed_modifier/jetpack/full_speed
+ multiplicative_slowdown = -0.3
+
+/datum/movespeed_modifier/jetpack/wings
+ multiplicative_slowdown = -0.3
/datum/movespeed_modifier/die_of_fate
multiplicative_slowdown = 1
diff --git a/code/modules/pai/camera.dm b/code/modules/pai/camera.dm
index 319f20e369990..a30601e41547e 100644
--- a/code/modules/pai/camera.dm
+++ b/code/modules/pai/camera.dm
@@ -6,7 +6,7 @@
var/number = length(stored)
picture.picture_name = "Image [number] (taken by [loc.name])"
stored[picture] = TRUE
- playsound(src, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE, -3)
+ playsound(src, pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 75, TRUE, -3)
balloon_alert(user, "image recorded")
/**
diff --git a/code/modules/pai/door_jack.dm b/code/modules/pai/door_jack.dm
index 36220ecfaced8..cd8073a9f2c74 100644
--- a/code/modules/pai/door_jack.dm
+++ b/code/modules/pai/door_jack.dm
@@ -107,7 +107,7 @@
if(!hacking_cable.hacking_machine)
balloon_alert(src, "nothing connected")
return FALSE
- playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock_alien_prying.ogg', 50, TRUE)
balloon_alert(src, "overriding...")
// Now begin hacking
if(!do_after(src, 15 SECONDS, hacking_cable.hacking_machine, timed_action_flags = NONE, progress = TRUE))
diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm
index 066a1146fd437..ee732432851a7 100644
--- a/code/modules/pai/pai.dm
+++ b/code/modules/pai/pai.dm
@@ -240,6 +240,11 @@
RegisterSignals(src, list(COMSIG_LIVING_ADJUST_BRUTE_DAMAGE, COMSIG_LIVING_ADJUST_BURN_DAMAGE), PROC_REF(on_shell_damaged))
RegisterSignal(src, COMSIG_LIVING_ADJUST_STAMINA_DAMAGE, PROC_REF(on_shell_weakened))
+/mob/living/silicon/pai/create_modularInterface()
+ if(!modularInterface)
+ modularInterface = new /obj/item/modular_computer/pda/silicon/pai(src)
+ return ..()
+
/mob/living/silicon/pai/make_laws()
laws = new /datum/ai_laws/pai()
return TRUE
@@ -463,7 +468,7 @@
to_chat(src, span_userdanger("Your mental faculties leave you."))
to_chat(src, span_rose("oblivion... "))
balloon_alert(user, "personality wiped")
- playsound(src, 'sound/machines/buzz-two.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
qdel(src)
return TRUE
diff --git a/code/modules/paperwork/desk_bell.dm b/code/modules/paperwork/desk_bell.dm
index c3964b7292c0b..7c2b96f32175e 100644
--- a/code/modules/paperwork/desk_bell.dm
+++ b/code/modules/paperwork/desk_bell.dm
@@ -67,7 +67,7 @@
tool.play_tool_sound(src)
if(tool.use_tool(src, user, 5 SECONDS))
balloon_alert_to_viewers("repaired")
- playsound(user, 'sound/items/change_drill.ogg', 50, vary = TRUE)
+ playsound(user, 'sound/items/tools/change_drill.ogg', 50, vary = TRUE)
broken_ringer = FALSE
times_rang = 0
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm
index 09858d8375b4b..6ad571896974f 100644
--- a/code/modules/paperwork/fax.dm
+++ b/code/modules/paperwork/fax.dm
@@ -144,7 +144,7 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department
return FALSE
if (!(obj_flags & EMAGGED))
obj_flags |= EMAGGED
- playsound(src, 'sound/creatures/dog/growl2.ogg', 50, FALSE)
+ playsound(src, 'sound/mobs/non-humanoids/dog/growl2.ogg', 50, FALSE)
balloon_alert(user, "migrated to syndienet 2.0")
to_chat(user, span_warning("An image appears on [src] screen for a moment with Ian in the cap of a Syndicate officer."))
return TRUE
@@ -369,7 +369,7 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department
if (FAX.jammed)
do_sparks(5, TRUE, src)
balloon_alert(usr, "destination port jammed")
- playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
return FALSE
FAX.receive(loaded, fax_name)
history_add("Send", FAX.fax_name)
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 5d6b10c0568a3..203d8234ca79f 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -287,7 +287,7 @@
playsound(sticking_to, 'sound/items/handling/component_pickup.ogg', 20, TRUE)
sticking_to.balloon_alert(user, "label renamed")
else
- playsound(sticking_to, 'sound/items/poster_ripped.ogg', 20, TRUE)
+ playsound(sticking_to, 'sound/items/poster/poster_ripped.ogg', 20, TRUE)
sticking_to.balloon_alert(user, "label removed")
qdel(src)
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/paperwork/paper_biscuit.dm b/code/modules/paperwork/paper_biscuit.dm
index bac859e029f4f..d98eb234c95fb 100644
--- a/code/modules/paperwork/paper_biscuit.dm
+++ b/code/modules/paperwork/paper_biscuit.dm
@@ -136,7 +136,7 @@
cracked = FALSE
has_been_sealed = TRUE
contents_hidden = TRUE
- playsound(get_turf(user), 'sound/items/duct_tape_snap.ogg', 60)
+ playsound(get_turf(user), 'sound/items/duct_tape/duct_tape_snap.ogg', 60)
icon_state = "[sealed_icon]"
update_appearance()
diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm
index 1315ca3a81d23..10aad59001a24 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -163,7 +163,7 @@
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/item/papercutter/proc/cut_paper(mob/user)
- playsound(src.loc, 'sound/weapons/slash.ogg', 50, TRUE)
+ playsound(src.loc, 'sound/items/weapons/slash.ogg', 50, TRUE)
var/clumsy = (iscarbon(user) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(cut_self_chance))
to_chat(user, span_userdanger("You neatly cut [stored_paper][clumsy ? "... and your finger in the process!" : "."]"))
if(clumsy)
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 7be0e3548ad2b..60c6aeb4dfef5 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -327,7 +327,7 @@
. = ..()
AddComponent(/datum/component/butchering, \
speed = 6 SECONDS, \
- butcher_sound = 'sound/weapons/blade1.ogg', \
+ butcher_sound = 'sound/items/weapons/blade1.ogg', \
)
RegisterSignal(src, COMSIG_DETECTIVE_SCANNED, PROC_REF(on_scan))
@@ -368,14 +368,14 @@
/obj/item/pen/edagger/proc/on_containing_dart_fired(obj/projectile/source)
SIGNAL_HANDLER
- playsound(source, 'sound/weapons/saberon.ogg', 5, TRUE)
+ playsound(source, 'sound/items/weapons/saberon.ogg', 5, TRUE)
var/datum/component/transforming/transform_comp = GetComponent(/datum/component/transforming)
source.hitsound = transform_comp.hitsound_on
source.set_light(light_range, light_power, light_color, l_on = TRUE)
/obj/item/pen/edagger/proc/on_containing_dart_drop(datum/source, obj/item/ammo_casing/new_casing)
SIGNAL_HANDLER
- playsound(new_casing, 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(new_casing, 'sound/items/weapons/saberoff.ogg', 5, TRUE)
/obj/item/pen/edagger/proc/on_containing_dart_embedded(datum/source, obj/item/ammo_casing/new_casing)
SIGNAL_HANDLER
@@ -384,12 +384,12 @@
/obj/item/pen/edagger/proc/on_containing_dart_failed_embed(obj/item/ammo_casing/source)
SIGNAL_HANDLER
- playsound(source, 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(source, 'sound/items/weapons/saberoff.ogg', 5, TRUE)
UnregisterSignal(source, list(COMSIG_ITEM_UNEMBEDDED, COMSIG_ITEM_FAILED_EMBED))
/obj/item/pen/edagger/proc/on_embedded_removed(obj/item/ammo_casing/source, mob/living/carbon/victim)
SIGNAL_HANDLER
- playsound(source, 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(source, 'sound/items/weapons/saberoff.ogg', 5, TRUE)
UnregisterSignal(source, list(COMSIG_ITEM_UNEMBEDDED, COMSIG_ITEM_FAILED_EMBED))
victim.visible_message(
message = span_warning("The blade of the [hidden_name] retracts as the [source.name] is removed from [victim]!"),
@@ -432,7 +432,7 @@
if(user)
balloon_alert(user, "[hidden_name] [active ? "active" : "concealed"]")
- playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(src, active ? 'sound/items/weapons/saberon.ogg' : 'sound/items/weapons/saberoff.ogg', 5, TRUE)
set_light_on(active)
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -514,7 +514,7 @@
/obj/item/pen/screwdriver/on_transform(obj/item/source, mob/user, active)
if(user)
balloon_alert(user, active ? "extended" : "retracted")
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
if(!active)
tool_behaviour = initial(tool_behaviour)
diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm
index b4e97615a923a..5b3d4911f522a 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -87,7 +87,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
if(LAZYLEN(tickets))
current_ticket = tickets[1]
current_number++ //Increment the one we're serving.
- playsound(src, 'sound/misc/announce_dig.ogg', 50, FALSE)
+ playsound(src, 'sound/announcer/announcement/announce_dig.ogg', 50, FALSE)
say("Now serving [current_ticket]!")
if(!(obj_flags & EMAGGED))
current_ticket.audible_message(span_notice("\the [current_ticket] vibrates!"), hearing_distance = SAMETILE_MESSAGE_RANGE)
@@ -213,7 +213,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
if((user_ref in ticket_holders) && !(obj_flags & EMAGGED))
to_chat(user, span_warning("You already have a ticket!"))
return
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 100, FALSE)
ticket_number++
to_chat(user, span_notice("You take a ticket from [src], looks like you're number [ticket_number] in queue..."))
var/obj/item/ticket_machine_ticket/theirticket = new (get_turf(src), ticket_number)
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 425ff9d38a403..8666bcbda4dfd 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -252,7 +252,7 @@
printpicture(user, picture)
if(!silent)
- playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE, -3)
+ playsound(loc, pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 75, TRUE, -3)
/obj/item/camera/proc/printpicture(mob/user, datum/picture/picture) //Normal camera proc for creating photos
pictures_left--
diff --git a/code/modules/photography/camera/other.dm b/code/modules/photography/camera/other.dm
index 83e9a5fd28cac..149d69252a6ac 100644
--- a/code/modules/photography/camera/other.dm
+++ b/code/modules/photography/camera/other.dm
@@ -34,4 +34,4 @@
/obj/item/camera/detective/after_picture(mob/user, datum/picture/picture)
. = ..()
- user.playsound_local(get_turf(src), pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 35, TRUE)
+ user.playsound_local(get_turf(src), pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 35, TRUE)
diff --git a/code/modules/photography/camera/silicon_camera.dm b/code/modules/photography/camera/silicon_camera.dm
index a8bf7a3ba90e7..fdc390fe0615a 100644
--- a/code/modules/photography/camera/silicon_camera.dm
+++ b/code/modules/photography/camera/silicon_camera.dm
@@ -31,11 +31,11 @@
// Trying to turn on camera mode while you have another click intercept active, such as malf abilities
if(sound)
balloon_alert(user, "can't enable camera mode!")
- playsound(user, 'sound/machines/buzz-sigh.ogg', 25, TRUE)
+ playsound(user, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE)
return
if(sound)
- playsound(user, 'sound/items/wirecutter.ogg', 50, TRUE)
+ playsound(user, 'sound/items/tools/wirecutter.ogg', 50, TRUE)
balloon_alert(user, "camera mode [user.click_intercept == src ? "activated" : "deactivated"]")
/obj/item/camera/siliconcam/proc/selectpicture(mob/user)
@@ -80,7 +80,7 @@
picture.picture_name = "Image [number] (taken by [loc.name])"
stored[picture] = TRUE
balloon_alert(user, "image recorded")
- user.playsound_local(get_turf(user), pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 50, TRUE, -3)
+ user.playsound_local(get_turf(user), pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 50, TRUE, -3)
/obj/item/camera/siliconcam/robot_camera
name = "Cyborg photo camera"
@@ -102,7 +102,7 @@
picture.picture_name = "Image [number] (taken by [loc.name])"
stored[picture] = TRUE
balloon_alert(user, "image recorded and saved locally")
- playsound(src, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, TRUE, -3)
+ playsound(src, pick('sound/items/polaroid/polaroid1.ogg', 'sound/items/polaroid/polaroid2.ogg'), 75, TRUE, -3)
/obj/item/camera/siliconcam/robot_camera/selectpicture(mob/living/silicon/robot/user)
if(istype(user) && user.connected_ai)
diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm
index 342abb1625c5a..e240e94292ddc 100644
--- a/code/modules/photography/photos/photo.dm
+++ b/code/modules/photography/photos/photo.dm
@@ -66,9 +66,9 @@
/obj/item/photo/suicide_act(mob/living/carbon/human/user)
user.visible_message(span_suicide("[user] is taking one last look at \the [src]! It looks like [user.p_theyre()] giving in to death!"))//when you wanna look at photo of waifu one last time before you die...
if (!ishuman(user) || user.physique == MALE)
- playsound(user, 'sound/voice/human/manlaugh1.ogg', 50, TRUE)//EVERY TIME I DO IT MAKES ME LAUGH
+ playsound(user, 'sound/mobs/humanoids/human/laugh/manlaugh1.ogg', 50, TRUE)//EVERY TIME I DO IT MAKES ME LAUGH
else
- playsound(user, 'sound/voice/human/womanlaugh.ogg', 50, TRUE)
+ playsound(user, 'sound/mobs/humanoids/human/laugh/womanlaugh.ogg', 50, TRUE)
return OXYLOSS
/obj/item/photo/attack_self(mob/user)
diff --git a/code/modules/plumbing/plumbers/pumps.dm b/code/modules/plumbing/plumbers/pumps.dm
index 79374fcf38c93..5aa1dc707e376 100644
--- a/code/modules/plumbing/plumbers/pumps.dm
+++ b/code/modules/plumbing/plumbers/pumps.dm
@@ -41,7 +41,7 @@
if(!geyser) //we didnt find one, abort
geyserless = TRUE
visible_message(span_warning("The [name] makes a sad beep!"))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50)
return
pump(seconds_per_tick)
diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm
index 2752ae3c2bfdf..a40af34fc2a85 100644
--- a/code/modules/power/apc/apc_attack.dm
+++ b/code/modules/power/apc/apc_attack.dm
@@ -1,3 +1,9 @@
+// Ethereals:
+/// How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter.
+#define ETHEREAL_APC_DRAIN_TIME (7.5 SECONDS)
+/// How much power ethereals gain/drain from APCs.
+#define ETHEREAL_APC_POWER_GAIN (0.2 * STANDARD_BATTERY_CHARGE)
+
/obj/machinery/power/apc/attack_hand_secondary(mob/user, list/modifiers)
. = ..()
if(!can_interact(user))
@@ -27,7 +33,7 @@
if(!istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
return
- var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - APC_POWER_GAIN
+ var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - ETHEREAL_APC_POWER_GAIN
var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell
if(!((stomach?.drain_time < world.time) && LAZYACCESS(modifiers, RIGHT_CLICK)))
@@ -39,33 +45,33 @@
if(stomach_cell.charge() > charge_limit)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "charge is full!"), alert_timer_duration)
return
- stomach.drain_time = world.time + APC_DRAIN_TIME
+ stomach.drain_time = world.time + ETHEREAL_APC_DRAIN_TIME
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "draining power"), alert_timer_duration)
- while(do_after(user, APC_DRAIN_TIME, target = src))
+ while(do_after(user, ETHEREAL_APC_DRAIN_TIME, target = src))
if(cell.charge <= (cell.maxcharge / 2) || (stomach_cell.charge() > charge_limit))
return
balloon_alert(ethereal, "received charge")
- stomach.adjust_charge(APC_POWER_GAIN)
- cell.use(APC_POWER_GAIN)
+ stomach.adjust_charge(ETHEREAL_APC_POWER_GAIN)
+ cell.use(ETHEREAL_APC_POWER_GAIN)
return
- if(cell.charge >= cell.maxcharge - APC_POWER_GAIN)
+ if(cell.charge >= cell.maxcharge - ETHEREAL_APC_POWER_GAIN)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "APC can't receive more power!"), alert_timer_duration)
return
- if(stomach_cell.charge() < APC_POWER_GAIN)
+ if(stomach_cell.charge() < ETHEREAL_APC_POWER_GAIN)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "charge is too low!"), alert_timer_duration)
return
- stomach.drain_time = world.time + APC_DRAIN_TIME
+ stomach.drain_time = world.time + ETHEREAL_APC_DRAIN_TIME
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "transfering power"), alert_timer_duration)
- if(!do_after(user, APC_DRAIN_TIME, target = src))
+ if(!do_after(user, ETHEREAL_APC_DRAIN_TIME, target = src))
return
- if((cell.charge >= (cell.maxcharge - APC_POWER_GAIN)) || (stomach_cell.charge() < APC_POWER_GAIN))
+ if((cell.charge >= (cell.maxcharge - ETHEREAL_APC_POWER_GAIN)) || (stomach_cell.charge() < ETHEREAL_APC_POWER_GAIN))
balloon_alert(ethereal, "can't transfer power!")
return
if(istype(stomach))
- while(do_after(user, APC_DRAIN_TIME, target = src))
+ while(do_after(user, ETHEREAL_APC_DRAIN_TIME, target = src))
balloon_alert(ethereal, "transferred power")
- cell.give(-stomach.adjust_charge(-APC_POWER_GAIN))
+ cell.give(-stomach.adjust_charge(-ETHEREAL_APC_POWER_GAIN))
else
balloon_alert(ethereal, "can't transfer power!")
@@ -125,3 +131,6 @@
return TRUE
else
return FALSE
+
+#undef ETHEREAL_APC_DRAIN_TIME
+#undef ETHEREAL_APC_POWER_GAIN
diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm
index d6c3b5d803da3..7b9bcd4f22388 100644
--- a/code/modules/power/apc/apc_main.dm
+++ b/code/modules/power/apc/apc_main.dm
@@ -420,9 +420,9 @@
say("Remote access detected.[locked ? " Interface unlocked." : ""]")
to_chat(remote_control_user, span_danger("[icon2html(src, remote_control_user)] Connected to [src]."))
if(locked)
- playsound(src, 'sound/machines/terminal_on.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_on.ogg', 25, FALSE)
locked = FALSE
- playsound(src, 'sound/machines/terminal_alert.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE)
update_appearance()
/obj/machinery/power/apc/proc/disconnect_remote_access()
@@ -432,8 +432,8 @@
locked = TRUE
say("Remote access canceled. Interface locked.")
to_chat(remote_control_user, span_danger("[icon2html(src, remote_control_user)] Disconnected from [src]."))
- playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE)
- playsound(src, 'sound/machines/terminal_alert.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE)
update_appearance()
remote_control_user = null
diff --git a/code/modules/power/apc/apc_malf.dm b/code/modules/power/apc/apc_malf.dm
index b8fe1510c918d..3f7d23244ece9 100644
--- a/code/modules/power/apc/apc_malf.dm
+++ b/code/modules/power/apc/apc_malf.dm
@@ -113,10 +113,10 @@
transfer_in_progress = TRUE
user.visible_message(span_notice("[user] slots [card] into [src]..."), span_notice("Transfer process initiated. Sending request for AI approval..."))
playsound(src, 'sound/machines/click.ogg', 50, TRUE)
- SEND_SOUND(occupier, sound('sound/misc/notice2.ogg')) //To alert the AI that someone's trying to card them if they're tabbed out
+ SEND_SOUND(occupier, sound('sound/announcer/notice/notice2.ogg')) //To alert the AI that someone's trying to card them if they're tabbed out
if(tgui_alert(occupier, "[user] is attempting to transfer you to \a [card.name]. Do you consent to this?", "APC Transfer", list("Yes - Transfer Me", "No - Keep Me Here")) == "No - Keep Me Here")
to_chat(user, span_danger("AI denied transfer request. Process terminated."))
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
transfer_in_progress = FALSE
return FALSE
if(user.loc != user_turf)
diff --git a/code/modules/power/apc/apc_power_proc.dm b/code/modules/power/apc/apc_power_proc.dm
index ba60ec723b6a1..2f1182d01a52a 100644
--- a/code/modules/power/apc/apc_power_proc.dm
+++ b/code/modules/power/apc/apc_power_proc.dm
@@ -30,12 +30,12 @@
area.power_light = (lighting > APC_CHANNEL_AUTO_OFF)
area.power_equip = (equipment > APC_CHANNEL_AUTO_OFF)
area.power_environ = (environ > APC_CHANNEL_AUTO_OFF)
- playsound(src.loc, 'sound/machines/terminal_on.ogg', 50, FALSE)
+ playsound(src.loc, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE)
else
area.power_light = FALSE
area.power_equip = FALSE
area.power_environ = FALSE
- playsound(src.loc, 'sound/machines/terminal_off.ogg', 50, FALSE)
+ playsound(src.loc, 'sound/machines/terminal/terminal_off.ogg', 50, FALSE)
area.power_change()
/obj/machinery/power/apc/proc/toggle_breaker(mob/user)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 5c68bb8f4c8b0..4b6c03c5eae05 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
if(avail())
king.apply_damage(10)
- playsound(king, 'sound/effects/sparks2.ogg', 100, TRUE)
+ playsound(king, 'sound/effects/sparks/sparks2.ogg', 100, TRUE)
deconstruct()
return COMPONENT_RAT_INTERACTED
@@ -578,7 +578,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
/obj/item/stack/cable_coil/proc/try_heal_loop(atom/interacting_with, mob/living/user, repeating = FALSE)
var/mob/living/carbon/human/attacked_humanoid = interacting_with
var/obj/item/clothing/under/uniform = attacked_humanoid.w_uniform
- if(uniform.repair_sensors(src, user))
+ if(uniform?.repair_sensors(src, user))
return ITEM_INTERACT_SUCCESS
var/obj/item/bodypart/affecting = attacked_humanoid.get_bodypart(check_zone(user.zone_selected))
diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm
index 7799018a238a3..5b9d983cf1dd6 100644
--- a/code/modules/power/floodlight.dm
+++ b/code/modules/power/floodlight.dm
@@ -308,7 +308,7 @@
. = ..()
if(!.)
return
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
var/obj/structure/floodlight_frame/floodlight_frame = new(loc)
floodlight_frame.state = FLOODLIGHT_NEEDS_LIGHTS
@@ -318,7 +318,7 @@
qdel(src)
/obj/machinery/power/floodlight/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
- playsound(src, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
#undef FLOODLIGHT_OFF
#undef FLOODLIGHT_LOW
diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm
index 431f2095b0a69..defb73fe2c7d5 100644
--- a/code/modules/power/lighting/light.dm
+++ b/code/modules/power/lighting/light.dm
@@ -447,13 +447,13 @@
if(BRUTE)
switch(status)
if(LIGHT_EMPTY)
- playsound(loc, 'sound/weapons/smash.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/weapons/smash.ogg', 50, TRUE)
if(LIGHT_BROKEN)
playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, TRUE)
else
- playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
// returns if the light has power /but/ is manually turned off
// if a light is turned off, it won't activate emergency power
@@ -641,7 +641,7 @@
if(!skip_sound_and_sparks)
if(status == LIGHT_OK || status == LIGHT_BURNED)
- playsound(loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(on)
do_sparks(3, TRUE, src)
status = LIGHT_BROKEN
diff --git a/code/modules/power/lighting/light_items.dm b/code/modules/power/lighting/light_items.dm
index 5e9df6ee432ee..357507d0aa4f9 100644
--- a/code/modules/power/lighting/light_items.dm
+++ b/code/modules/power/lighting/light_items.dm
@@ -135,7 +135,7 @@
status = LIGHT_BROKEN
force = 5
sharpness = SHARP_POINTY
- playsound(loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(length(reagents.reagent_list))
visible_message(span_danger("The contents of [src] splash onto you as you step on it!"),span_hear("You feel the contents of [src] splash onto you as you step on it!."))
reagents.expose(target, TOUCH)
diff --git a/code/modules/power/power_store.dm b/code/modules/power/power_store.dm
index 8bbaa5bc0fe58..1be39dfbaa031 100644
--- a/code/modules/power/power_store.dm
+++ b/code/modules/power/power_store.dm
@@ -266,7 +266,7 @@
if(!eating_success || QDELETED(src) || charge == 0)
user.visible_message(span_suicide("[user] chickens out!"))
return SHAME
- playsound(user, 'sound/effects/sparks1.ogg', charge / maxcharge)
+ playsound(user, 'sound/effects/sparks/sparks1.ogg', charge / maxcharge)
var/damage = charge / (1 KILO JOULES)
user.electrocute_act(damage, src, 1, SHOCK_IGNORE_IMMUNITY|SHOCK_DELAY_STUN|SHOCK_NOGLOVES)
charge = 0
@@ -284,7 +284,7 @@
return
user.dropItemToGround(src)
user.dust(just_ash = TRUE)
- playsound(src, 'sound/magic/lightningshock.ogg', 50, TRUE, 10)
+ playsound(src, 'sound/effects/magic/lightningshock.ogg', 50, TRUE, 10)
tesla_zap(source = src, zap_range = 10, power = discharged_energy)
/obj/item/stock_parts/power_store/attack_self(mob/user)
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index 657263b3de415..dff4a732b9312 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -69,7 +69,7 @@
going_kaboom = TRUE
visible_message(span_danger("\The [src] lets out a shower of sparks as it starts to lose stability!"),\
span_hear("You hear a loud electrical crack!"))
- playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
+ playsound(src.loc, 'sound/effects/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
tesla_zap(source = src, zap_range = 5, power = power_gen * 20)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), src, 2, 3, 4, null, 8), 10 SECONDS) // Not a normal explosion.
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 90aed00876359..f3dd1be2581cb 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -40,7 +40,7 @@
///What projectile type are we shooting?
var/projectile_type = /obj/projectile/beam/emitter/hitscan
///What's the projectile sound?
- var/projectile_sound = 'sound/weapons/emitter.ogg'
+ var/projectile_sound = 'sound/items/weapons/emitter.ogg'
///Sparks emitted with every shot
var/datum/effect_system/spark_spread/sparks
///Stores the type of gun we are using inside the emitter
@@ -407,7 +407,7 @@
//BUCKLE HOOKS
/obj/machinery/power/emitter/prototype/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(src,'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
manual = FALSE
for(var/obj/item/item in buckled_mob.held_items)
if(istype(item, /obj/item/turret_control))
@@ -428,7 +428,7 @@
return
buckled_mob.forceMove(get_turf(src))
..()
- playsound(src, 'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
buckled_mob.pixel_y = 14
layer = 4.1
if(buckled_mob.client)
@@ -461,7 +461,7 @@
/datum/action/innate/proto_emitter/firing/Activate()
if(proto_emitter.manual)
- playsound(proto_emitter,'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(proto_emitter,'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
proto_emitter.manual = FALSE
name = "Switch to Manual Firing"
desc = "The emitter will only fire on your command and at your designated target"
@@ -471,7 +471,7 @@
qdel(item)
build_all_button_icons()
return
- playsound(proto_emitter,'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(proto_emitter,'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
name = "Switch to Automatic Firing"
desc = "Emitters will switch to periodic firing at your last target"
button_icon_state = "mech_zoom_off"
@@ -553,7 +553,7 @@
emitter.fire_beam(user)
delay = world.time + 10
else if (emitter.charge < 10)
- playsound(src,'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(src,'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return ITEM_INTERACT_SUCCESS
/obj/machinery/power/emitter/ctf
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index b15867790026d..09e380aca17f4 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -68,7 +68,7 @@
))
send_to_playing_players(span_narsie("NAR'SIE HAS RISEN"))
- sound_to_playing_players('sound/creatures/narsie_rises.ogg')
+ sound_to_playing_players('sound/music/antag/bloodcult/narsie_rises.ogg')
var/area/area = get_area(src)
if(area)
@@ -124,7 +124,7 @@
summon_objective.killed = TRUE
send_to_playing_players(span_narsie(span_bold(pick("Nooooo...", "Not die. How-", "Die. Mort-", "Sas tyen re-"))))
- sound_to_playing_players('sound/magic/demon_dies.ogg', 50)
+ sound_to_playing_players('sound/effects/magic/demon_dies.ogg', 50)
/obj/narsie/vv_get_dropdown()
. = ..()
@@ -253,21 +253,21 @@
///First crew last second win check and flufftext for [/proc/begin_the_end()]
/proc/narsie_end_begin_check()
if(QDELETED(GLOB.cult_narsie)) // uno
- priority_announce("Status report? We detected an anomaly, but it disappeared almost immediately.","[command_name()] Higher Dimensional Affairs", 'sound/misc/notice1.ogg')
+ priority_announce("Status report? We detected an anomaly, but it disappeared almost immediately.","[command_name()] Higher Dimensional Affairs", 'sound/announcer/notice/notice1.ogg')
GLOB.cult_narsie = null
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), CULT_FAILURE_NARSIE_KILLED), 2 SECONDS)
return
priority_announce(
text = "An acausal dimensional event has been detected in your sector. Event has been flagged EXTINCTION-CLASS. Directing all available assets toward simulating solutions. SOLUTION ETA: 60 SECONDS.",
title = "[command_name()] Higher Dimensional Affairs",
- sound = 'sound/misc/airraid.ogg',
+ sound = 'sound/announcer/alarm/airraid.ogg',
)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(narsie_end_second_check)), 50 SECONDS)
///Second crew last second win check and flufftext for [/proc/begin_the_end()]
/proc/narsie_end_second_check()
if(QDELETED(GLOB.cult_narsie)) // dos
- priority_announce("Simulations aborted, sensors report that the acasual event is normalizing. Good work, crew.","[command_name()] Higher Dimensional Affairs", 'sound/misc/notice1.ogg')
+ priority_announce("Simulations aborted, sensors report that the acasual event is normalizing. Good work, crew.","[command_name()] Higher Dimensional Affairs", 'sound/announcer/notice/notice1.ogg')
GLOB.cult_narsie = null
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), CULT_FAILURE_NARSIE_KILLED), 2 SECONDS)
return
@@ -284,14 +284,14 @@
///Third crew last second win check and flufftext for [/proc/begin_the_end()]
/proc/narsie_apocalypse()
if(QDELETED(GLOB.cult_narsie)) // tres
- priority_announce("Normalization detected! Abort the solution package!","[command_name()] Higher Dimensional Affairs", 'sound/misc/notice1.ogg')
+ priority_announce("Normalization detected! Abort the solution package!","[command_name()] Higher Dimensional Affairs", 'sound/announcer/notice/notice1.ogg')
SSshuttle.clearHostileEnvironment(GLOB.cult_narsie)
GLOB.cult_narsie = null
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(narsie_last_second_win)), 2 SECONDS)
return
if(GLOB.cult_narsie.resolved == FALSE)
GLOB.cult_narsie.resolved = TRUE
- sound_to_playing_players('sound/machines/alarm.ogg')
+ sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper)), 12 SECONDS)
///Called only if the crew managed to destroy narsie at the very last second for [/proc/begin_the_end()]
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index cd36823a207e9..1823f086228a4 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -108,15 +108,15 @@
if(machine_stat & BROKEN)
playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 60, TRUE)
else
- playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE)
+ playsound(loc, 'sound/effects/glass/glasshit.ogg', 90, TRUE)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/power/solar/atom_break(damage_flag)
. = ..()
if(.)
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
unset_control()
// Make sure user can see it's broken
var/new_angle = rand(160, 200)
@@ -170,7 +170,7 @@
// actually flip to other direction?
if(abs(angle - azimuth_current) > 180)
- mid_azimuth = (mid_azimuth + 180) % 360
+ mid_azimuth = reverse_angle(mid_azimuth)
// Split into 2 parts so it doesn't distort on large changes
animate(part,
@@ -559,14 +559,14 @@
if(machine_stat & BROKEN)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
else
- playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
+ playsound(src.loc, 'sound/effects/glass/glasshit.ogg', 75, TRUE)
if(BURN)
- playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
+ playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/machinery/power/solar_control/atom_break(damage_flag)
. = ..()
if(.)
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
/obj/machinery/power/solar_control/process()
lastgen = gen
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index e7cc039c72df9..439c0b8d177b4 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -299,7 +299,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
zap_factors = calculate_zap_transmission_rate()
var/delta_time = (SSmachines.times_fired - last_power_zap_perspective_machines) * SSmachines.wait / (1 SECONDS)
if(delta_time && internal_energy && (last_power_zap + (4 - internal_energy * 0.001) SECONDS) < world.time)
- playsound(src, 'sound/weapons/emitter2.ogg', 70, TRUE)
+ playsound(src, 'sound/items/weapons/emitter2.ogg', 70, TRUE)
hue_angle_shift = clamp(903 * log(10, (internal_energy + 8000)) - 3590, -50, 240)
var/zap_color = color_matrix_rotate_hue(hue_angle_shift)
supermatter_zap(
diff --git a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm
index aea846d237ef1..26ebb06fbeb8a 100644
--- a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm
@@ -50,18 +50,18 @@ GLOBAL_LIST_INIT(sm_delam_list, list(
sm.radio.talk_into(sm,"Crystalline hyperstructure returning to safe operating parameters. Integrity: [round(sm.get_integrity_percent(), 0.01)]%", sm.emergency_channel)
else
sm.radio.talk_into(sm,"Crystalline hyperstructure returning to safe operating parameters. Integrity: [round(sm.get_integrity_percent(), 0.01)]%", sm.warning_channel)
- playsound(sm, 'sound/machines/terminal_alert.ogg', 75)
+ playsound(sm, 'sound/machines/terminal/terminal_alert.ogg', 75)
return FALSE
switch(sm.get_status())
if(SUPERMATTER_DELAMINATING)
- playsound(sm, 'sound/misc/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10)
+ playsound(sm, 'sound/announcer/alarm/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10)
if(SUPERMATTER_EMERGENCY)
- playsound(sm, 'sound/machines/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
+ playsound(sm, 'sound/machines/engine_alert/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
if(SUPERMATTER_DANGER)
- playsound(sm, 'sound/machines/engine_alert2.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
+ playsound(sm, 'sound/machines/engine_alert/engine_alert2.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
if(SUPERMATTER_WARNING)
- playsound(sm, 'sound/machines/terminal_alert.ogg', 75)
+ playsound(sm, 'sound/machines/terminal/terminal_alert.ogg', 75)
if(sm.damage >= sm.emergency_point) // In emergency
sm.radio.talk_into(sm, "CRYSTAL DELAMINATION IMMINENT! Integrity: [round(sm.get_integrity_percent(), 0.01)]%", sm.emergency_channel)
diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm
index a9c7a87045da3..abcc6a3a50ea3 100644
--- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm
@@ -89,7 +89,7 @@
return FALSE
priority_announce("Attention: Long range anomaly scans indicate abnormal quantities of harmonic flux originating from \
a subject within [station_name()], a resonance collapse may occur.",
- "Nanotrasen Star Observation Association", 'sound/misc/airraid.ogg')
+ "Nanotrasen Star Observation Association", 'sound/announcer/alarm/airraid.ogg')
return TRUE
/// Signal calls cant sleep, we gotta do this.
diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
index d19d17452e221..c07ec7bbe89f7 100644
--- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
@@ -64,7 +64,7 @@
span_userdanger("The crystal mass lunges on you and hits you in the chest. As your vision is filled with a blinding light, you think to yourself \"Damn it.\""))
else if(istype(checked_atom, /obj/cascade_portal))
checked_atom.visible_message(span_userdanger("\The [checked_atom] screeches and closes away as it is hit by \a [src]! Too late!"))
- playsound(get_turf(checked_atom), 'sound/magic/charge.ogg', 50, TRUE)
+ playsound(get_turf(checked_atom), 'sound/effects/magic/charge.ogg', 50, TRUE)
playsound(get_turf(checked_atom), 'sound/effects/supermatter.ogg', 50, TRUE)
qdel(checked_atom)
else if(isitem(checked_atom))
diff --git a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
index a6c3f171b61af..4fe8863815a2d 100644
--- a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm
@@ -32,7 +32,7 @@
var/turf/victim_turf = get_turf(victim)
if(!is_valid_z_level(victim_turf, sm_turf))
continue
- victim.playsound_local(victim_turf, 'sound/magic/charge.ogg')
+ victim.playsound_local(victim_turf, 'sound/effects/magic/charge.ogg')
if(victim.z == 0) //victim is inside an object, this is to maintain an old bug turned feature with lockers n shit i guess. tg issue #69687
var/message = ""
var/location = victim.loc
@@ -140,7 +140,7 @@
priority_announce(
text = "Fatal error occurred in emergency shuttle uplink during transit. Unable to reestablish connection.",
title = "Shuttle Failure",
- sound = 'sound/misc/announce_dig.ogg',
+ sound = 'sound/announcer/announcement/announce_dig.ogg',
sender_override = "Emergency Shuttle Uplink Alert",
color_override = "grey",
)
@@ -163,7 +163,7 @@
var/mob/living/living_player = player
to_chat(player, span_boldannounce("Everything around you is resonating with a powerful energy. This can't be good."))
living_player.add_mood_event("cascade", /datum/mood_event/cascade)
- SEND_SOUND(player, 'sound/magic/charge.ogg')
+ SEND_SOUND(player, 'sound/effects/magic/charge.ogg')
/datum/sm_delam/proc/effect_emergency_state()
if(SSsecurity_level.get_current_level_as_number() != SEC_LEVEL_DELTA)
diff --git a/code/modules/power/supermatter/supermatter_extra_effects.dm b/code/modules/power/supermatter/supermatter_extra_effects.dm
index 5d4c3474d59f6..a21a5ee728739 100644
--- a/code/modules/power/supermatter/supermatter_extra_effects.dm
+++ b/code/modules/power/supermatter/supermatter_extra_effects.dm
@@ -128,7 +128,7 @@
zap_count += 1
if(zap_count >= 1)
- playsound(loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
+ playsound(loc, 'sound/items/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
var/delta_time = (SSmachines.times_fired - last_high_energy_zap_perspective_machines) * SSmachines.wait / (1 SECONDS)
if(delta_time)
for(var/i in 1 to zap_count)
@@ -144,7 +144,7 @@
supermatter_anomaly_gen(src, PYRO_ANOMALY, rand(5, 10))
/obj/machinery/power/supermatter_crystal/proc/supermatter_pull(turf/center, pull_range = 3)
- playsound(center, 'sound/weapons/marauder.ogg', 100, TRUE, extrarange = pull_range - world.view)
+ playsound(center, 'sound/items/weapons/marauder.ogg', 100, TRUE, extrarange = pull_range - world.view)
for(var/atom/movable/movable_atom in orange(pull_range,center))
if((movable_atom.anchored || movable_atom.move_resist >= MOVE_FORCE_EXTREMELY_STRONG)) //move resist memes.
if(istype(movable_atom, /obj/structure/closet))
diff --git a/code/modules/power/supermatter/supermatter_gas.dm b/code/modules/power/supermatter/supermatter_gas.dm
index fe0ed388148b5..b6eb2804c28ab 100644
--- a/code/modules/power/supermatter/supermatter_gas.dm
+++ b/code/modules/power/supermatter/supermatter_gas.dm
@@ -218,7 +218,7 @@ GLOBAL_LIST_INIT(sm_gas_behavior, init_sm_gas())
/datum/sm_gas/zauker/extra_effects(obj/machinery/power/supermatter_crystal/sm)
if(!prob(sm.gas_percentage[/datum/gas/zauker] * 100))
return
- playsound(sm.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
+ playsound(sm.loc, 'sound/items/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
sm.supermatter_zap(
sm,
range = 6,
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 14eb6c88864b0..394fcc96d33cb 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -114,7 +114,7 @@
var/power = (powernet.avail) * 0.2 * input_power_multiplier //Always always always use more then you output for the love of god
power = min(surplus(), power) //Take the smaller of the two
add_load(power)
- playsound(src.loc, 'sound/magic/lightningshock.ogg', zap_sound_volume, TRUE, zap_sound_range)
+ playsound(src.loc, 'sound/effects/magic/lightningshock.ogg', zap_sound_volume, TRUE, zap_sound_range)
tesla_zap(source = src, zap_range = 10, power = power, cutoff = 1e3, zap_flags = zap_flags)
zap_buckle_check(power)
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index bbc1030f0d6ae..b6187760f8360 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -70,7 +70,7 @@
move(4 + orbiting_balls.len * 1.5)
- playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, TRUE, extrarange = 30)
+ playsound(src.loc, 'sound/effects/magic/lightningbolt.ogg', 100, TRUE, extrarange = 30)
pixel_x = 0
pixel_y = 0
@@ -126,7 +126,7 @@
energy_to_lower = energy_to_raise - 20
energy_to_raise = energy_to_raise * 1.25
- playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, TRUE, extrarange = 30)
+ playsound(src.loc, 'sound/effects/magic/lightning_chargeup.ogg', 100, TRUE, extrarange = 30)
addtimer(CALLBACK(src, PROC_REF(new_mini_ball)), 10 SECONDS)
else if(energy < energy_to_lower && orbiting_balls.len)
energy_to_raise = energy_to_raise / 1.25
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index a6118e9ac093f..0855e63ed4bf9 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -90,7 +90,7 @@
// actually flip to other direction?
if(abs(angle - azimuth_current) > 180)
- mid_azimuth = (mid_azimuth + 180) % 360
+ mid_azimuth = reverse_angle(mid_azimuth)
// Split into 2 parts so it doesn't distort on large changes
animate(part,
@@ -134,7 +134,7 @@
/obj/machinery/power/tracker/atom_break(damage_flag)
. = ..()
if(.)
- playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
+ playsound(loc, 'sound/effects/glass/glassbr3.ogg', 100, TRUE)
unset_control()
/obj/machinery/power/tracker/on_deconstruction(disassembled)
diff --git a/code/modules/power/turbine/turbine.dm b/code/modules/power/turbine/turbine.dm
index dbf5d1848dd48..e839800158f63 100644
--- a/code/modules/power/turbine/turbine.dm
+++ b/code/modules/power/turbine/turbine.dm
@@ -648,7 +648,7 @@
return PROCESS_KILL
radio.talk_into(src, "Warning, turbine at [get_area_name(src)] taking damage, current integrity at [integrity]%!", RADIO_CHANNEL_ENGINEERING)
- playsound(src, 'sound/machines/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
+ playsound(src, 'sound/machines/engine_alert/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10)
//================ROTOR WORKING============//
//The Rotor moves the gases that expands from 1000 L to 3000 L, they cool down and both temperature and pressure lowers
diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm
index 42751441fca4f..4bf428f80c125 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -32,6 +32,9 @@
var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
///pacifism check for boolet, set to FALSE if bullet is non-lethal
var/harmful = TRUE
+ /// How much force is applied when fired in zero-G
+ var/newtonian_force = 1
+
///If set to true or false, this ammunition can or cannot misfire, regardless the gun can_misfire setting
var/can_misfire = null
///This is how much misfire probability is added to the gun when it fires this casing.
@@ -156,6 +159,6 @@
SpinAnimation(10, 1)
var/turf/T = get_turf(src)
if(still_warm && T?.bullet_sizzle)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/items/tools/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
else if(T?.bullet_bounce_sound)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, T.bullet_bounce_sound, 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.
diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm
index 282c722b169e6..b15cd334a8e6d 100644
--- a/code/modules/projectiles/ammunition/_firing.dm
+++ b/code/modules/projectiles/ammunition/_firing.dm
@@ -23,10 +23,10 @@
user.changeNext_move(next_delay)
if(!tk_firing(user, fired_from))
- user.newtonian_move(get_dir(target, user))
+ user.newtonian_move(get_angle(target, user), drift_force = newtonian_force)
else if(ismovable(fired_from))
var/atom/movable/firer = fired_from
- if(!firer.newtonian_move(get_dir(target, fired_from), instant = TRUE))
+ if(!firer.newtonian_move(get_angle(target, fired_from), instant = TRUE, drift_force = newtonian_force))
var/throwtarget = get_step(fired_from, get_dir(target, fired_from))
firer.safe_throw_at(throwtarget, 1, 2)
update_appearance()
diff --git a/code/modules/projectiles/ammunition/ballistic/foam.dm b/code/modules/projectiles/ammunition/ballistic/foam.dm
index 7ffa317897a83..f4496cf6c189b 100644
--- a/code/modules/projectiles/ammunition/ballistic/foam.dm
+++ b/code/modules/projectiles/ammunition/ballistic/foam.dm
@@ -8,6 +8,7 @@
base_icon_state = "foamdart"
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1125)
harmful = FALSE
+ newtonian_force = 0.5
var/modified = FALSE
var/static/list/insertable_items_hint = list(/obj/item/pen)
///For colored magazine overlays.
diff --git a/code/modules/projectiles/ammunition/ballistic/harpoon.dm b/code/modules/projectiles/ammunition/ballistic/harpoon.dm
index 79590ccb97d10..b3c1dddd08513 100644
--- a/code/modules/projectiles/ammunition/ballistic/harpoon.dm
+++ b/code/modules/projectiles/ammunition/ballistic/harpoon.dm
@@ -4,6 +4,7 @@
icon_state = "magspear"
base_icon_state = "magspear"
projectile_type = /obj/projectile/bullet/harpoon
+ newtonian_force = 1.5
/obj/item/ammo_casing/harpoon/Initialize(mapload)
. = ..()
diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm
index bc25970e7c364..fc90f2d7bfdfb 100644
--- a/code/modules/projectiles/ammunition/ballistic/pistol.dm
+++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm
@@ -5,6 +5,7 @@
desc = "A 10mm bullet casing."
caliber = CALIBER_10MM
projectile_type = /obj/projectile/bullet/c10mm
+ newtonian_force = 0.75
/obj/item/ammo_casing/c10mm/ap
name = "10mm armor-piercing bullet casing"
@@ -33,6 +34,7 @@
desc = "A 9mm bullet casing."
caliber = CALIBER_9MM
projectile_type = /obj/projectile/bullet/c9mm
+ newtonian_force = 0.75
/obj/item/ammo_casing/c9mm/ap
name = "9mm armor-piercing bullet casing"
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index 4c5c24a3eec89..c85be11686118 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -48,6 +48,7 @@
caliber = CALIBER_40MM
icon_state = "40mmHE"
projectile_type = /obj/projectile/bullet/a40mm
+ newtonian_force = 1.25
/obj/item/ammo_casing/a40mm/rubber
name = "40mm rubber shell"
@@ -61,6 +62,7 @@
icon_state = "rod_sharp"
base_icon_state = "rod_sharp"
projectile_type = /obj/projectile/bullet/rebar
+ newtonian_force = 1.5
/obj/item/ammo_casing/rebar/syndie
name = "Jagged Iron Rod"
@@ -109,6 +111,7 @@
icon_state = "paperball"
base_icon_state = "paperball"
projectile_type = /obj/projectile/bullet/paperball
+ newtonian_force = 0.5
/obj/item/ammo_casing/rebar/Initialize(mapload)
. = ..()
diff --git a/code/modules/projectiles/ammunition/ballistic/rocket.dm b/code/modules/projectiles/ammunition/ballistic/rocket.dm
index 25f0bee11a672..d387ea5ac4a4e 100644
--- a/code/modules/projectiles/ammunition/ballistic/rocket.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rocket.dm
@@ -5,6 +5,7 @@
icon_state = "srm-8"
base_icon_state = "srm-8"
projectile_type = /obj/projectile/bullet/rocket
+ newtonian_force = 2
/obj/item/ammo_casing/rocket/Initialize(mapload)
. = ..()
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index 84c75ed24935e..897e695fd4eb7 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -8,6 +8,7 @@
caliber = CALIBER_SHOTGUN
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)
projectile_type = /obj/projectile/bullet/shotgun_slug
+ newtonian_force = 1.25
/obj/item/ammo_casing/shotgun/executioner
name = "executioner slug"
diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm
index 03deb0f2034b4..1b6e60cdef0e4 100644
--- a/code/modules/projectiles/ammunition/ballistic/sniper.dm
+++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm
@@ -6,6 +6,7 @@
caliber = CALIBER_50BMG
projectile_type = /obj/projectile/bullet/p50
icon_state = ".50"
+ newtonian_force = 1.5
/obj/item/ammo_casing/p50/surplus
name = ".50 BMG surplus bullet casing"
diff --git a/code/modules/projectiles/ammunition/energy/_energy.dm b/code/modules/projectiles/ammunition/energy/_energy.dm
index 877dc7784d02d..29e3d635585e9 100644
--- a/code/modules/projectiles/ammunition/energy/_energy.dm
+++ b/code/modules/projectiles/ammunition/energy/_energy.dm
@@ -6,5 +6,6 @@
slot_flags = null
var/e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE) //The amount of energy a cell needs to expend to create this shot.
var/select_name = CALIBER_ENERGY
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/red
+ newtonian_force = 0.5
diff --git a/code/modules/projectiles/ammunition/energy/ebow.dm b/code/modules/projectiles/ammunition/energy/ebow.dm
index a6a928c25095d..9f22f31812335 100644
--- a/code/modules/projectiles/ammunition/energy/ebow.dm
+++ b/code/modules/projectiles/ammunition/energy/ebow.dm
@@ -2,7 +2,7 @@
projectile_type = /obj/projectile/energy/bolt
select_name = "bolt"
e_cost = LASER_SHOTS(1, STANDARD_CELL_CHARGE * 0.5)
- fire_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' // Even for non-suppressed crossbows, this is the most appropriate sound
+ fire_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg' // Even for non-suppressed crossbows, this is the most appropriate sound
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
/obj/item/ammo_casing/energy/bolt/halloween
diff --git a/code/modules/projectiles/ammunition/energy/gravity.dm b/code/modules/projectiles/ammunition/energy/gravity.dm
index 6ad3a776475ce..076a586c26d3b 100644
--- a/code/modules/projectiles/ammunition/energy/gravity.dm
+++ b/code/modules/projectiles/ammunition/energy/gravity.dm
@@ -1,10 +1,11 @@
/obj/item/ammo_casing/energy/gravity
e_cost = 0 // Not possible to use the macro
- fire_sound = 'sound/weapons/wave.ogg'
+ fire_sound = 'sound/items/weapons/wave.ogg'
select_name = "gravity"
delay = 50
var/obj/item/gun/energy/gravity_gun/gun
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
+ newtonian_force = 1
/obj/item/ammo_casing/energy/gravity/Initialize(mapload)
if(istype(loc,/obj/item/gun/energy/gravity_gun))
diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm
index a77dcfec663b1..04d139ca3751a 100644
--- a/code/modules/projectiles/ammunition/energy/laser.dm
+++ b/code/modules/projectiles/ammunition/energy/laser.dm
@@ -17,13 +17,13 @@
projectile_type = /obj/projectile/beam/laser/carbine
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE)
select_name = "kill"
- fire_sound = 'sound/weapons/laser2.ogg'
+ fire_sound = 'sound/items/weapons/laser2.ogg'
/obj/item/ammo_casing/energy/lasergun/carbine/cybersun
projectile_type = /obj/projectile/beam/laser/carbine/cybersun
e_cost = LASER_SHOTS(54, STANDARD_CELL_CHARGE)
select_name = "rapid fire"
- fire_sound = 'sound/weapons/laser2.ogg'
+ fire_sound = 'sound/items/weapons/laser2.ogg'
/obj/item/ammo_casing/energy/lasergun/carbine/practice
projectile_type = /obj/projectile/beam/laser/carbine/practice
@@ -44,6 +44,8 @@
/obj/item/ammo_casing/energy/laser/musket/prime
projectile_type = /obj/projectile/beam/laser/musket/prime
+ pellets = 3
+ variance = 10
/obj/item/ammo_casing/energy/laser/practice
projectile_type = /obj/projectile/beam/practice
@@ -90,13 +92,13 @@
/obj/item/ammo_casing/energy/laser/heavy
projectile_type = /obj/projectile/beam/laser/heavylaser
select_name = "anti-vehicle"
- fire_sound = 'sound/weapons/lasercannonfire.ogg'
+ fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
/obj/item/ammo_casing/energy/laser/pulse
projectile_type = /obj/projectile/beam/pulse
e_cost = LASER_SHOTS(200, STANDARD_CELL_CHARGE * 40)
select_name = "DESTROY"
- fire_sound = 'sound/weapons/pulse.ogg'
+ fire_sound = 'sound/items/weapons/pulse.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
/obj/item/ammo_casing/energy/laser/bluetag
@@ -118,12 +120,12 @@
/obj/item/ammo_casing/energy/xray
projectile_type = /obj/projectile/beam/xray
e_cost = LASER_SHOTS(20, STANDARD_CELL_CHARGE)
- fire_sound = 'sound/weapons/laser3.ogg'
+ fire_sound = 'sound/items/weapons/laser3.ogg'
/obj/item/ammo_casing/energy/mindflayer
projectile_type = /obj/projectile/beam/mindflayer
select_name = "MINDFUCK"
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
/obj/item/ammo_casing/energy/laser/minigun
select_name = "kill"
@@ -134,7 +136,7 @@
projectile_type = /obj/projectile/bullet/c10mm //henk
select_name = "bullet"
e_cost = LASER_SHOTS(8, STANDARD_CELL_CHARGE)
- fire_sound = 'sound/weapons/thermalpistol.ogg'
+ fire_sound = 'sound/items/weapons/thermalpistol.ogg'
/obj/item/ammo_casing/energy/nanite/inferno
projectile_type = /obj/projectile/energy/inferno
@@ -154,7 +156,7 @@
base_icon_state = "s-casing-live"
slot_flags = null
projectile_type = /obj/projectile/beam
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/red
/obj/item/ammo_casing/laser/Initialize(mapload)
diff --git a/code/modules/projectiles/ammunition/energy/lmg.dm b/code/modules/projectiles/ammunition/energy/lmg.dm
index 632044f065203..01585e28b6c9d 100644
--- a/code/modules/projectiles/ammunition/energy/lmg.dm
+++ b/code/modules/projectiles/ammunition/energy/lmg.dm
@@ -1,6 +1,6 @@
/obj/item/ammo_casing/energy/c3dbullet
projectile_type = /obj/projectile/bullet/c3d
select_name = "spraydown"
- fire_sound = 'sound/weapons/gun/smg/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/smg/shot.ogg'
e_cost = LASER_SHOTS(30, STANDARD_CELL_CHARGE * 0.6)
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm
index e660903bdc95d..f68879fc7577e 100644
--- a/code/modules/projectiles/ammunition/energy/plasma.dm
+++ b/code/modules/projectiles/ammunition/energy/plasma.dm
@@ -1,7 +1,7 @@
/obj/item/ammo_casing/energy/plasma
projectile_type = /obj/projectile/plasma
select_name = "plasma burst"
- fire_sound = 'sound/weapons/plasma_cutter.ogg'
+ fire_sound = 'sound/items/weapons/plasma_cutter.ogg'
delay = 15
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE)
diff --git a/code/modules/projectiles/ammunition/energy/portal.dm b/code/modules/projectiles/ammunition/energy/portal.dm
index 787f2e4eac76c..5aa21f5fcf677 100644
--- a/code/modules/projectiles/ammunition/energy/portal.dm
+++ b/code/modules/projectiles/ammunition/energy/portal.dm
@@ -2,7 +2,7 @@
projectile_type = /obj/projectile/beam/wormhole
e_cost = 0 // Can't use the macro
harmful = FALSE
- fire_sound = 'sound/weapons/pulse3.ogg'
+ fire_sound = 'sound/items/weapons/pulse3.ogg'
select_name = "blue"
//Weakref to the gun that shot us
var/datum/weakref/gun
diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm
index c42bcdc746e45..47940ad81c99c 100644
--- a/code/modules/projectiles/ammunition/energy/special.dm
+++ b/code/modules/projectiles/ammunition/energy/special.dm
@@ -1,7 +1,7 @@
/obj/item/ammo_casing/energy/ion
projectile_type = /obj/projectile/ion
select_name = "ion"
- fire_sound = 'sound/weapons/ionrifle.ogg'
+ fire_sound = 'sound/items/weapons/ionrifle.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
/obj/item/ammo_casing/energy/ion/hos
@@ -11,7 +11,7 @@
/obj/item/ammo_casing/energy/radiation
projectile_type = /obj/projectile/energy/radiation
select_name = "declone"
- fire_sound = 'sound/weapons/pulse3.ogg'
+ fire_sound = 'sound/items/weapons/pulse3.ogg'
/obj/item/ammo_casing/energy/radiation/weak
projectile_type = /obj/projectile/energy/radiation/weak
@@ -37,7 +37,7 @@
projectile_type = /obj/projectile/temp
select_name = "freeze"
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE * 10)
- fire_sound = 'sound/weapons/pulse3.ogg'
+ fire_sound = 'sound/items/weapons/pulse3.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
/obj/item/ammo_casing/energy/temp/hot
@@ -48,6 +48,7 @@
/obj/item/ammo_casing/energy/meteor
projectile_type = /obj/projectile/meteor
select_name = "goddamn meteor"
+ newtonian_force = 3
/obj/item/ammo_casing/energy/net
projectile_type = /obj/projectile/energy/net
@@ -62,7 +63,7 @@
harmful = FALSE
/obj/item/ammo_casing/energy/tesla_cannon
- fire_sound = 'sound/magic/lightningshock.ogg'
+ fire_sound = 'sound/effects/magic/lightningshock.ogg'
e_cost = LASER_SHOTS(33, STANDARD_CELL_CHARGE)
select_name = "shock"
projectile_type = /obj/projectile/energy/tesla_cannon
@@ -77,18 +78,19 @@
projectile_type = /obj/projectile/bullet/marksman
select_name = "marksman nanoshot"
e_cost = 0 // Can't use the macro
- fire_sound = 'sound/weapons/gun/revolver/shot_alt.ogg'
+ fire_sound = 'sound/items/weapons/gun/revolver/shot_alt.ogg'
+ newtonian_force = 1
/obj/item/ammo_casing/energy/fisher
projectile_type = /obj/projectile/energy/fisher
select_name = "light disruptor"
harmful = FALSE
e_cost = LASER_SHOTS(2, STANDARD_CELL_CHARGE * 0.5)
- fire_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' // fwip fwip fwip fwip
+ fire_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg' // fwip fwip fwip fwip
// Used by /obj/item/gun/energy/photon
/obj/item/ammo_casing/energy/photon
- fire_sound = 'sound/weapons/lasercannonfire.ogg'
+ fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
e_cost = LASER_SHOTS(4, STANDARD_CELL_CHARGE)
select_name = "flare"
projectile_type = /obj/projectile/energy/photon
diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm
index a7c3f61ee750a..7fb22e42ef5a9 100644
--- a/code/modules/projectiles/ammunition/energy/stun.dm
+++ b/code/modules/projectiles/ammunition/energy/stun.dm
@@ -1,7 +1,7 @@
/obj/item/ammo_casing/energy/electrode
projectile_type = /obj/projectile/energy/electrode
select_name = "stun"
- fire_sound = 'sound/weapons/taser.ogg'
+ fire_sound = 'sound/items/weapons/taser.ogg'
e_cost = LASER_SHOTS(5, STANDARD_CELL_CHARGE)
harmful = FALSE
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
@@ -10,7 +10,7 @@
e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE)
/obj/item/ammo_casing/energy/electrode/gun
- fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE)
/obj/item/ammo_casing/energy/electrode/old
@@ -20,14 +20,14 @@
projectile_type = /obj/projectile/beam/disabler
select_name = "disable"
e_cost = LASER_SHOTS(20, STANDARD_CELL_CHARGE)
- fire_sound = 'sound/weapons/taser2.ogg'
+ fire_sound = 'sound/items/weapons/taser2.ogg'
harmful = FALSE
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
/obj/item/ammo_casing/energy/disabler/smg
projectile_type = /obj/projectile/beam/disabler/weak
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE)
- fire_sound = 'sound/weapons/taser3.ogg'
+ fire_sound = 'sound/items/weapons/taser3.ogg'
/obj/item/ammo_casing/energy/disabler/hos
e_cost = LASER_SHOTS(20, STANDARD_CELL_CHARGE * 1.2)
diff --git a/code/modules/projectiles/ammunition/special/magic.dm b/code/modules/projectiles/ammunition/special/magic.dm
index 0ae053005c4d7..f1cbc1d9c14ed 100644
--- a/code/modules/projectiles/ammunition/special/magic.dm
+++ b/code/modules/projectiles/ammunition/special/magic.dm
@@ -4,6 +4,7 @@
slot_flags = null
projectile_type = /obj/projectile/magic
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/magic
+ newtonian_force = 0.5
/obj/item/ammo_casing/magic/change
projectile_type = /obj/projectile/magic/change
diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
index 207190d08f924..c010111113c66 100644
--- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm
+++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
@@ -161,7 +161,7 @@
if(num_loaded)
if(!silent)
to_chat(user, span_notice("You load [num_loaded > 1 ? "[num_loaded] [casing_phrasing]s" : "a [casing_phrasing]"] into \the [src]!"))
- playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE)
+ playsound(src, 'sound/items/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE)
update_appearance()
return num_loaded
@@ -174,7 +174,7 @@
A.forceMove(drop_location())
if(!user.is_holding(src) || !user.put_in_hands(A)) //incase they're using TK
A.bounce_away(FALSE, NONE)
- playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE)
+ playsound(src, 'sound/items/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE)
to_chat(user, span_notice("You remove a [casing_phrasing] from [src]!"))
update_appearance()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 190f9e1a7aca8..d3b0782036b2b 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -23,14 +23,14 @@
attack_verb_simple = list("strike", "hit", "bash")
var/gun_flags = NONE
- var/fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ var/fire_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
var/vary_fire_sound = TRUE
var/fire_sound_volume = 50
- var/dry_fire_sound = 'sound/weapons/gun/general/dry_fire.ogg'
+ var/dry_fire_sound = 'sound/items/weapons/gun/general/dry_fire.ogg'
var/dry_fire_sound_volume = 30
var/suppressed = null //whether or not a message is displayed when fired
var/can_suppress = FALSE
- var/suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
+ var/suppressed_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg'
var/suppressed_volume = 60
var/can_unsuppress = TRUE /// whether a gun can be unsuppressed. for ballistics, also determines if it generates a suppressor overlay
var/recoil = 0 //boom boom shake the room
@@ -228,7 +228,7 @@
var/mob/living/holder = loc
if(holder.is_holding(src) && holder.stat < UNCONSCIOUS)
to_chat(holder, span_boldwarning("[src] breaks down!"))
- holder.playsound_local(get_turf(src), 'sound/weapons/smash.ogg', 50, TRUE)
+ holder.playsound_local(get_turf(src), 'sound/items/weapons/smash.ogg', 50, TRUE)
return ..()
/obj/item/gun/emp_act(severity)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 2d77185f1d255..2222140c805a2 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -5,44 +5,44 @@
name = "projectile gun"
icon_state = "debug"
w_class = WEIGHT_CLASS_NORMAL
- pickup_sound = 'sound/items/gun_pick_up.ogg'
- drop_sound = 'sound/items/gun_drop.ogg'
+ pickup_sound = 'sound/items/handling/gun/gun_pick_up.ogg'
+ drop_sound = 'sound/items/handling/gun/gun_drop.ogg'
sound_vary = TRUE
///sound when inserting magazine
- var/load_sound = 'sound/weapons/gun/general/magazine_insert_full.ogg'
+ var/load_sound = 'sound/items/weapons/gun/general/magazine_insert_full.ogg'
///sound when inserting an empty magazine
- var/load_empty_sound = 'sound/weapons/gun/general/magazine_insert_empty.ogg'
+ var/load_empty_sound = 'sound/items/weapons/gun/general/magazine_insert_empty.ogg'
///volume of loading sound
var/load_sound_volume = 40
///whether loading sound should vary
var/load_sound_vary = TRUE
///sound of racking
- var/rack_sound = 'sound/weapons/gun/general/bolt_rack.ogg'
+ var/rack_sound = 'sound/items/weapons/gun/general/bolt_rack.ogg'
///volume of racking
var/rack_sound_volume = 60
///whether racking sound should vary
var/rack_sound_vary = TRUE
///sound of when the bolt is locked back manually
- var/lock_back_sound = 'sound/weapons/gun/general/slide_lock_1.ogg'
+ var/lock_back_sound = 'sound/items/weapons/gun/general/slide_lock_1.ogg'
///volume of lock back
var/lock_back_sound_volume = 60
///whether lock back varies
var/lock_back_sound_vary = TRUE
///Sound of ejecting a magazine
- var/eject_sound = 'sound/weapons/gun/general/magazine_remove_full.ogg'
+ var/eject_sound = 'sound/items/weapons/gun/general/magazine_remove_full.ogg'
///sound of ejecting an empty magazine
- var/eject_empty_sound = 'sound/weapons/gun/general/magazine_remove_empty.ogg'
+ var/eject_empty_sound = 'sound/items/weapons/gun/general/magazine_remove_empty.ogg'
///volume of ejecting a magazine
var/eject_sound_volume = 40
///whether eject sound should vary
var/eject_sound_vary = TRUE
///sound of dropping the bolt or releasing a slide
- var/bolt_drop_sound = 'sound/weapons/gun/general/bolt_drop.ogg'
+ var/bolt_drop_sound = 'sound/items/weapons/gun/general/bolt_drop.ogg'
///volume of bolt drop/slide release
var/bolt_drop_sound_volume = 60
///empty alarm sound (if enabled)
- var/empty_alarm_sound = 'sound/weapons/gun/general/empty_alarm.ogg'
+ var/empty_alarm_sound = 'sound/items/weapons/gun/general/empty_alarm.ogg'
///empty alarm volume sound
var/empty_alarm_volume = 70
///whether empty alarm sound varies
@@ -174,11 +174,11 @@
if(suppressed)
playsound(src, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
if(play_click && click_on_low_ammo)
- playsound(src, 'sound/weapons/gun/general/ballistic_click.ogg', suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0, frequency = click_frequency_to_use)
+ playsound(src, 'sound/items/weapons/gun/general/ballistic_click.ogg', suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0, frequency = click_frequency_to_use)
else
playsound(src, fire_sound, fire_sound_volume, vary_fire_sound)
if(play_click && click_on_low_ammo)
- playsound(src, 'sound/weapons/gun/general/ballistic_click.ogg', fire_sound_volume, vary_fire_sound, frequency = click_frequency_to_use)
+ playsound(src, 'sound/items/weapons/gun/general/ballistic_click.ogg', fire_sound_volume, vary_fire_sound, frequency = click_frequency_to_use)
/**
@@ -284,7 +284,7 @@
fire_delay = initial(fire_delay)
balloon_alert(user, "switched to [burst_size]-round burst")
- playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
+ playsound(user, 'sound/items/weapons/empty.ogg', 100, TRUE)
update_appearance()
update_item_action_buttons()
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index c3bb92eec7140..f09f650aca73d 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -5,10 +5,10 @@
fire_delay = 2
actions_types = list(/datum/action/item_action/toggle_firemode)
semi_auto = TRUE
- fire_sound = 'sound/weapons/gun/smg/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/smg/shot.ogg'
fire_sound_volume = 90
- rack_sound = 'sound/weapons/gun/smg/smgrack.ogg'
- suppressed_sound = 'sound/weapons/gun/smg/shot_suppressed.ogg'
+ rack_sound = 'sound/items/weapons/gun/smg/smgrack.ogg'
+ suppressed_sound = 'sound/items/weapons/gun/smg/shot_suppressed.ogg'
burst_fire_selection = TRUE
/obj/item/gun/ballistic/automatic/proto
@@ -105,9 +105,9 @@
click_on_low_ammo = FALSE
/// List of the possible firing sounds
var/list/firing_sound_list = list(
- 'sound/weapons/gun/smartgun/smartgun_shoot_1.ogg',
- 'sound/weapons/gun/smartgun/smartgun_shoot_2.ogg',
- 'sound/weapons/gun/smartgun/smartgun_shoot_3.ogg',
+ 'sound/items/weapons/gun/smartgun/smartgun_shoot_1.ogg',
+ 'sound/items/weapons/gun/smartgun/smartgun_shoot_2.ogg',
+ 'sound/items/weapons/gun/smartgun/smartgun_shoot_3.ogg',
)
/obj/item/gun/ballistic/automatic/smartgun/fire_sounds()
@@ -123,7 +123,7 @@
bolt_type = BOLT_TYPE_OPEN
show_bolt_icon = FALSE
mag_display = TRUE
- rack_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
+ rack_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg'
/**
* Weak uzi for syndicate chimps. It comes in a 4 TC kit.
@@ -153,7 +153,7 @@
pin = /obj/item/firing_pin/implant/pindicate
mag_display = TRUE
empty_indicator = TRUE
- fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg'
+ fire_sound = 'sound/items/weapons/gun/smg/shot_alt.ogg'
/obj/item/gun/ballistic/automatic/m90/Initialize(mapload)
. = ..()
@@ -254,9 +254,9 @@
mag_display = TRUE
mag_display_ammo = TRUE
tac_reloads = FALSE
- fire_sound = 'sound/weapons/gun/l6/shot.ogg'
- rack_sound = 'sound/weapons/gun/l6/l6_rack.ogg'
- suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
+ fire_sound = 'sound/items/weapons/gun/l6/shot.ogg'
+ rack_sound = 'sound/items/weapons/gun/l6/l6_rack.ogg'
+ suppressed_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg'
var/cover_open = FALSE
/obj/item/gun/ballistic/automatic/l6_saw/unrestricted
@@ -277,7 +277,7 @@
/obj/item/gun/ballistic/automatic/l6_saw/click_alt(mob/user)
cover_open = !cover_open
balloon_alert(user, "cover [cover_open ? "opened" : "closed"]")
- playsound(src, 'sound/weapons/gun/l6/l6_door.ogg', 60, TRUE)
+ playsound(src, 'sound/items/weapons/gun/l6/l6_door.ogg', 60, TRUE)
update_appearance()
return CLICK_ACTION_SUCCESS
@@ -348,5 +348,5 @@
can_suppress = FALSE
burst_size = 0
actions_types = list()
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
casing_ejector = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/bows/_bow.dm b/code/modules/projectiles/guns/ballistic/bows/_bow.dm
index c0ce0b1ef2c9d..5bcec2deeb7e2 100644
--- a/code/modules/projectiles/guns/ballistic/bows/_bow.dm
+++ b/code/modules/projectiles/guns/ballistic/bows/_bow.dm
@@ -8,8 +8,8 @@
icon_state = "bow"
inhand_icon_state = "bow"
base_icon_state = "bow"
- load_sound = 'sound/weapons/gun/general/ballistic_click.ogg'
- fire_sound = 'sound/weapons/gun/bow/bow_fire.ogg'
+ load_sound = 'sound/items/weapons/gun/general/ballistic_click.ogg'
+ fire_sound = 'sound/items/weapons/gun/bow/bow_fire.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/bow
force = 15
pinless = TRUE
@@ -65,7 +65,7 @@
return
balloon_alert(user, "[drawn ? "string released" : "string drawn"]")
drawn = !drawn
- playsound(src, 'sound/weapons/gun/bow/bow_draw.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/gun/bow/bow_draw.ogg', 25, TRUE)
update_appearance()
/obj/item/gun/ballistic/bow/try_fire_gun(atom/target, mob/living/user, params)
@@ -87,7 +87,7 @@
if(slot != ITEM_SLOT_HANDS && chambered)
balloon_alert(user, "the arrow falls out!")
if(drawn)
- playsound(src, 'sound/weapons/gun/bow/bow_fire.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/gun/bow/bow_fire.ogg', 25, TRUE)
drop_arrow()
@@ -99,7 +99,7 @@
if(ismob(loc) || !chambered)
return
if(drawn)
- playsound(src, 'sound/weapons/gun/bow/bow_fire.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/gun/bow/bow_fire.ogg', 25, TRUE)
drop_arrow()
/obj/item/gun/ballistic/bow/shoot_with_empty_chamber(mob/living/user)
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index 23c41d1d07e15..03c7f51b936be 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -7,7 +7,7 @@
icon_state = "dshotgun_sawn"
inhand_icon_state = "gun"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/grenadelauncher
- fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
w_class = WEIGHT_CLASS_NORMAL
pin = /obj/item/firing_pin/implant/pindicate
bolt_type = BOLT_TYPE_NO_BOLT
@@ -35,7 +35,7 @@
name = "gyrojet pistol"
desc = "A prototype pistol designed to fire self propelled rockets."
icon_state = "gyropistol"
- fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/m75
burst_size = 1
fire_delay = 0
@@ -54,7 +54,7 @@
worn_icon_state = "rocketlauncher"
SET_BASE_PIXEL(-8, 0)
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/rocketlauncher
- fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/rocket_launch.ogg'
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
can_suppress = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index 35660571074fd..ad925222703dc 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -9,16 +9,16 @@
fire_delay = 0
actions_types = list()
bolt_type = BOLT_TYPE_LOCKING
- fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
- dry_fire_sound = 'sound/weapons/gun/pistol/dry_fire.ogg'
- suppressed_sound = 'sound/weapons/gun/pistol/shot_suppressed.ogg'
- load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg'
- load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg'
- eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg'
- eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg'
- rack_sound = 'sound/weapons/gun/pistol/rack_small.ogg'
- lock_back_sound = 'sound/weapons/gun/pistol/lock_small.ogg'
- bolt_drop_sound = 'sound/weapons/gun/pistol/drop_small.ogg'
+ fire_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
+ dry_fire_sound = 'sound/items/weapons/gun/pistol/dry_fire.ogg'
+ suppressed_sound = 'sound/items/weapons/gun/pistol/shot_suppressed.ogg'
+ load_sound = 'sound/items/weapons/gun/pistol/mag_insert.ogg'
+ load_empty_sound = 'sound/items/weapons/gun/pistol/mag_insert.ogg'
+ eject_sound = 'sound/items/weapons/gun/pistol/mag_release.ogg'
+ eject_empty_sound = 'sound/items/weapons/gun/pistol/mag_release.ogg'
+ rack_sound = 'sound/items/weapons/gun/pistol/rack_small.ogg'
+ lock_back_sound = 'sound/items/weapons/gun/pistol/lock_small.ogg'
+ bolt_drop_sound = 'sound/items/weapons/gun/pistol/drop_small.ogg'
fire_sound_volume = 90
bolt_wording = "slide"
suppressor_x_offset = 10
@@ -110,10 +110,10 @@
w_class = WEIGHT_CLASS_NORMAL
accepted_magazine_type = /obj/item/ammo_box/magazine/m45
can_suppress = FALSE
- fire_sound = 'sound/weapons/gun/pistol/shot_alt.ogg'
- rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
- lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
- bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
+ fire_sound = 'sound/items/weapons/gun/pistol/shot_alt.ogg'
+ rack_sound = 'sound/items/weapons/gun/pistol/rack.ogg'
+ lock_back_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg'
+ bolt_drop_sound = 'sound/items/weapons/gun/pistol/slide_drop.ogg'
/**
* Weak 1911 for syndicate chimps. It comes in a 4 TC kit.
@@ -138,10 +138,10 @@
accepted_magazine_type = /obj/item/ammo_box/magazine/m50
can_suppress = FALSE
mag_display = TRUE
- fire_sound = 'sound/weapons/gun/rifle/shot.ogg'
- rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
- lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
- bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
+ fire_sound = 'sound/items/weapons/gun/rifle/shot.ogg'
+ rack_sound = 'sound/items/weapons/gun/pistol/rack.ogg'
+ lock_back_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg'
+ bolt_drop_sound = 'sound/items/weapons/gun/pistol/slide_drop.ogg'
/obj/item/gun/ballistic/automatic/pistol/deagle/contraband
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index cd7d75556727b..c073c6a6aafbc 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -3,11 +3,11 @@
desc = "A suspicious revolver. Uses .357 ammo."
icon_state = "revolver"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder
- fire_sound = 'sound/weapons/gun/revolver/shot_alt.ogg'
- load_sound = 'sound/weapons/gun/revolver/load_bullet.ogg'
- eject_sound = 'sound/weapons/gun/revolver/empty.ogg'
+ fire_sound = 'sound/items/weapons/gun/revolver/shot_alt.ogg'
+ load_sound = 'sound/items/weapons/gun/revolver/load_bullet.ogg'
+ eject_sound = 'sound/items/weapons/gun/revolver/empty.ogg'
fire_sound_volume = 90
- dry_fire_sound = 'sound/weapons/gun/revolver/dry_fire.ogg'
+ dry_fire_sound = 'sound/items/weapons/gun/revolver/dry_fire.ogg'
casing_ejector = FALSE
internal_magazine = TRUE
bolt_type = BOLT_TYPE_NO_BOLT
@@ -48,11 +48,11 @@
if(suppressed)
playsound(src, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0)
if(play_click)
- playsound(src, 'sound/weapons/gun/general/ballistic_click.ogg', suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0, frequency = click_frequency_to_use)
+ playsound(src, 'sound/items/weapons/gun/general/ballistic_click.ogg', suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0, frequency = click_frequency_to_use)
else
playsound(src, fire_sound, fire_sound_volume, vary_fire_sound)
if(play_click)
- playsound(src, 'sound/weapons/gun/general/ballistic_click.ogg', fire_sound_volume, vary_fire_sound, frequency = click_frequency_to_use)
+ playsound(src, 'sound/items/weapons/gun/general/ballistic_click.ogg', fire_sound_volume, vary_fire_sound, frequency = click_frequency_to_use)
/obj/item/gun/ballistic/revolver/verb/spin()
@@ -107,7 +107,7 @@
desc = "A classic, if not outdated, lethal firearm. Uses .38 Special rounds."
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38
icon_state = "c38"
- fire_sound = 'sound/weapons/gun/revolver/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/revolver/shot.ogg'
/obj/item/gun/ballistic/revolver/c38/detective
name = "\improper Colt Detective Special"
@@ -115,9 +115,9 @@
can_modify_ammo = TRUE
initial_caliber = CALIBER_38
- initial_fire_sound = 'sound/weapons/gun/revolver/shot.ogg'
+ initial_fire_sound = 'sound/items/weapons/gun/revolver/shot.ogg'
alternative_caliber = CALIBER_357
- alternative_fire_sound = 'sound/weapons/gun/revolver/shot_alt.ogg'
+ alternative_fire_sound = 'sound/items/weapons/gun/revolver/shot_alt.ogg'
alternative_ammo_misfires = TRUE
misfire_probability = 0
misfire_percentage_increment = 25 //about 1 in 4 rounds, which increases rapidly every shot
@@ -160,7 +160,7 @@
name = "\improper Golden revolver"
desc = "This ain't no game, ain't never been no show, And I'll gladly gun down the oldest lady you know. Uses .357 ammo."
icon_state = "goldrevolver"
- fire_sound = 'sound/weapons/resonator_blast.ogg'
+ fire_sound = 'sound/items/weapons/resonator_blast.ogg'
recoil = 8
pin = /obj/item/firing_pin
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 0317ead192882..855547dd5f313 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -9,10 +9,10 @@
bolt_type = BOLT_TYPE_LOCKING
semi_auto = FALSE
internal_magazine = TRUE
- fire_sound = 'sound/weapons/gun/rifle/shot_heavy.ogg'
+ fire_sound = 'sound/items/weapons/gun/rifle/shot_heavy.ogg'
fire_sound_volume = 90
- rack_sound = 'sound/weapons/gun/rifle/bolt_out.ogg'
- bolt_drop_sound = 'sound/weapons/gun/rifle/bolt_in.ogg'
+ rack_sound = 'sound/items/weapons/gun/rifle/bolt_out.ogg'
+ bolt_drop_sound = 'sound/items/weapons/gun/rifle/bolt_in.ogg'
tac_reloads = FALSE
/obj/item/gun/ballistic/rifle/rack(mob/user = null)
@@ -83,7 +83,7 @@
else
unjam_chance += 10
balloon_alert(user, "jammed!")
- playsound(user,'sound/weapons/jammed.ogg', 75, TRUE)
+ playsound(user,'sound/items/weapons/jammed.ogg', 75, TRUE)
return FALSE
..()
@@ -126,7 +126,7 @@
inhand_icon_state = "speargun"
worn_icon_state = "speargun"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/harpoon
- fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg'
can_be_sawn_off = FALSE
SET_BASE_PIXEL(0, 0)
@@ -200,7 +200,7 @@
icon_state = "rebarxbow"
inhand_icon_state = "rebarxbow"
worn_icon_state = "rebarxbow"
- rack_sound = 'sound/weapons/gun/sniper/rack.ogg'
+ rack_sound = 'sound/items/weapons/gun/sniper/rack.ogg'
mag_display = FALSE
empty_indicator = TRUE
bolt_type = BOLT_TYPE_OPEN
@@ -297,7 +297,7 @@
icon_state = "pipegun"
inhand_icon_state = "pipegun"
worn_icon_state = "pipegun"
- fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun
projectile_damage_multiplier = 1.35
@@ -424,11 +424,11 @@
weapon_weight = WEAPON_HEAVY
inhand_icon_state = "sniper"
worn_icon_state = null
- fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg'
fire_sound_volume = 90
- load_sound = 'sound/weapons/gun/sniper/mag_insert.ogg'
- rack_sound = 'sound/weapons/gun/sniper/rack.ogg'
- suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
+ load_sound = 'sound/items/weapons/gun/sniper/mag_insert.ogg'
+ rack_sound = 'sound/items/weapons/gun/sniper/rack.ogg'
+ suppressed_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg'
recoil = 2
accepted_magazine_type = /obj/item/ammo_box/magazine/sniper_rounds
internal_magazine = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index c3ba84d1cb8cd..bf4715bdb41fd 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -8,10 +8,10 @@
inhand_icon_state = "shotgun"
inhand_x_dimension = 64
inhand_y_dimension = 64
- fire_sound = 'sound/weapons/gun/shotgun/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/shotgun/shot.ogg'
fire_sound_volume = 90
- rack_sound = 'sound/weapons/gun/shotgun/rack.ogg'
- load_sound = 'sound/weapons/gun/shotgun/insert_shell.ogg'
+ rack_sound = 'sound/items/weapons/gun/shotgun/rack.ogg'
+ load_sound = 'sound/items/weapons/gun/shotgun/insert_shell.ogg'
w_class = WEIGHT_CLASS_BULKY
force = 10
obj_flags = CONDUCTS_ELECTRICITY
@@ -159,7 +159,7 @@
burst_size = 2
fire_delay = 1
pin = /obj/item/firing_pin/implant/pindicate
- fire_sound = 'sound/weapons/gun/shotgun/shot_alt.ogg'
+ fire_sound = 'sound/items/weapons/gun/shotgun/shot_alt.ogg'
actions_types = list(/datum/action/item_action/toggle_firemode)
mag_display = TRUE
empty_indicator = TRUE
@@ -321,7 +321,7 @@
sharpness = SHARP_POINTY //it does in fact, have a hook on it
attack_verb_continuous = list("slashes", "hooks", "stabs")
attack_verb_simple = list("slash", "hook", "stab")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
//our hook gun!
var/obj/item/gun/magic/hook/bounty/hook
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 39e55f94fca17..0648f7992487b 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -3,8 +3,8 @@
name = "energy gun"
desc = "A basic energy-based gun."
icon = 'icons/obj/weapons/guns/energy.dmi'
- pickup_sound = 'sound/items/gun_pick_up.ogg'
- drop_sound = 'sound/items/gun_drop.ogg'
+ pickup_sound = 'sound/items/handling/gun/gun_pick_up.ogg'
+ drop_sound = 'sound/items/handling/gun/gun_drop.ogg'
sound_vary = TRUE
/// What type of power cell this uses
diff --git a/code/modules/projectiles/guns/energy/beam_rifle.dm b/code/modules/projectiles/guns/energy/beam_rifle.dm
index 0bda1930c6260..d17e4be75ba89 100644
--- a/code/modules/projectiles/guns/energy/beam_rifle.dm
+++ b/code/modules/projectiles/guns/energy/beam_rifle.dm
@@ -6,7 +6,7 @@
icon_state = "esniper"
inhand_icon_state = null
worn_icon_state = null
- fire_sound = 'sound/weapons/beam_sniper.ogg'
+ fire_sound = 'sound/items/weapons/beam_sniper.ogg'
slot_flags = ITEM_SLOT_BACK
force = 20 //This is maybe the sanest part of this weapon.
custom_materials = null
@@ -38,12 +38,12 @@
projectile_type = /obj/projectile/beam/event_horizon
select_name = "doomsday"
e_cost = LASER_SHOTS(1, STANDARD_CELL_CHARGE)
- fire_sound = 'sound/weapons/beam_sniper.ogg'
+ fire_sound = 'sound/items/weapons/beam_sniper.ogg'
/obj/projectile/beam/event_horizon
name = "anti-existential beam"
icon = null
- hitsound = 'sound/effects/explosion3.ogg'
+ hitsound = 'sound/effects/explosion/explosion3.ogg'
damage = 100 // Does it matter?
damage_type = BURN
armor_flag = ENERGY
diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm
index fa56075990ec5..32aa65827cfb0 100644
--- a/code/modules/projectiles/guns/energy/crank_guns.dm
+++ b/code/modules/projectiles/guns/energy/crank_guns.dm
@@ -13,14 +13,14 @@
/obj/item/gun/energy/laser/musket/Initialize(mapload)
. = ..()
- AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_wielded = 10)
AddComponent( \
/datum/component/crank_recharge, \
charging_cell = get_cell(), \
charge_amount = STANDARD_CELL_CHARGE * 0.5, \
cooldown_time = 2 SECONDS, \
- charge_sound = 'sound/weapons/laser_crank.ogg', \
+ charge_sound = 'sound/items/weapons/laser_crank.ogg', \
charge_sound_cooldown_time = 1.8 SECONDS, \
+ charge_move = IGNORE_USER_LOC_CHANGE, \
)
/obj/item/gun/energy/laser/musket/update_icon_state()
@@ -52,8 +52,9 @@
charging_cell = get_cell(), \
charge_amount = STANDARD_CELL_CHARGE, \
cooldown_time = 2 SECONDS, \
- charge_sound = 'sound/weapons/laser_crank.ogg', \
+ charge_sound = 'sound/items/weapons/laser_crank.ogg', \
charge_sound_cooldown_time = 1.8 SECONDS, \
+ charge_move = IGNORE_USER_LOC_CHANGE, \
)
/obj/item/gun/energy/disabler/smoothbore/add_seclight_point()
@@ -99,7 +100,7 @@
spin_to_win = TRUE, \
charge_amount = LASER_SHOTS(8, STANDARD_CELL_CHARGE), \
cooldown_time = 0.8 SECONDS, \
- charge_sound = 'sound/weapons/kinetic_reload.ogg', \
+ charge_sound = 'sound/items/weapons/kinetic_reload.ogg', \
charge_sound_cooldown_time = 0.8 SECONDS, \
)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 1180a90e8d217..7e174b544ea29 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -173,7 +173,8 @@
projectile_type = /obj/projectile/kinetic
select_name = "kinetic"
e_cost = LASER_SHOTS(1, STANDARD_CELL_CHARGE * 0.5)
- fire_sound = 'sound/weapons/kinetic_accel.ogg'
+ fire_sound = 'sound/items/weapons/kinetic_accel.ogg'
+ newtonian_force = 1
/obj/item/ammo_casing/energy/kinetic/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
..()
@@ -315,7 +316,7 @@
if(transfer_to_loc && !user.transferItemToLoc(src, KA))
return
to_chat(user, span_notice("You install the modkit."))
- playsound(loc, 'sound/items/screwdriver.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/tools/screwdriver.ogg', 100, TRUE)
KA.modkits |= src
else
to_chat(user, span_notice("The modkit you're trying to install would conflict with an already installed modkit. Remove existing modkits first."))
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index a85d1d0db14ab..9c69a718986e4 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -141,7 +141,7 @@
/obj/item/ammo_casing/energy/laser/accelerator
projectile_type = /obj/projectile/beam/laser/accelerator
select_name = "accelerator"
- fire_sound = 'sound/weapons/lasercannonfire.ogg'
+ fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
/obj/projectile/beam/laser/accelerator
name = "accelerator laser"
diff --git a/code/modules/projectiles/guns/energy/recharge.dm b/code/modules/projectiles/guns/energy/recharge.dm
index 504dc5c9e0f4a..f7231847b2567 100644
--- a/code/modules/projectiles/guns/energy/recharge.dm
+++ b/code/modules/projectiles/guns/energy/recharge.dm
@@ -12,7 +12,7 @@
/// How much time we need to recharge
var/recharge_time = 1.6 SECONDS
/// Sound we use when recharged
- var/recharge_sound = 'sound/weapons/kinetic_reload.ogg'
+ var/recharge_sound = 'sound/items/weapons/kinetic_reload.ogg'
/// An ID for our recharging timer.
var/recharge_timerid
/// Do we recharge slower with more of our type?
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 244e68e8b031c..8072f62e46458 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -95,7 +95,7 @@
can_charge = FALSE
gun_flags = NOT_A_REAL_GUN
heat = 3800
- usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg')
+ usesound = list('sound/items/tools/welder.ogg', 'sound/items/tools/welder2.ogg')
tool_behaviour = TOOL_WELDER
toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders
@@ -106,7 +106,7 @@
speed = 2.5 SECONDS, \
effectiveness = 105, \
bonus_modifier = 0, \
- butcher_sound = 'sound/weapons/plasma_cutter.ogg', \
+ butcher_sound = 'sound/items/weapons/plasma_cutter.ogg', \
)
AddElement(/datum/element/tool_flash, 1)
@@ -379,7 +379,7 @@
icon = 'icons/obj/weapons/guns/ballistic.dmi'
icon_state = "revolver"
ammo_type = list(/obj/item/ammo_casing/energy/marksman)
- fire_sound = 'sound/weapons/gun/revolver/shot_alt.ogg'
+ fire_sound = 'sound/items/weapons/gun/revolver/shot_alt.ogg'
automatic_charge_overlays = FALSE
/// How many coins we can have at a time. Set to 0 for infinite
var/max_coins = 4
@@ -440,7 +440,7 @@
desc = "A competitive design to the tesla cannon, that instead of charging latent electrons, releases energy into photons. Eye protection is recommended."
icon_state = "photon"
inhand_icon_state = "tesla"
- fire_sound = 'sound/weapons/lasercannonfire.ogg'
+ fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
ammo_type = list(/obj/item/ammo_casing/energy/photon)
shaded_charge = TRUE
weapon_weight = WEAPON_HEAVY
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index 0c1c27c9c0759..44d50188eb76b 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -6,7 +6,7 @@
inhand_icon_state = "staff"
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' //not really a gun and some toys use these inhands
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- fire_sound = 'sound/weapons/emitter.ogg'
+ fire_sound = 'sound/items/weapons/emitter.ogg'
obj_flags = CONDUCTS_ELECTRICITY
w_class = WEIGHT_CLASS_HUGE
///what kind of magic is this
diff --git a/code/modules/projectiles/guns/magic/arcane_barrage.dm b/code/modules/projectiles/guns/magic/arcane_barrage.dm
index 08931d8c391f7..74be54a6323e6 100644
--- a/code/modules/projectiles/guns/magic/arcane_barrage.dm
+++ b/code/modules/projectiles/guns/magic/arcane_barrage.dm
@@ -1,7 +1,7 @@
/obj/item/gun/magic/wand/arcane_barrage
name = "arcane barrage"
desc = "Pew Pew Pew."
- fire_sound = 'sound/weapons/emitter.ogg'
+ fire_sound = 'sound/items/weapons/emitter.ogg'
icon = 'icons/obj/weapons/guns/ballistic.dmi'
icon_state = "arcane_barrage"
inhand_icon_state = "arcane_barrage"
diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm
index 5ca2e3052518d..6a383befa54d3 100644
--- a/code/modules/projectiles/guns/magic/staff.dm
+++ b/code/modules/projectiles/guns/magic/staff.dm
@@ -33,7 +33,7 @@
/obj/item/gun/magic/staff/change
name = "staff of change"
desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself."
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
ammo_type = /obj/item/ammo_casing/magic/change
icon_state = "staffofchange"
inhand_icon_state = "staffofchange"
@@ -64,7 +64,7 @@
/obj/item/gun/magic/staff/animate
name = "staff of animation"
desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines."
- fire_sound = 'sound/magic/staff_animation.ogg'
+ fire_sound = 'sound/effects/magic/staff_animation.ogg'
ammo_type = /obj/item/ammo_casing/magic/animate
icon_state = "staffofanimation"
inhand_icon_state = "staffofanimation"
@@ -73,7 +73,7 @@
/obj/item/gun/magic/staff/healing
name = "staff of healing"
desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead."
- fire_sound = 'sound/magic/staff_healing.ogg'
+ fire_sound = 'sound/effects/magic/staff_healing.ogg'
ammo_type = /obj/item/ammo_casing/magic/heal
icon_state = "staffofhealing"
inhand_icon_state = "staffofhealing"
@@ -120,7 +120,7 @@
/obj/item/gun/magic/staff/chaos
name = "staff of chaos"
desc = "An artefact that spits bolts of chaotic magic that can potentially do anything."
- fire_sound = 'sound/magic/staff_chaos.ogg'
+ fire_sound = 'sound/effects/magic/staff_chaos.ogg'
ammo_type = /obj/item/ammo_casing/magic/chaos
icon_state = "staffofchaos"
inhand_icon_state = "staffofchaos"
@@ -215,7 +215,7 @@
/obj/item/gun/magic/staff/door
name = "staff of door creation"
desc = "An artefact that spits bolts of transformative magic that can create doors in walls."
- fire_sound = 'sound/magic/staff_door.ogg'
+ fire_sound = 'sound/effects/magic/staff_door.ogg'
ammo_type = /obj/item/ammo_casing/magic/door
icon_state = "staffofdoor"
inhand_icon_state = "staffofdoor"
@@ -227,7 +227,7 @@
/obj/item/gun/magic/staff/honk
name = "staff of the honkmother"
desc = "Honk."
- fire_sound = 'sound/items/airhorn.ogg'
+ fire_sound = 'sound/items/airhorn/airhorn.ogg'
ammo_type = /obj/item/ammo_casing/magic/honk
icon_state = "honker"
inhand_icon_state = "honker"
@@ -238,14 +238,14 @@
/obj/item/gun/magic/staff/spellblade
name = "spellblade"
desc = "A deadly combination of laziness and bloodlust, this blade allows the user to dismember their enemies without all the hard work of actually swinging the sword."
- fire_sound = 'sound/magic/fireball.ogg'
+ fire_sound = 'sound/effects/magic/fireball.ogg'
ammo_type = /obj/item/ammo_casing/magic/spellblade
icon_state = "spellblade"
inhand_icon_state = "spellblade"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- hitsound = 'sound/weapons/rapierhit.ogg'
- block_sound = 'sound/weapons/parry.ogg'
+ hitsound = 'sound/items/weapons/rapierhit.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
force = 20
armour_penetration = 75
block_chance = 50
@@ -270,7 +270,7 @@
/obj/item/gun/magic/staff/locker
name = "staff of the locker"
desc = "An artefact that expells encapsulating bolts, for incapacitating thy enemy."
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
ammo_type = /obj/item/ammo_casing/magic/locker
icon_state = "locker"
inhand_icon_state = "locker"
@@ -284,7 +284,7 @@
/obj/item/gun/magic/staff/flying
name = "staff of flying"
desc = "An artefact that spits bolts of graceful magic that can make something fly."
- fire_sound = 'sound/magic/staff_healing.ogg'
+ fire_sound = 'sound/effects/magic/staff_healing.ogg'
ammo_type = /obj/item/ammo_casing/magic/flying
icon_state = "staffofflight"
inhand_icon_state = "staffofchange"
@@ -294,7 +294,7 @@
/obj/item/gun/magic/staff/babel
name = "staff of babel"
desc = "An artefact that spits bolts of confusion magic that can make something depressed and incoherent."
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
ammo_type = /obj/item/ammo_casing/magic/babel
icon_state = "staffofbabel"
inhand_icon_state = "staffofdoor"
@@ -304,7 +304,7 @@
/obj/item/gun/magic/staff/necropotence
name = "staff of necropotence"
desc = "An artefact that spits bolts of death magic that can repurpose the soul."
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
ammo_type = /obj/item/ammo_casing/magic/necropotence
icon_state = "staffofnecropotence"
inhand_icon_state = "staffofchaos"
@@ -314,7 +314,7 @@
/obj/item/gun/magic/staff/wipe
name = "staff of possession"
desc = "An artefact that spits bolts of mind-unlocking magic that can let ghosts invade the victim's mind."
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
ammo_type = /obj/item/ammo_casing/magic/wipe
icon_state = "staffofwipe"
inhand_icon_state = "pharoah_sceptre"
@@ -324,7 +324,7 @@
/obj/item/gun/magic/staff/shrink
name = "staff of shrinking"
desc = "An artefact that spits bolts of tiny magic that makes things small. It's easily mistaken for a wand."
- fire_sound = 'sound/magic/staff_shrink.ogg'
+ fire_sound = 'sound/effects/magic/staff_shrink.ogg'
ammo_type = /obj/item/ammo_casing/magic/shrink
icon_state = "shrinkstaff"
inhand_icon_state = "staff"
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index b2fe293eae8c2..0a82f44318e79 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -65,7 +65,7 @@
name = "wand of death"
desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail."
school = SCHOOL_NECROMANCY
- fire_sound = 'sound/magic/wandodeath.ogg'
+ fire_sound = 'sound/effects/magic/wandodeath.ogg'
ammo_type = /obj/item/ammo_casing/magic/death
icon_state = "deathwand"
base_icon_state = "deathwand"
@@ -83,9 +83,8 @@
user.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE) // This heals suicides
to_chat(user, span_notice("You feel great!"))
return
- to_chat(user, "You irradiate yourself with pure negative energy! \
- [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You die...","Do you want your possessions identified?")]\
- ")
+ to_chat(user, span_warning("You irradiate yourself with pure negative energy! \
+ [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You die...","Do you want your possessions identified?")]"))
user.death(FALSE)
/obj/item/gun/magic/wand/death/debug
@@ -105,7 +104,7 @@
desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason."
school = SCHOOL_RESTORATION
ammo_type = /obj/item/ammo_casing/magic/heal
- fire_sound = 'sound/magic/staff_healing.ogg'
+ fire_sound = 'sound/effects/magic/staff_healing.ogg'
icon_state = "revivewand"
base_icon_state = "revivewand"
max_charges = 10 //10, 5, 5, 4
@@ -119,9 +118,8 @@
if(isliving(user))
var/mob/living/L = user
if(L.mob_biotypes & MOB_UNDEAD) //positive energy harms the undead
- to_chat(user, "You irradiate yourself with pure positive energy! \
- [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You die...","Do you want your possessions identified?")]\
- ")
+ to_chat(user, span_warning("You irradiate yourself with pure positive energy! \
+ [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You die...","Do you want your possessions identified?")]"))
user.investigate_log("has been killed by a bolt of resurrection.", INVESTIGATE_DEATHS)
user.death(FALSE)
return
@@ -146,7 +144,7 @@
ammo_type = /obj/item/ammo_casing/magic/change
icon_state = "polywand"
base_icon_state = "polywand"
- fire_sound = 'sound/magic/staff_change.ogg'
+ fire_sound = 'sound/effects/magic/staff_change.ogg'
max_charges = 10 //10, 5, 5, 4
/obj/item/gun/magic/wand/polymorph/zap_self(mob/living/user)
@@ -164,7 +162,7 @@
desc = "This wand will wrench targets through space and time to move them somewhere else."
school = SCHOOL_TRANSLOCATION
ammo_type = /obj/item/ammo_casing/magic/teleport
- fire_sound = 'sound/magic/wand_teleport.ogg'
+ fire_sound = 'sound/effects/magic/wand_teleport.ogg'
icon_state = "telewand"
base_icon_state = "telewand"
max_charges = 10 //10, 5, 5, 4
@@ -183,7 +181,7 @@
desc = "This wand will use the lightest of bluespace currents to gently place the target somewhere safe."
school = SCHOOL_TRANSLOCATION
ammo_type = /obj/item/ammo_casing/magic/safety
- fire_sound = 'sound/magic/wand_teleport.ogg'
+ fire_sound = 'sound/effects/magic/wand_teleport.ogg'
icon_state = "telewand"
base_icon_state = "telewand"
max_charges = 10 //10, 5, 5, 4
@@ -219,7 +217,7 @@
ammo_type = /obj/item/ammo_casing/magic/door
icon_state = "doorwand"
base_icon_state = "doorwand"
- fire_sound = 'sound/magic/staff_door.ogg'
+ fire_sound = 'sound/effects/magic/staff_door.ogg'
max_charges = 20 //20, 10, 10, 7
no_den_usage = 1
@@ -236,7 +234,7 @@
name = "wand of fireball"
desc = "This wand shoots scorching balls of fire that explode into destructive flames."
school = SCHOOL_EVOCATION
- fire_sound = 'sound/magic/fireball.ogg'
+ fire_sound = 'sound/effects/magic/fireball.ogg'
ammo_type = /obj/item/ammo_casing/magic/fireball
icon_state = "firewand"
base_icon_state = "firewand"
@@ -267,7 +265,7 @@
ammo_type = /obj/item/ammo_casing/magic/shrink/wand
icon_state = "shrinkwand"
base_icon_state = "shrinkwand"
- fire_sound = 'sound/magic/staff_shrink.ogg'
+ fire_sound = 'sound/effects/magic/staff_shrink.ogg'
max_charges = 10 //10, 5, 5, 4
no_den_usage = TRUE
w_class = WEIGHT_CLASS_TINY
diff --git a/code/modules/projectiles/guns/special/blastcannon.dm b/code/modules/projectiles/guns/special/blastcannon.dm
index d867ca09c041a..a7c35c9122ec2 100644
--- a/code/modules/projectiles/guns/special/blastcannon.dm
+++ b/code/modules/projectiles/guns/special/blastcannon.dm
@@ -23,7 +23,7 @@
base_icon_state = "blastcannon"
w_class = WEIGHT_CLASS_NORMAL
force = 10
- fire_sound = 'sound/weapons/blastcannon.ogg'
+ fire_sound = 'sound/items/weapons/blastcannon.ogg'
item_flags = NONE
clumsy_check = FALSE
randomspread = FALSE
@@ -263,7 +263,7 @@
* - light: The light impact range of the blastwave.
*/
/obj/item/gun/blastcannon/proc/fire_dropped(heavy, medium, light)
- src.visible_message("[src] suddenly goes off!")
+ src.visible_message(span_danger("[src] suddenly goes off!"))
var/turf/target = get_edge_target_turf(src, dir)
var/mob/firer = cached_firer.resolve()
var/turf/start_turf = get_turf(src)
diff --git a/code/modules/projectiles/guns/special/grenade_launcher.dm b/code/modules/projectiles/guns/special/grenade_launcher.dm
index 830952dd769e6..e57a041e60a52 100644
--- a/code/modules/projectiles/guns/special/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/special/grenade_launcher.dm
@@ -52,5 +52,5 @@
user.log_message("fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].", LOG_ATTACK, log_globally = FALSE)
F.active = 1
F.icon_state = initial(F.icon_state) + "_active"
- playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, TRUE, -3)
+ playsound(user.loc, 'sound/items/weapons/armbomb.ogg', 75, TRUE, -3)
addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade, detonate)), 1.5 SECONDS)
diff --git a/code/modules/projectiles/guns/special/hand_of_midas.dm b/code/modules/projectiles/guns/special/hand_of_midas.dm
index e92ffe8d0bf22..598da68fde69f 100644
--- a/code/modules/projectiles/guns/special/hand_of_midas.dm
+++ b/code/modules/projectiles/guns/special/hand_of_midas.dm
@@ -9,7 +9,7 @@
worn_icon_state = "gun"
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
- fire_sound = 'sound/weapons/gun/rifle/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/rifle/shot.ogg'
pinless = TRUE
max_charges = 1
can_charge = FALSE
@@ -143,7 +143,7 @@
victim.visible_message(span_suicide("[victim] holds the barrel of [src] to [victim.p_their()] head, lighting the fuse. It looks like [user.p_theyre()] trying to commit suicide!"))
if(!do_after(victim, 1.5 SECONDS))
return
- playsound(src, 'sound/weapons/gun/rifle/shot.ogg', 75, TRUE)
+ playsound(src, 'sound/items/weapons/gun/rifle/shot.ogg', 75, TRUE)
to_chat(victim, span_danger("You don't even have the time to register the gunshot by the time your body has completely converted into a golden statue."))
var/newcolors = list(rgb(206, 164, 50), rgb(146, 146, 139), rgb(28,28,28), rgb(0,0,0))
victim.petrify(statue_timer = INFINITY, save_brain = FALSE, colorlist = newcolors)
diff --git a/code/modules/projectiles/guns/special/meat_hook.dm b/code/modules/projectiles/guns/special/meat_hook.dm
index 0fcf6b2c8e6b9..c3462abdd9144 100644
--- a/code/modules/projectiles/guns/special/meat_hook.dm
+++ b/code/modules/projectiles/guns/special/meat_hook.dm
@@ -10,7 +10,7 @@
inhand_icon_state = "hook"
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- fire_sound = 'sound/weapons/batonextend.ogg'
+ fire_sound = 'sound/items/weapons/batonextend.ogg'
pinless = TRUE
max_charges = 1
item_flags = NEEDS_PERMIT | NOBLUDGEON
@@ -36,7 +36,7 @@
playsound(get_turf(src), fire_sound, 50, TRUE, -1)
user.visible_message(span_suicide("[user] is using the [src] on their [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!"))
- playsound(get_turf(src), 'sound/weapons/bladeslice.ogg', 70)
+ playsound(get_turf(src), 'sound/items/weapons/bladeslice.ogg', 70)
removable.dismember(silent = FALSE)
return BRUTELOSS
diff --git a/code/modules/projectiles/guns/special/syringe_gun.dm b/code/modules/projectiles/guns/special/syringe_gun.dm
index da93e2c1ab8a7..51af794215790 100644
--- a/code/modules/projectiles/guns/special/syringe_gun.dm
+++ b/code/modules/projectiles/guns/special/syringe_gun.dm
@@ -19,7 +19,7 @@
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT)
clumsy_check = FALSE
fire_sound = 'sound/items/syringeproj.ogg'
- var/load_sound = 'sound/weapons/gun/shotgun/insert_shell.ogg'
+ var/load_sound = 'sound/items/weapons/gun/shotgun/insert_shell.ogg'
var/list/syringes = list()
var/max_syringes = 1 ///The number of syringes it can store.
var/has_syringe_overlay = TRUE ///If it has an overlay for inserted syringes. If true, the overlay is determined by the number of syringes inserted into it.
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 7dfc4b6ad8aa0..b46bb5d153151 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -16,7 +16,7 @@
blocks_emissive = EMISSIVE_BLOCK_GENERIC
layer = MOB_LAYER
//The sound this plays on impact.
- var/hitsound = 'sound/weapons/pierce.ogg'
+ var/hitsound = 'sound/items/weapons/pierce.ogg'
var/hitsound_wall = ""
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 0e50326f1b07c..d36b66eac7ffe 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -4,8 +4,8 @@
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 20
damage_type = BURN
- hitsound = 'sound/weapons/sear.ogg'
- hitsound_wall = 'sound/weapons/effects/searwall.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
+ hitsound_wall = 'sound/items/weapons/effects/searwall.ogg'
armor_flag = LASER
eyeblur = 4 SECONDS
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
@@ -76,15 +76,15 @@
name = "low-power laser"
icon_state = "laser_musket"
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
- damage = 25
- stamina = 40
+ damage = 28
+ stamina = 35
light_color = COLOR_STRONG_VIOLET
weak_against_armour = TRUE
/obj/projectile/beam/laser/musket/prime
name = "mid-power laser"
- damage = 30
- stamina = 45
+ damage = 25
+ stamina = 20
weak_against_armour = FALSE
/obj/projectile/beam/weak
@@ -135,7 +135,7 @@
damage = 30
damage_type = STAMINA
armor_flag = ENERGY
- hitsound = 'sound/weapons/sear_disabler.ogg'
+ hitsound = 'sound/items/weapons/sear_disabler.ogg'
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
light_color = LIGHT_COLOR_BLUE
tracer_type = /obj/effect/projectile/tracer/disabler
diff --git a/code/modules/projectiles/projectile/bullets/cannonball.dm b/code/modules/projectiles/projectile/bullets/cannonball.dm
index 358a23eb63c90..167f61dfa2c87 100644
--- a/code/modules/projectiles/projectile/bullets/cannonball.dm
+++ b/code/modules/projectiles/projectile/bullets/cannonball.dm
@@ -10,7 +10,7 @@
stutter = 20 SECONDS
embed_type = null
hitsound = 'sound/effects/meteorimpact.ogg'
- hitsound_wall = 'sound/weapons/sonic_jackhammer.ogg'
+ hitsound_wall = 'sound/items/weapons/sonic_jackhammer.ogg'
/// If our cannonball hits something, it reduces the damage by this value.
var/damage_decrease_on_hit = 10
/// This is the cutoff point of our cannonball, so that it stops piercing past this value.
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index 215093c9f100e..a2c11f76d4789 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -141,6 +141,6 @@
/obj/projectile/bullet/shotgun_breaching
name = "12g breaching round"
desc = "A breaching round designed to destroy airlocks and windows with only a few shots. Ineffective against other targets."
- hitsound = 'sound/weapons/sonic_jackhammer.ogg'
+ hitsound = 'sound/items/weapons/sonic_jackhammer.ogg'
damage = 5 //does shit damage to everything except doors and windows
demolition_mod = 200 //one shot to break a window or grille, or two shots to breach an airlock door
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index ac35fb5503e68..ae05a9eb85d7e 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -3,7 +3,7 @@
icon_state = "e_netting"
damage = 10
damage_type = STAMINA
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
range = 10
/obj/projectile/energy/net/Initialize(mapload)
@@ -118,7 +118,7 @@
/obj/projectile/energy/trap
name = "energy snare"
icon_state = "e_snare"
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
range = 4
/obj/projectile/energy/trap/on_hit(atom/target, blocked = 0, pierce_hit)
@@ -136,7 +136,7 @@
/obj/projectile/energy/trap/cyborg
name = "Energy Bola"
icon_state = "e_snare"
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
range = 10
/obj/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = 0, pierce_hit)
diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
index 4cd2ea049e095..b82ff478a05b4 100644
--- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm
+++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm
@@ -7,7 +7,7 @@
damage_type = TOX
damage = 10
speed = 0.4
- hitsound = 'sound/weapons/emitter2.ogg'
+ hitsound = 'sound/items/weapons/emitter2.ogg'
impact_type = /obj/effect/projectile/impact/xray
var/static/list/particle_colors = list(
"red" = COLOR_RED,
diff --git a/code/modules/projectiles/projectile/energy/photon.dm b/code/modules/projectiles/projectile/energy/photon.dm
index 62b5770fb441e..5210737a19801 100644
--- a/code/modules/projectiles/projectile/energy/photon.dm
+++ b/code/modules/projectiles/projectile/energy/photon.dm
@@ -50,7 +50,7 @@
/obj/projectile/energy/photon/on_range()
do_sparks(rand(4, 9), FALSE, src)
- playsound(loc, 'sound/weapons/solarflare.ogg', 100, FALSE, 8, 0.9)
+ playsound(loc, 'sound/items/weapons/solarflare.ogg', 100, FALSE, 8, 0.9)
for(var/mob/living/flashed_mob in viewers(5, loc))
flashed_mob.flash_act()
return ..()
diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm
index b393dc3415fe5..fb5c041b33875 100644
--- a/code/modules/projectiles/projectile/energy/stun.dm
+++ b/code/modules/projectiles/projectile/energy/stun.dm
@@ -5,7 +5,7 @@
paralyze = 10 SECONDS
stutter = 10 SECONDS
jitter = 40 SECONDS
- hitsound = 'sound/weapons/taserhit.ogg'
+ hitsound = 'sound/items/weapons/taserhit.ogg'
range = 7
tracer_type = /obj/effect/projectile/tracer/stun
muzzle_type = /obj/effect/projectile/muzzle/stun
diff --git a/code/modules/projectiles/projectile/energy/thermal.dm b/code/modules/projectiles/projectile/energy/thermal.dm
index 0efb983eb3b69..7b1319e117a9e 100644
--- a/code/modules/projectiles/projectile/energy/thermal.dm
+++ b/code/modules/projectiles/projectile/energy/thermal.dm
@@ -21,7 +21,7 @@
if(how_cold_is_target < danger_zone)
explosion(cold_target, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 2, flame_range = 3) //maybe stand back a bit
cold_target.bodytemperature = cold_target.dna.species.bodytemp_normal //avoids repeat explosions, maybe could be used to heat up again?
- playsound(cold_target, 'sound/weapons/sear.ogg', 30, TRUE, -1)
+ playsound(cold_target, 'sound/items/weapons/sear.ogg', 30, TRUE, -1)
/obj/projectile/energy/cryo
name = "frozen nanite bullet"
@@ -47,4 +47,4 @@
hot_target.Knockdown(100)
hot_target.apply_damage(20, BURN)
hot_target.bodytemperature = hot_target.dna.species.bodytemp_normal //avoids repeat knockdowns, maybe could be used to cool down again?
- playsound(hot_target, 'sound/weapons/sonic_jackhammer.ogg', 30, TRUE, -1)
+ playsound(hot_target, 'sound/items/weapons/sonic_jackhammer.ogg', 30, TRUE, -1)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 23930f3cca7d0..44404c15f14a6 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -192,7 +192,7 @@
icon_state = "arcane_barrage"
damage = 20
damage_type = BURN
- hitsound = 'sound/weapons/barragespellhit.ogg'
+ hitsound = 'sound/items/weapons/barragespellhit.ogg'
/obj/projectile/magic/locker
name = "locker bolt"
@@ -522,7 +522,7 @@
trigger_range = 0
can_only_hit_target = TRUE
paralyze = 6 SECONDS
- hitsound = 'sound/magic/mm_hit.ogg'
+ hitsound = 'sound/effects/magic/mm_hit.ogg'
trail = TRUE
trail_lifespan = 0.5 SECONDS
@@ -539,7 +539,7 @@
damage = 30
damage_type = BRUTE
knockdown = 50
- hitsound = 'sound/weapons/punch3.ogg'
+ hitsound = 'sound/items/weapons/punch3.ogg'
trigger_range = 0
antimagic_flags = MAGIC_RESISTANCE_HOLY
ignored_factions = list(FACTION_CULT)
@@ -550,7 +550,7 @@
/obj/projectile/magic/aoe/juggernaut/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
var/turf/target_turf = get_turf(src)
- playsound(target_turf, 'sound/weapons/resonator_blast.ogg', 100, FALSE)
+ playsound(target_turf, 'sound/items/weapons/resonator_blast.ogg', 100, FALSE)
new /obj/effect/temp_visual/cult/sac(target_turf)
for(var/obj/adjacent_object in range(1, src))
if(!adjacent_object.density)
@@ -585,7 +585,7 @@
/obj/projectile/magic/shrink
name = "shrink ray"
icon_state = "blue_laser"
- hitsound = 'sound/weapons/shrink_hit.ogg'
+ hitsound = 'sound/items/weapons/shrink_hit.ogg'
damage = 0
damage_type = STAMINA
armor_flag = ENERGY
diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm
index 23df9c9c50a6f..5f1f1017e836e 100644
--- a/code/modules/projectiles/projectile/special/curse.dm
+++ b/code/modules/projectiles/projectile/special/curse.dm
@@ -5,7 +5,7 @@
name = "curse hand"
icon_state = "cursehand0"
base_icon_state = "cursehand"
- hitsound = 'sound/effects/curse4.ogg'
+ hitsound = 'sound/effects/curse/curse4.ogg'
layer = LARGE_MOB_LAYER
damage_type = BURN
damage = 10
@@ -44,7 +44,7 @@
if(arm)
QDEL_NULL(arm)
if((movement_type & PHASING))
- playsound(src, 'sound/effects/curse3.ogg', 25, TRUE, -1)
+ playsound(src, 'sound/effects/curse/curse3.ogg', 25, TRUE, -1)
var/turf/T = get_step(src, dir)
var/obj/effect/temp_visual/dir_setting/curse/hand/leftover = new(T, dir)
leftover.icon_state = icon_state
diff --git a/code/modules/projectiles/projectile/special/gravity.dm b/code/modules/projectiles/projectile/special/gravity.dm
index 5fbcbb98dd6d9..f76817cc00d5c 100644
--- a/code/modules/projectiles/projectile/special/gravity.dm
+++ b/code/modules/projectiles/projectile/special/gravity.dm
@@ -2,7 +2,7 @@
name = "repulsion bolt"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
- hitsound = 'sound/weapons/wave.ogg'
+ hitsound = 'sound/items/weapons/wave.ogg'
damage = 0
damage_type = BRUTE
color = COLOR_BLUE_LIGHT
@@ -36,7 +36,7 @@
name = "attraction bolt"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
- hitsound = 'sound/weapons/wave.ogg'
+ hitsound = 'sound/items/weapons/wave.ogg'
damage = 0
damage_type = BRUTE
color = "#FF6600"
@@ -69,7 +69,7 @@
name = "gravitational blast"
icon = 'icons/effects/effects.dmi'
icon_state = "chronofield"
- hitsound = 'sound/weapons/wave.ogg'
+ hitsound = 'sound/items/weapons/wave.ogg'
damage = 0
damage_type = BRUTE
color = COLOR_FULL_TONER_BLACK
diff --git a/code/modules/reagents/chemistry/equilibrium.dm b/code/modules/reagents/chemistry/equilibrium.dm
index 435f4159ccbed..6b43e441d483c 100644
--- a/code/modules/reagents/chemistry/equilibrium.dm
+++ b/code/modules/reagents/chemistry/equilibrium.dm
@@ -368,9 +368,9 @@
#ifdef REAGENTS_TESTING //Kept in so that people who want to write fermireactions can contact me with this log so I can help them
if(GLOB.Debug2) //I want my spans for my sanity
- message_admins("Reaction step active for:[reaction.type]")
- message_admins("|Reaction conditions| Temp: [holder.chem_temp], pH: [holder.ph], reactions: [length(holder.reaction_list)], awaiting reactions: [length(holder.failed_but_capable_reactions)], no. reagents:[length(holder.reagent_list)], no. prev reagents: [length(holder.previous_reagent_list)]")
- message_admins("Reaction vars: PreReacted:[reacted_vol] of [step_target_vol] of total [target_vol]. delta_t [delta_t], multiplier [multiplier], delta_chem_factor [delta_chem_factor] Pfactor [product_ratio], purity of [purity] from a delta_ph of [delta_ph]. DeltaTime: [seconds_per_tick]")
+ message_admins(span_green("Reaction step active for:[reaction.type]"))
+ message_admins(span_notice("|Reaction conditions| Temp: [holder.chem_temp], pH: [holder.ph], reactions: [length(holder.reaction_list)], awaiting reactions: [length(holder.failed_but_capable_reactions)], no. reagents:[length(holder.reagent_list)], no. prev reagents: [length(holder.previous_reagent_list)]"))
+ message_admins(span_warning("Reaction vars: PreReacted:[reacted_vol] of [step_target_vol] of total [target_vol]. delta_t [delta_t], multiplier [multiplier], delta_chem_factor [delta_chem_factor] Pfactor [product_ratio], purity of [purity] from a delta_ph of [delta_ph]. DeltaTime: [seconds_per_tick]"))
#endif
//Apply thermal output of reaction to beaker
diff --git a/code/modules/reagents/chemistry/items.dm b/code/modules/reagents/chemistry/items.dm
index 0344971497b01..1e712db9c23ef 100644
--- a/code/modules/reagents/chemistry/items.dm
+++ b/code/modules/reagents/chemistry/items.dm
@@ -33,7 +33,7 @@
user.put_in_active_hand(page)
to_chat(user, span_notice("You take [page] out of \the [src]."))
number_of_pages--
- playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, TRUE)
+ playsound(user.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE)
add_fingerprint(user)
if(!number_of_pages)
icon_state = "pHbooklet_empty"
@@ -57,7 +57,7 @@
user.put_in_active_hand(P)
to_chat(user, span_notice("You take [P] out of \the [src]."))
number_of_pages--
- playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, TRUE)
+ playsound(user.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE)
add_fingerprint(user)
if(!number_of_pages)
icon_state = "pHbookletEmpty"
@@ -166,7 +166,7 @@
var/obj/item/reagent_containers/container = I
container.reagents.expose_temperature(get_temperature())
to_chat(user, span_notice("You heat up the [I] with the [src]."))
- playsound(user.loc, 'sound/chemistry/heatdam.ogg', 50, TRUE)
+ playsound(user.loc, 'sound/effects/chemistry/heatdam.ogg', 50, TRUE)
return
else if(I.is_drainable()) //Transfer FROM it TO us. Special code so it only happens when flame is off.
var/obj/item/reagent_containers/container = I
@@ -193,7 +193,7 @@
var/obj/item/reagent_containers/container = interacting_with
container.reagents.expose_temperature(get_temperature())
user.visible_message(span_notice("[user] heats up [src]."), span_notice("You heat up [src]."))
- playsound(user, 'sound/chemistry/heatdam.ogg', 50, TRUE)
+ playsound(user, 'sound/effects/chemistry/heatdam.ogg', 50, TRUE)
return ITEM_INTERACT_SUCCESS
else if(isitem(interacting_with))
@@ -216,7 +216,7 @@
if(lit)
force = 5
damtype = BURN
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
attack_verb_continuous = string_list(list("burns", "singes"))
attack_verb_simple = string_list(list("burn", "singe"))
START_PROCESSING(SSobj, src)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index b7266ca0fe375..8790883688e0e 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -122,9 +122,9 @@
if(panel_open)
. += span_notice("[src]'s maintenance hatch is open!")
if(in_range(user, src) || isobserver(user))
- . += "The status display reads:\n\
+ . += span_notice("The status display reads:\n\
Recharge rate: [display_power(recharge_amount, convert = FALSE)].\n\
- Energy cost: [siunit(power_cost, "J/u", 3)]."
+ Energy cost: [siunit(power_cost, "J/u", 3)].")
. += span_notice("Use RMB to eject a stored beaker.")
/obj/machinery/chem_dispenser/on_set_is_operational(old_value)
@@ -357,7 +357,7 @@
if(!dispensable_reagents.Find(reagent_id))
visible_message(span_warning("[src] buzzes."), span_hear("You hear a faint buzz."))
to_chat(ui.user, span_warning("[src] cannot find [reagent]!"))
- playsound(src, 'sound/machines/buzz-two.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 50, TRUE)
return
saved_recipes[name] = recording_recipe
recording_recipe = null
diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
index 552bfe48650ca..f45eb89b8ebe9 100644
--- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
@@ -7,9 +7,16 @@
amount = 10
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
use_power = NO_POWER_USE
+
+ ///The temperature of the added reagents
+ var/temperature = DEFAULT_REAGENT_TEMPERATURE
///The purity of the created reagent in % (purity uses 0-1 values)
var/purity = 100
+/obj/machinery/chem_dispenser/chem_synthesizer/Destroy()
+ QDEL_NULL(beaker)
+ return ..()
+
/obj/machinery/chem_dispenser/chem_synthesizer/screwdriver_act(mob/living/user, obj/item/tool)
return NONE
@@ -22,6 +29,12 @@
ui = new(user, src, "ChemDebugSynthesizer", name)
ui.open()
+
+/obj/machinery/chem_dispenser/chem_synthesizer/ui_data(mob/user)
+ . = ..()
+ .["purity"] = purity
+ .["temp"] = temperature
+
/obj/machinery/chem_dispenser/chem_synthesizer/handle_ui_act(action, params, datum/tgui/ui, datum/ui_state/state)
switch(action)
if("input")
@@ -36,7 +49,7 @@
if(!input_reagent)
return FALSE
- beaker.reagents.add_reagent(input_reagent, amount, added_purity = (purity / 100))
+ beaker.reagents.add_reagent(input_reagent, amount, reagtemp = temperature, added_purity = (purity / 100))
return TRUE
if("makecup")
@@ -58,6 +71,18 @@
amount = input
return TRUE
+ if("temp")
+ var/input = params["amount"]
+ if(isnull(input))
+ return FALSE
+
+ input = text2num(input)
+ if(isnull(input))
+ return FALSE
+
+ temperature = input
+ return TRUE
+
if("purity")
var/input = params["amount"]
if(isnull(input))
@@ -71,11 +96,3 @@
return TRUE
update_appearance()
-
-/obj/machinery/chem_dispenser/chem_synthesizer/Destroy()
- QDEL_NULL(beaker)
- return ..()
-
-/obj/machinery/chem_dispenser/chem_synthesizer/ui_data(mob/user)
- . = ..()
- .["purity"] = purity
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 3b0272240b0df..141fb7c4e6fb0 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -394,7 +394,7 @@
if("mix")
mix(50 DECISECONDS, user)
if("examine")
- to_chat(user, examine_block("[examine(user)]"))
+ to_chat(user, examine_block(span_infoplain("[examine(user)]")))
/**
* Checks if the radial menu can interact with this machine
diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
index dd463397b77bd..8c0aa36189f99 100644
--- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
@@ -529,7 +529,7 @@
carbies.add_mood_event("painful_medicine", /datum/mood_event/painful_medicine)
if(HAS_TRAIT_FROM(exposed_mob, TRAIT_HUSK, BURN) && carbies.getFireLoss() < UNHUSK_DAMAGE_THRESHOLD && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/c2/synthflesh) + reac_volume >= SYNTHFLESH_UNHUSK_AMOUNT))
carbies.cure_husk(BURN)
- carbies.visible_message("A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something
+ carbies.visible_message(span_nicegreen("A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!")) //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something
/******ORGAN HEALING******/
/*Suffix: -rite*/
diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
index da57f6ce405a1..fa869cb267a57 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
@@ -630,14 +630,14 @@
if(src == holder.get_master_reagent())
var/obj/item/reagent_containers/cup/glass/drinkingglass/drink = holder.my_atom
drink.tool_behaviour = TOOL_SCREWDRIVER
- drink.usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
+ drink.usesound = list('sound/items/tools/screwdriver.ogg', 'sound/items/tools/screwdriver2.ogg')
/datum/reagent/consumable/ethanol/screwdrivercocktail/proc/on_reagent_change(datum/reagents/reagents)
SIGNAL_HANDLER
var/obj/item/reagent_containers/cup/glass/drinkingglass/drink = reagents.my_atom
if(reagents.get_master_reagent() == src)
drink.tool_behaviour = TOOL_SCREWDRIVER
- drink.usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
+ drink.usesound = list('sound/items/tools/screwdriver.ogg', 'sound/items/tools/screwdriver2.ogg')
else
drink.tool_behaviour = initial(drink.tool_behaviour)
drink.usesound = initial(drink.usesound)
@@ -881,7 +881,7 @@
/datum/reagent/consumable/ethanol/b52/on_mob_metabolize(mob/living/drinker)
. = ..()
- playsound(drinker, 'sound/effects/explosion_distant.ogg', 100, FALSE)
+ playsound(drinker, 'sound/effects/explosion/explosion_distant.ogg', 100, FALSE)
/datum/reagent/consumable/ethanol/irishcoffee
name = "Irish Coffee"
@@ -1259,7 +1259,7 @@
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(SPT_PROB(2.5, seconds_per_tick))
- playsound(get_turf(drinker), 'sound/effects/explosionfar.ogg', 100, TRUE)
+ playsound(get_turf(drinker), 'sound/effects/explosion/explosionfar.ogg', 100, TRUE)
/datum/reagent/consumable/ethanol/hiveminderaser
name = "Hivemind Eraser"
@@ -2638,6 +2638,7 @@
quality = DRINK_VERYGOOD
taste_description = "light gin with sweet ginger and cucumber"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ glass_price = DRINK_PRICE_MEDIUM
/datum/reagent/consumable/ethanol/gin_garden/on_mob_life(mob/living/carbon/doll, seconds_per_tick, times_fired)
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
index 34b2dce4170e6..6ef6fc0a44d1d 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
@@ -586,8 +586,8 @@
. = ..()
if(exposed_mob?.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && (methods & INGEST) && !HAS_TRAIT(exposed_mob, TRAIT_GAMERGOD))
ADD_TRAIT(exposed_mob, TRAIT_GAMERGOD, "pwr_game")
- to_chat(exposed_mob, "As you imbibe the Pwr Game, your gamer third eye opens... \
- You feel as though a great secret of the universe has been made known to you...")
+ to_chat(exposed_mob, span_nicegreen("As you imbibe the Pwr Game, your gamer third eye opens... \
+ You feel as though a great secret of the universe has been made known to you..."))
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index c6cee8e91c062..904d09db7334b 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -51,15 +51,15 @@
affected_mob.apply_status_effect(/datum/status_effect/stoned)
if(SPT_PROB(1, seconds_per_tick))
var/smoke_message = pick("You feel relaxed.","You feel calmed.","Your mouth feels dry.","You could use some water.","Your heart beats quickly.","You feel clumsy.","You crave junk food.","You notice you've been moving more slowly.")
- to_chat(affected_mob, "[smoke_message]")
+ to_chat(affected_mob, span_notice("[smoke_message]"))
if(SPT_PROB(2, seconds_per_tick))
affected_mob.emote(pick("smile","laugh","giggle"))
affected_mob.adjust_nutrition(-0.15 * REM * seconds_per_tick) //munchies
if(SPT_PROB(4, seconds_per_tick) && affected_mob.body_position == LYING_DOWN && !affected_mob.IsSleeping()) //chance to fall asleep if lying down
- to_chat(affected_mob, "You doze off...")
+ to_chat(affected_mob, span_warning("You doze off..."))
affected_mob.Sleeping(10 SECONDS)
if(SPT_PROB(4, seconds_per_tick) && affected_mob.buckled && affected_mob.body_position != LYING_DOWN && !affected_mob.IsParalyzed()) //chance to be couchlocked if sitting
- to_chat(affected_mob, "It's too comfy to move...")
+ to_chat(affected_mob, span_warning("It's too comfy to move..."))
affected_mob.Paralyze(10 SECONDS)
/datum/reagent/drug/nicotine
@@ -694,7 +694,7 @@
/datum/reagent/drug/saturnx/on_mob_metabolize(mob/living/invisible_man)
. = ..()
- playsound(invisible_man, 'sound/chemistry/saturnx_fade.ogg', 40)
+ playsound(invisible_man, 'sound/effects/chemistry/saturnx_fade.ogg', 40)
to_chat(invisible_man, span_nicegreen("You feel pins and needles all over your skin as your body suddenly becomes transparent!"))
addtimer(CALLBACK(src, PROC_REF(turn_man_invisible), invisible_man), 1 SECONDS) //just a quick delay to synch up the sound.
if(!invisible_man.hud_used)
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
index ce829a6ac1222..3fd9188e8d4f0 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
@@ -69,7 +69,7 @@
/datum/reagent/inverse/helgrasp/on_mob_add(mob/living/affected_mob, amount)
. = ..()
to_chat(affected_mob, span_hierophant("You hear laughter as malevolent hands apparate before you, eager to drag you down to hell...! Look out!"))
- playsound(affected_mob.loc, 'sound/chemistry/ahaha.ogg', 80, TRUE, -1) //Very obvious tell so people can be ready
+ playsound(affected_mob.loc, 'sound/effects/chemistry/ahaha.ogg', 80, TRUE, -1) //Very obvious tell so people can be ready
//Sends hands after you for your hubris
/*
@@ -539,7 +539,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
affected_mob.grab_ghost(force = FALSE) //Shoves them back into their freshly reanimated corpse.
back_from_the_dead = TRUE
affected_mob.emote("gasp")
- affected_mob.playsound_local(affected_mob, 'sound/health/fastbeat.ogg', 65)
+ affected_mob.playsound_local(affected_mob, 'sound/effects/health/fastbeat.ogg', 65)
/datum/reagent/inverse/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index df7f222a496fe..d8cc74b1079a6 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -133,7 +133,7 @@
if(SPT_PROB(10, seconds_per_tick))
to_chat(affected_mob, "You feel confused and disoriented.")
if(prob(30))
- SEND_SOUND(affected_mob, sound('sound/weapons/flash_ring.ogg'))
+ SEND_SOUND(affected_mob, sound('sound/items/weapons/flash_ring.ogg'))
/datum/reagent/medicine/cryoxadone
name = "Cryoxadone"
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 6f28d12964771..bbaad188151a2 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -587,6 +587,7 @@
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
fallback_icon_state = "spraytan_fallback"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ glass_price = DRINK_PRICE_HIGH
/datum/reagent/spraytan/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE)
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
index e7cb222ac5837..eac83c5efc9eb 100644
--- a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm
@@ -24,6 +24,7 @@
inverse_chem = null
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
fallback_icon_state = "acid_buffer_fallback"
+ glass_price = DRINK_PRICE_HIGH
//Consumes self on addition and shifts ph
/datum/reagent/reaction_agent/acidic_buffer/intercept_reagents_transfer(datum/reagents/target, amount)
@@ -41,7 +42,7 @@
//give feedback & remove from holder because it's not transferred
target.my_atom.audible_message(span_warning(message))
- playsound(target.my_atom, 'sound/chemistry/bufferadd.ogg', 50, TRUE)
+ playsound(target.my_atom, 'sound/effects/chemistry/bufferadd.ogg', 50, TRUE)
holder.remove_reagent(type, amount)
/datum/reagent/reaction_agent/basic_buffer
@@ -52,6 +53,7 @@
inverse_chem = null
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
fallback_icon_state = "base_buffer_fallback"
+ glass_price = DRINK_PRICE_HIGH
/datum/reagent/reaction_agent/basic_buffer/intercept_reagents_transfer(datum/reagents/target, amount)
. = ..()
@@ -68,7 +70,7 @@
//give feedback & remove from holder because it's not transferred
target.my_atom.audible_message(span_warning(message))
- playsound(target.my_atom, 'sound/chemistry/bufferadd.ogg', 50, TRUE)
+ playsound(target.my_atom, 'sound/effects/chemistry/bufferadd.ogg', 50, TRUE)
holder.remove_reagent(type, amount)
//purity testor/reaction agent prefactors
@@ -100,7 +102,7 @@
is_inverse = TRUE
if(is_inverse)
target.my_atom.audible_message(span_warning("The beaker bubbles violently as the reagent is added!"))
- playsound(target.my_atom, 'sound/chemistry/bufferadd.ogg', 50, TRUE)
+ playsound(target.my_atom, 'sound/effects/chemistry/bufferadd.ogg', 50, TRUE)
else
target.my_atom.audible_message(span_warning("The added reagent doesn't seem to do much."))
holder.remove_reagent(type, amount)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 59271ccbcf9db..4670aebdd6e0a 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -25,7 +25,7 @@
///The message shown to nearby people upon mixing, if applicable
var/mix_message = "The solution begins to bubble."
///The sound played upon mixing, if applicable
- var/mix_sound = 'sound/effects/bubbles.ogg'
+ var/mix_sound = 'sound/effects/bubbles/bubbles.ogg'
/// Set to TRUE if you want the recipe to only react when it's BELOW the required temp.
var/is_cold_recipe = FALSE
@@ -403,7 +403,7 @@
var/turf/this_turf = get_turf(holder.my_atom)
if(sound_and_text)
holder.my_atom.audible_message("The [holder.my_atom] suddenly explodes, sending a shockwave rippling through the air!")
- playsound(this_turf, 'sound/chemistry/shockwave_explosion.ogg', 80, TRUE)
+ playsound(this_turf, 'sound/effects/chemistry/shockwave_explosion.ogg', 80, TRUE)
//Modified goonvortex
for(var/atom/movable/movey as anything in orange(range, this_turf))
if(!istype(movey, /atom/movable))
diff --git a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm
index ae6e616b20390..802d5a820e2f5 100644
--- a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm
+++ b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm
@@ -131,7 +131,7 @@
if(living_mob.flash_act(1, length = 5))
living_mob.set_eye_blur(20 SECONDS)
holder.my_atom.audible_message(span_notice("[icon2html(holder.my_atom, viewers(DEFAULT_MESSAGE_RANGE, src))] The [holder.my_atom] lets out a loud bang!"))
- playsound(holder.my_atom, 'sound/effects/explosion1.ogg', 50, 1)
+ playsound(holder.my_atom, 'sound/effects/explosion/explosion1.ogg', 50, 1)
/datum/chemical_reaction/medicine/hercuri
results = list(/datum/reagent/medicine/c2/hercuri = 5)
@@ -154,7 +154,7 @@
/datum/chemical_reaction/medicine/hercuri/overheated(datum/reagents/holder, datum/equilibrium/equilibrium, step_volume_added)
if(off_cooldown(holder, equilibrium, 2, "hercuri_freeze"))
return
- playsound(holder.my_atom, 'sound/magic/ethereal_exit.ogg', 50, 1)
+ playsound(holder.my_atom, 'sound/effects/magic/ethereal_exit.ogg', 50, 1)
holder.my_atom.visible_message("The reaction frosts over, releasing its chilly contents!")
var/radius = max((equilibrium.step_target_vol/50), 1)
freeze_radius(holder, equilibrium, 200, radius, 60 SECONDS) //drying agent exists
@@ -345,10 +345,10 @@
. = ..()
if(off_cooldown(holder, equilibrium, 1, "lub"))
explode_shockwave(holder, equilibrium, 3, 2)
- playsound(holder.my_atom, 'sound/health/slowbeat.ogg', 50, 1) // this is 2 mintues long (!) cut it up!
+ playsound(holder.my_atom, 'sound/effects/health/slowbeat.ogg', 50, 1) // this is 2 mintues long (!) cut it up!
if(off_cooldown(holder, equilibrium, 1, "dub", 0.5))
explode_shockwave(holder, equilibrium, 3, 2, implosion = TRUE)
- playsound(holder.my_atom, 'sound/health/slowbeat.ogg', 50, 1)
+ playsound(holder.my_atom, 'sound/effects/health/slowbeat.ogg', 50, 1)
explode_fire_vortex(holder, equilibrium, 1, 1)
//enabling hardmode
diff --git a/code/modules/reagents/chemistry/recipes/catalysts.dm b/code/modules/reagents/chemistry/recipes/catalysts.dm
index 7ef4a8a771cbe..bdad316f8f9f6 100644
--- a/code/modules/reagents/chemistry/recipes/catalysts.dm
+++ b/code/modules/reagents/chemistry/recipes/catalysts.dm
@@ -5,7 +5,7 @@
results = list(/datum/reagent/catalyst_agent/speed/medicine = 2)
required_reagents = list(/datum/reagent/medicine/c2/libital = 3, /datum/reagent/medicine/c2/probital = 4, /datum/reagent/toxin/plasma = 2)
mix_message = "The reaction evaporates slightly as the mixture solidifies"
- mix_sound = 'sound/chemistry/catalyst.ogg'
+ mix_sound = 'sound/effects/chemistry/catalyst.ogg'
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_UNIQUE | REACTION_TAG_CHEMICAL
required_temp = 200
optimal_temp = 500
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 8e2353555be5d..8e86a85e21264 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -585,7 +585,7 @@
/datum/chemical_reaction/monkey
required_reagents = list(/datum/reagent/monkey_powder = 50, /datum/reagent/water = 1)
reaction_flags = REACTION_INSTANT
- mix_message = "Expands into a brown mass before shaping itself into a monkey!."
+ mix_message = span_danger("Expands into a brown mass before shaping itself into a monkey!.")
/datum/chemical_reaction/monkey/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/mob/living/carbon/M = holder.my_atom
@@ -640,18 +640,18 @@
/datum/chemical_reaction/scream/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
/// List of screams to play.
var/static/list/screams = list(
- 'sound/voice/human/femalescream_1.ogg',
- 'sound/voice/human/femalescream_2.ogg',
- 'sound/voice/human/femalescream_3.ogg',
- 'sound/voice/human/femalescream_4.ogg',
- 'sound/voice/human/femalescream_5.ogg',
- 'sound/voice/human/malescream_1.ogg',
- 'sound/voice/human/malescream_2.ogg',
- 'sound/voice/human/malescream_3.ogg',
- 'sound/voice/human/malescream_4.ogg',
- 'sound/voice/human/malescream_5.ogg',
- 'sound/voice/human/malescream_6.ogg',
- 'sound/voice/human/wilhelm_scream.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/femalescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_1.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_2.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_3.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_4.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_5.ogg',
+ 'sound/mobs/humanoids/human/scream/malescream_6.ogg',
+ 'sound/mobs/humanoids/human/scream/wilhelm_scream.ogg',
)
playsound(holder.my_atom, pick(screams), created_volume*5,TRUE)
@@ -884,7 +884,7 @@
results = list(/datum/reagent/eigenstate = 1)
required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1)
mix_message = "the reaction zaps suddenly!"
- mix_sound = 'sound/chemistry/bluespace.ogg'
+ mix_sound = 'sound/effects/chemistry/bluespace.ogg'
//FermiChem vars:
required_temp = 350
optimal_temp = 600
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 62a14ddc794be..69dda419d7cd3 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -196,7 +196,7 @@
required_temp = 474
strengthdiv = 10
modifier = 5
- mix_message = "Sparks start flying around the gunpowder!"
+ mix_message = span_boldnotice("Sparks start flying around the gunpowder!")
/datum/chemical_reaction/reagent_explosion/gunpowder_explosion/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
addtimer(CALLBACK(src, PROC_REF(default_explode), holder, created_volume, modifier, strengthdiv), rand(5 SECONDS, 10 SECONDS))
@@ -226,9 +226,9 @@
/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = holder.my_atom.drop_location()
if(created_volume < 5)
- playsound(location,'sound/effects/sparks1.ogg', 100, TRUE)
+ playsound(location,'sound/effects/sparks/sparks1.ogg', 100, TRUE)
else
- playsound(location,'sound/creatures/bee.ogg', 100, TRUE)
+ playsound(location,'sound/mobs/non-humanoids/bee/bee.ogg', 100, TRUE)
var/list/beeagents = list()
for(var/R in holder.reagent_list)
if(required_reagents[R])
@@ -498,7 +498,7 @@
if(!cryostylane)
return ..()
var/turf/local_turf = get_turf(holder.my_atom)
- playsound(local_turf, 'sound/magic/ethereal_exit.ogg', 50, 1)
+ playsound(local_turf, 'sound/effects/magic/ethereal_exit.ogg', 50, 1)
local_turf.visible_message("The reaction frosts over, releasing its chilly contents!")
freeze_radius(holder, null, holder.chem_temp*2, clamp(cryostylane.volume/30, 2, 6), 120 SECONDS, 2)
clear_reactants(holder, 15)
@@ -508,7 +508,7 @@
/datum/chemical_reaction/cryostylane/overly_impure(datum/reagents/holder, datum/equilibrium/equilibrium, vol_added)
var/datum/reagent/cryostylane/cryostylane = holder.has_reagent(/datum/reagent/cryostylane)
var/turf/local_turf = get_turf(holder.my_atom)
- playsound(local_turf, 'sound/magic/ethereal_exit.ogg', 50, 1)
+ playsound(local_turf, 'sound/effects/magic/ethereal_exit.ogg', 50, 1)
local_turf.visible_message("The reaction furiously freezes up as a snowman suddenly rises out of the [holder.my_atom.name]!")
freeze_radius(holder, equilibrium, holder.chem_temp, clamp(cryostylane.volume/15, 3, 10), 180 SECONDS, 5)
new /obj/structure/statue/snow/snowman(local_turf)
@@ -564,22 +564,22 @@
/datum/chemical_reaction/teslium
results = list(/datum/reagent/teslium = 3)
required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/silver = 1, /datum/reagent/gunpowder = 1)
- mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry."
+ mix_message = span_danger("A jet of sparks flies from the mixture as it merges into a flickering slurry.")
required_temp = 400
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE
/datum/chemical_reaction/energized_jelly
results = list(/datum/reagent/teslium/energized_jelly = 2)
required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1)
- mix_message = "The slime jelly starts glowing intermittently."
+ mix_message = span_danger("The slime jelly starts glowing intermittently.")
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DANGEROUS | REACTION_TAG_HEALING | REACTION_TAG_OTHER
/datum/chemical_reaction/reagent_explosion/teslium_lightning
required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1)
strengthdiv = 100
modifier = -100
- mix_message = "The teslium starts to spark as electricity arcs away from it!"
- mix_sound = 'sound/machines/defib_zap.ogg'
+ mix_message = span_boldannounce("The teslium starts to spark as electricity arcs away from it!")
+ mix_sound = 'sound/machines/defib/defib_zap.ogg'
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
@@ -603,7 +603,7 @@
if(QDELETED(holder_atom))
return
tesla_zap(source = holder_atom, zap_range = 7, power = power, cutoff = 1 KILO JOULES, zap_flags = zap_flags)
- playsound(holder_atom, 'sound/machines/defib_zap.ogg', 50, TRUE)
+ playsound(holder_atom, 'sound/machines/defib/defib_zap.ogg', 50, TRUE)
/datum/chemical_reaction/reagent_explosion/teslium_lightning/heat
required_temp = 474
@@ -640,4 +640,4 @@
/datum/chemical_reaction/reagent_explosion/patriotism_overload
required_reagents = list(/datum/reagent/consumable/ethanol/planet_cracker = 1, /datum/reagent/consumable/ethanol/triumphal_arch = 1)
strengthdiv = 20
- mix_message = "The two patriotic drinks instantly reject each other!"
+ mix_message = span_boldannounce("The two patriotic drinks instantly reject each other!")
diff --git a/code/modules/reagents/chemistry/recipes/reaction_agents.dm b/code/modules/reagents/chemistry/recipes/reaction_agents.dm
index f9292cf8c14b9..454a13aec5716 100644
--- a/code/modules/reagents/chemistry/recipes/reaction_agents.dm
+++ b/code/modules/reagents/chemistry/recipes/reaction_agents.dm
@@ -64,7 +64,7 @@
results = list(/datum/reagent/prefactor_b = 5)
required_reagents = list(/datum/reagent/prefactor_a = 5)
mix_message = "The solution's viscosity decreases."
- mix_sound = 'sound/chemistry/bluespace.ogg' //Maybe use this elsewhere instead
+ mix_sound = 'sound/effects/chemistry/bluespace.ogg' //Maybe use this elsewhere instead
required_temp = 50
optimal_temp = 500
overheat_temp = 500
diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm
index 0fcae783d8993..256bc31be117e 100644
--- a/code/modules/reagents/chemistry/recipes/toxins.dm
+++ b/code/modules/reagents/chemistry/recipes/toxins.dm
@@ -309,7 +309,7 @@
/datum/chemical_reaction/heparin
results = list(/datum/reagent/toxin/heparin = 3)
required_reagents = list(/datum/reagent/toxin/formaldehyde = 1, /datum/reagent/consumable/salt = 1, /datum/reagent/lithium = 1)
- mix_message = "The mixture thins and loses all color."
+ mix_message = span_danger("The mixture thins and loses all color.")
is_cold_recipe = FALSE
required_temp = 100
optimal_temp = 450
@@ -329,7 +329,7 @@
/datum/chemical_reaction/rotatium
results = list(/datum/reagent/toxin/rotatium = 3)
required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/teslium = 1, /datum/reagent/toxin/fentanyl = 1)
- mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight."
+ mix_message = span_danger("After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight.")
is_cold_recipe = FALSE
required_temp = 100
optimal_temp = 450
@@ -389,7 +389,7 @@
/datum/chemical_reaction/bonehurtingjuice
results = list(/datum/reagent/toxin/bonehurtingjuice = 5)
required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1)
- mix_message = "The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it."
+ mix_message = span_danger("The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it.")
is_cold_recipe = FALSE
required_temp = 100
optimal_temp = 450
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index c6e74f3388ab4..c01ad352f54dd 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -118,7 +118,7 @@
return ITEM_INTERACT_BLOCKING
var/trans = reagents.trans_to(target, amount_per_transfer_from_this, transferred_by = user)
- playsound(target.loc, pick('sound/effects/liquid_pour1.ogg', 'sound/effects/liquid_pour2.ogg', 'sound/effects/liquid_pour3.ogg'), 50)
+ playsound(target.loc, SFX_LIQUID_POUR, 50, TRUE)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target]."))
SEND_SIGNAL(src, COMSIG_REAGENTS_CUP_TRANSFER_TO, target)
target.update_appearance()
@@ -134,6 +134,7 @@
return ITEM_INTERACT_BLOCKING
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transferred_by = user)
+ playsound(target.loc, SFX_LIQUID_POUR, 50, TRUE)
to_chat(user, span_notice("You fill [src] with [trans] unit\s of the contents of [target]."))
SEND_SIGNAL(src, COMSIG_REAGENTS_CUP_TRANSFER_FROM, target)
target.update_appearance()
@@ -159,9 +160,12 @@
return ITEM_INTERACT_BLOCKING
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transferred_by = user)
+ playsound(target.loc, SFX_LIQUID_POUR, 50, TRUE)
to_chat(user, span_notice("You fill [src] with [trans] unit\s of the contents of [target]."))
+ SEND_SIGNAL(src, COMSIG_REAGENTS_CUP_TRANSFER_FROM, target)
+ target.update_appearance()
+ return ITEM_INTERACT_SUCCESS
- target.update_appearance()
return NONE
/obj/item/reagent_containers/cup/attackby(obj/item/attacking_item, mob/user, params)
diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm
index e75d3d28b66dc..b473c6b38a2ef 100644
--- a/code/modules/reagents/reagent_containers/cups/drinks.dm
+++ b/code/modules/reagents/reagent_containers/cups/drinks.dm
@@ -267,7 +267,7 @@
cap_lost = TRUE
else
to_chat(user, span_notice("You remove the cap from [src]."))
- playsound(loc, 'sound/effects/can_open1.ogg', 50, TRUE)
+ playsound(loc, 'sound/effects/can/can_open1.ogg', 50, TRUE)
else
cap_on = TRUE
spillable = FALSE
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index a214ea47eb148..67741748461c7 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -260,7 +260,7 @@
inhand_icon_state = "broken_beer"
lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("stabs", "slashes", "attacks")
attack_verb_simple = list("stab", "slash", "attack")
sharpness = SHARP_EDGED
@@ -781,7 +781,7 @@
name = "champagne cork"
icon = 'icons/obj/drinks/drink_effects.dmi'
icon_state = "champagne_cork"
- hitsound = 'sound/weapons/genhit.ogg'
+ hitsound = 'sound/items/weapons/genhit.ogg'
damage = 10
sharpness = NONE
impact_effect_type = null
@@ -1005,7 +1005,7 @@
for (var/mob/living/M in view(2, get_turf(src))) // letting people and/or narcs know when the pruno is done
if(HAS_TRAIT(M, TRAIT_ANOSMIA))
to_chat(M, span_info("A pungent smell emanates from [src], like fruit puking out its guts."))
- playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE)
+ playsound(get_turf(src), 'sound/effects/bubbles/bubbles2.ogg', 25, TRUE)
/**
* Cartons
diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm
index 2e85b2273f45e..7772a64f60e3d 100644
--- a/code/modules/reagents/reagent_containers/cups/soda.dm
+++ b/code/modules/reagents/reagent_containers/cups/soda.dm
@@ -69,7 +69,7 @@
user.visible_message(span_warning("[user] crushes the can of [src] on [user.p_their()] forehead!"), span_notice("You crush the can of [src] on your forehead."))
else
user.visible_message(span_warning("[user] crushes the can of [src] on [M]'s forehead!"), span_notice("You crush the can of [src] on [M]'s forehead."))
- playsound(M,'sound/weapons/pierce.ogg', rand(10,50), TRUE)
+ playsound(M,'sound/items/weapons/pierce.ogg', rand(10,50), TRUE)
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(M.loc)
crushed_can.icon_state = icon_state
qdel(src)
@@ -118,7 +118,7 @@
if(iter_mob != target)
iter_mob.add_mood_event("observed_soda_spill", /datum/mood_event/observed_soda_spill, target, src)
- playsound(src, 'sound/effects/can_pop.ogg', 80, TRUE)
+ playsound(src, 'sound/effects/can/can_pop.ogg', 80, TRUE)
if(!hide_message)
visible_message(span_danger("[src] spills over, fizzing its contents all over [target]!"))
spillable = TRUE
@@ -151,7 +151,7 @@
/obj/item/reagent_containers/cup/soda_cans/attack_self_secondary(mob/user)
if(!is_drainable())
- playsound(src, 'sound/effects/can_shake.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/can/can_shake.ogg', 50, TRUE)
user.visible_message(span_danger("[user] shakes [src]!"), span_danger("You shake up [src]!"), vision_distance=2)
fizziness += SODA_FIZZINESS_SHAKE
return
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 2149b2fd4c495..a1792a9670db3 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -69,7 +69,7 @@
playsound(src, spray_sound, 50, TRUE, -6)
user.changeNext_move(CLICK_CD_RANGE * 2)
- user.newtonian_move(get_dir(target, user))
+ user.newtonian_move(get_angle(target, user))
return TRUE
/// Handles creating a chem puff that travels towards the target atom, exposing reagents to everything it hits on the way.
@@ -232,8 +232,8 @@
stream_range = 4
amount_per_transfer_from_this = 5
list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 50)
- pickup_sound = 'sound/items/pepper_spray_pick_up.ogg'
- drop_sound = 'sound/items/pepper_spray_drop.ogg'
+ pickup_sound = 'sound/items/handling/pepper_spray/pepper_spray_pick_up.ogg'
+ drop_sound = 'sound/items/handling/pepper_spray/pepper_spray_drop.ogg'
/obj/item/reagent_containers/spray/pepper/empty //for protolathe printing
list_reagents = null
diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm
index 82ac4646e0526..b4580a8bc2353 100644
--- a/code/modules/recycling/conveyor.dm
+++ b/code/modules/recycling/conveyor.dm
@@ -434,7 +434,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
/// Updates the switch's `position` and `last_pos` variable. Useful so that the switch can properly cycle between the forwards, backwards and neutral positions.
/obj/machinery/conveyor_switch/proc/update_position(direction)
if(position == CONVEYOR_OFF)
- playsound(src, 'sound/machines/lever_start.ogg', 40, TRUE)
+ playsound(src, 'sound/machines/lever/lever_start.ogg', 40, TRUE)
if(oneway) //is it a oneway switch
position = oneway
@@ -444,7 +444,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
else
position = CONVEYOR_BACKWARDS
else
- playsound(src, 'sound/machines/lever_stop.ogg', 40, TRUE)
+ playsound(src, 'sound/machines/lever/lever_stop.ogg', 40, TRUE)
position = CONVEYOR_OFF
/obj/machinery/conveyor_switch/proc/on_user_activation(mob/user, direction)
@@ -606,7 +606,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
/obj/item/stack/conveyor/use(used, transfer, check)
. = ..()
- playsound(src, 'sound/weapons/genhit.ogg', 30, TRUE)
+ playsound(src, 'sound/items/weapons/genhit.ogg', 30, TRUE)
/obj/item/stack/conveyor/thirty
amount = 30
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index 4930136b25bd7..1d1354e865dbc 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -685,6 +685,6 @@
update_appearance()
to_chat(user, span_notice("You sweep the pile of garbage into [src]."))
- playsound(broom.loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1)
+ playsound(broom.loc, 'sound/items/weapons/thudswoosh.ogg', 30, TRUE, -1)
#undef SEND_PRESSURE
diff --git a/code/modules/recycling/disposal/holder.dm b/code/modules/recycling/disposal/holder.dm
index 78469d491912b..fb94e5ced5417 100644
--- a/code/modules/recycling/disposal/holder.dm
+++ b/code/modules/recycling/disposal/holder.dm
@@ -135,7 +135,7 @@
if(src in escapee.do_afters)
return //already trying to escape
to_chat(escapee, span_warning("You push against the thin pipe walls..."))
- playsound(loc, 'sound/machines/airlock_alien_prying.ogg', vol = 30, vary = FALSE, extrarange = 3) //yeah I know but at least it sounds like metal being bent.
+ playsound(loc, 'sound/machines/airlock/airlock_alien_prying.ogg', vol = 30, vary = FALSE, extrarange = 3) //yeah I know but at least it sounds like metal being bent.
if(!do_after(escapee, 20 SECONDS, get_turf(loc)))
return
diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm
index 63c3c83edd18c..1ba4b450509a6 100644
--- a/code/modules/recycling/disposal/outlet.dm
+++ b/code/modules/recycling/disposal/outlet.dm
@@ -86,7 +86,7 @@
if(!I.tool_start_check(user, amount=1, heat_required = HIGH_TEMPERATURE_REQUIRED))
return TRUE
- playsound(src, 'sound/items/welder2.ogg', 100, TRUE)
+ playsound(src, 'sound/items/tools/welder2.ogg', 100, TRUE)
to_chat(user, span_notice("You start slicing the floorweld off [src]..."))
if(I.use_tool(src, user, 20))
to_chat(user, span_notice("You slice the floorweld off [src]."))
diff --git a/code/modules/recycling/disposal/pipe_sorting.dm b/code/modules/recycling/disposal/pipe_sorting.dm
index 90cd583296636..08cb0ac21d6f9 100644
--- a/code/modules/recycling/disposal/pipe_sorting.dm
+++ b/code/modules/recycling/disposal/pipe_sorting.dm
@@ -66,7 +66,7 @@
else
sortTypes |= O.currTag
to_chat(user, span_notice("Added \"[GLOB.TAGGERLOCATIONS[O.currTag]]\" filter."))
- playsound(src, 'sound/machines/twobeep_high.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE)
else
return ..()
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 280d074c7ff19..3d36ef1eceae9 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -32,7 +32,7 @@
/obj/item/delivery/proc/post_unwrap_contents(mob/user, rip_open = TRUE)
var/turf/turf_loc = get_turf(user || src)
if(rip_open)
- playsound(loc, 'sound/items/poster_ripped.ogg', 50, TRUE)
+ playsound(loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE)
new /obj/effect/decal/cleanable/wrapping(turf_loc)
else
playsound(loc, 'sound/items/box_cut.ogg', 50, TRUE)
@@ -111,7 +111,7 @@
var/tag = uppertext(GLOB.TAGGERLOCATIONS[dest_tagger.currTag])
to_chat(user, span_notice("*[tag]*"))
sort_tag = dest_tagger.currTag
- playsound(loc, 'sound/machines/twobeep_high.ogg', 100, TRUE)
+ playsound(loc, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE)
update_appearance()
else if(IS_WRITING_UTENSIL(item))
if(!user.can_write(item))
@@ -280,7 +280,7 @@
to_chat(user, span_notice("*HELL*"))//lizard nerf
else
to_chat(user, span_notice("*HEAVEN*"))
- playsound(src, 'sound/machines/twobeep_high.ogg', 100, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 100, TRUE)
return BRUTELOSS
/** Standard TGUI actions */
diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm
index b256b4f9d4ac3..f111d04f93013 100644
--- a/code/modules/religion/burdened/psyker.dm
+++ b/code/modules/religion/burdened/psyker.dm
@@ -128,7 +128,7 @@
desc = "Holy smokes."
icon_state = "lucky"
force = 10
- fire_sound = 'sound/weapons/gun/revolver/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/revolver/shot.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/revchap
obj_flags = UNIQUE_RENAME
custom_materials = null
@@ -225,7 +225,7 @@
return
user.say("#Oh great [GLOB.deity], give me the ammunition I need!", forced = "ammo prayer")
magazine.top_off()
- user.playsound_local(get_turf(src), 'sound/magic/magic_block_holy.ogg', 50, TRUE)
+ user.playsound_local(get_turf(src), 'sound/effects/magic/magic_block_holy.ogg', 50, TRUE)
chamber_round()
/datum/action/item_action/pray_refill
@@ -258,7 +258,7 @@
. = ..()
var/roll_them_bones = rand(1,38)
if(roll_them_bones == 1 && isliving(target))
- playsound(target, 'sound/machines/synth_yes.ogg', 50, TRUE)
+ playsound(target, 'sound/machines/synth/synth_yes.ogg', 50, TRUE)
playsound(target, pick(list('sound/machines/coindrop.ogg', 'sound/machines/coindrop2.ogg')), 40, TRUE)
new /obj/effect/temp_visual/crit(get_turf(target))
@@ -348,7 +348,7 @@
name = "Psychic Booster"
desc = "Charge up your mind to shoot firearms faster and home in on your targets. Think smarter, not harder."
button_icon_state = "projectile"
- sound = 'sound/weapons/gun/shotgun/rack.ogg'
+ sound = 'sound/items/weapons/gun/shotgun/rack.ogg'
school = SCHOOL_PSYCHIC
cooldown_time = 1 MINUTES
antimagic_flags = MAGIC_RESISTANCE_MIND
diff --git a/code/modules/religion/pyre/pyre_rites.dm b/code/modules/religion/pyre/pyre_rites.dm
index 79f95ad6af6ae..75aaf1c6286cd 100644
--- a/code/modules/religion/pyre/pyre_rites.dm
+++ b/code/modules/religion/pyre/pyre_rites.dm
@@ -33,7 +33,7 @@
for(var/obj/item/clothing/head/integrated_helmet in chosen_clothing.contents) //check if the clothing has a hood/helmet integrated and fireproof it if there is one.
apply_fireproof(integrated_helmet)
apply_fireproof(chosen_clothing)
- playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE)
+ playsound(get_turf(religious_tool), 'sound/effects/magic/fireball.ogg', 50, TRUE)
chosen_clothing = null //our lord and savior no longer cares about this apparel
return TRUE
chosen_clothing = null
@@ -110,7 +110,7 @@
var/altar_turf = get_turf(religious_tool)
for(var/i in 1 to 5)
new /obj/item/flashlight/flare/candle/infinite(altar_turf)
- playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE)
+ playsound(altar_turf, 'sound/effects/magic/fireball.ogg', 50, TRUE)
return TRUE
/datum/religion_rites/blazing_star
diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm
index 0789cb2ac2086..b1c055ec9bddb 100644
--- a/code/modules/religion/religion_sects.dm
+++ b/code/modules/religion/religion_sects.dm
@@ -71,7 +71,7 @@
/datum/religion_sect/proc/can_sacrifice(obj/item/sacrifice, mob/living/chap)
. = TRUE
if(chap.mind.holy_role == HOLY_ROLE_DEACON)
- to_chat(chap, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.")
+ to_chat(chap, span_warning("You are merely a deacon of [GLOB.deity], and therefore cannot perform rites."))
return
if(!is_type_in_typecache(sacrifice, desired_items_typecache))
return FALSE
@@ -183,7 +183,7 @@
blessed.visible_message(span_notice("[chap] charges [blessed] with the power of [GLOB.deity]!"))
to_chat(blessed, span_boldnotice("You feel charged by the power of [GLOB.deity]!"))
blessed.add_mood_event("blessing", /datum/mood_event/blessing)
- playsound(chap, 'sound/machines/synth_yes.ogg', 25, TRUE, -1)
+ playsound(chap, 'sound/machines/synth/synth_yes.ogg', 25, TRUE, -1)
return TRUE
//charge(?) and go
diff --git a/code/modules/religion/sparring/ceremonial_gear.dm b/code/modules/religion/sparring/ceremonial_gear.dm
index 08ab6940805ce..2c7e73b5a7540 100644
--- a/code/modules/religion/sparring/ceremonial_gear.dm
+++ b/code/modules/religion/sparring/ceremonial_gear.dm
@@ -12,7 +12,7 @@
greyscale_config_inhand_right = /datum/greyscale_config/ceremonial_blade_righthand
greyscale_colors = COLOR_WHITE
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*6) //Defaults to an Iron blade.
force = 2 //20
throwforce = 1 //10
@@ -21,7 +21,7 @@
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
block_chance = 3 //30
- block_sound = 'sound/weapons/parry.ogg'
+ block_sound = 'sound/items/weapons/parry.ogg'
sharpness = SHARP_EDGED
max_integrity = 200
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE //doesn't affect stats of the weapon as to avoid gamering your opponent with a dope weapon
diff --git a/code/modules/research/anomaly/anomaly_refinery.dm b/code/modules/research/anomaly/anomaly_refinery.dm
index 1269edb926561..6caa03d6de57a 100644
--- a/code/modules/research/anomaly/anomaly_refinery.dm
+++ b/code/modules/research/anomaly/anomaly_refinery.dm
@@ -132,7 +132,7 @@
return
obj_flags |= EMAGGED
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, vary = FALSE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50, vary = FALSE)
say("ERROR: Unauthorized firmware access.")
return TRUE
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 021c282958d89..a7edd804ff0da 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -139,7 +139,7 @@
/obj/machinery/rnd/destructive_analyzer/proc/unload_item()
if(!loaded_item)
return FALSE
- playsound(loc, 'sound/machines/terminal_insert_disc.ogg', 30, FALSE)
+ playsound(loc, 'sound/machines/terminal/terminal_insert_disc.ogg', 30, FALSE)
loaded_item.forceMove(drop_location())
loaded_item = null
update_appearance(UPDATE_ICON)
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index ded27054695cc..998995436ad52 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -758,7 +758,7 @@
/obj/item/relic/proc/scrambliticus(mob/user)
new /obj/effect/temp_visual/circle_wave/bioscrambler/light(get_turf(src))
- playsound(src, 'sound/magic/cosmic_energy.ogg', vol = 50, vary = TRUE)
+ playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50, vary = TRUE)
for(var/mob/living/carbon/nearby in range(2, get_turf(src))) //needs get_turf() to work
nearby.bioscramble(name)
playsound(nearby, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index 4d90e3cd34b29..f503f158a0e6b 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -123,7 +123,7 @@
if(design_delta > 0)
say("Received [design_delta] new design[design_delta == 1 ? "" : "s"].")
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
update_static_data_for_all_viewers()
diff --git a/code/modules/research/ordnance/doppler_array.dm b/code/modules/research/ordnance/doppler_array.dm
index 6b1be6769844d..34ecb6b10891b 100644
--- a/code/modules/research/ordnance/doppler_array.dm
+++ b/code/modules/research/ordnance/doppler_array.dm
@@ -89,7 +89,7 @@
if(inserted_disk.add_file(record_data))
playsound(src, 'sound/machines/ping.ogg', 25)
else
- playsound(src, 'sound/machines/terminal_error.ogg', 25)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 25)
/**
* Checks a specified tachyon record for fitting reactions, then returns a list with
diff --git a/code/modules/research/ordnance/tank_compressor.dm b/code/modules/research/ordnance/tank_compressor.dm
index 89f38ee4a32e0..dcaefc6ad3a98 100644
--- a/code/modules/research/ordnance/tank_compressor.dm
+++ b/code/modules/research/ordnance/tank_compressor.dm
@@ -201,7 +201,7 @@
if(inserted_disk.add_file(record_data))
playsound(src, 'sound/machines/ping.ogg', 25)
else
- playsound(src, 'sound/machines/terminal_error.ogg', 25)
+ playsound(src, 'sound/machines/terminal/terminal_error.ogg', 25)
/// Ejecting a tank. Also called on insertion to clear previous tanks.
/obj/machinery/atmospherics/components/binary/tank_compressor/proc/eject_tank(mob/user)
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index 46bd8746663b8..a82e818758ce7 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -11,7 +11,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
var/works_from_distance = FALSE
- var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg'
+ var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/tools/rped.ogg'
var/alt_sound = null
/obj/item/storage/part_replacer/Initialize(mapload)
@@ -70,8 +70,8 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
inhand_icon_state = "BS_RPED"
w_class = WEIGHT_CLASS_NORMAL
works_from_distance = TRUE
- pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/pshoom.ogg'
- alt_sound = 'sound/items/pshoom_2.ogg'
+ pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/pshoom/pshoom.ogg'
+ alt_sound = 'sound/items/pshoom/pshoom_2.ogg'
/obj/item/storage/part_replacer/bluespace/Initialize(mapload)
. = ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm
index b07299813d612..c47ea89eaac5d 100644
--- a/code/modules/research/xenobiology/crossbreeding/_misc.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm
@@ -154,12 +154,12 @@ Slimecrossing Items
/obj/structure/ice_stasis/Initialize(mapload)
. = ..()
- playsound(src, 'sound/magic/ethereal_exit.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE)
/obj/structure/ice_stasis/Destroy()
for(var/atom/movable/M in contents)
M.forceMove(loc)
- playsound(src, 'sound/effects/glassbr3.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr3.ogg', 50, TRUE)
return ..()
//Gold capture device - Chilling Gold
diff --git a/code/modules/research/xenobiology/crossbreeding/_potions.dm b/code/modules/research/xenobiology/crossbreeding/_potions.dm
index 16203cd3462fd..c33868e079711 100644
--- a/code/modules/research/xenobiology/crossbreeding/_potions.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_potions.dm
@@ -170,6 +170,7 @@ Slimecrossing Potions
if (isclothing(clothing))
var/obj/item/clothing/clothing_real = clothing
clothing_real.clothing_flags |= LAVAPROTECT
+ clothing_real.resistance_flags |= FIRE_PROOF
uses--
if(uses <= 0)
qdel(src)
diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
index 152a90f9795eb..3cc46b9be32ec 100644
--- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
@@ -32,15 +32,15 @@ Slimecrossing Weapons
damtype = pick(BRUTE, BURN, TOX, OXY)
switch(damtype)
if(BRUTE)
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = string_list(list("slashes", "slices", "cuts"))
attack_verb_simple = string_list(list("slash", "slice", "cut"))
if(BURN)
- hitsound = 'sound/weapons/sear.ogg'
+ hitsound = 'sound/items/weapons/sear.ogg'
attack_verb_continuous = string_list(list("burns", "singes", "heats"))
attack_verb_simple = string_list(list("burn", "singe", "heat"))
if(TOX)
- hitsound = 'sound/weapons/pierce.ogg'
+ hitsound = 'sound/items/weapons/pierce.ogg'
attack_verb_continuous = string_list(list("poisons", "doses", "toxifies"))
attack_verb_simple = string_list(list("poison", "dose", "toxify"))
if(OXY)
@@ -66,7 +66,7 @@ Slimecrossing Weapons
attack_verb_simple = list("bash", "pound", "slam")
item_flags = SLOWS_WHILE_IN_HAND
breakable_by_damage = FALSE
- shield_bash_sound = 'sound/effects/glassknock.ogg'
+ shield_bash_sound = 'sound/effects/glass/glassknock.ogg'
/datum/armor/shield_adamantineshield
melee = 50
@@ -97,7 +97,7 @@ Slimecrossing Weapons
max_charges = 1 //Recharging costs blood.
recharge_rate = 1
ammo_type = /obj/item/ammo_casing/magic/bloodchill
- fire_sound = 'sound/effects/attackblob.ogg'
+ fire_sound = 'sound/effects/blob/attackblob.ogg'
/obj/item/gun/magic/bloodchill/Initialize(mapload)
. = ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index 72ee9d98516eb..c3eb811fa4270 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -19,8 +19,8 @@ Burning extracts:
return
reagents.remove_reagent(/datum/reagent/toxin/plasma, 10)
to_chat(user, span_notice("You squeeze the extract, and it absorbs the plasma!"))
- playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
- playsound(src, 'sound/magic/fireball.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/fireball.ogg', 50, TRUE)
do_effect(user)
/obj/item/slimecross/burning/proc/do_effect(mob/user) //If, for whatever reason, you don't want to delete the extract, don't do ..()
@@ -93,7 +93,7 @@ Burning extracts:
/obj/item/slimecross/burning/yellow/do_effect(mob/user)
user.visible_message(span_danger("[src] explodes into an electrical field!"))
- playsound(get_turf(src), 'sound/weapons/zapbang.ogg', 50, TRUE)
+ playsound(get_turf(src), 'sound/items/weapons/zapbang.ogg', 50, TRUE)
for(var/mob/living/M in range(4,get_turf(user)))
if(M != user)
var/mob/living/carbon/C = M
@@ -263,7 +263,7 @@ Burning extracts:
/// Inflicts a blastwave upon every mob within a small radius.
/obj/item/slimecross/burning/oil/proc/boom()
var/turf/T = get_turf(src)
- playsound(T, 'sound/effects/explosion2.ogg', 200, TRUE)
+ playsound(T, 'sound/effects/explosion/explosion2.ogg', 200, TRUE)
for(var/mob/living/target in range(2, T))
new /obj/effect/temp_visual/explosion(get_turf(target))
SSexplosions.med_mov_atom += target
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index ca026ae9f33f7..bdc19a70405d8 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -20,7 +20,7 @@ Charged extracts:
return
reagents.remove_reagent(/datum/reagent/toxin/plasma, 10)
to_chat(user, span_notice("You squeeze the extract, and it absorbs the plasma!"))
- playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 50, TRUE)
playsound(src, 'sound/effects/light_flicker.ogg', 50, TRUE)
do_effect(user)
diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm
index 70784f5b90f3e..0a22cd0380f5e 100644
--- a/code/modules/research/xenobiology/crossbreeding/chilling.dm
+++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm
@@ -19,8 +19,8 @@ Chilling extracts:
return
reagents.remove_reagent(/datum/reagent/toxin/plasma, 10)
to_chat(user, span_notice("You squeeze the extract, and it absorbs the plasma!"))
- playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
- playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/glass/glassbr1.ogg', 50, TRUE)
do_effect(user)
/obj/item/slimecross/chilling/proc/do_effect(mob/user) //If, for whatever reason, you don't want to delete the extract, don't do ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm
index 9d5ed59fcec0d..4f6135b65378e 100644
--- a/code/modules/research/xenobiology/crossbreeding/industrial.dm
+++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm
@@ -40,12 +40,12 @@ Industrial extracts:
plasmaabsorbed += 1
if(plasmaabsorbed >= plasmarequired)
- playsound(src, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
plasmaabsorbed -= plasmarequired
for(var/i in 1 to itemamount)
do_after_spawn(new itempath(get_turf(src)))
else if(IsWorking)
- playsound(src, 'sound/effects/bubbles.ogg', 5, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 5, TRUE)
if(IsWorking)
icon_state = "industrial"
else
diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
index d04838f79ec0d..6cf8d2745ce6c 100644
--- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm
+++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
@@ -228,7 +228,7 @@ Regenerative extracts:
effect_desc = "Fully heals the target and flashes everyone in sight."
/obj/item/slimecross/regenerative/oil/core_effect(mob/living/target, mob/user)
- playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
+ playsound(src, 'sound/items/weapons/flash.ogg', 100, TRUE)
for(var/mob/living/L in view(user,7))
L.flash_act()
diff --git a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm
index 5b35bd10edf5e..8d6d1904f85d6 100644
--- a/code/modules/research/xenobiology/vatgrowing/vatgrower.dm
+++ b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm
@@ -116,7 +116,7 @@
biological_sample.sample_layers = petri.sample.sample_layers
biological_sample.sample_color = petri.sample.sample_color
balloon_alert(user, "added sample")
- playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/bubbles/bubbles.ogg', 50, TRUE)
update_appearance()
RegisterSignal(biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED, PROC_REF(on_sample_growth_completed))
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 72d79b20ec53f..1fc21eac65fae 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -81,7 +81,7 @@
target_slime.applied_crossbreed_amount++
qdel(src)
to_chat(user, span_notice("You feed the slime [src], [target_slime.applied_crossbreed_amount == 1 ? "starting to mutate its core." : "further mutating its core."]"))
- playsound(target_slime, 'sound/effects/attackblob.ogg', 50, TRUE)
+ playsound(target_slime, 'sound/effects/blob/attackblob.ogg', 50, TRUE)
if(target_slime.applied_crossbreed_amount >= SLIME_EXTRACT_CROSSING_REQUIRED)
target_slime.spawn_corecross()
@@ -508,7 +508,7 @@
to_chat(user, span_warning("You feel your body vibrating..."))
if(do_after(user, 2.5 SECONDS, target = user))
to_chat(user, span_warning("You teleport!"))
- do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
+ do_teleport(user, get_turf(user), 6, asoundin = 'sound/items/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
return 300
if(SLIME_ACTIVATE_MAJOR)
@@ -524,7 +524,7 @@
if(teleport_x && teleport_y && teleport_z)
var/turf/T = locate(teleport_x, teleport_y, teleport_z)
to_chat(user, span_notice("You snap back to your anchor point!"))
- do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
+ do_teleport(user, T, asoundin = 'sound/items/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
return 450
diff --git a/code/modules/security_levels/security_level_datums.dm b/code/modules/security_levels/security_level_datums.dm
index d5a2e74e8080e..4e0ed2473125f 100644
--- a/code/modules/security_levels/security_level_datums.dm
+++ b/code/modules/security_levels/security_level_datums.dm
@@ -49,7 +49,7 @@
/datum/security_level/green
name = "green"
announcement_color = "green"
- sound = 'sound/misc/notice2.ogg' // Friendly beep
+ sound = 'sound/announcer/notice/notice2.ogg' // Friendly beep
number_level = SEC_LEVEL_GREEN
status_display_icon_state = "greenalert"
fire_alarm_light_color = LIGHT_COLOR_BLUEGREEN
@@ -64,7 +64,7 @@
/datum/security_level/blue
name = "blue"
announcement_color = "blue"
- sound = 'sound/misc/notice1.ogg' // Angry alarm
+ sound = 'sound/announcer/notice/notice1.ogg' // Angry alarm
number_level = SEC_LEVEL_BLUE
status_display_icon_state = "bluealert"
fire_alarm_light_color = LIGHT_COLOR_ELECTRIC_CYAN
@@ -80,7 +80,7 @@
/datum/security_level/red
name = "red"
announcement_color = "red"
- sound = 'sound/misc/notice3.ogg' // More angry alarm
+ sound = 'sound/announcer/notice/notice3.ogg' // More angry alarm
number_level = SEC_LEVEL_RED
status_display_icon_state = "redalert"
fire_alarm_light_color = LIGHT_COLOR_FLARE
@@ -96,7 +96,7 @@
/datum/security_level/delta
name = "delta"
announcement_color = "purple"
- sound = 'sound/misc/airraid.ogg' // Air alarm to signify importance
+ sound = 'sound/announcer/alarm/airraid.ogg' // Air alarm to signify importance
number_level = SEC_LEVEL_DELTA
status_display_icon_state = "deltaalert"
fire_alarm_light_color = LIGHT_COLOR_INTENSE_RED
diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm
index d9a21cf5e2363..75baee5c39260 100644
--- a/code/modules/shuttle/assault_pod.dm
+++ b/code/modules/shuttle/assault_pod.dm
@@ -10,7 +10,7 @@
/obj/docking_port/mobile/assault_pod/initiate_docking(obj/docking_port/stationary/S1)
. = ..()
if(!istype(S1, /obj/docking_port/stationary/transit))
- playsound(get_turf(src.loc), 'sound/effects/explosion1.ogg',50,TRUE)
+ playsound(get_turf(src.loc), 'sound/effects/explosion/explosion1.ogg',50,TRUE)
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 5d2242a614407..8e59c63cfbd70 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -136,7 +136,7 @@
minor_announce("Early launch authorization revoked, [remaining] authorizations needed")
acted_recently += user
- ui_interact(user)
+ SStgui.update_user_uis(user, src)
/obj/machinery/computer/emergency_shuttle/proc/authorize(mob/living/user, source)
var/obj/item/card/id/ID = user.get_idcard(TRUE)
@@ -159,7 +159,7 @@
/obj/machinery/computer/emergency_shuttle/proc/clear_recent_action(mob/user)
acted_recently -= user
if (!QDELETED(user))
- ui_interact(user)
+ SStgui.update_user_uis(user, src)
/obj/machinery/computer/emergency_shuttle/process()
// Launch check is in process in case auth_need changes for some reason
@@ -599,7 +599,7 @@
destination_dock = "emergency_syndicate"
minor_announce("Corruption detected in \
shuttle navigation protocols. Please contact your \
- supervisor.", "SYSTEM ERROR:", sound_override = 'sound/misc/announce_syndi.ogg')
+ supervisor.", "SYSTEM ERROR:", sound_override = 'sound/announcer/announcement/announce_syndi.ogg')
dock_id(destination_dock)
mode = SHUTTLE_ENDGAME
diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm
index d3184cc96c62f..88272f6727659 100644
--- a/code/modules/shuttle/navigation_computer.dm
+++ b/code/modules/shuttle/navigation_computer.dm
@@ -358,7 +358,7 @@
var/mob/camera/ai_eye/remote/remote_eye = owner.remote_control
var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin
- playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, FALSE)
+ playsound(console, 'sound/machines/terminal/terminal_prompt_deny.ogg', 25, FALSE)
var/list/L = list()
for(var/V in SSshuttle.stationary_docking_ports)
@@ -383,10 +383,10 @@
else
L["([L.len]) [nav_beacon.name] locked"] = null
- playsound(console, 'sound/machines/terminal_prompt.ogg', 25, FALSE)
+ playsound(console, 'sound/machines/terminal/terminal_prompt.ogg', 25, FALSE)
var/selected = tgui_input_list(usr, "Choose location to jump to", "Locations", sort_list(L))
if(isnull(selected))
- playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, FALSE)
+ playsound(console, 'sound/machines/terminal/terminal_prompt_deny.ogg', 25, FALSE)
return
if(QDELETED(src) || QDELETED(owner) || !isliving(owner))
return
@@ -394,7 +394,7 @@
var/turf/T = get_turf(L[selected])
if(isnull(T))
return
- playsound(console, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE)
+ playsound(console, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 25, FALSE)
remote_eye.setLoc(T)
to_chat(owner, span_notice("Jumped to [selected]."))
owner.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm
index 08e0b0d269950..565655a441602 100644
--- a/code/modules/shuttle/syndicate.dm
+++ b/code/modules/shuttle/syndicate.dm
@@ -62,8 +62,8 @@
shuttlePortId = "syndicate_custom"
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1)
view_range = 5.5
- x_offset = -7
- y_offset = -1
+ x_offset = 7 //flip both offsets because the shuttle is mapped in facing SOUTH, not NORTH; the docking port is also rotated
+ y_offset = 1
whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava, /turf/closed/mineral, /turf/open/openspace, /turf/open/misc)
see_hidden = TRUE
circuit = /obj/item/circuitboard/computer/syndicate_shuttle_docker
diff --git a/code/modules/spells/spell_types/aoe_spell/area_conversion.dm b/code/modules/spells/spell_types/aoe_spell/area_conversion.dm
index a03b4c9ab21a4..ed3598d2fb5cc 100644
--- a/code/modules/spells/spell_types/aoe_spell/area_conversion.dm
+++ b/code/modules/spells/spell_types/aoe_spell/area_conversion.dm
@@ -19,5 +19,5 @@
return RANGE_TURFS(aoe_radius, center)
/datum/action/cooldown/spell/aoe/area_conversion/cast_on_thing_in_aoe(turf/victim, atom/caster)
- playsound(victim, 'sound/items/welder.ogg', 75, TRUE)
+ playsound(victim, 'sound/items/tools/welder.ogg', 75, TRUE)
victim.narsie_act(FALSE, TRUE, 100 - (get_dist(victim, caster) * 25))
diff --git a/code/modules/spells/spell_types/aoe_spell/knock.dm b/code/modules/spells/spell_types/aoe_spell/knock.dm
index ede1462633b03..8e4f453b5d646 100644
--- a/code/modules/spells/spell_types/aoe_spell/knock.dm
+++ b/code/modules/spells/spell_types/aoe_spell/knock.dm
@@ -3,7 +3,7 @@
desc = "This spell opens nearby doors and closets."
button_icon_state = "knock"
- sound = 'sound/magic/knock.ogg'
+ sound = 'sound/effects/magic/knock.ogg'
school = SCHOOL_TRANSMUTATION
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 2 SECONDS
diff --git a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
index 18278fb593a94..02f19f45323c2 100644
--- a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
+++ b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
@@ -2,7 +2,7 @@
name = "Magic Missile"
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
button_icon_state = "magicm"
- sound = 'sound/magic/magic_missile.ogg'
+ sound = 'sound/effects/magic/magic_missile.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 20 SECONDS
diff --git a/code/modules/spells/spell_types/aoe_spell/repulse.dm b/code/modules/spells/spell_types/aoe_spell/repulse.dm
index 259f20ee9ba0a..c56ffd1180b4c 100644
--- a/code/modules/spells/spell_types/aoe_spell/repulse.dm
+++ b/code/modules/spells/spell_types/aoe_spell/repulse.dm
@@ -73,7 +73,7 @@
name = "Repulse"
desc = "This spell throws everything around the user away."
button_icon_state = "repulse"
- sound = 'sound/magic/repulse.ogg'
+ sound = 'sound/effects/magic/repulse.ogg'
school = SCHOOL_EVOCATION
invocation = "GITTAH WEIGH"
@@ -91,7 +91,7 @@
button_icon = 'icons/mob/actions/actions_xeno.dmi'
button_icon_state = "tailsweep"
panel = "Alien"
- sound = 'sound/magic/tail_swing.ogg'
+ sound = 'sound/effects/magic/tail_swing.ogg'
cooldown_time = 15 SECONDS
spell_requirements = NONE
@@ -106,7 +106,7 @@
/datum/action/cooldown/spell/aoe/repulse/xeno/cast(atom/cast_on)
if(iscarbon(cast_on))
var/mob/living/carbon/carbon_caster = cast_on
- playsound(get_turf(carbon_caster), 'sound/voice/hiss5.ogg', 80, TRUE, TRUE)
+ playsound(get_turf(carbon_caster), 'sound/mobs/non-humanoids/hiss/hiss5.ogg', 80, TRUE, TRUE)
carbon_caster.spin(6, 1)
return ..()
diff --git a/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm b/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
index 450544a7a1f66..e0041525839dd 100644
--- a/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
+++ b/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
@@ -2,7 +2,7 @@
name = "Sacred Flame"
desc = "Makes everyone around you more flammable, and lights yourself on fire."
button_icon_state = "sacredflame"
- sound = 'sound/magic/fireball.ogg'
+ sound = 'sound/effects/magic/fireball.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 6 SECONDS
diff --git a/code/modules/spells/spell_types/charged/tesla_blast.dm b/code/modules/spells/spell_types/charged/tesla_blast.dm
index efad0e4a69241..84f9cba8153bc 100644
--- a/code/modules/spells/spell_types/charged/tesla_blast.dm
+++ b/code/modules/spells/spell_types/charged/tesla_blast.dm
@@ -3,7 +3,7 @@
desc = "Charge up a tesla arc and release it at random nearby targets! \
You can move freely while it charges. The arc jumps between targets and can knock them down."
button_icon_state = "lightning"
- sound = 'sound/magic/lightningbolt.ogg'
+ sound = 'sound/effects/magic/lightningbolt.ogg'
cooldown_time = 30 SECONDS
cooldown_reduction_per_rank = 6.75 SECONDS
@@ -15,7 +15,7 @@
channel_message = span_notice("You start gathering power...")
charge_overlay_icon = 'icons/effects/effects.dmi'
charge_overlay_state = "electricity"
- charge_sound = 'sound/magic/lightning_chargeup.ogg'
+ charge_sound = 'sound/effects/magic/lightning_chargeup.ogg'
target_radius = 7
max_beam_bounces = 5
@@ -27,7 +27,7 @@
/// Zaps a target, the bolt originating from origin.
/datum/action/cooldown/spell/charged/beam/tesla/send_beam(atom/origin, mob/living/carbon/to_beam, bolt_energy = 30, bounces = 5)
origin.Beam(to_beam, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS)
- playsound(get_turf(to_beam), 'sound/magic/lightningshock.ogg', 50, TRUE, -1)
+ playsound(get_turf(to_beam), 'sound/effects/magic/lightningshock.ogg', 50, TRUE, -1)
if(to_beam.can_block_magic(antimagic_flags))
to_beam.visible_message(
diff --git a/code/modules/spells/spell_types/conjure/_conjure.dm b/code/modules/spells/spell_types/conjure/_conjure.dm
index 99f0c5af821d5..5501f1055ca2e 100644
--- a/code/modules/spells/spell_types/conjure/_conjure.dm
+++ b/code/modules/spells/spell_types/conjure/_conjure.dm
@@ -1,5 +1,5 @@
/datum/action/cooldown/spell/conjure
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
school = SCHOOL_CONJURATION
/// The radius around the caster the items will appear. 0 = spawns on top of the caster.
diff --git a/code/modules/spells/spell_types/conjure/bees.dm b/code/modules/spells/spell_types/conjure/bees.dm
index 58062f1e8fe98..28636cde70967 100644
--- a/code/modules/spells/spell_types/conjure/bees.dm
+++ b/code/modules/spells/spell_types/conjure/bees.dm
@@ -4,7 +4,7 @@
instantly summoning a swarm of bees to your location. \
These bees are NOT friendly to anyone."
button_icon_state = "bee"
- sound = 'sound/voice/moth/scream_moth.ogg'
+ sound = 'sound/mobs/humanoids/moth/scream_moth.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 1 MINUTES
diff --git a/code/modules/spells/spell_types/conjure/carp.dm b/code/modules/spells/spell_types/conjure/carp.dm
index 5411030e75cb1..8525791405108 100644
--- a/code/modules/spells/spell_types/conjure/carp.dm
+++ b/code/modules/spells/spell_types/conjure/carp.dm
@@ -1,7 +1,7 @@
/datum/action/cooldown/spell/conjure/carp
name = "Summon Carp"
desc = "This spell conjures a simple carp."
- sound = 'sound/magic/summon_karp.ogg'
+ sound = 'sound/effects/magic/summon_karp.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 2 MINUTES
diff --git a/code/modules/spells/spell_types/conjure/cheese.dm b/code/modules/spells/spell_types/conjure/cheese.dm
index d9c90d1dbac34..c017ebb6c2039 100644
--- a/code/modules/spells/spell_types/conjure/cheese.dm
+++ b/code/modules/spells/spell_types/conjure/cheese.dm
@@ -1,7 +1,7 @@
/datum/action/cooldown/spell/conjure/cheese
name = "Summon Cheese"
desc = "This spell conjures a bunch of cheese wheels. What the hell?"
- sound = 'sound/magic/summonitems_generic.ogg'
+ sound = 'sound/effects/magic/summonitems_generic.ogg'
button_icon_state = "cheese"
school = SCHOOL_CONJURATION
diff --git a/code/modules/spells/spell_types/conjure/constructs.dm b/code/modules/spells/spell_types/conjure/constructs.dm
index 2af3034f07881..72381d0693a37 100644
--- a/code/modules/spells/spell_types/conjure/constructs.dm
+++ b/code/modules/spells/spell_types/conjure/constructs.dm
@@ -3,7 +3,7 @@
desc = "This spell conjures a construct which may be controlled by Shades."
button_icon = 'icons/mob/actions/actions_cult.dmi'
button_icon_state = "artificer"
- sound = 'sound/magic/summonitems_generic.ogg'
+ sound = 'sound/effects/magic/summonitems_generic.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 1 MINUTES
diff --git a/code/modules/spells/spell_types/conjure/creatures.dm b/code/modules/spells/spell_types/conjure/creatures.dm
index 9aeede68a6654..1fcd11c579db8 100644
--- a/code/modules/spells/spell_types/conjure/creatures.dm
+++ b/code/modules/spells/spell_types/conjure/creatures.dm
@@ -1,7 +1,7 @@
/datum/action/cooldown/spell/conjure/creature
name = "Summon Creature Swarm"
desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth."
- sound = 'sound/magic/summonitems_generic.ogg'
+ sound = 'sound/effects/magic/summonitems_generic.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 2 MINUTES
diff --git a/code/modules/spells/spell_types/conjure/ed_swarm.dm b/code/modules/spells/spell_types/conjure/ed_swarm.dm
index db122e4c846a7..3341f3a6aace6 100644
--- a/code/modules/spells/spell_types/conjure/ed_swarm.dm
+++ b/code/modules/spells/spell_types/conjure/ed_swarm.dm
@@ -19,4 +19,4 @@
summoned_bot.bot_mode_flags |= BOT_COVER_EMAGGED
summoned_bot.projectile = /obj/projectile/beam/laser
- summoned_bot.shoot_sound = 'sound/weapons/laser.ogg'
+ summoned_bot.shoot_sound = 'sound/items/weapons/laser.ogg'
diff --git a/code/modules/spells/spell_types/conjure/link_worlds.dm b/code/modules/spells/spell_types/conjure/link_worlds.dm
index f227fc1a13e9a..242227c4d0a1d 100644
--- a/code/modules/spells/spell_types/conjure/link_worlds.dm
+++ b/code/modules/spells/spell_types/conjure/link_worlds.dm
@@ -1,15 +1,14 @@
/datum/action/cooldown/spell/conjure/link_worlds
name = "Link Worlds"
desc = "A whole new dimension for you to play with! They won't be happy about it, though."
-
- sound = 'sound/weapons/marauder.ogg'
+ sound = 'sound/items/weapons/marauder.ogg'
+ button_icon = 'icons/mob/simple/lavaland/nest.dmi'
+ button_icon_state = "nether"
cooldown_time = 1 MINUTES
cooldown_reduction_per_rank = 10 SECONDS
-
- invocation = "WTF"
+ invocation = "FL'NT N' ST'L"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
-
summon_radius = 1
summon_type = list(/obj/structure/spawner/nether)
summon_amount = 1
diff --git a/code/modules/spells/spell_types/conjure/simian.dm b/code/modules/spells/spell_types/conjure/simian.dm
index 9fef5629d0379..b64a34f847ea7 100644
--- a/code/modules/spells/spell_types/conjure/simian.dm
+++ b/code/modules/spells/spell_types/conjure/simian.dm
@@ -4,7 +4,7 @@
summons monkeys and gorillas that will promptly flip out and attack everything in sight. Fun! \
Their lesser, easily manipulable minds will be convinced you are one of their allies, but only for a minute. Unless you also are a monkey."
button_icon_state = "simian"
- sound = 'sound/ambience/antag/monkey.ogg'
+ sound = 'sound/music/antag/monkey.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 1.5 MINUTES
diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
index f61e48e889672..2795efc2b201b 100644
--- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
+++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm
@@ -101,7 +101,7 @@
jaunter.put_in_hands(right_hand)
blood.visible_message(span_warning("[jaunter] sinks into [blood]!"))
- playsound(jaunt_turf, 'sound/magic/enter_blood.ogg', 50, TRUE, -1)
+ playsound(jaunt_turf, 'sound/effects/magic/enter_blood.ogg', 50, TRUE, -1)
jaunter.extinguish_mob()
REMOVE_TRAIT(jaunter, TRAIT_NO_TRANSFORM, REF(src))
@@ -140,7 +140,7 @@
/// Adds an coloring effect to mobs which exit blood crawl.
/datum/action/cooldown/spell/jaunt/bloodcrawl/proc/exit_blood_effect(mob/living/exited)
var/turf/landing_turf = get_turf(exited)
- playsound(landing_turf, 'sound/magic/exit_blood.ogg', 50, TRUE, -1)
+ playsound(landing_turf, 'sound/effects/magic/exit_blood.ogg', 50, TRUE, -1)
// Make the mob have the color of the blood pool it came out of
var/obj/effect/decal/cleanable/came_from = locate() in landing_turf
@@ -161,7 +161,7 @@
desc = "Allows you to phase in and out of existance via pools of blood. If you are dragging someone in critical or dead, \
they will be consumed by you, fully healing you."
/// The sound played when someone's consumed.
- var/consume_sound = 'sound/magic/demon_consume.ogg'
+ var/consume_sound = 'sound/effects/magic/demon_consume.ogg'
/// consume count (statistics and stuff)
var/consume_count = 0
/// Apply damage every 20 seconds if we bloodcrawling
diff --git a/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm b/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm
index 43e1f9036ee43..e020ec1d5b16f 100644
--- a/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/jaunt/ethereal_jaunt.dm
@@ -2,14 +2,14 @@
name = "Ethereal Jaunt"
desc = "This spell turns your form ethereal, temporarily making you invisible and able to pass through walls."
button_icon_state = "jaunt"
- sound = 'sound/magic/ethereal_enter.ogg'
+ sound = 'sound/effects/magic/ethereal_enter.ogg'
cooldown_time = 30 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
jaunt_type = /obj/effect/dummy/phased_mob/spell_jaunt
- var/exit_jaunt_sound = 'sound/magic/ethereal_exit.ogg'
+ var/exit_jaunt_sound = 'sound/effects/magic/ethereal_exit.ogg'
/// For how long are we jaunting?
var/jaunt_duration = 5 SECONDS
/// For how long we become immobilized after exiting the jaunt.
diff --git a/code/modules/spells/spell_types/list_target/telepathy.dm b/code/modules/spells/spell_types/list_target/telepathy.dm
index 861fc49732dfc..9f3694c03b41b 100644
--- a/code/modules/spells/spell_types/list_target/telepathy.dm
+++ b/code/modules/spells/spell_types/list_target/telepathy.dm
@@ -48,7 +48,7 @@
to_chat(cast_on, "You hear a voice in your head... [formatted_message]")
else
owner.balloon_alert(owner, "transmission blocked!")
- to_chat(owner, "Something has blocked your transmission!")
+ to_chat(owner, span_warning("Something has blocked your transmission!"))
failure_message_for_ghosts = " (blocked by antimagic)"
for(var/mob/dead/ghost as anything in GLOB.dead_mob_list)
diff --git a/code/modules/spells/spell_types/madness_curse.dm b/code/modules/spells/spell_types/madness_curse.dm
index 91122b387bba9..d186756b1c10e 100644
--- a/code/modules/spells/spell_types/madness_curse.dm
+++ b/code/modules/spells/spell_types/madness_curse.dm
@@ -22,7 +22,7 @@ GLOBAL_VAR_INIT(curse_of_madness_triggered, FALSE)
give_madness(to_curse, message)
/proc/give_madness(mob/living/carbon/human/to_curse, message)
- to_curse.playsound_local(get_turf(to_curse), 'sound/magic/curse.ogg', 40, 1)
+ to_curse.playsound_local(get_turf(to_curse), 'sound/effects/magic/curse.ogg', 40, 1)
to_chat(to_curse, span_reallybig(span_hypnophrase(message)))
to_chat(to_curse, span_warning("Your mind shatters!"))
switch(rand(1, 10))
diff --git a/code/modules/spells/spell_types/pointed/_pointed.dm b/code/modules/spells/spell_types/pointed/_pointed.dm
index edf3dab2179d4..9189106d87424 100644
--- a/code/modules/spells/spell_types/pointed/_pointed.dm
+++ b/code/modules/spells/spell_types/pointed/_pointed.dm
@@ -143,7 +143,7 @@
var/turf/caster_front_turf = get_step(owner, owner.dir)
fire_projectile(cast_on)
- owner.newtonian_move(get_dir(caster_front_turf, caster_turf))
+ owner.newtonian_move(get_angle(caster_front_turf, caster_turf))
if(current_amount <= 0)
unset_click_ability(owner, refund_cooldown = FALSE)
diff --git a/code/modules/spells/spell_types/pointed/abyssal_gaze.dm b/code/modules/spells/spell_types/pointed/abyssal_gaze.dm
index a7336ef7834aa..a117e577e463c 100644
--- a/code/modules/spells/spell_types/pointed/abyssal_gaze.dm
+++ b/code/modules/spells/spell_types/pointed/abyssal_gaze.dm
@@ -34,7 +34,7 @@
return FALSE
to_chat(cast_on, span_userdanger("A freezing darkness surrounds you..."))
- cast_on.playsound_local(get_turf(cast_on), 'sound/hallucinations/i_see_you1.ogg', 50, 1)
+ cast_on.playsound_local(get_turf(cast_on), 'sound/effects/hallucinations/i_see_you1.ogg', 50, 1)
owner.playsound_local(get_turf(owner), 'sound/effects/ghost2.ogg', 50, 1)
cast_on.adjust_temp_blindness(blind_duration)
if(ishuman(cast_on))
diff --git a/code/modules/spells/spell_types/pointed/blind.dm b/code/modules/spells/spell_types/pointed/blind.dm
index 982cb9be5346e..208564d250a84 100644
--- a/code/modules/spells/spell_types/pointed/blind.dm
+++ b/code/modules/spells/spell_types/pointed/blind.dm
@@ -4,7 +4,7 @@
button_icon_state = "blind"
ranged_mousepointer = 'icons/effects/mouse_pointers/blind_target.dmi'
- sound = 'sound/magic/blind.ogg'
+ sound = 'sound/effects/magic/blind.ogg'
school = SCHOOL_TRANSMUTATION
cooldown_time = 30 SECONDS
cooldown_reduction_per_rank = 6.25 SECONDS
diff --git a/code/modules/spells/spell_types/pointed/fireball.dm b/code/modules/spells/spell_types/pointed/fireball.dm
index e818de97501db..52b80b8ad6411 100644
--- a/code/modules/spells/spell_types/pointed/fireball.dm
+++ b/code/modules/spells/spell_types/pointed/fireball.dm
@@ -3,7 +3,7 @@
desc = "This spell fires an explosive fireball at a target."
button_icon_state = "fireball0"
- sound = 'sound/magic/fireball.ogg'
+ sound = 'sound/effects/magic/fireball.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 6 SECONDS
cooldown_reduction_per_rank = 1 SECONDS // 1 second reduction per rank
diff --git a/code/modules/spells/spell_types/pointed/lightning_bolt.dm b/code/modules/spells/spell_types/pointed/lightning_bolt.dm
index 76d9665e71107..fcbc3f8c91d70 100644
--- a/code/modules/spells/spell_types/pointed/lightning_bolt.dm
+++ b/code/modules/spells/spell_types/pointed/lightning_bolt.dm
@@ -4,7 +4,7 @@
button_icon_state = "lightning"
active_overlay_icon_state = "bg_spell_border_active_yellow"
- sound = 'sound/magic/lightningbolt.ogg'
+ sound = 'sound/effects/magic/lightningbolt.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 2 SECONDS
diff --git a/code/modules/spells/spell_types/pointed/mind_transfer.dm b/code/modules/spells/spell_types/pointed/mind_transfer.dm
index fa401c3b432f6..d779933b01acd 100644
--- a/code/modules/spells/spell_types/pointed/mind_transfer.dm
+++ b/code/modules/spells/spell_types/pointed/mind_transfer.dm
@@ -9,6 +9,7 @@
cooldown_reduction_per_rank = 10 SECONDS
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC|SPELL_REQUIRES_MIND|SPELL_CASTABLE_AS_BRAIN
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
+ check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_PHASED|AB_CHECK_OPEN_TURF
invocation = "GIN'YU CAPAN"
invocation_type = INVOCATION_WHISPER
@@ -137,7 +138,7 @@
// Only the caster and victim hear the sounds,
// that way no one knows for sure if the swap happened
- SEND_SOUND(caster, sound('sound/magic/mandswap.ogg'))
- SEND_SOUND(to_swap, sound('sound/magic/mandswap.ogg'))
+ SEND_SOUND(caster, sound('sound/effects/magic/mandswap.ogg'))
+ SEND_SOUND(to_swap, sound('sound/effects/magic/mandswap.ogg'))
return TRUE
diff --git a/code/modules/spells/spell_types/pointed/swap.dm b/code/modules/spells/spell_types/pointed/swap.dm
index 6b4a5e45e1437..884504efc8edc 100644
--- a/code/modules/spells/spell_types/pointed/swap.dm
+++ b/code/modules/spells/spell_types/pointed/swap.dm
@@ -82,12 +82,12 @@
do_teleport(second_target, owner.loc, no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
do_teleport(cast_on, second_location, no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
do_teleport(owner, target_location, no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
- second_target.playsound_local(get_turf(second_target), 'sound/magic/swap.ogg', 50, 1)
- cast_on.playsound_local(get_turf(cast_on), 'sound/magic/swap.ogg', 50, 1)
- owner.playsound_local(get_turf(owner), 'sound/magic/swap.ogg', 50, 1)
+ second_target.playsound_local(get_turf(second_target), 'sound/effects/magic/swap.ogg', 50, 1)
+ cast_on.playsound_local(get_turf(cast_on), 'sound/effects/magic/swap.ogg', 50, 1)
+ owner.playsound_local(get_turf(owner), 'sound/effects/magic/swap.ogg', 50, 1)
else
do_teleport(cast_on, owner.loc, no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
do_teleport(owner, target_location, no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC)
- cast_on.playsound_local(get_turf(cast_on), 'sound/magic/swap.ogg', 50, 1)
- owner.playsound_local(get_turf(owner), 'sound/magic/swap.ogg', 50, 1)
+ cast_on.playsound_local(get_turf(cast_on), 'sound/effects/magic/swap.ogg', 50, 1)
+ owner.playsound_local(get_turf(owner), 'sound/effects/magic/swap.ogg', 50, 1)
second_target = null
diff --git a/code/modules/spells/spell_types/pointed/tie_shoes.dm b/code/modules/spells/spell_types/pointed/tie_shoes.dm
index 5783717d0e72b..b8efafaf3ba92 100644
--- a/code/modules/spells/spell_types/pointed/tie_shoes.dm
+++ b/code/modules/spells/spell_types/pointed/tie_shoes.dm
@@ -63,7 +63,7 @@
cast_on.balloon_alert_to_viewers("magically tied!")
else
cast_on.balloon_alert(owner, "magically tied!")
- playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ playsound(cast_on, 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
return TRUE
var/shoe_to_cast = /obj/item/clothing/shoes/sneakers/random
@@ -86,7 +86,7 @@
return FALSE
if(invocation_type != INVOCATION_NONE)
- playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ playsound(cast_on, 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
switch(shoes_to_tie.tied)
if(SHOES_TIED)
@@ -96,7 +96,7 @@
cast_on.balloon_alert(owner, "laced!")
shoes_to_tie.can_be_tied = TRUE
if(invocation_type != INVOCATION_NONE)
- playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ playsound(cast_on, 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
return TRUE
else
to_chat(owner, span_warning("[cast_on] is wearing laceless shoes!"))
diff --git a/code/modules/spells/spell_types/projectile/juggernaut.dm b/code/modules/spells/spell_types/projectile/juggernaut.dm
index 11a2cbb9a15f6..8d339298a3779 100644
--- a/code/modules/spells/spell_types/projectile/juggernaut.dm
+++ b/code/modules/spells/spell_types/projectile/juggernaut.dm
@@ -6,7 +6,7 @@
background_icon_state = "bg_demon"
overlay_icon_state = "bg_demon_border"
- sound = 'sound/weapons/resonator_blast.ogg'
+ sound = 'sound/items/weapons/resonator_blast.ogg'
cooldown_time = 35 SECONDS
spell_requirements = NONE
diff --git a/code/modules/spells/spell_types/right_and_wrong.dm b/code/modules/spells/spell_types/right_and_wrong.dm
index 306770c074f43..cafea93fce691 100644
--- a/code/modules/spells/spell_types/right_and_wrong.dm
+++ b/code/modules/spells/spell_types/right_and_wrong.dm
@@ -125,7 +125,7 @@ GLOBAL_LIST_INIT(summoned_magic_objectives, list(
var/obj/item/gun/spawned_gun = new gun_type(get_turf(to_equip))
if (istype(spawned_gun)) // The list may contain some non-gun type guns which do not have this proc
spawned_gun.unlock()
- playsound(get_turf(to_equip), 'sound/magic/summon_guns.ogg', 50, TRUE)
+ playsound(get_turf(to_equip), 'sound/effects/magic/summon_guns.ogg', 50, TRUE)
var/in_hand = to_equip.put_in_hands(spawned_gun) // not always successful
@@ -149,7 +149,7 @@ GLOBAL_LIST_INIT(summoned_magic_objectives, list(
var/magic_type = prob(SPECIALIST_MAGIC_PROB) ? pick(GLOB.summoned_special_magic) : pick(GLOB.summoned_magic)
var/obj/item/spawned_magic = new magic_type(get_turf(to_equip))
- playsound(get_turf(to_equip), 'sound/magic/summon_magic.ogg', 50, TRUE)
+ playsound(get_turf(to_equip), 'sound/effects/magic/summon_magic.ogg', 50, TRUE)
var/in_hand = to_equip.put_in_hands(spawned_magic)
diff --git a/code/modules/spells/spell_types/self/basic_heal.dm b/code/modules/spells/spell_types/self/basic_heal.dm
index f68403ddeeb3f..d22b38cba8be8 100644
--- a/code/modules/spells/spell_types/self/basic_heal.dm
+++ b/code/modules/spells/spell_types/self/basic_heal.dm
@@ -3,7 +3,7 @@
name = "Lesser Heal"
desc = "Heals a small amount of brute and burn damage to the caster."
- sound = 'sound/magic/staff_healing.ogg'
+ sound = 'sound/effects/magic/staff_healing.ogg'
school = SCHOOL_RESTORATION
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 1.25 SECONDS
diff --git a/code/modules/spells/spell_types/self/charge.dm b/code/modules/spells/spell_types/self/charge.dm
index 87d7ae287d337..af345f8cb13b5 100644
--- a/code/modules/spells/spell_types/self/charge.dm
+++ b/code/modules/spells/spell_types/self/charge.dm
@@ -5,7 +5,7 @@
to grant magical power to a fellow magic user."
button_icon_state = "charge"
- sound = 'sound/magic/charge.ogg'
+ sound = 'sound/effects/magic/charge.ogg'
school = SCHOOL_TRANSMUTATION
cooldown_time = 60 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
diff --git a/code/modules/spells/spell_types/self/disable_tech.dm b/code/modules/spells/spell_types/self/disable_tech.dm
index 4a1ab1b0eda12..c357ef9a74963 100644
--- a/code/modules/spells/spell_types/self/disable_tech.dm
+++ b/code/modules/spells/spell_types/self/disable_tech.dm
@@ -2,7 +2,7 @@
name = "Emplosion"
desc = "This spell causes an EMP in an area."
button_icon_state = "emp"
- sound = 'sound/weapons/zapbang.ogg'
+ sound = 'sound/items/weapons/zapbang.ogg'
school = SCHOOL_EVOCATION
@@ -18,7 +18,7 @@
/datum/action/cooldown/spell/emp/disable_tech
name = "Disable Tech"
desc = "This spell disables all weapons, cameras and most other technology in range."
- sound = 'sound/magic/disable_tech.ogg'
+ sound = 'sound/effects/magic/disable_tech.ogg'
cooldown_time = 40 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
diff --git a/code/modules/spells/spell_types/self/forcewall.dm b/code/modules/spells/spell_types/self/forcewall.dm
index 761860f4099f7..3bacb58e6a05b 100644
--- a/code/modules/spells/spell_types/self/forcewall.dm
+++ b/code/modules/spells/spell_types/self/forcewall.dm
@@ -3,7 +3,7 @@
desc = "Create a magical barrier that only you can pass through."
button_icon_state = "shield"
- sound = 'sound/magic/forcewall.ogg'
+ sound = 'sound/effects/magic/forcewall.ogg'
school = SCHOOL_TRANSMUTATION
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 1.25 SECONDS
diff --git a/code/modules/spells/spell_types/self/mutate.dm b/code/modules/spells/spell_types/self/mutate.dm
index 7ebd9ab4d1bfe..cb976875decef 100644
--- a/code/modules/spells/spell_types/self/mutate.dm
+++ b/code/modules/spells/spell_types/self/mutate.dm
@@ -1,7 +1,7 @@
/// A spell type that adds mutations to the caster temporarily.
/datum/action/cooldown/spell/apply_mutations
button_icon_state = "mutate"
- sound = 'sound/magic/mutate.ogg'
+ sound = 'sound/effects/magic/mutate.ogg'
school = SCHOOL_TRANSMUTATION
diff --git a/code/modules/spells/spell_types/self/sanguine_strike.dm b/code/modules/spells/spell_types/self/sanguine_strike.dm
index 4c819a69690ab..64cb2a11d6a36 100644
--- a/code/modules/spells/spell_types/self/sanguine_strike.dm
+++ b/code/modules/spells/spell_types/self/sanguine_strike.dm
@@ -9,7 +9,7 @@
desc = "Enchants your next weapon strike to deal more damage, heal you for damage dealt, and refill blood."
button_icon_state = "charge"
- sound = 'sound/magic/charge.ogg'
+ sound = 'sound/effects/magic/charge.ogg'
// makes this spell not take blood from splattercasting
school = SCHOOL_SANGUINE
cooldown_time = 60 SECONDS
@@ -67,7 +67,7 @@
if(living_target.blood_volume < BLOOD_VOLUME_SURVIVE)
return
playsound(target, 'sound/effects/wounds/crackandbleed.ogg', 100)
- playsound(target, 'sound/magic/charge.ogg', 100)
+ playsound(target, 'sound/effects/magic/charge.ogg', 100)
var/attack_direction = get_dir(user, living_target)
if(iscarbon(living_target))
var/mob/living/carbon/carbon_target = living_target
diff --git a/code/modules/spells/spell_types/self/summonitem.dm b/code/modules/spells/spell_types/self/summonitem.dm
index ab99f35271d3c..4165781c3668f 100644
--- a/code/modules/spells/spell_types/self/summonitem.dm
+++ b/code/modules/spells/spell_types/self/summonitem.dm
@@ -168,7 +168,7 @@
item_to_retrieve.loc.visible_message(span_warning("[item_to_retrieve] suddenly appears!"))
SEND_SIGNAL(item_to_retrieve, COMSIG_MAGIC_RECALL, caster, item_to_retrieve)
- playsound(get_turf(item_to_retrieve), 'sound/magic/summonitems_generic.ogg', 50, TRUE)
+ playsound(get_turf(item_to_retrieve), 'sound/effects/magic/summonitems_generic.ogg', 50, TRUE)
/datum/action/cooldown/spell/summonitem/abductor
name = "Baton Recall"
diff --git a/code/modules/spells/spell_types/self/voice_of_god.dm b/code/modules/spells/spell_types/self/voice_of_god.dm
index e7602a214f18f..3db16f400811b 100644
--- a/code/modules/spells/spell_types/self/voice_of_god.dm
+++ b/code/modules/spells/spell_types/self/voice_of_god.dm
@@ -3,7 +3,7 @@
desc = "Speak with an incredibly compelling voice, forcing listeners to obey your commands."
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "voice_of_god"
- sound = 'sound/magic/clockwork/invoke_general.ogg'
+ sound = 'sound/effects/magic/clockwork/invoke_general.ogg'
cooldown_time = 120 SECONDS // Varies depending on command
invocation = "" // Handled by the VOICE OF GOD itself
diff --git a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
index b7542d4077f3c..a01faa1002dd2 100644
--- a/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift/_shapeshift.dm
@@ -126,7 +126,7 @@
for(var/obj/machinery/atmospherics/components/unary/possible_vent in range(10, get_turf(cast_on)))
if(length(possible_vent.parents) && possible_vent.parents[1] == our_pipeline)
new gib_type(get_turf(possible_vent))
- playsound(possible_vent, 'sound/effects/reee.ogg', 75, TRUE)
+ playsound(possible_vent, 'sound/mobs/non-humanoids/frog/reee.ogg', 75, TRUE)
priority_announce("We detected a pipe blockage around [get_area(get_turf(cast_on))], please dispatch someone to investigate.", "[command_name()]")
// Gib our caster, and make sure to leave nothing behind
diff --git a/code/modules/spells/spell_types/teleport/_teleport.dm b/code/modules/spells/spell_types/teleport/_teleport.dm
index fd6e02cdfb330..9262d21f3e29e 100644
--- a/code/modules/spells/spell_types/teleport/_teleport.dm
+++ b/code/modules/spells/spell_types/teleport/_teleport.dm
@@ -5,7 +5,7 @@
* Teleports the caster to a turf selected by get_destinations().
*/
/datum/action/cooldown/spell/teleport
- sound = 'sound/weapons/zapbang.ogg'
+ sound = 'sound/items/weapons/zapbang.ogg'
school = SCHOOL_TRANSLOCATION
@@ -16,7 +16,7 @@
/// A list of flags related to determining if our destination target is valid or not.
var/destination_flags = NONE
/// The sound played on arrival, after the teleport.
- var/post_teleport_sound = 'sound/weapons/zapbang.ogg'
+ var/post_teleport_sound = 'sound/items/weapons/zapbang.ogg'
/datum/action/cooldown/spell/teleport/cast(atom/cast_on)
. = ..()
diff --git a/code/modules/spells/spell_types/teleport/blink.dm b/code/modules/spells/spell_types/teleport/blink.dm
index 04c17a0e77523..18531949a5312 100644
--- a/code/modules/spells/spell_types/teleport/blink.dm
+++ b/code/modules/spells/spell_types/teleport/blink.dm
@@ -2,7 +2,7 @@
name = "Blink"
desc = "This spell randomly teleports you a short distance."
button_icon_state = "blink"
- sound = 'sound/magic/blink.ogg'
+ sound = 'sound/effects/magic/blink.ogg'
school = SCHOOL_TRANSLOCATION
cooldown_time = 2 SECONDS
@@ -16,4 +16,4 @@
inner_tele_radius = 0
outer_tele_radius = 6
- post_teleport_sound = 'sound/magic/blink.ogg'
+ post_teleport_sound = 'sound/effects/magic/blink.ogg'
diff --git a/code/modules/spells/spell_types/teleport/teleport.dm b/code/modules/spells/spell_types/teleport/teleport.dm
index 57e88b9852025..eaf7110980815 100644
--- a/code/modules/spells/spell_types/teleport/teleport.dm
+++ b/code/modules/spells/spell_types/teleport/teleport.dm
@@ -3,7 +3,7 @@
name = "Teleport"
desc = "This spell teleports you to an area of your selection."
button_icon_state = "teleport"
- sound = 'sound/magic/teleport_diss.ogg'
+ sound = 'sound/effects/magic/teleport_diss.ogg'
school = SCHOOL_TRANSLOCATION
cooldown_time = 1 MINUTES
@@ -16,7 +16,7 @@
smoke_type = /datum/effect_system/fluid_spread/smoke
smoke_amt = 2
- post_teleport_sound = 'sound/magic/teleport_app.ogg'
+ post_teleport_sound = 'sound/effects/magic/teleport_app.ogg'
// Santa's teleport, themed as such
/datum/action/cooldown/spell/teleport/area_teleport/wizard/santa
diff --git a/code/modules/spells/spell_types/touch/_touch.dm b/code/modules/spells/spell_types/touch/_touch.dm
index d1adc9619be27..24eefe04d1020 100644
--- a/code/modules/spells/spell_types/touch/_touch.dm
+++ b/code/modules/spells/spell_types/touch/_touch.dm
@@ -20,7 +20,7 @@
*/
/datum/action/cooldown/spell/touch
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
- sound = 'sound/items/welder.ogg'
+ sound = 'sound/items/tools/welder.ogg'
invocation = "High Five!"
invocation_type = INVOCATION_SHOUT
@@ -170,10 +170,9 @@
SHOULD_NOT_OVERRIDE(TRUE) // DEFINITELY don't put effects here, put them in cast_on_hand_hit
if(!can_hit_with_hand(target, caster))
- return
+ return NONE
- INVOKE_ASYNC(src, PROC_REF(do_hand_hit), source, target, caster)
- return ITEM_INTERACT_SUCCESS
+ return do_hand_hit(source, target, caster)
/**
* Signal proc for [COMSIG_ITEM_INTERACTING_WITH_ATOM_SECONDARY] from our attached hand.
@@ -185,10 +184,9 @@
SHOULD_NOT_OVERRIDE(TRUE)
if(!can_hit_with_hand(target, caster))
- return
+ return NONE
- INVOKE_ASYNC(src, PROC_REF(do_secondary_hand_hit), source, target, caster)
- return ITEM_INTERACT_SUCCESS
+ return do_secondary_hand_hit(source, target, caster)
/// Checks if the passed victim can be cast on by the caster.
/datum/action/cooldown/spell/touch/proc/can_hit_with_hand(atom/victim, mob/living/caster)
@@ -220,14 +218,15 @@
on_antimagic_triggered(hand, victim, caster)
else if(!cast_on_hand_hit(hand, victim, caster))
- return
+ return NONE
log_combat(caster, victim, "cast the touch spell [name] on", hand)
- spell_feedback(caster)
+ INVOKE_ASYNC(src, PROC_REF(spell_feedback), caster)
caster.do_attack_animation(victim)
caster.changeNext_move(CLICK_CD_MELEE)
victim.add_fingerprint(caster)
remove_hand(caster)
+ return ITEM_INTERACT_SUCCESS
/**
* Calls do_secondary_hand_hit() from the caster onto the victim.
@@ -243,11 +242,12 @@
// Continue will remove the hand here and stop
if(SECONDARY_ATTACK_CONTINUE_CHAIN)
log_combat(caster, victim, "cast the touch spell [name] on", hand, "(secondary / alt cast)")
- spell_feedback(caster)
+ INVOKE_ASYNC(src, PROC_REF(spell_feedback), caster)
caster.do_attack_animation(victim)
caster.changeNext_move(CLICK_CD_MELEE)
victim.add_fingerprint(caster)
remove_hand(caster)
+ return ITEM_INTERACT_SUCCESS
// Call normal will call the normal cast proc
if(SECONDARY_ATTACK_CALL_NORMAL)
@@ -255,7 +255,7 @@
// Cancel chain will do nothing,
if(SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
- return
+ return NONE
/**
* The actual process of casting the spell on the victim from the caster.
diff --git a/code/modules/spells/spell_types/touch/duffelbag_curse.dm b/code/modules/spells/spell_types/touch/duffelbag_curse.dm
index f5ac8a6961deb..c4882ba5365f4 100644
--- a/code/modules/spells/spell_types/touch/duffelbag_curse.dm
+++ b/code/modules/spells/spell_types/touch/duffelbag_curse.dm
@@ -3,7 +3,7 @@
name = "Bestow Cursed Duffel Bag"
desc = "A spell that summons a duffel bag demon on the target, slowing them down and slowly eating them."
button_icon_state = "duffelbag_curse"
- sound = 'sound/magic/mm_hit.ogg'
+ sound = 'sound/effects/magic/mm_hit.ogg'
school = SCHOOL_CONJURATION
cooldown_time = 6 SECONDS
diff --git a/code/modules/spells/spell_types/touch/flesh_to_stone.dm b/code/modules/spells/spell_types/touch/flesh_to_stone.dm
index abc6066084236..dd4f622427f74 100644
--- a/code/modules/spells/spell_types/touch/flesh_to_stone.dm
+++ b/code/modules/spells/spell_types/touch/flesh_to_stone.dm
@@ -2,7 +2,7 @@
name = "Flesh to Stone"
desc = "This spell charges your hand with the power to turn victims into inert statues for a long period of time."
button_icon_state = "statue"
- sound = 'sound/magic/fleshtostone.ogg'
+ sound = 'sound/effects/magic/fleshtostone.ogg'
school = SCHOOL_TRANSMUTATION
cooldown_time = 1 MINUTES
diff --git a/code/modules/spells/spell_types/touch/smite.dm b/code/modules/spells/spell_types/touch/smite.dm
index 7bef97c8a6582..5bf90dff443a4 100644
--- a/code/modules/spells/spell_types/touch/smite.dm
+++ b/code/modules/spells/spell_types/touch/smite.dm
@@ -3,7 +3,7 @@
desc = "This spell charges your hand with an unholy energy \
that can be used to cause a touched victim to violently explode."
button_icon_state = "gib"
- sound = 'sound/magic/disintegrate.ogg'
+ sound = 'sound/effects/magic/disintegrate.ogg'
school = SCHOOL_EVOCATION
cooldown_time = 1 MINUTES
@@ -59,7 +59,7 @@
inhand_icon_state = "disintegrate"
/obj/item/melee/touch_attack/smite/suicide_act(mob/living/user)
-
+
user.visible_message(span_suicide("[user] spreads [user.p_their()] arms apart, lightning arcing between them! It looks like [user.p_theyre()] going out with a bang!"))
user.say("SHIA KAZING!!", forced = "smite suicide")
do_sparks(4, FALSE, get_turf(user))
diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm
index 5509f925cfd10..402a9aa73e19f 100644
--- a/code/modules/surgery/advanced/brainwashing.dm
+++ b/code/modules/surgery/advanced/brainwashing.dm
@@ -48,9 +48,9 @@
/obj/item/stack/package_wrap = 35,
/obj/item/stack/cable_coil = 15)
time = 200
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/hemostat1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
var/objective
/datum/surgery_step/brainwash/mechanic
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index 1c82052fe98b1..5c528acae52fc 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -43,9 +43,9 @@
/obj/item = 20,
)
time = 100
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/scalpel2.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/scalpel2.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/lobotomize/mechanic
diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm
index 6db290e1df715..6c2d990cb9624 100644
--- a/code/modules/surgery/advanced/pacification.dm
+++ b/code/modules/surgery/advanced/pacification.dm
@@ -38,9 +38,9 @@
/obj/item/pen = 15,
)
time = 40
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/hemostat1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
/datum/surgery_step/pacify/mechanic
name = "delete aggression programming (multitool)"
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index 16045a760324c..0bcf408b2a714 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -52,8 +52,8 @@
/obj/item/knife/butcher = 25,
)
time = 64
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/sever_limb/mechanic
@@ -66,8 +66,8 @@
TOOL_SAW = 50,
)
time = 20 //WAIT I NEED THAT!!
- preop_sound = 'sound/items/ratchet.ogg'
- preop_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ preop_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/sever_limb/peg
name = "detach limb (circular saw)"
@@ -79,8 +79,8 @@
TOOL_SCALPEL = 25,
)
time = 30
- preop_sound = 'sound/surgery/saw.ogg'
- success_sound = 'sound/items/wood_drop.ogg'
+ preop_sound = 'sound/items/handling/surgery/saw.ogg'
+ success_sound = 'sound/items/handling/materials/wood_drop.ogg'
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index 5d3e5270c8884..0b953b9313d04 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -174,8 +174,8 @@
/// what visual effect is used when this limb is used to strike someone.
var/unarmed_attack_effect = ATTACK_EFFECT_PUNCH
/// Sounds when this bodypart is used in an umarmed attack
- var/sound/unarmed_attack_sound = 'sound/weapons/punch1.ogg'
- var/sound/unarmed_miss_sound = 'sound/weapons/punchmiss.ogg'
+ var/sound/unarmed_attack_sound = 'sound/items/weapons/punch1.ogg'
+ var/sound/unarmed_miss_sound = 'sound/items/weapons/punchmiss.ogg'
///Lowest possible punch damage this bodypart can give. If this is set to 0, unarmed attacks will always miss.
var/unarmed_damage_low = 1
///Highest possible punch damage this bodypart can ive.
@@ -400,7 +400,7 @@
if(!contents.len)
to_chat(user, span_warning("There is nothing left inside [src]!"))
return
- playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/slice.ogg', 50, TRUE, -1)
user.visible_message(span_warning("[user] begins to cut open [src]."),\
span_notice("You begin to cut open [src]..."))
if(do_after(user, 5.4 SECONDS, target = src))
diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm
index 16a9a288bf0ba..cce8935f80349 100644
--- a/code/modules/surgery/bodyparts/head.dm
+++ b/code/modules/surgery/bodyparts/head.dm
@@ -19,8 +19,8 @@
is_dimorphic = TRUE
unarmed_attack_verbs = list("bite", "chomp")
unarmed_attack_effect = ATTACK_EFFECT_BITE
- unarmed_attack_sound = 'sound/weapons/bite.ogg'
- unarmed_miss_sound = 'sound/weapons/bite.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/bite.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/bite.ogg'
unarmed_damage_low = 1 // Yeah, biteing is pretty weak, blame the monkey super-nerf
unarmed_damage_high = 3
unarmed_effectiveness = 0
diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
index d97b00c58af68..756cda32fa327 100644
--- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm
@@ -4,8 +4,8 @@
is_dimorphic = FALSE
dmg_overlay_type = null
attack_type = BURN // bish buzz
- unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
- unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/etherealhit.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
head_flags = HEAD_HAIR|HEAD_FACIAL_HAIR|HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN
@@ -39,8 +39,8 @@
attack_type = BURN //burn bish
unarmed_attack_verbs = list("burn", "sear")
grappled_attack_verb = "scorch"
- unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
- unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/etherealhit.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/arm/left/ethereal/update_limb(dropping_limb, is_creating)
@@ -57,8 +57,8 @@
attack_type = BURN // bish buzz
unarmed_attack_verbs = list("burn", "sear")
grappled_attack_verb = "scorch"
- unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
- unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/etherealhit.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/arm/right/ethereal/update_limb(dropping_limb, is_creating)
@@ -73,8 +73,8 @@
limb_id = SPECIES_ETHEREAL
dmg_overlay_type = null
attack_type = BURN // bish buzz
- unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
- unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/etherealhit.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/leg/left/ethereal/update_limb(dropping_limb, is_creating)
@@ -89,8 +89,8 @@
limb_id = SPECIES_ETHEREAL
dmg_overlay_type = null
attack_type = BURN // bish buzz
- unarmed_attack_sound = 'sound/weapons/etherealhit.ogg'
- unarmed_miss_sound = 'sound/weapons/etherealmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/etherealhit.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/etherealmiss.ogg'
brute_modifier = 1.25 //ethereal are weak to brute damage
/obj/item/bodypart/leg/right/ethereal/update_limb(dropping_limb, is_creating)
diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
index fec3c8f858434..0de9322e70b8c 100644
--- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
@@ -21,8 +21,8 @@
unarmed_attack_verbs = list("slash", "scratch", "claw")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slash.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slash.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
/obj/item/bodypart/arm/right/lizard
icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi'
@@ -30,8 +30,8 @@
unarmed_attack_verbs = list("slash", "scratch", "claw")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slash.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slash.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
/obj/item/bodypart/arm/left/lizard/ashwalker
bodypart_traits = list(TRAIT_CHUNKYFINGERS)
diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
index f8619943a81ed..e02d1daad8244 100644
--- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
@@ -226,8 +226,8 @@
unarmed_attack_verbs = list("slash", "lash")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slice.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slice.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
burn_modifier = 1.25
/obj/item/bodypart/arm/right/pod
@@ -235,8 +235,8 @@
unarmed_attack_verbs = list("slash", "lash")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slice.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slice.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
burn_modifier = 1.25
/obj/item/bodypart/leg/left/pod
diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
index b437129db35c3..6761fa6751a5d 100644
--- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
@@ -31,8 +31,8 @@
unarmed_attack_verbs = list("slash")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slash.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slash.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
/obj/item/bodypart/arm/right/moth
icon = 'icons/mob/human/species/moth/bodyparts.dmi'
@@ -43,8 +43,8 @@
unarmed_attack_verbs = list("slash")
grappled_attack_verb = "lacerate"
unarmed_attack_effect = ATTACK_EFFECT_CLAW
- unarmed_attack_sound = 'sound/weapons/slash.ogg'
- unarmed_miss_sound = 'sound/weapons/slashmiss.ogg'
+ unarmed_attack_sound = 'sound/items/weapons/slash.ogg'
+ unarmed_miss_sound = 'sound/items/weapons/slashmiss.ogg'
/obj/item/bodypart/leg/left/moth
icon = 'icons/mob/human/species/moth/bodyparts.dmi'
diff --git a/code/modules/surgery/bone_mending.dm b/code/modules/surgery/bone_mending.dm
index 73fdcba3fce6b..8afffb232fb9d 100644
--- a/code/modules/surgery/bone_mending.dm
+++ b/code/modules/surgery/bone_mending.dm
@@ -212,7 +212,7 @@
TOOL_SCREWDRIVER = 40,
)
time = 2.4 SECONDS
- preop_sound = 'sound/surgery/hemostat1.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
/datum/surgery_step/clamp_bleeders/discard_skull_debris/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm
index 879cbdf7bf59b..c3a9baafde10f 100644
--- a/code/modules/surgery/brain_surgery.dm
+++ b/code/modules/surgery/brain_surgery.dm
@@ -31,9 +31,9 @@
/obj/item/pen = 15) //don't worry, pouring some alcohol on their open brain will get that chance to 100
repeatable = TRUE
time = 100 //long and complicated
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/hemostat1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
/datum/surgery_step/fix_brain/mechanic
name = "perform neural debugging (hemostat or multitool)"
diff --git a/code/modules/surgery/burn_dressing.dm b/code/modules/surgery/burn_dressing.dm
index 5f2bdb8048327..9ffeaef089553 100644
--- a/code/modules/surgery/burn_dressing.dm
+++ b/code/modules/surgery/burn_dressing.dm
@@ -41,9 +41,9 @@
TOOL_WIRECUTTER = 40)
time = 30
repeatable = TRUE
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/retractor2.ogg'
- failure_sound = 'sound/surgery/organ1.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/retractor2.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ1.ogg'
surgery_effects_mood = TRUE
/// How much sanitization is added per step
var/sanitization_added = 0.5
diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm
index 3ec68f8db8858..1be5e1db8230a 100644
--- a/code/modules/surgery/cavity_implant.dm
+++ b/code/modules/surgery/cavity_implant.dm
@@ -18,8 +18,8 @@ GLOBAL_LIST_INIT(heavy_cavity_implants, typecacheof(list(/obj/item/transfer_valv
implements = list(/obj/item = 100)
repeatable = TRUE
time = 32
- preop_sound = 'sound/surgery/organ1.ogg'
- success_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/organ1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
var/obj/item/item_for_cavity
/datum/surgery_step/handle_cavity/tool_check(mob/user, obj/item/tool)
diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm
index e9c136574b29b..c2cc3f551acd2 100644
--- a/code/modules/surgery/coronary_bypass.dm
+++ b/code/modules/surgery/coronary_bypass.dm
@@ -41,9 +41,9 @@
/obj/item/knife = 45,
/obj/item/shard = 25)
time = 16
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/scalpel2.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/scalpel2.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/incise_heart/mechanic
@@ -54,8 +54,8 @@
/obj/item/melee/energy/sword = 65,
/obj/item/knife = 45,
/obj/item/shard = 35)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -107,9 +107,9 @@
/obj/item/stack/package_wrap = 15,
/obj/item/stack/cable_coil = 5)
time = 90
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/hemostat1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
/datum/surgery_step/coronary_bypass/mechanic
name = "perform maintenance (hemostat or wrench)"
@@ -119,8 +119,8 @@
TOOL_WIRECUTTER = 35,
/obj/item/stack/package_wrap = 15,
/obj/item/stack/cable_coil = 5)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm
index 95c952e7724d4..845f655009b7f 100644
--- a/code/modules/surgery/experimental_dissection.dm
+++ b/code/modules/surgery/experimental_dissection.dm
@@ -36,11 +36,11 @@
silicons_obey_prob = TRUE
/datum/surgery_step/experimental_dissection/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] starts dissecting [target].", "You start dissecting [target].")
+ user.visible_message(span_notice("[user] starts dissecting [target]."), span_notice("You start dissecting [target]."))
/datum/surgery_step/experimental_dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/points_earned = check_value(target)
- user.visible_message("[user] dissects [target], discovering [points_earned] point\s of data!", "You dissect [target], finding [points_earned] point\s worth of discoveries, you also write a few notes.")
+ user.visible_message(span_notice("[user] dissects [target], discovering [points_earned] point\s of data!"), span_notice("You dissect [target], finding [points_earned] point\s worth of discoveries, you also write a few notes."))
var/obj/item/research_notes/the_dossier = new /obj/item/research_notes(user.loc, points_earned, "biology")
if(!user.put_in_hands(the_dossier) && istype(user.get_inactive_held_item(), /obj/item/research_notes))
@@ -54,8 +54,8 @@
/datum/surgery_step/experimental_dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/points_earned = round(check_value(target) * 0.01)
user.visible_message(
- "[user] dissects [target]!",
- "You dissect [target], but do not find anything particularly interesting.",
+ span_notice("[user] dissects [target]!"),
+ span_notice("You dissect [target], but do not find anything particularly interesting."),
)
var/obj/item/research_notes/the_dossier = new /obj/item/research_notes(user.loc, points_earned, "biology")
diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm
index f498d220d2f2b..b72e01d0ecf7d 100644
--- a/code/modules/surgery/gastrectomy.dm
+++ b/code/modules/surgery/gastrectomy.dm
@@ -42,9 +42,9 @@
/obj/item/knife = 45,
/obj/item/shard = 35)
time = 52
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/organ1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/gastrectomy/mechanic
@@ -55,8 +55,8 @@
/obj/item/melee/energy/sword = 65,
/obj/item/knife = 45,
/obj/item/shard = 35)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/gastrectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/healing.dm b/code/modules/surgery/healing.dm
index 20458fb8dcaf8..12540945a5238 100644
--- a/code/modules/surgery/healing.dm
+++ b/code/modules/surgery/healing.dm
@@ -42,8 +42,8 @@
/obj/item/pen = 55)
repeatable = TRUE
time = 25
- success_sound = 'sound/surgery/retractor2.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ success_sound = 'sound/items/handling/surgery/retractor2.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
var/brutehealing = 0
var/burnhealing = 0
var/brute_multiplier = 0 //multiplies the damage that the patient has. if 0 the patient wont get any additional healing from the damage he has.
diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm
index 2216ac7ad69f7..c0d94abb69a99 100644
--- a/code/modules/surgery/hepatectomy.dm
+++ b/code/modules/surgery/hepatectomy.dm
@@ -41,9 +41,9 @@
/obj/item/knife = 45,
/obj/item/shard = 35)
time = 52
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/organ1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/hepatectomy/mechanic
@@ -54,8 +54,8 @@
/obj/item/melee/energy/sword = 65,
/obj/item/knife = 45,
/obj/item/shard = 35)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/hepatectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 66eaf6faf737f..51c279d32cd98 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -19,7 +19,7 @@
TOOL_CROWBAR = 65,
/obj/item/kitchen/fork = 35)
time = 64
- success_sound = 'sound/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
var/obj/item/implant/implant
/datum/surgery_step/extract_implant/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm
index 6cb3dc8f75708..975df4a8bdffa 100644
--- a/code/modules/surgery/lipoplasty.dm
+++ b/code/modules/surgery/lipoplasty.dm
@@ -40,8 +40,8 @@
time = 64
surgery_effects_mood = TRUE
preop_sound = list(
- /obj/item/circular_saw = 'sound/surgery/saw.ogg',
- /obj/item = 'sound/surgery/scalpel1.ogg',
+ /obj/item/circular_saw = 'sound/items/handling/surgery/saw.ogg',
+ /obj/item = 'sound/items/handling/surgery/scalpel1.ogg',
)
/datum/surgery_step/cut_fat/mechanic
@@ -54,8 +54,8 @@
/obj/item/knife = 45,
/obj/item/shard = 35,
)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message(span_notice("[user] begins to cut away [target]'s excess fat."), span_notice("You begin to cut away [target]'s excess fat..."))
@@ -88,8 +88,8 @@
TOOL_WIRECUTTER = 35,
)
time = 32
- preop_sound = 'sound/surgery/retractor1.ogg'
- success_sound = 'sound/surgery/retractor2.ogg'
+ preop_sound = 'sound/items/handling/surgery/retractor1.ogg'
+ success_sound = 'sound/items/handling/surgery/retractor2.ogg'
/datum/surgery_step/remove_fat/mechanic
name = "engage expulsion valve (screwdriver or wrench)" //gross
@@ -99,8 +99,8 @@
TOOL_WIRECUTTER = 35,
TOOL_RETRACTOR = 35,
)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm
index a31af5f69cc00..85a963953c68e 100644
--- a/code/modules/surgery/lobectomy.dm
+++ b/code/modules/surgery/lobectomy.dm
@@ -38,9 +38,9 @@
/obj/item/knife = 45,
/obj/item/shard = 35)
time = 42
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/organ1.ogg'
- failure_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ1.ogg'
+ failure_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/lobectomy/mechanic
@@ -51,8 +51,8 @@
/obj/item/melee/energy/sword = 65,
/obj/item/knife = 45,
/obj/item/shard = 35)
- preop_sound = 'sound/items/ratchet.ogg'
- success_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ success_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm
index e9bfcbe949015..44be32bc858a7 100644
--- a/code/modules/surgery/mechanic_steps.dm
+++ b/code/modules/surgery/mechanic_steps.dm
@@ -7,8 +7,8 @@
/obj/item/knife = 50,
/obj/item = 10) // 10% success with any sharp item.
time = 24
- preop_sound = 'sound/items/screwdriver.ogg'
- success_sound = 'sound/items/screwdriver2.ogg'
+ preop_sound = 'sound/items/tools/screwdriver.ogg'
+ success_sound = 'sound/items/tools/screwdriver2.ogg'
/datum/surgery_step/mechanic_open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -37,8 +37,8 @@
/obj/item/knife = 50,
/obj/item = 10) // 10% success with any sharp item.
time = 24
- preop_sound = 'sound/items/screwdriver.ogg'
- success_sound = 'sound/items/screwdriver2.ogg'
+ preop_sound = 'sound/items/tools/screwdriver.ogg'
+ success_sound = 'sound/items/tools/screwdriver2.ogg'
/datum/surgery_step/mechanic_close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -85,7 +85,7 @@
TOOL_WRENCH = 100,
TOOL_RETRACTOR = 75)
time = 24
- preop_sound = 'sound/items/ratchet.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
/datum/surgery_step/mechanic_unwrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -110,7 +110,7 @@
TOOL_WRENCH = 100,
TOOL_RETRACTOR = 75)
time = 24
- preop_sound = 'sound/items/ratchet.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
/datum/surgery_step/mechanic_wrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -133,8 +133,8 @@
name = "open the hatch (hand)"
accept_hand = TRUE
time = 10
- preop_sound = 'sound/items/ratchet.ogg'
- preop_sound = 'sound/machines/doorclick.ogg'
+ preop_sound = 'sound/items/tools/ratchet.ogg'
+ preop_sound = 'sound/machines/airlock/doorclick.ogg'
/datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm
index c4987ae5c4786..84edc783af7a9 100644
--- a/code/modules/surgery/organ_manipulation.dm
+++ b/code/modules/surgery/organ_manipulation.dm
@@ -137,8 +137,8 @@
implements = list(
/obj/item/organ = 100,
/obj/item/borg/apparatus/organ_storage = 100)
- preop_sound = 'sound/surgery/organ2.ogg'
- success_sound = 'sound/surgery/organ1.ogg'
+ preop_sound = 'sound/items/handling/surgery/organ2.ogg'
+ success_sound = 'sound/items/handling/surgery/organ1.ogg'
var/implements_extract = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 55, /obj/item/kitchen/fork = 35)
var/current_type
@@ -165,8 +165,8 @@
tool = target_organ
if(isorgan(tool))
current_type = "insert"
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/organ2.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
target_organ = tool
if(target_zone != target_organ.zone || target.get_organ_slot(target_organ.slot))
to_chat(user, span_warning("There is no room for [target_organ] in [target]'s [target.parse_zone_with_bodypart(target_zone)]!"))
diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm
index ce9dec4543846..22d95c9afd512 100644
--- a/code/modules/surgery/organic_steps.dm
+++ b/code/modules/surgery/organic_steps.dm
@@ -9,8 +9,8 @@
/obj/item/shard = 45,
/obj/item = 30) // 30% success with any sharp item.
time = 16
- preop_sound = 'sound/surgery/scalpel1.ogg'
- success_sound = 'sound/surgery/scalpel2.ogg'
+ preop_sound = 'sound/items/handling/surgery/scalpel1.ogg'
+ success_sound = 'sound/items/handling/surgery/scalpel2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -64,7 +64,7 @@
/obj/item/stack/package_wrap = 35,
/obj/item/stack/cable_coil = 15)
time = 24
- preop_sound = 'sound/surgery/hemostat1.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -95,8 +95,8 @@
TOOL_WIRECUTTER = 35,
/obj/item/stack/rods = 35)
time = 24
- preop_sound = 'sound/surgery/retractor1.ogg'
- success_sound = 'sound/surgery/retractor2.ogg'
+ preop_sound = 'sound/items/handling/surgery/retractor1.ogg'
+ success_sound = 'sound/items/handling/surgery/retractor2.ogg'
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -117,8 +117,8 @@
TOOL_WELDER = 70,
/obj/item = 30) // 30% success with any hot item.
time = 24
- preop_sound = 'sound/surgery/cautery1.ogg'
- success_sound = 'sound/surgery/cautery2.ogg'
+ preop_sound = 'sound/items/handling/surgery/cautery1.ogg'
+ success_sound = 'sound/items/handling/surgery/cautery2.ogg'
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
@@ -161,14 +161,14 @@
/obj/item = 25) //20% success (sort of) with any sharp item with a force >= 10
time = 54
preop_sound = list(
- /obj/item/circular_saw = 'sound/surgery/saw.ogg',
- /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg',
- /obj/item/fireaxe = 'sound/surgery/scalpel1.ogg',
- /obj/item/hatchet = 'sound/surgery/scalpel1.ogg',
- /obj/item/knife/butcher = 'sound/surgery/scalpel1.ogg',
- /obj/item = 'sound/surgery/scalpel1.ogg',
+ /obj/item/circular_saw = 'sound/items/handling/surgery/saw.ogg',
+ /obj/item/melee/arm_blade = 'sound/items/handling/surgery/scalpel1.ogg',
+ /obj/item/fireaxe = 'sound/items/handling/surgery/scalpel1.ogg',
+ /obj/item/hatchet = 'sound/items/handling/surgery/scalpel1.ogg',
+ /obj/item/knife/butcher = 'sound/items/handling/surgery/scalpel1.ogg',
+ /obj/item = 'sound/items/handling/surgery/scalpel1.ogg',
)
- success_sound = 'sound/surgery/organ2.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm
index 4d28b987abcaf..3e67b5c43792b 100644
--- a/code/modules/surgery/organs/_organ.dm
+++ b/code/modules/surgery/organs/_organ.dm
@@ -320,27 +320,40 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
replacement.set_organ_damage(damage)
/// Called by medical scanners to get a simple summary of how healthy the organ is. Returns an empty string if things are fine.
-/obj/item/organ/proc/get_status_text(advanced)
- if(advanced && (organ_flags & ORGAN_PROMINENT))
- return "Harmful Foreign Body"
+/obj/item/organ/proc/get_status_text(advanced, add_tooltips)
+ if(advanced && (organ_flags & ORGAN_HAZARDOUS))
+ return conditional_tooltip("Harmful Foreign Body", "Remove surgically.", add_tooltips)
if(organ_flags & ORGAN_EMP)
- return "EMP-Derived Failure Cascade in Progress"
+ return conditional_tooltip("EMP-Derived Failure", "Repair or replace surgically.", add_tooltips)
+ var/tech_text = ""
if(owner.has_reagent(/datum/reagent/inverse/technetium))
- return "[round((damage/maxHealth)*100, 1)]% damaged."
+ tech_text = "[round((damage / maxHealth) * 100, 1)]% damaged"
if(organ_flags & ORGAN_FAILING)
- return "Non-Functional"
+ return conditional_tooltip("[tech_text || "Non-Functional"]", "Repair or replace surgically.", add_tooltips)
if(damage > high_threshold)
- return "Severely Damaged"
+ return conditional_tooltip("[tech_text || "Severely Damaged"]", "[healing_factor ? "Treat with rest or use specialty medication." : "Repair surgically or use specialty medication."]", add_tooltips && owner.stat != DEAD)
- if (damage > low_threshold)
- return "Mildly Damaged"
+ if(damage > low_threshold)
+ return conditional_tooltip("[tech_text || "Mildly Damaged"] ", "[healing_factor ? "Treat with rest." : "Use specialty medication."]", add_tooltips && owner.stat != DEAD)
+
+ if(tech_text)
+ return "[tech_text]"
return ""
+/// Determines if this organ is shown when a user has condensed scans enabled
+/obj/item/organ/proc/show_on_condensed_scans()
+ // We don't need to show *most* damaged organs as they have no effects associated
+ return (organ_flags & (ORGAN_PROMINENT|ORGAN_HAZARDOUS|ORGAN_FAILING|ORGAN_VITAL))
+
+/// Similar to get_status_text, but appends the text after the damage report, for additional status info
+/obj/item/organ/proc/get_status_appendix(advanced, add_tooltips)
+ return
+
/// Tries to replace the existing organ on the passed mob with this one, with special handling for replacing a brain without ghosting target
/obj/item/organ/proc/replace_into(mob/living/carbon/new_owner)
return Insert(new_owner, special = TRUE, movement_flags = DELETE_IF_REPLACED)
diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm
index 0bb8afc6ced52..59107666bfde5 100644
--- a/code/modules/surgery/organs/autosurgeon.dm
+++ b/code/modules/surgery/organs/autosurgeon.dm
@@ -93,7 +93,7 @@
stored_organ.Insert(target)//insert stored organ into the user
stored_organ = null
name = initial(name) //get rid of the organ in the name
- playsound(target.loc, 'sound/weapons/circsawhit.ogg', 50, vary = TRUE)
+ playsound(target.loc, 'sound/items/weapons/circsawhit.ogg', 50, vary = TRUE)
update_appearance()
if(uses)
diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm
index e1f364f547559..e97ed1bbd363d 100644
--- a/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -1,3 +1,6 @@
+#define FUNCTIONAL_WING_FORCE 2.25 NEWTONS
+#define FUNCTIONAL_WING_STABILIZATION 1.2 NEWTONS
+
///hud action for starting and stopping flight
/datum/action/innate/flight
name = "Toggle Flight"
@@ -10,11 +13,6 @@
var/obj/item/organ/external/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
if(wings?.can_fly(human))
wings.toggle_flight(human)
- if(!(human.movement_type & FLYING))
- to_chat(human, span_notice("You settle gently back onto the ground..."))
- else
- to_chat(human, span_notice("You beat your wings and begin to hover gently above the ground..."))
- human.set_resting(FALSE, TRUE)
///The true wings that you can use to fly and shit (you cant actually shit with them)
/obj/item/organ/external/wings/functional
@@ -54,7 +52,7 @@
///Called on_life(). Handle flight code and check if we're still flying
/obj/item/organ/external/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
- if(!(human.movement_type & FLYING))
+ if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
return FALSE
if(!can_fly(human))
toggle_flight(human)
@@ -78,8 +76,7 @@
if(environment?.return_pressure() < HAZARD_LOW_PRESSURE + 10)
to_chat(human, span_warning("The atmosphere is too thin for you to fly!"))
return FALSE
- else
- return TRUE
+ return TRUE
///Slipping but in the air?
/obj/item/organ/external/wings/functional/proc/fly_slip(mob/living/carbon/human/human)
@@ -106,19 +103,48 @@
///UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly
/obj/item/organ/external/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
- if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLYING, SPECIES_FLIGHT_TRAIT))
+ if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
human.physiology.stun_mod *= 2
- human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLYING), SPECIES_FLIGHT_TRAIT)
+ human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
+ human.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings)
+ human.AddElement(/datum/element/forced_gravity, 0)
passtable_on(human, SPECIES_FLIGHT_TRAIT)
+ RegisterSignal(human, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
+ START_PROCESSING(SSnewtonian_movement, src)
open_wings()
- else
- human.physiology.stun_mod *= 0.5
- human.remove_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLYING), SPECIES_FLIGHT_TRAIT)
- passtable_off(human, SPECIES_FLIGHT_TRAIT)
- close_wings()
-
+ to_chat(human, span_notice("You beat your wings and begin to hover gently above the ground..."))
+ human.set_resting(FALSE, TRUE)
+ human.refresh_gravity()
+ return
+
+ human.physiology.stun_mod *= 0.5
+ human.remove_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
+ human.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings)
+ human.RemoveElement(/datum/element/forced_gravity, 0)
+ passtable_off(human, SPECIES_FLIGHT_TRAIT)
+ UnregisterSignal(human, COMSIG_MOB_CLIENT_MOVE_NOGRAV)
+ STOP_PROCESSING(SSnewtonian_movement, src)
+ to_chat(human, span_notice("You settle gently back onto the ground..."))
+ close_wings()
human.refresh_gravity()
+/obj/item/organ/external/wings/functional/proc/on_client_move(mob/source, list/move_args)
+ SIGNAL_HANDLER
+
+ if (!can_fly(source))
+ return
+
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force)
+ source.setDir(source.client.intended_direction)
+
+/obj/item/organ/external/wings/functional/process(seconds_per_tick)
+ if (!owner || !can_fly(owner) || isnull(owner.drift_handler))
+ return
+
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS))
+
///SPREAD OUR WINGS AND FLLLLLYYYYYY
/obj/item/organ/external/wings/functional/proc/open_wings()
var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
@@ -194,7 +220,7 @@
sprite_accessory_override = /datum/sprite_accessory/wings/skeleton
/obj/item/organ/external/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner)
- playsound(wing_owner, 'sound/voice/moth/moth_flutter.ogg', 50, TRUE)
+ playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
///mothra wings, which relate to moths.
/obj/item/organ/external/wings/functional/moth/mothra
@@ -219,3 +245,6 @@
name = "slime wings"
desc = "How does something so squishy even fly?"
sprite_accessory_override = /datum/sprite_accessory/wings/slime
+
+#undef FUNCTIONAL_WING_FORCE
+#undef FUNCTIONAL_WING_STABILIZATION
diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm
index a76b60325ff6d..16b9832f6de0f 100644
--- a/code/modules/surgery/organs/external/wings/moth_wings.dm
+++ b/code/modules/surgery/organs/external/wings/moth_wings.dm
@@ -1,3 +1,5 @@
+#define MOTH_WING_FORCE 1 NEWTONS
+
///Moth wings! They can flutter in low-grav and burn off in heat
/obj/item/organ/external/wings/moth
name = "moth wings"
@@ -18,40 +20,60 @@
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings))
- RegisterSignal(receiver, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(update_float_move))
+ RegisterSignal(receiver, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move))
+ START_PROCESSING(SSnewtonian_movement, src)
/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
. = ..()
- UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOVABLE_PRE_MOVE))
- REMOVE_TRAIT(organ_owner, TRAIT_FREE_FLOAT_MOVEMENT, REF(src))
+ UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV))
+ STOP_PROCESSING(SSnewtonian_movement, src)
/obj/item/organ/external/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
- playsound(wing_owner, 'sound/voice/moth/moth_flutter.ogg', 50, TRUE)
+ playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
/obj/item/organ/external/wings/moth/can_soften_fall()
return !burnt
-///Check if we can flutter around
-/obj/item/organ/external/wings/moth/proc/update_float_move()
- SIGNAL_HANDLER
-
- if(can_fly())
- var/datum/gas_mixture/current = owner.loc.return_air()
- if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible
- ADD_TRAIT(owner, TRAIT_FREE_FLOAT_MOVEMENT, REF(src))
- return
-
- REMOVE_TRAIT(owner, TRAIT_FREE_FLOAT_MOVEMENT, REF(src))
-
-///Checks if our wings are usable
-/obj/item/organ/external/wings/moth/proc/can_fly()
+/obj/item/organ/external/wings/moth/proc/allow_flight()
+ if(!owner || !owner.client)
+ return FALSE
+ if(!isturf(owner.loc))
+ return FALSE
+ if(!(owner.movement_type & FLOATING) || owner.buckled)
+ return FALSE
+ if(owner.pulledby)
+ return FALSE
+ if(owner.throwing)
+ return FALSE
+ if(owner.has_gravity())
+ return FALSE
if(ishuman(owner))
var/mob/living/carbon/human/human_owner = owner
if(human_owner.wear_suit?.flags_inv & HIDEMUTWINGS)
return FALSE //Can't fly with hidden wings
- if(isspaceturf(owner.loc) || burnt)
- return FALSE //No flight in space/burnt wings
- return TRUE
+ if(burnt)
+ return FALSE
+ var/datum/gas_mixture/current = owner.loc.return_air()
+ if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85))
+ return TRUE
+ return FALSE
+
+/obj/item/organ/external/wings/moth/process(seconds_per_tick)
+ if (!owner || !allow_flight() || isnull(owner.drift_handler))
+ return
+
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS))
+
+/obj/item/organ/external/wings/moth/proc/on_client_move(mob/source, list/move_args)
+ SIGNAL_HANDLER
+
+ if (!allow_flight())
+ return
+
+ var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
+ source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force)
+ source.setDir(source.client.intended_direction)
///check if our wings can burn off ;_;
/obj/item/organ/external/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
@@ -106,3 +128,5 @@
/datum/bodypart_overlay/mutant/wings/moth/get_base_icon_state()
return burnt ? burn_datum.icon_state : sprite_datum.icon_state
+
+#undef MOTH_WING_FORCE
diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm
index 169495bccaa33..795871c7ccd5d 100644
--- a/code/modules/surgery/organs/internal/appendix/_appendix.dm
+++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm
@@ -14,8 +14,8 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
- now_failing = "An explosion of pain erupts in your lower right abdomen!"
- now_fixed = "The pain in your abdomen has subsided."
+ now_failing = span_warning("An explosion of pain erupts in your lower right abdomen!")
+ now_fixed = span_info("The pain in your abdomen has subsided.")
var/inflamation_stage = 0
@@ -87,11 +87,10 @@
ADD_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
organ_owner.med_hud_set_status()
-/obj/item/organ/internal/appendix/get_status_text(advanced)
- if((!(organ_flags & ORGAN_FAILING)) && inflamation_stage)
- return "Inflamed"
- else
- return ..()
+/obj/item/organ/internal/appendix/get_status_text(advanced, add_tooltips)
+ if(!(organ_flags & ORGAN_FAILING) && inflamation_stage)
+ return conditional_tooltip("Inflamed", "Remove surgically.", add_tooltips)
+ return ..()
#undef APPENDICITIS_PROB
#undef INFLAMATION_ADVANCEMENT_PROB
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
index 4a7dcab80f259..0946d1441039c 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
@@ -14,9 +14,9 @@
/// You can use this var for item path, it would be converted into an item on New().
var/obj/item/active_item
/// Sound played when extending
- var/extend_sound = 'sound/mecha/mechmove03.ogg'
+ var/extend_sound = 'sound/vehicles/mecha/mechmove03.ogg'
/// Sound played when retracting
- var/retract_sound = 'sound/mecha/mechmove03.ogg'
+ var/retract_sound = 'sound/vehicles/mecha/mechmove03.ogg'
/// Organ slot that the implant occupies for the right arm
var/right_arm_organ_slot = ORGAN_SLOT_RIGHT_ARM_AUG
/// Organ slot that the implant occupies for the left arm
@@ -235,7 +235,7 @@
if(prob(30/severity) && owner && !(organ_flags & ORGAN_FAILING))
Retract()
owner.visible_message(span_danger("A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!"))
- playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, TRUE)
+ playsound(get_turf(owner), 'sound/items/weapons/flashbang.ogg', 100, TRUE)
to_chat(owner, span_userdanger("You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!"))
owner.adjust_fire_stacks(20)
owner.ignite_mob()
@@ -467,7 +467,7 @@
var/mob/living/carbon/human/human_target = target
if(human_target.check_block(source, punch_damage, "[source]'s' [picked_hit_type]"))
source.do_attack_animation(target)
- playsound(living_target.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
+ playsound(living_target.loc, 'sound/items/weapons/punchmiss.ogg', 25, TRUE, -1)
log_combat(source, target, "attempted to [picked_hit_type]", "muscle implant")
return COMPONENT_CANCEL_ATTACK_CHAIN
@@ -480,7 +480,7 @@
potential_damage += biotype_bonus_damage
source.do_attack_animation(target, ATTACK_EFFECT_SMASH)
- playsound(living_target.loc, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+ playsound(living_target.loc, 'sound/items/weapons/punch1.ogg', 25, TRUE, -1)
var/target_zone = living_target.get_random_valid_zone(source.zone_selected)
var/armor_block = living_target.run_armor_check(target_zone, MELEE, armour_penetration = attacking_bodypart.unarmed_effectiveness)
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
index 060499936d53d..c9cbfbe445bdf 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
@@ -117,7 +117,7 @@
owner.visible_message(span_warning("[owner]'s body convulses a bit."))
playsound(owner, SFX_BODYFALL, 50, TRUE)
- playsound(owner, 'sound/machines/defib_zap.ogg', 75, TRUE, -1)
+ playsound(owner, 'sound/machines/defib/defib_zap.ogg', 75, TRUE, -1)
owner.set_heartattack(FALSE)
owner.revive()
owner.emote("gasp")
@@ -169,11 +169,13 @@
AddComponent( \
/datum/component/jetpack, \
FALSE, \
+ 1.5 NEWTONS, \
+ 1.2 NEWTONS, \
COMSIG_THRUSTER_ACTIVATED, \
COMSIG_THRUSTER_DEACTIVATED, \
THRUSTER_ACTIVATION_FAILED, \
CALLBACK(src, PROC_REF(allow_thrust), 0.01), \
- /datum/effect_system/trail_follow/ion \
+ /datum/effect_system/trail_follow/ion, \
)
/obj/item/organ/internal/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags)
diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm
index 9fd0d89adfdd8..bbc45b093998c 100644
--- a/code/modules/surgery/organs/internal/ears/_ears.dm
+++ b/code/modules/surgery/organs/internal/ears/_ears.dm
@@ -9,10 +9,10 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
- low_threshold_passed = "Your ears begin to resonate with an internal ring sometimes."
- now_failing = "You are unable to hear at all!"
- now_fixed = "Noise slowly begins filling your ears once more."
- low_threshold_cleared = "The ringing in your ears has died down."
+ low_threshold_passed = span_info("Your ears begin to resonate with an internal ring sometimes.")
+ now_failing = span_warning("You are unable to hear at all!")
+ now_fixed = span_info("Noise slowly begins filling your ears once more.")
+ low_threshold_cleared = span_info("The ringing in your ears has died down.")
/// `deaf` measures "ticks" of deafness. While > 0, the person is unable to hear anything.
var/deaf = 0
@@ -42,7 +42,7 @@
adjustEarDamage(0, -0.5 * seconds_per_tick)
if((damage > low_threshold) && SPT_PROB(damage / 60, seconds_per_tick))
adjustEarDamage(0, 4)
- SEND_SOUND(owner, sound('sound/weapons/flash_ring.ogg'))
+ SEND_SOUND(owner, sound('sound/items/weapons/flash_ring.ogg'))
/obj/item/organ/internal/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag)
. = ..()
@@ -57,6 +57,22 @@
UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE)
+/obj/item/organ/internal/ears/get_status_appendix(advanced, add_tooltips)
+ if(owner.stat == DEAD || !HAS_TRAIT(owner, TRAIT_DEAF))
+ return
+ if(advanced)
+ if(HAS_TRAIT_FROM(owner, TRAIT_DEAF, QUIRK_TRAIT))
+ return conditional_tooltip("Subject is permanently deaf.", "Irreparable under normal circumstances.", add_tooltips)
+ if(HAS_TRAIT_FROM(owner, TRAIT_DEAF, GENETIC_MUTATION))
+ return conditional_tooltip("Subject is genetically deaf.", "Use medication such as [/datum/reagent/medicine/mutadone::name].", add_tooltips)
+ if(HAS_TRAIT_FROM(owner, TRAIT_DEAF, EAR_DAMAGE))
+ return conditional_tooltip("Subject is [(organ_flags & ORGAN_FAILING) ? "permanently": "temporarily"] deaf from ear damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/inacusiate::name], or protect ears with earmuffs.", add_tooltips)
+ return "Subject is deaf."
+
+/obj/item/organ/internal/ears/show_on_condensed_scans()
+ // Always show if we have an appendix
+ return ..() || (owner.stat != DEAD && HAS_TRAIT(owner, TRAIT_DEAF))
+
/**
* Snowflake proc to handle temporary deafness
*
@@ -128,6 +144,7 @@
/obj/item/organ/internal/ears/invincible
damage_multiplier = 0
+
/obj/item/organ/internal/ears/cat
name = "cat ears"
icon = 'icons/obj/clothing/head/costume.dmi'
@@ -144,12 +161,12 @@
/// Bodypart overlay for the horrible cat ears
/datum/bodypart_overlay/mutant/cat_ears
- layers = EXTERNAL_FRONT | EXTERNAL_ADJACENT
+ layers = EXTERNAL_FRONT | EXTERNAL_BEHIND
color_source = ORGAN_COLOR_HAIR
feature_key = "ears"
- /// We dont color the inner part, which is the front layer
- var/colorless_layer = EXTERNAL_FRONT
+ /// Layer upon which we add the inner ears overlay
+ var/inner_layer = EXTERNAL_FRONT
/datum/bodypart_overlay/mutant/cat_ears/get_global_feature_list()
return SSaccessories.ears_list
@@ -159,10 +176,21 @@
return FALSE
return TRUE
-/datum/bodypart_overlay/mutant/cat_ears/color_image(image/overlay, draw_layer, obj/item/bodypart/limb)
- if(draw_layer != bitflag_to_layer(colorless_layer))
- return ..()
- return overlay
+/datum/bodypart_overlay/mutant/cat_ears/get_image(image_layer, obj/item/bodypart/limb)
+ var/mutable_appearance/base_ears = ..()
+
+ // Only add inner ears on the inner layer
+ if(image_layer != bitflag_to_layer(inner_layer))
+ return base_ears
+
+ // Construct image of inner ears, apply to base ears as an overlay
+ feature_key += "inner"
+ var/mutable_appearance/inner_ears = ..()
+ inner_ears.appearance_flags = RESET_COLOR
+ feature_key = initial(feature_key)
+
+ base_ears.overlays += inner_ears
+ return base_ears
/obj/item/organ/internal/ears/penguin
name = "penguin ears"
diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm
index 3cfb06031cfc3..ddf59b71455d0 100644
--- a/code/modules/surgery/organs/internal/eyes/_eyes.dm
+++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm
@@ -13,12 +13,12 @@
high_threshold = 0.3 * STANDARD_ORGAN_THRESHOLD //threshold at 30
low_threshold = 0.2 * STANDARD_ORGAN_THRESHOLD //threshold at 20
- low_threshold_passed = "Distant objects become somewhat less tangible."
- high_threshold_passed = "Everything starts to look a lot less clear."
- now_failing = "Darkness envelopes you, as your eyes go blind!"
- now_fixed = "Color and shapes are once again perceivable."
- high_threshold_cleared = "Your vision functions passably once more."
- low_threshold_cleared = "Your vision is cleared of any ailment."
+ low_threshold_passed = span_info("Distant objects become somewhat less tangible.")
+ high_threshold_passed = span_info("Everything starts to look a lot less clear.")
+ now_failing = span_warning("Darkness envelopes you, as your eyes go blind!")
+ now_fixed = span_info("Color and shapes are once again perceivable.")
+ high_threshold_cleared = span_info("Your vision functions passably once more.")
+ low_threshold_cleared = span_info("Your vision is cleared of any ailment.")
/// Sight flags this eye pair imparts on its user.
var/sight_flags = NONE
@@ -121,6 +121,36 @@
#define OFFSET_X 1
#define OFFSET_Y 2
+/// Similar to get_status_text, but appends the text after the damage report, for additional status info
+/obj/item/organ/internal/eyes/get_status_appendix(advanced, add_tooltips)
+ if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_KNOCKEDOUT))
+ return
+ if(owner.is_blind())
+ if(advanced)
+ if(owner.is_blind_from(QUIRK_TRAIT))
+ return conditional_tooltip("Subject is permanently blind.", "Irreparable under normal circumstances.", add_tooltips)
+ if(owner.is_blind_from(TRAUMA_TRAIT))
+ return conditional_tooltip("Subject is blind from mental trauma.", "Repair via treatment of associated trauma.", add_tooltips)
+ if(owner.is_blind_from(GENETIC_MUTATION))
+ return conditional_tooltip("Subject is genetically blind.", "Use medication such as [/datum/reagent/medicine/mutadone::name].", add_tooltips)
+ if(owner.is_blind_from(EYE_DAMAGE))
+ return conditional_tooltip("Subject is blind from eye damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/oculine::name], or protect eyes with a blindfold.", add_tooltips)
+ return "Subject is blind."
+ if(owner.is_nearsighted())
+ if(advanced)
+ if(owner.is_nearsighted_from(QUIRK_TRAIT))
+ return conditional_tooltip("Subject is permanently nearsighted.", "Irreparable under normal circumstances. Prescription glasses will assuage the effects.", add_tooltips)
+ if(owner.is_nearsighted_from(GENETIC_MUTATION))
+ return conditional_tooltip("Subject is genetically nearsighted.", "Use medication such as [/datum/reagent/medicine/mutadone::name]. Prescription glasses will assuage the effects.", add_tooltips)
+ if(owner.is_nearsighted_from(EYE_DAMAGE))
+ return conditional_tooltip("Subject is nearsighted from eye damage.", "Repair surgically or use medication such as [/datum/reagent/medicine/oculine::name]. Prescription glasses will assuage the effects.", add_tooltips)
+ return "Subject is nearsighted."
+ return ""
+
+/obj/item/organ/internal/eyes/show_on_condensed_scans()
+ // Always show if we have an appendix
+ return ..() || (owner.stat != DEAD && !HAS_TRAIT(owner, TRAIT_KNOCKEDOUT) && (owner.is_blind() || owner.is_nearsighted()))
+
/// This proc generates a list of overlays that the eye should be displayed using for the given parent
/obj/item/organ/internal/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent)
if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/internal/eyes) != src)
diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm
index d52e483da389d..ce659792529bb 100644
--- a/code/modules/surgery/organs/internal/heart/_heart.dm
+++ b/code/modules/surgery/organs/internal/heart/_heart.dm
@@ -92,6 +92,15 @@
/obj/item/organ/internal/heart/proc/is_beating()
return beating
+/obj/item/organ/internal/heart/get_status_text(advanced, add_tooltips)
+ if(!beating && !(organ_flags & ORGAN_FAILING) && owner.needs_heart() && owner.stat != DEAD)
+ return conditional_tooltip("Cardiac Arrest", "Apply defibrillation immediately. Similar electric shocks may work in emergencies.", add_tooltips)
+ return ..()
+
+/obj/item/organ/internal/heart/show_on_condensed_scans()
+ // Always show if the guy needs a heart (so its status can be monitored)
+ return ..() || owner.needs_heart()
+
/obj/item/organ/internal/heart/on_life(seconds_per_tick, times_fired)
..()
@@ -115,11 +124,11 @@
if(beat != BEAT_SLOW)
beat = BEAT_SLOW
to_chat(owner, span_notice("You feel your heart slow down..."))
- SEND_SOUND(owner, sound('sound/health/slowbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40))
+ SEND_SOUND(owner, sound('sound/effects/health/slowbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40))
else if(owner.stat == HARD_CRIT)
if(beat != BEAT_FAST && owner.has_status_effect(/datum/status_effect/jitter))
- SEND_SOUND(owner, sound('sound/health/fastbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40))
+ SEND_SOUND(owner, sound('sound/effects/health/fastbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40))
beat = BEAT_FAST
else if(beat != BEAT_NONE)
diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
index 4a80f1857a0df..31e9e64750c92 100644
--- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
@@ -59,7 +59,7 @@
to_chat(user, span_userdanger("Black cyberveins tear your skin apart, pulling the heart into your ribcage. This feels unwise.."))
if(!do_after(user, 5 SECONDS, interaction_key = DOAFTER_IMPLANTING_HEART))
return ..()
- playsound(target_mob, 'sound/weapons/slice.ogg', 100, TRUE)
+ playsound(target_mob, 'sound/items/weapons/slice.ogg', 100, TRUE)
user.temporarilyRemoveItemFromInventory(src, TRUE)
Insert(user)
user.apply_damage(100, BRUTE, BODY_ZONE_CHEST)
diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
index 3e853a965b1bf..781df0dceb1f3 100644
--- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
@@ -187,7 +187,7 @@
src.ethereal_heart = ethereal_heart
ethereal_heart.owner.visible_message(span_notice("The crystals fully encase [ethereal_heart.owner]!"))
to_chat(ethereal_heart.owner, span_notice("You are encased in a huge crystal!"))
- playsound(get_turf(src), 'sound/effects/ethereal_crystalization.ogg', 50)
+ playsound(get_turf(src), 'sound/mobs/humanoids/ethereal/ethereal_crystalization.ogg', 50)
var/atom/movable/possible_chair = ethereal_heart.owner.buckled
possible_chair?.unbuckle_mob(ethereal_heart.owner, force = TRUE)
ethereal_heart.owner.forceMove(src) //put that ethereal in
@@ -203,7 +203,7 @@
update_appearance(UPDATE_OVERLAYS)
/obj/structure/ethereal_crystal/atom_destruction(damage_flag)
- playsound(get_turf(ethereal_heart.owner), 'sound/effects/ethereal_revive_fail.ogg', 100)
+ playsound(get_turf(ethereal_heart.owner), 'sound/mobs/humanoids/ethereal/ethereal_revive_fail.ogg', 100)
return ..()
/obj/structure/ethereal_crystal/Destroy()
@@ -236,7 +236,7 @@
// revive will regenerate organs, so our heart refence is going to be null'd. Unreliable
var/mob/living/carbon/regenerating = ethereal_heart.owner
- playsound(get_turf(regenerating), 'sound/effects/ethereal_revive.ogg', 100)
+ playsound(get_turf(regenerating), 'sound/mobs/humanoids/ethereal/ethereal_revive.ogg', 100)
to_chat(regenerating, span_notice("You burst out of the crystal with vigour... But at a cost."))
regenerating.gain_trauma(picked_trauma, TRAUMA_RESILIENCE_ABSOLUTE)
regenerating.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS)
diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm
index 5f435fff98ebb..b2d85a26f8fdc 100644
--- a/code/modules/surgery/organs/internal/lungs/_lungs.dm
+++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm
@@ -12,11 +12,11 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY * 0.9 // fails around 16.5 minutes, lungs are one of the last organs to die (of the ones we have)
- low_threshold_passed = "You feel short of breath."
- high_threshold_passed = "You feel some sort of constriction around your chest as your breathing becomes shallow and rapid."
- now_fixed = "Your lungs seem to once again be able to hold air."
- low_threshold_cleared = "You can breathe normally again."
- high_threshold_cleared = "The constriction around your chest loosens as your breathing calms down."
+ low_threshold_passed = span_warning("You feel short of breath.")
+ high_threshold_passed = span_warning("You feel some sort of constriction around your chest as your breathing becomes shallow and rapid.")
+ now_fixed = span_warning("Your lungs seem to once again be able to hold air.")
+ low_threshold_cleared = span_info("You can breathe normally again.")
+ high_threshold_cleared = span_info("The constriction around your chest loosens as your breathing calms down.")
var/failed = FALSE
var/operated = FALSE //whether we can still have our damages fixed through surgery
@@ -547,7 +547,7 @@
if((prob(nitrium_pp) && (nitrium_pp > 15)))
// Nitrium side-effect.
breather.adjustOrganLoss(ORGAN_SLOT_LUNGS, nitrium_pp * 0.1)
- to_chat(breather, "You feel a burning sensation in your chest")
+ to_chat(breather, span_notice("You feel a burning sensation in your chest"))
// Metabolize to reagents.
if (nitrium_pp > 5)
var/existing = breather.reagents.get_reagent_amount(/datum/reagent/nitrium_low_metabolization)
diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm
index 4f1edd1542d69..7e7a864f0a04c 100644
--- a/code/modules/surgery/organs/internal/stomach/_stomach.dm
+++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm
@@ -15,10 +15,10 @@
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY * 1.15 // ~13 minutes, the stomach is one of the first organs to die
- low_threshold_passed = "Your stomach flashes with pain before subsiding. Food doesn't seem like a good idea right now."
- high_threshold_passed = "Your stomach flares up with constant pain- you can hardly stomach the idea of food right now!"
- high_threshold_cleared = "The pain in your stomach dies down for now, but food still seems unappealing."
- low_threshold_cleared = "The last bouts of pain in your stomach have died out."
+ low_threshold_passed = span_info("Your stomach flashes with pain before subsiding. Food doesn't seem like a good idea right now.")
+ high_threshold_passed = span_warning("Your stomach flares up with constant pain- you can hardly stomach the idea of food right now!")
+ high_threshold_cleared = span_info("The pain in your stomach dies down for now, but food still seems unappealing.")
+ low_threshold_cleared = span_info("The last bouts of pain in your stomach have died out.")
food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5)
//This is a reagent user and needs more then the 10u from edible component
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
index 7df01c516a319..d340edbecea64 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
@@ -105,7 +105,7 @@
//fixed_mut_color is also ethereal color (for some reason)
carbon.flash_lighting_fx(5, 7, human.dna.species.fixed_mut_color ? human.dna.species.fixed_mut_color : human.dna.features["mcolor"])
- playsound(carbon, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
+ playsound(carbon, 'sound/effects/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
carbon.cut_overlay(overcharge)
// Only a small amount of the energy gets discharged as the zap. The rest dissipates as heat. Keeps the damage and energy from the zap the same regardless of what STANDARD_CELL_CHARGE is.
var/discharged_energy = -adjust_charge(ETHEREAL_CHARGE_FULL - cell.charge()) * min(7500 / STANDARD_CELL_CHARGE, 1)
diff --git a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
index 4ed51e77e42d6..f6fed86a90d60 100644
--- a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
+++ b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
@@ -78,7 +78,7 @@
return owner.can_speak()
/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message)
- playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 300, TRUE, 5)
+ playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 300, TRUE, 5)
return //voice of god speaks for us
/obj/item/organ/internal/vocal_cords/colossus/speak_with(message)
diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm
index 0d452d851f266..a9905513e8c65 100644
--- a/code/modules/surgery/plastic_surgery.dm
+++ b/code/modules/surgery/plastic_surgery.dm
@@ -34,9 +34,9 @@
/obj/item/stack/sheet/plastic = 100,
/obj/item/stack/sheet/meat = 100)
time = 3.2 SECONDS
- preop_sound = 'sound/effects/blobattack.ogg'
- success_sound = 'sound/effects/attackblob.ogg'
- failure_sound = 'sound/effects/blobattack.ogg'
+ preop_sound = 'sound/effects/blob/blobattack.ogg'
+ success_sound = 'sound/effects/blob/attackblob.ogg'
+ failure_sound = 'sound/effects/blob/blobattack.ogg'
/datum/surgery_step/insert_plastic/preop(mob/user, mob/living/target, target_zone, obj/item/stack/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/repair_puncture.dm b/code/modules/surgery/repair_puncture.dm
index 0d2e2d3123ca4..b916668433f08 100644
--- a/code/modules/surgery/repair_puncture.dm
+++ b/code/modules/surgery/repair_puncture.dm
@@ -45,7 +45,7 @@
TOOL_SCALPEL = 85,
TOOL_WIRECUTTER = 40)
time = 3 SECONDS
- preop_sound = 'sound/surgery/hemostat1.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
surgery_effects_mood = TRUE
/datum/surgery_step/repair_innards/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -106,8 +106,8 @@
TOOL_WELDER = 70,
/obj/item = 30)
time = 4 SECONDS
- preop_sound = 'sound/surgery/cautery1.ogg'
- success_sound = 'sound/surgery/cautery2.ogg'
+ preop_sound = 'sound/items/handling/surgery/cautery1.ogg'
+ success_sound = 'sound/items/handling/surgery/cautery2.ogg'
/datum/surgery_step/seal_veins/tool_check(mob/user, obj/item/tool)
if(implement_type == TOOL_WELDER || implement_type == /obj/item)
diff --git a/code/modules/surgery/revival.dm b/code/modules/surgery/revival.dm
index 5ade25890ecb6..76689032fb6a4 100644
--- a/code/modules/surgery/revival.dm
+++ b/code/modules/surgery/revival.dm
@@ -63,8 +63,8 @@
/obj/item/gun/energy = 60)
repeatable = TRUE
time = 5 SECONDS
- success_sound = 'sound/magic/lightningbolt.ogg'
- failure_sound = 'sound/magic/lightningbolt.ogg'
+ success_sound = 'sound/effects/magic/lightningbolt.ogg'
+ failure_sound = 'sound/effects/magic/lightningbolt.ogg'
/datum/surgery_step/revive/tool_check(mob/user, obj/item/tool)
. = TRUE
@@ -98,7 +98,7 @@
/datum/surgery_step/revive/play_preop_sound(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(istype(tool, /obj/item/shockpaddles))
- playsound(tool, 'sound/machines/defib_charge.ogg', 75, 0)
+ playsound(tool, 'sound/machines/defib/defib_charge.ogg', 75, 0)
else
..()
diff --git a/code/modules/surgery/sleeper_protocol.dm b/code/modules/surgery/sleeper_protocol.dm
index 277a8c170d6d3..23b02aeda801d 100644
--- a/code/modules/surgery/sleeper_protocol.dm
+++ b/code/modules/surgery/sleeper_protocol.dm
@@ -67,8 +67,8 @@
TOOL_WIRECUTTER = 50,
/obj/item/stack/package_wrap = 35,
/obj/item/stack/cable_coil = 15)
- preop_sound = 'sound/surgery/hemostat1.ogg'
- success_sound = 'sound/surgery/hemostat1.ogg'
+ preop_sound = 'sound/items/handling/surgery/hemostat1.ogg'
+ success_sound = 'sound/items/handling/surgery/hemostat1.ogg'
/datum/surgery_step/brainwash/sleeper_agent/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
objective = pick(possible_objectives)
diff --git a/code/modules/surgery/stomachpump.dm b/code/modules/surgery/stomachpump.dm
index 4d6dca105dacf..4880f9329646f 100644
--- a/code/modules/surgery/stomachpump.dm
+++ b/code/modules/surgery/stomachpump.dm
@@ -36,7 +36,7 @@
accept_hand = TRUE
repeatable = TRUE
time = 20
- success_sound = 'sound/surgery/organ2.ogg'
+ success_sound = 'sound/items/handling/surgery/organ2.ogg'
/datum/surgery_step/stomach_pump/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index c0f71b57ca235..fc6480e923908 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -100,7 +100,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/glass =SHEET_MATERIAL_AMOUNT, /datum/material/plasma =SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT*1.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT*1.5)
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
w_class = WEIGHT_CLASS_NORMAL
toolspeed = 0.7
light_system = OVERLAY_LIGHT
@@ -139,7 +139,7 @@
set_light_color(LIGHT_COLOR_ORANGE)
balloon_alert(user, "lenses set to [active ? "drill" : "mend"]")
- playsound(user ? user : src, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(user ? user : src, 'sound/items/weapons/tap.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/cautery/advanced/examine()
@@ -154,7 +154,7 @@
inhand_icon_state = "drill"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- hitsound = 'sound/weapons/circsawhit.ogg'
+ hitsound = 'sound/items/weapons/circsawhit.ogg'
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*3)
obj_flags = CONDUCTS_ELECTRICITY
item_flags = SURGICAL_TOOL
@@ -191,7 +191,7 @@
/obj/item/surgicaldrill/augment
desc = "Effectively a small power drill contained within your arm. May or may not pierce the heavens."
- hitsound = 'sound/weapons/circsawhit.ogg'
+ hitsound = 'sound/items/weapons/circsawhit.ogg'
w_class = WEIGHT_CLASS_SMALL
toolspeed = 0.5
@@ -214,7 +214,7 @@
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT)
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
sharpness = SHARP_EDGED
tool_behaviour = TOOL_SCALPEL
toolspeed = 1
@@ -255,8 +255,8 @@
inhand_icon_state = "saw"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- hitsound = 'sound/weapons/circsawhit.ogg'
- mob_throw_hit_sound = 'sound/weapons/pierce.ogg'
+ hitsound = 'sound/items/weapons/circsawhit.ogg'
+ mob_throw_hit_sound = 'sound/items/weapons/pierce.ogg'
obj_flags = CONDUCTS_ELECTRICITY
item_flags = SURGICAL_TOOL
force = 15
@@ -281,7 +281,7 @@
speed = 4 SECONDS * toolspeed, \
effectiveness = 100, \
bonus_modifier = 5, \
- butcher_sound = 'sound/weapons/circsawhit.ogg', \
+ butcher_sound = 'sound/items/weapons/circsawhit.ogg', \
)
//saws are very accurate and fast at butchering
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/chainsaw)
@@ -372,7 +372,7 @@
if(!istype(design_holder, /obj/item/disk/surgery) && !istype(design_holder, /obj/machinery/computer/operating))
return NONE
balloon_alert(user, "copying designs...")
- playsound(src, 'sound/machines/terminal_processing.ogg', 25, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_processing.ogg', 25, TRUE)
if(do_after(user, 1 SECONDS, target = design_holder))
if(istype(design_holder, /obj/item/disk/surgery))
var/obj/item/disk/surgery/surgery_disk = design_holder
@@ -380,7 +380,7 @@
else
var/obj/machinery/computer/operating/surgery_computer = design_holder
loaded_surgeries |= surgery_computer.advanced_surgeries
- playsound(src, 'sound/machines/terminal_success.ogg', 25, TRUE)
+ playsound(src, 'sound/machines/terminal/terminal_success.ogg', 25, TRUE)
downloaded = TRUE
update_appearance(UPDATE_OVERLAYS)
return ITEM_INTERACT_SUCCESS
@@ -408,7 +408,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver =SHEET_MATERIAL_AMOUNT, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond =SMALL_MATERIAL_AMOUNT * 2, /datum/material/titanium = SHEET_MATERIAL_AMOUNT*2)
- hitsound = 'sound/weapons/blade1.ogg'
+ hitsound = 'sound/items/weapons/blade1.ogg'
force = 16
w_class = WEIGHT_CLASS_NORMAL
toolspeed = 0.7
@@ -496,7 +496,7 @@
tool_behaviour = (active ? TOOL_HEMOSTAT : TOOL_RETRACTOR)
balloon_alert(user, "gears set to [active ? "clamp" : "retract"]")
- playsound(user ? user : src, 'sound/items/change_drill.ogg', 50, TRUE)
+ playsound(user ? user : src, 'sound/items/tools/change_drill.ogg', 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE
/obj/item/retractor/advanced/examine()
@@ -556,14 +556,14 @@
var/amputation_speed_mod = 1
patient.visible_message(span_danger("[user] begins to secure [src] around [patient]'s [candidate_name]."), span_userdanger("[user] begins to secure [src] around your [candidate_name]!"))
- playsound(get_turf(patient), 'sound/items/ratchet.ogg', 20, TRUE)
+ playsound(get_turf(patient), 'sound/items/tools/ratchet.ogg', 20, TRUE)
if(patient.stat >= UNCONSCIOUS || HAS_TRAIT(patient, TRAIT_INCAPACITATED)) //if you're incapacitated (due to paralysis, a stun, being in staminacrit, etc.), critted, unconscious, or dead, it's much easier to properly line up a snip
amputation_speed_mod *= 0.5
if(patient.stat != DEAD && patient.has_status_effect(/datum/status_effect/jitter)) //jittering will make it harder to secure the shears, even if you can't otherwise move
amputation_speed_mod *= 1.5 //15*0.5*1.5=11.25, so staminacritting someone who's jittering (from, say, a stun baton) won't give you enough time to snip their head off, but staminacritting someone who isn't jittering will
if(do_after(user, toolspeed * 15 SECONDS * amputation_speed_mod, target = patient))
- playsound(get_turf(patient), 'sound/weapons/bladeslice.ogg', 250, TRUE)
+ playsound(get_turf(patient), 'sound/items/weapons/bladeslice.ogg', 250, TRUE)
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN) //OwO
tail_snip_candidate.Remove(patient)
tail_snip_candidate.forceMove(get_turf(patient))
@@ -583,7 +583,7 @@
if(thing.body_part == CHEST)
continue
addtimer(CALLBACK(thing, TYPE_PROC_REF(/obj/item/bodypart/, dismember)), timer)
- addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), user, 'sound/weapons/bladeslice.ogg', 70), timer)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), user, 'sound/items/weapons/bladeslice.ogg', 70), timer)
timer += 1 SECONDS
sleep(timer)
return BRUTELOSS
diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm
index 9fb8b02b0196c..a680056b0e5e7 100644
--- a/code/modules/tgui_panel/tgui_panel.dm
+++ b/code/modules/tgui_panel/tgui_panel.dm
@@ -61,7 +61,7 @@
*/
/datum/tgui_panel/proc/on_initialize_timed_out()
// Currently does nothing but sending a message to old chat.
- SEND_TEXT(client, "Failed to load fancy chat, click HERE to attempt to reload it.")
+ SEND_TEXT(client, span_userdanger("Failed to load fancy chat, click HERE to attempt to reload it."))
/**
* private
diff --git a/code/modules/transport/_transport_machinery.dm b/code/modules/transport/_transport_machinery.dm
index a51d6d840d372..6028510293815 100644
--- a/code/modules/transport/_transport_machinery.dm
+++ b/code/modules/transport/_transport_machinery.dm
@@ -125,7 +125,7 @@
machine.balloon_alert(user, "interrupted!")
return FALSE
- playsound(src, 'sound/machines/synth_yes.ogg', 75, use_reverb = TRUE)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 75, use_reverb = TRUE)
machine.balloon_alert(user, "success!")
UnregisterSignal(src, repair_signals)
LAZYNULL(repair_signals)
diff --git a/code/modules/transport/elevator/elev_controller.dm b/code/modules/transport/elevator/elev_controller.dm
index 870211ecb56d9..ce49efafe4bd8 100644
--- a/code/modules/transport/elevator/elev_controller.dm
+++ b/code/modules/transport/elevator/elev_controller.dm
@@ -106,7 +106,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/elevator, 32)
// Actually try to call the elevator - this sleeps.
// If we failed to call it, play a buzz sound.
if(!call_elevator(activator))
- playsound(loc, 'sound/machines/buzz-two.ogg', 50, TRUE)
+ playsound(loc, 'sound/machines/buzz/buzz-two.ogg', 50, TRUE)
// Finally, give people a chance to get off after it's done before going back off cooldown
COOLDOWN_START(src, elevator_cooldown, 2 SECONDS)
@@ -154,7 +154,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/elevator, 32)
if(!QDELETED(prime_lift) && prime_lift.z != loc.z)
if(!QDELETED(activator))
loc.balloon_alert(activator, "elevator out of service!")
- playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
+ playsound(loc, 'sound/machines/buzz/buzz-sigh.ogg', 50, TRUE)
return TRUE
// Everything went according to plan
diff --git a/code/modules/transport/linear_controller.dm b/code/modules/transport/linear_controller.dm
index 1b3ffd30c148f..0388fe11482f3 100644
--- a/code/modules/transport/linear_controller.dm
+++ b/code/modules/transport/linear_controller.dm
@@ -345,7 +345,7 @@
var/obj/structure/transport/linear/prime_lift = return_closest_platform_to_z(direction == UP ? world.maxz : 0)
// ...because we use the duration of the sound effect to make it last for roughly the duration of the lift travel
- playsound(prime_lift, 'sound/mecha/hydraulic.ogg', 25, vary = TRUE, frequency = clamp(HYDRAULIC_SFX_DURATION / lift_move_duration, 0.33, 3))
+ playsound(prime_lift, 'sound/vehicles/mecha/hydraulic.ogg', 25, vary = TRUE, frequency = clamp(HYDRAULIC_SFX_DURATION / lift_move_duration, 0.33, 3))
// Move the platform after a timer
addtimer(CALLBACK(src, PROC_REF(move_lift_vertically), direction, user), lift_move_duration, TIMER_UNIQUE)
diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm
index 11b3bbcdec9e9..5ac6d5bc748bc 100644
--- a/code/modules/transport/tram/tram_controller.dm
+++ b/code/modules/transport/tram/tram_controller.dm
@@ -256,7 +256,7 @@
set_status_code(PRE_DEPARTURE, FALSE)
if(controller_status & EMERGENCY_STOP)
set_status_code(EMERGENCY_STOP, FALSE)
- playsound(paired_cabinet, 'sound/machines/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset.")
if(malf_active)
@@ -346,7 +346,7 @@
addtimer(CALLBACK(src, PROC_REF(unlock_controls)), 2 SECONDS)
if((controller_status & SYSTEM_FAULT) && (nav_beacon.loc == destination_platform.loc)) //position matches between controller and tram, we're back on track
set_status_code(SYSTEM_FAULT, FALSE)
- playsound(paired_cabinet, 'sound/machines/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset.")
log_transport("TC: [specific_transport_id] position data successfully reset.")
speed_limiter = initial(speed_limiter)
@@ -366,7 +366,7 @@
addtimer(CALLBACK(src, PROC_REF(unlock_controls)), 4 SECONDS)
if(controller_status & SYSTEM_FAULT)
set_status_code(SYSTEM_FAULT, FALSE)
- playsound(paired_cabinet, 'sound/machines/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset.")
log_transport("TC: [specific_transport_id] position data successfully reset. ")
speed_limiter = initial(speed_limiter)
@@ -375,7 +375,7 @@
addtimer(CALLBACK(src, PROC_REF(cycle_doors), CYCLE_OPEN), 2 SECONDS)
malf_active = FALSE
throw_chance = initial(throw_chance)
- playsound(paired_cabinet, 'sound/machines/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller error. Please contact your engineering department.")
idle_platform = destination_platform
tram_registration.distance_travelled += (travel_trip_length - travel_remaining)
@@ -393,7 +393,7 @@
/datum/transport_controller/linear/tram/proc/halt_and_catch_fire()
if(controller_status & SYSTEM_FAULT)
if(!isnull(paired_cabinet))
- playsound(paired_cabinet, 'sound/machines/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller error. Please contact your engineering department.")
log_transport("TC: [specific_transport_id] Transport Controller failed!")
@@ -421,7 +421,7 @@
if(get_turf(idle_platform) == get_turf(nav_beacon))
set_status_code(SYSTEM_FAULT, FALSE)
set_status_code(EMERGENCY_STOP, FALSE)
- playsound(paired_cabinet, 'sound/machines/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset.")
log_transport("TC: [specific_transport_id] Transport Controller reset was requested, but the tram nav data seems correct. Info: nav_pos ([nav_beacon.x], [nav_beacon.y], [nav_beacon.z]) idle_pos ([idle_platform.x], [idle_platform.y], [idle_platform.z]).")
return
@@ -436,7 +436,7 @@
var/reset_beacon = closest_nav_in_travel_dir(nav_beacon, tram_velocity_sign, specific_transport_id)
if(!reset_beacon)
- playsound(paired_cabinet, 'sound/machines/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Controller reset failed. Contact manufacturer.") // If you screwed up the tram this bad, I don't even
log_transport("TC: [specific_transport_id] non-recoverable error! Tram is at ([nav_beacon.x], [nav_beacon.y], [nav_beacon.z] [tram_velocity_sign ? "OUTBOUND" : "INBOUND"]) and can't find a reset beacon.")
message_admins("Tram ID [specific_transport_id] is in a non-recoverable error state at [ADMIN_JMP(nav_beacon)]. If it's causing problems, delete the controller datum from the 'Reset Tram' proc in the Debug tab.")
@@ -457,7 +457,7 @@
log_transport("TC: [specific_transport_id] trying to reset at [destination_platform].")
/datum/transport_controller/linear/tram/proc/estop()
- playsound(paired_cabinet, 'sound/machines/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
paired_cabinet.say("Emergency stop activated!")
set_status_code(EMERGENCY_STOP, TRUE)
log_transport("TC: [specific_transport_id] requested emergency stop.")
@@ -887,9 +887,9 @@
/obj/machinery/transport/tram_controller/proc/toggle_door()
if(!cover_open)
- playsound(loc, 'sound/machines/closet_open.ogg', 35, TRUE, -3)
+ playsound(loc, 'sound/machines/closet/closet_open.ogg', 35, TRUE, -3)
else
- playsound(loc, 'sound/machines/closet_close.ogg', 50, TRUE, -3)
+ playsound(loc, 'sound/machines/closet/closet_close.ogg', 50, TRUE, -3)
cover_open = !cover_open
update_appearance()
diff --git a/code/modules/transport/tram/tram_doors.dm b/code/modules/transport/tram/tram_doors.dm
index 6d5231db96c56..6e1680bcb4c15 100644
--- a/code/modules/transport/tram/tram_doors.dm
+++ b/code/modules/transport/tram/tram_doors.dm
@@ -14,8 +14,8 @@
air_tight = TRUE
req_access = list(ACCESS_TCOMMS)
transport_linked_id = TRAMSTATION_LINE_1
- doorOpen = 'sound/machines/tramopen.ogg'
- doorClose = 'sound/machines/tramclose.ogg'
+ doorOpen = 'sound/machines/tram/tramopen.ogg'
+ doorClose = 'sound/machines/tram/tramclose.ogg'
autoclose = FALSE
/// Weakref to the tram we're attached
var/datum/weakref/transport_ref
@@ -43,7 +43,7 @@
update_icon(ALL, AIRLOCK_OPENING, TRUE)
if(forced >= BYPASS_DOOR_CHECKS)
- playsound(src, 'sound/machines/airlockforced.ogg', vol = 40, vary = FALSE)
+ playsound(src, 'sound/machines/airlock/airlockforced.ogg', vol = 40, vary = FALSE)
sleep(TRAM_DOOR_CYCLE_TIME)
else
playsound(src, doorOpen, vol = 40, vary = FALSE)
@@ -101,7 +101,7 @@
for(var/atom/movable/blocker in checked_turf)
if(blocker.density && blocker != src) //something is blocking the door
say("Please stand clear of the doors!")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
layer = OPEN_DOOR_LAYER
update_icon(ALL, AIRLOCK_OPEN, 1)
operating = FALSE
@@ -167,7 +167,7 @@
close()
return
- playsound(src, 'sound/machines/buzz-two.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
say("YOU'RE HOLDING UP THE TRAM, ASSHOLE!")
close(forced = BYPASS_DOOR_CHECKS)
diff --git a/code/modules/transport/tram/tram_signals.dm b/code/modules/transport/tram/tram_signals.dm
index a5d309b8378b0..7f0da9331d613 100644
--- a/code/modules/transport/tram/tram_signals.dm
+++ b/code/modules/transport/tram/tram_signals.dm
@@ -562,7 +562,7 @@
new_partner.paired_sensor = WEAKREF(src)
new_partner.set_machine_stat(machine_stat & ~MAINT)
new_partner.update_appearance()
- playsound(src, 'sound/machines/synth_yes.ogg', 75, vary = FALSE, use_reverb = TRUE)
+ playsound(src, 'sound/machines/synth/synth_yes.ogg', 75, vary = FALSE, use_reverb = TRUE)
/obj/machinery/transport/guideway_sensor/Destroy()
SStransport.sensors -= src
@@ -571,7 +571,7 @@
divorcee.set_machine_stat(machine_stat & ~MAINT)
divorcee.paired_sensor = null
divorcee.update_appearance()
- playsound(src, 'sound/machines/synth_no.ogg', 75, vary = FALSE, use_reverb = TRUE)
+ playsound(src, 'sound/machines/synth/synth_no.ogg', 75, vary = FALSE, use_reverb = TRUE)
paired_sensor = null
. = ..()
diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm
index 1eed69c84ffb0..bdea433a9c925 100644
--- a/code/modules/transport/tram/tram_structures.dm
+++ b/code/modules/transport/tram/tram_structures.dm
@@ -55,9 +55,9 @@
/// Sound when it breaks
var/break_sound = SFX_SHATTER
/// Sound when hit without combat mode
- var/knock_sound = 'sound/effects/glassknock.ogg'
+ var/knock_sound = 'sound/effects/glass/glassknock.ogg'
/// Sound when hit with combat mode
- var/bash_sound = 'sound/effects/glassbash.ogg'
+ var/bash_sound = 'sound/effects/glass/glassbash.ogg'
/obj/structure/tram/split
base_icon_state = "tram-split"
diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm
index 809bf60d230a8..1bda9875c2648 100644
--- a/code/modules/unit_tests/fish_unit_tests.dm
+++ b/code/modules/unit_tests/fish_unit_tests.dm
@@ -128,7 +128,7 @@
description = "It smells fishy."
/obj/structure/aquarium/traits
- allow_breeding = TRUE
+ reproduction_and_growth = TRUE
var/obj/item/fish/testdummy/crossbreeder/crossbreeder
var/obj/item/fish/testdummy/cloner/cloner
var/obj/item/fish/testdummy/sterile/sterile
@@ -155,7 +155,7 @@
fish_traits = list(/datum/fish_trait/no_mating)
/obj/structure/aquarium/evolution
- allow_breeding = TRUE
+ reproduction_and_growth = TRUE
var/obj/item/fish/testdummy/evolve/evolve
var/obj/item/fish/testdummy/evolve_two/evolve_two
@@ -182,7 +182,9 @@
new_fish_type = /obj/item/fish/clownfish
new_traits = list(/datum/fish_trait/dummy/two)
removed_traits = list(/datum/fish_trait/dummy)
+ show_on_wiki = FALSE
+///This is used by both fish_evolution and fish_growth unit tests.
/datum/fish_evolution/dummy/two
new_fish_type = /obj/item/fish/goldfish
@@ -190,6 +192,12 @@
. = ..()
probability = 0 //works around the global list initialization skipping abstract/impossible evolutions.
+///During the fish_growth unit test, we spawn a fish outside of the aquarium and check that this actually stops it from growing
+/datum/fish_evolution/dummy/two/growth_checks(obj/item/fish/source, seconds_per_tick, growth)
+ . = ..()
+ if(!isaquarium(source.loc))
+ return COMPONENT_DONT_GROW
+
///A test that checks that fishing portals can be linked and function as expected
/datum/unit_test/fish_portal_gen_linking
@@ -312,29 +320,49 @@
run_loc_floor_bottom_left.ChangeTurf(original_turf_type, original_turf_baseturfs)
return ..()
-///Check that you can actually raise a chasm crab without errors.
-/datum/unit_test/raise_a_chasm_crab
+///Check that the fish growth component works.
+/datum/unit_test/fish_growth
-/datum/unit_test/raise_a_chasm_crab/Run()
+/datum/unit_test/fish_growth/Run()
var/obj/structure/aquarium/crab/aquarium = allocate(/obj/structure/aquarium/crab)
- SEND_SIGNAL(aquarium.crabbie, COMSIG_FISH_LIFE, 1) //give the fish growth component a small push.
+ var/list/growth_comps = aquarium.crabbie.GetComponents(/datum/component/fish_growth) //Can't use GetComponent() without s because the comp is dupe-selective
+ var/datum/component/fish_growth/crab_growth = growth_comps[1]
+
+ crab_growth.on_fish_life(aquarium.crabbie, seconds_per_tick = 1) //give the fish growth component a small push.
+
var/mob/living/basic/mining/lobstrosity/juvenile/lobster = locate() in aquarium.loc
+ TEST_ASSERT(lobster, "The lobstrosity didn't spawn at all. chasm crab maturation: [crab_growth.maturation]%.")
TEST_ASSERT_EQUAL(lobster.loc, get_turf(aquarium), "The lobstrosity didn't spawn on the aquarium's turf")
TEST_ASSERT(QDELETED(aquarium.crabbie), "The test aquarium's chasm crab didn't delete itself.")
+ TEST_ASSERT_EQUAL(lobster.name, "Crabbie", "The lobstrosity didn't inherit the aquarium chasm crab's custom name")
allocated |= lobster //make sure it's allocated and thus properly deleted when the test is over
+
//While ideally impossible to have all traits because of incompatible ones, I want to be sure they don't error out.
for(var/trait_type in GLOB.fish_traits)
var/datum/fish_trait/trait = GLOB.fish_traits[trait_type]
trait.apply_to_mob(lobster)
+ var/obj/item/fish/testdummy/dummy = allocate(/obj/item/fish/testdummy)
+ var/datum/component/fish_growth/dummy_growth = dummy.AddComponent(/datum/component/fish_growth, /datum/fish_evolution/dummy/two, 1 SECONDS, use_drop_loc = FALSE)
+ dummy.last_feeding = world.time
+ dummy_growth.on_fish_life(dummy, seconds_per_tick = 1)
+ TEST_ASSERT(!QDELETED(dummy), "The fish has grown when it shouldn't have")
+ dummy.forceMove(aquarium)
+ dummy_growth.on_fish_life(dummy, seconds_per_tick = 1)
+ var/obj/item/fish/dummy_boogaloo = locate(/datum/fish_evolution/dummy/two::new_fish_type) in aquarium
+ TEST_ASSERT(dummy_boogaloo, "The new fish type cannot be found inside the aquarium")
+
/obj/structure/aquarium/crab
- allow_breeding = TRUE //needed for growing up
+ reproduction_and_growth = TRUE //needed for growing up
///Our test subject
var/obj/item/fish/chasm_crab/instant_growth/crabbie
/obj/structure/aquarium/crab/Initialize(mapload)
. = ..()
crabbie = new(src)
+ crabbie.name = "Crabbie"
+ crabbie.last_feeding = world.time
+ crabbie.AddComponent(/datum/component/fish_growth, crabbie.lob_type, 1 SECONDS)
/obj/structure/aquarium/crab/Exited(atom/movable/gone)
. = ..()
@@ -342,7 +370,6 @@
crabbie = null
/obj/item/fish/chasm_crab/instant_growth
- growth_rate = 100
fish_traits = list() //We don't want to end up applying traits twice on the resulting lobstrosity
/datum/unit_test/fish_sources
@@ -452,6 +479,13 @@
/obj/item/fish/testdummy/food
average_weight = FISH_WEIGHT_BITE_DIVISOR * 2 //One bite, it's death; the other, it's gone.
+///Check that nothing wrong happens when randomizing size and weight of a fish
+/datum/unit_test/fish_randomize_size_weight
+
+/datum/unit_test/fish_randomize_size_weight/Run()
+ var/obj/item/storage/box/fish_debug/box = allocate(/obj/item/storage/box/fish_debug)
+ for(var/obj/item/fish/fish as anything in box)
+ fish.randomize_size_and_weight()
+
#undef FISH_REAGENT_AMOUNT
#undef TRAIT_FISH_TESTING
-
diff --git a/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png b/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png
index adc462ace50d1..c29a1e742f1f4 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png and b/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png differ
diff --git a/code/modules/unit_tests/screenshots/screenshot_husk_body.png b/code/modules/unit_tests/screenshots/screenshot_husk_body.png
index d113b47384678..0892b864695ac 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_husk_body.png and b/code/modules/unit_tests/screenshots/screenshot_husk_body.png differ
diff --git a/code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png b/code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
index 1a1db7dfd87fe..6ea75db4bb7b7 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png and b/code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png differ
diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm
index 2cd85f786fc48..6a2fd57821fc1 100644
--- a/code/modules/vehicles/cars/clowncar.dm
+++ b/code/modules/vehicles/cars/clowncar.dm
@@ -127,7 +127,7 @@
"[WOUND_PICK_HIGHEST_SEVERITY]"
)))
carbon_occupant.cause_wound_of_type_and_severity(WOUND_BLUNT, head_to_wound, WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, pick_mode)
- carbon_occupant.playsound_local(src, 'sound/weapons/flash_ring.ogg', 50)
+ carbon_occupant.playsound_local(src, 'sound/items/weapons/flash_ring.ogg', 50)
carbon_occupant.set_eye_blur_if_lower(rand(10 SECONDS, 20 SECONDS))
hittarget_living.adjustBruteLoss(200)
@@ -168,7 +168,7 @@
target_pancake.visible_message(span_warning("[src] runs over [target_pancake], flattening [target_pancake.p_them()] like a pancake!"))
target_pancake.AddElement(/datum/element/squish, 5 SECONDS)
target_pancake.Paralyze(2 SECONDS)
- playsound(target_pancake, 'sound/effects/cartoon_splat.ogg', 75)
+ playsound(target_pancake, 'sound/effects/cartoon_sfx/cartoon_splat.ogg', 75)
log_combat(src, crossed, "ran over")
/obj/vehicle/sealed/car/clowncar/emag_act(mob/user, obj/item/card/emag/emag_card)
diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm
index 56e1da7528d95..e2d9c50e5d66c 100644
--- a/code/modules/vehicles/cars/vim.dm
+++ b/code/modules/vehicles/cars/vim.dm
@@ -90,7 +90,7 @@
update_appearance()
playsound(src, 'sound/machines/windowdoor.ogg', 50, TRUE)
if(atom_integrity == max_integrity)
- SEND_SOUND(newoccupant, sound('sound/mecha/nominal.ogg',volume=50))
+ SEND_SOUND(newoccupant, sound('sound/vehicles/mecha/nominal.ogg',volume=50))
/obj/vehicle/sealed/car/vim/mob_try_exit(mob/pilot, mob/user, silent = FALSE, randomstep = FALSE)
. = ..()
diff --git a/code/modules/vehicles/lavaboat.dm b/code/modules/vehicles/lavaboat.dm
index 0336ff486dd47..fbe130d969709 100644
--- a/code/modules/vehicles/lavaboat.dm
+++ b/code/modules/vehicles/lavaboat.dm
@@ -67,7 +67,7 @@
/obj/item/ship_in_a_bottle/attack_self(mob/user)
to_chat(user, span_notice("You're not sure how they get the ships in these things, but you're pretty sure you know how to get it out."))
- playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE)
+ playsound(user.loc, 'sound/effects/glass/glassbr1.ogg', 100, TRUE)
new /obj/vehicle/ridden/lavaboat/dragon(get_turf(src))
qdel(src)
diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index 4755631dfeb0a..ccb211a2a6678 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -35,6 +35,8 @@
generic_canpass = FALSE
hud_possible = list(DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD, DIAG_CAMERA_HUD)
mouse_pointer = 'icons/effects/mouse_pointers/mecha_mouse.dmi'
+ /// Significantly heavier than humans
+ inertia_force_weight = 5
///How much energy the mech will consume each time it moves. this is the current active energy consumed
var/step_energy_drain = 0.008 * STANDARD_CELL_CHARGE
///How much energy we drain each time we mechpunch someone
@@ -134,12 +136,12 @@
///Whether our steps are silent due to no gravity
var/step_silent = FALSE
///Sound played when the mech moves
- var/stepsound = 'sound/mecha/mechstep.ogg'
+ var/stepsound = 'sound/vehicles/mecha/mechstep.ogg'
///Sound played when the mech walks
- var/turnsound = 'sound/mecha/mechturn.ogg'
+ var/turnsound = 'sound/vehicles/mecha/mechturn.ogg'
///Sounds for types of melee attack
- var/brute_attack_sound = 'sound/weapons/punch4.ogg'
- var/burn_attack_sound = 'sound/items/welder.ogg'
+ var/brute_attack_sound = 'sound/items/weapons/punch4.ogg'
+ var/burn_attack_sound = 'sound/items/tools/welder.ogg'
var/tox_attack_sound = 'sound/effects/spray2.ogg'
///Sound on wall destroying
var/destroy_wall_sound = 'sound/effects/meteorimpact.ogg'
@@ -376,7 +378,7 @@
/obj/vehicle/sealed/mecha/proc/set_safety(mob/user)
weapons_safety = !weapons_safety
if(!safety_sound_custom)
- SEND_SOUND(user, sound('sound/machines/beep.ogg', volume = 25))
+ SEND_SOUND(user, sound('sound/machines/beep/beep.ogg', volume = 25))
balloon_alert(user, "equipment [weapons_safety ? "safe" : "ready"]")
set_mouse_pointer()
SEND_SIGNAL(src, COMSIG_MECH_SAFETIES_TOGGLE, user, weapons_safety)
@@ -819,7 +821,7 @@
balloon_alert(occupant, "cabin [cabin_sealed ? "sealed" : "unsealed"]")
log_message("Cabin [cabin_sealed ? "sealed" : "unsealed"].", LOG_MECHA)
- playsound(src, 'sound/machines/airlock.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/airlock/airlock.ogg', 50, TRUE)
/// Special light eater handling
/obj/vehicle/sealed/mecha/proc/on_light_eater(obj/vehicle/sealed/source, datum/light_eater)
diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm
index a466bc30d2245..0e1ab1302db91 100644
--- a/code/modules/vehicles/mecha/combat/durand.dm
+++ b/code/modules/vehicles/mecha/combat/durand.dm
@@ -236,13 +236,13 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
if(chassis.defense_mode)
SetInvisibility(INVISIBILITY_NONE, id=type)
flick("shield_raise", src)
- playsound(src, 'sound/mecha/mech_shield_raise.ogg', 50, FALSE)
+ playsound(src, 'sound/vehicles/mecha/mech_shield_raise.ogg', 50, FALSE)
icon_state = "shield"
resetdir(chassis, dir, dir) // to set the plane for the shield properly when it's turned on
RegisterSignal(chassis, COMSIG_ATOM_DIR_CHANGE, PROC_REF(resetdir))
else
flick("shield_drop", src)
- playsound(src, 'sound/mecha/mech_shield_drop.ogg', 50, FALSE)
+ playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE)
icon_state = "shield_null"
addtimer(CALLBACK(src, PROC_REF(make_invisible)), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE)
UnregisterSignal(chassis, COMSIG_ATOM_DIR_CHANGE)
@@ -283,7 +283,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
atom_integrity = 10000
/obj/durand_shield/play_attack_sound()
- playsound(src, 'sound/mecha/mech_shield_deflect.ogg', 100, TRUE)
+ playsound(src, 'sound/vehicles/mecha/mech_shield_deflect.ogg', 100, TRUE)
/obj/durand_shield/bullet_act()
play_attack_sound()
diff --git a/code/modules/vehicles/mecha/combat/justice.dm b/code/modules/vehicles/mecha/combat/justice.dm
index 00b0543dbd865..5dbe4ac890e98 100644
--- a/code/modules/vehicles/mecha/combat/justice.dm
+++ b/code/modules/vehicles/mecha/combat/justice.dm
@@ -23,8 +23,8 @@
mech_type = EXOSUIT_MODULE_JUSTICE
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
mecha_flags = ID_LOCK_ON | QUIET_STEPS | QUIET_TURNS | CAN_STRAFE | HAS_LIGHTS | MMI_COMPATIBLE | IS_ENCLOSED
- destroy_wall_sound = 'sound/mecha/mech_blade_break_wall.ogg'
- brute_attack_sound = 'sound/mecha/mech_blade_attack.ogg'
+ destroy_wall_sound = 'sound/vehicles/mecha/mech_blade_break_wall.ogg'
+ brute_attack_sound = 'sound/vehicles/mecha/mech_blade_attack.ogg'
attack_verbs = list("cut", "cuts", "cutting")
weapons_safety = TRUE
safety_sound_custom = TRUE
@@ -70,7 +70,7 @@
else
movedelay = MOVEDELAY_ANGRY
- playsound(src, 'sound/mecha/mech_blade_safty.ogg', 75, FALSE) //everyone need to hear this sound
+ playsound(src, 'sound/vehicles/mecha/mech_blade_safty.ogg', 75, FALSE) //everyone need to hear this sound
update_appearance(UPDATE_ICON_STATE)
@@ -106,7 +106,7 @@
*/
/obj/vehicle/sealed/mecha/justice/proc/finish_him(obj/vehicle/sealed/mecha/my_mech, mob/finisher, mob/living/him)
say(pick("Take my Justice-Slash!", "A falling leaf...", "Justice is quite a lonely path"), forced = "Justice Mech")
- playsound(src, 'sound/mecha/mech_stealth_pre_attack.ogg', 75, FALSE)
+ playsound(src, 'sound/vehicles/mecha/mech_stealth_pre_attack.ogg', 75, FALSE)
if(!do_after(finisher, 1 SECONDS, him))
return
if(QDELETED(finisher))
@@ -140,13 +140,13 @@
if(alpha == 255)
return
animate(src, alpha = 255, time = 0.5 SECONDS)
- playsound(src, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE)
+ playsound(src, 'sound/vehicles/mecha/mech_stealth_effect.ogg' , 75, FALSE)
/obj/vehicle/sealed/mecha/justice/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration)
if(LAZYLEN(occupants))
if(prob(60))
new /obj/effect/temp_visual/mech_sparks(get_turf(src))
- playsound(src, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE)
+ playsound(src, 'sound/vehicles/mecha/mech_stealth_effect.ogg' , 75, FALSE)
return
return ..()
@@ -162,9 +162,9 @@
/// Energy cost to become invisibile
var/energy_cost = 200
/// Aoe pre attack sound.
- var/stealth_pre_attack_sound = 'sound/mecha/mech_stealth_pre_attack.ogg'
+ var/stealth_pre_attack_sound = 'sound/vehicles/mecha/mech_stealth_pre_attack.ogg'
/// Aoe attack sound.
- var/stealth_attack_sound = 'sound/mecha/mech_stealth_attack.ogg'
+ var/stealth_attack_sound = 'sound/vehicles/mecha/mech_stealth_attack.ogg'
/datum/action/vehicle/sealed/mecha/invisibility/set_chassis(passed_chassis)
. = ..()
@@ -208,7 +208,7 @@
///Called when invisibility activated.
/datum/action/vehicle/sealed/mecha/invisibility/proc/invisibility_on()
new /obj/effect/temp_visual/mech_sparks(get_turf(chassis))
- playsound(chassis, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE)
+ playsound(chassis, 'sound/vehicles/mecha/mech_stealth_effect.ogg' , 75, FALSE)
check_charge_attack()
animate(chassis, alpha = 0, time = 0.5 SECONDS)
button_icon_state = "mech_stealth_on"
@@ -223,7 +223,7 @@
///Called when invisibility deactivated.
/datum/action/vehicle/sealed/mecha/invisibility/proc/invisibility_off()
new /obj/effect/temp_visual/mech_sparks(get_turf(chassis))
- playsound(chassis, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE)
+ playsound(chassis, 'sound/vehicles/mecha/mech_stealth_effect.ogg' , 75, FALSE)
invisibility_timer = null
charge = FALSE
addtimer(CALLBACK(src, PROC_REF(charge)), 5 SECONDS)
@@ -369,7 +369,7 @@
/// Maximum range of charge attack.
var/max_charge_range = 7
/// Sound when mech do charge attack.
- var/charge_attack_sound = 'sound/mecha/mech_charge_attack.ogg'
+ var/charge_attack_sound = 'sound/vehicles/mecha/mech_charge_attack.ogg'
/datum/action/vehicle/sealed/mecha/charge_attack/set_chassis(passed_chassis)
. = ..()
diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm
index 48e2d60cbd68e..32fd0627c6fb8 100644
--- a/code/modules/vehicles/mecha/combat/marauder.dm
+++ b/code/modules/vehicles/mecha/combat/marauder.dm
@@ -79,7 +79,7 @@
to_chat(owner, "[icon2html(chassis, owner)]Zoom mode [chassis.zoom_mode?"en":"dis"]abled.")
if(chassis.zoom_mode)
owner.client.view_size.setTo(4.5)
- SEND_SOUND(owner, sound('sound/mecha/imag_enh.ogg', volume=50))
+ SEND_SOUND(owner, sound('sound/vehicles/mecha/imag_enh.ogg', volume=50))
else
owner.client.view_size.resetToDefault()
build_all_button_icons()
diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm
index cacfa7743dfbb..8f37b0945ec20 100644
--- a/code/modules/vehicles/mecha/combat/phazon.dm
+++ b/code/modules/vehicles/mecha/combat/phazon.dm
@@ -57,7 +57,7 @@
chassis.balloon_alert(owner,"your punches will now deal toxin damage")
chassis.damtype = new_damtype
button_icon_state = "mech_damtype_[new_damtype]"
- playsound(chassis, 'sound/mecha/mechmove01.ogg', 50, TRUE)
+ playsound(chassis, 'sound/vehicles/mecha/mechmove01.ogg', 50, TRUE)
build_all_button_icons()
/datum/action/vehicle/sealed/mecha/mech_toggle_phasing
diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
index 123cfef903581..dfcf2896b5b74 100644
--- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
+++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm
@@ -110,7 +110,7 @@
switch(skyfall_charge_level)
if(1)
chassis.visible_message(span_warning("[chassis] clicks and whirrs for a moment, with a low hum emerging from the legs."))
- playsound(chassis, 'sound/items/rped.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/tools/rped.ogg', 50, TRUE)
if(2)
chassis.visible_message(span_warning("[chassis] begins to shake, the sounds of electricity growing louder."))
chassis.Shake(1, 1, SKYFALL_SINGLE_CHARGE_TIME-1) // -1 gives space between the animates, so they don't interrupt eachother
@@ -121,12 +121,12 @@
chassis.update_appearance(UPDATE_ICON_STATE)
if(4)
chassis.visible_message(span_warning("[chassis] sparks and shutters as it finalizes preparation."))
- playsound(chassis, 'sound/mecha/skyfall_power_up.ogg', 50, TRUE)
+ playsound(chassis, 'sound/vehicles/mecha/skyfall_power_up.ogg', 50, TRUE)
chassis.Shake(3, 3, SKYFALL_SINGLE_CHARGE_TIME-1) // -1 gives space between the animates, so they don't interrupt eachother
chassis.spark_system.start()
if(SKYFALL_CHARGELEVEL_LAUNCH)
chassis.visible_message(span_danger("[chassis] leaps into the air!"))
- playsound(chassis, 'sound/weapons/gun/general/rocket_launch.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/weapons/gun/general/rocket_launch.ogg', 50, TRUE)
if(skyfall_charge_level != SKYFALL_CHARGELEVEL_LAUNCH)
skyfall_charge_loop()
return
@@ -171,7 +171,7 @@
/datum/action/vehicle/sealed/mecha/skyfall/proc/land()
var/turf/landed_on = get_turf(chassis)
chassis.visible_message(span_danger("[chassis] lands from above!"))
- playsound(chassis, 'sound/effects/explosion1.ogg', 50, 1)
+ playsound(chassis, 'sound/effects/explosion/explosion1.ogg', 50, 1)
chassis.resistance_flags &= ~INDESTRUCTIBLE
chassis.mecha_flags &= ~(QUIET_STEPS|QUIET_TURNS|CANNOT_INTERACT)
chassis.phasing = initial(chassis.phasing)
@@ -286,7 +286,7 @@
owner.client.mouse_override_icon = 'icons/effects/mouse_pointers/supplypod_down_target.dmi'
owner.update_mouse_pointer()
owner.overlay_fullscreen("ivanov", /atom/movable/screen/fullscreen/ivanov_display, 1)
- SEND_SOUND(owner, 'sound/machines/terminal_on.ogg') //spammable so I don't want to make it audible to anyone else
+ SEND_SOUND(owner, 'sound/machines/terminal/terminal_on.ogg') //spammable so I don't want to make it audible to anyone else
/**
* ## end_missile_targeting
@@ -328,7 +328,7 @@
rockets_left--
if(rockets_left <= 0)
end_missile_targeting()
- SEND_SOUND(owner, 'sound/machines/triple_beep.ogg')
+ SEND_SOUND(owner, 'sound/machines/beep/triple_beep.ogg')
S_TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_MISSILE_STRIKE, strike_cooldown_time)
podspawn(list(
"target" = target_turf,
diff --git a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
index 00d0a955d7b87..2ad10ae028d17 100644
--- a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
+++ b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
@@ -33,7 +33,7 @@
///Boolean: whether a pacifist can use this equipment
var/harmful = FALSE
///Sound file: Sound to play when this equipment is destroyed while still attached to the mech
- var/destroy_sound = 'sound/mecha/critdestr.ogg'
+ var/destroy_sound = 'sound/vehicles/mecha/critdestr.ogg'
/obj/item/mecha_parts/mecha_equipment/Destroy()
if(chassis)
@@ -201,7 +201,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto)
moveto = moveto || get_turf(chassis)
forceMove(moveto)
- playsound(chassis, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/weapons/tap.ogg', 50, TRUE)
LAZYREMOVE(chassis.flat_equipment, src)
var/to_unequip_slot = equipment_slot
if(equipment_slot == MECHA_WEAPON)
diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
index 95def3ef9b07c..bcf6d9a86ae81 100644
--- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
@@ -74,7 +74,7 @@
if(istype(target, /turf/closed/mineral/gibtonite))
var/turf/closed/mineral/gibtonite/giberal_turf = target
if(giberal_turf.stage != GIBTONITE_UNSTRUCK)
- playsound(chassis, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+ playsound(chassis, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
to_chat(source, span_warning("[icon2html(src, source)] Active gibtonite ore deposit detected! Safety protocols preventing continued drilling."))
return
@@ -115,7 +115,7 @@
while(do_after_mecha(target, source, drill_delay))
if(isliving(target))
drill_mob(target, source)
- playsound(src,'sound/weapons/drill.ogg',40,TRUE)
+ playsound(src,'sound/items/weapons/drill.ogg',40,TRUE)
else if(isobj(target))
var/obj/obj_target = target
if(istype(obj_target, /obj/item/boulder))
@@ -123,7 +123,7 @@
nu_boulder.manual_process(src, source)
else
obj_target.take_damage(15, BRUTE, 0, FALSE, get_dir(chassis, target))
- playsound(src,'sound/weapons/drill.ogg', 40, TRUE)
+ playsound(src,'sound/items/weapons/drill.ogg', 40, TRUE)
// If we caused a qdel drilling the target, we can stop drilling them.
// Prevents starting a do_after on a qdeleted target.
diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
index f89ddb9e274c2..c30e67a274633 100644
--- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
@@ -18,7 +18,7 @@
///How much base damage this clamp does
var/clamp_damage = 20
///Audio for using the hydraulic clamp
- var/clampsound = 'sound/mecha/hydraulic.ogg'
+ var/clampsound = 'sound/vehicles/mecha/hydraulic.ogg'
///Chassis but typed for the cargo_hold var
var/obj/vehicle/sealed/mecha/ripley/workmech
@@ -370,7 +370,7 @@
if(HAS_TRAIT(markone, TRAIT_MECHA_CREATED_NORMALLY))
ADD_TRAIT(newmech, TRAIT_MECHA_CREATED_NORMALLY, newmech)
qdel(markone)
- playsound(get_turf(newmech),'sound/items/ratchet.ogg',50,TRUE)
+ playsound(get_turf(newmech),'sound/items/tools/ratchet.ogg',50,TRUE)
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/paddy
name = "Paddy Conversion Kit"
diff --git a/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm b/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm
index 828bb6f152cea..ae78558bab6fa 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm
@@ -8,7 +8,7 @@
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
var/rounds = 0
var/direct_load //For weapons where we re-load the weapon itself rather than adding to the ammo storage.
- var/load_audio = 'sound/weapons/gun/general/mag_bullet_insert.ogg'
+ var/load_audio = 'sound/items/weapons/gun/general/mag_bullet_insert.ogg'
var/ammo_type
/// whether to qdel this mecha_ammo when it becomes empty
var/qdel_on_empty = FALSE
@@ -75,7 +75,7 @@
icon_state = "missile_he"
rounds = 8
direct_load = TRUE
- load_audio = 'sound/weapons/gun/general/mag_bullet_insert.ogg'
+ load_audio = 'sound/items/weapons/gun/general/mag_bullet_insert.ogg'
ammo_type = MECHA_AMMO_MISSILE_SRM
/// PEP-6 Missile type - Used by Robotics
@@ -86,7 +86,7 @@
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*4,/datum/material/gold=SMALL_MATERIAL_AMOUNT*5)
rounds = 6
direct_load = TRUE
- load_audio = 'sound/weapons/gun/general/mag_bullet_insert.ogg'
+ load_audio = 'sound/items/weapons/gun/general/mag_bullet_insert.ogg'
ammo_type = MECHA_AMMO_MISSILE_PEP
/obj/item/mecha_ammo/flashbang
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index 0bb691160b373..287c9e3cf0e20 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -2,7 +2,7 @@
name = "mecha weapon"
range = MECHA_RANGED
equipment_slot = MECHA_WEAPON
- destroy_sound = 'sound/mecha/weapdestr.ogg'
+ destroy_sound = 'sound/vehicles/mecha/weapdestr.ogg'
mech_flags = EXOSUIT_MODULE_COMBAT
/// The type of bullet generated by the mecha weapon.
var/projectile
@@ -53,7 +53,7 @@
return FALSE
/// Find our mecha, find the opposite direction. Used for kickback while the mecha is drifting in zero-g to launch us in this direction.
- var/newtonian_target = REVERSE_DIR(chassis.dir)
+ var/newtonian_target = dir2angle(REVERSE_DIR(chassis.dir))
. = ..()//start the cooldown early because of sleeps
for(var/projectiles_to_shoot in 1 to projectiles_per_shot)
if(energy_drain && !chassis.has_charge(energy_drain))//in case we run out of energy mid-burst, such as emp
@@ -97,7 +97,7 @@
icon_state = "mecha_laser"
energy_drain = 30
projectile = /obj/projectile/beam/laser
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
harmful = TRUE
/obj/item/mecha_parts/mecha_equipment/weapon/energy/disabler
@@ -109,7 +109,7 @@
projectile = /obj/projectile/beam/disabler/weak
variance = 25
projectiles_per_shot = 5
- fire_sound = 'sound/weapons/taser2.ogg'
+ fire_sound = 'sound/items/weapons/taser2.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
@@ -119,7 +119,7 @@
icon_state = "mecha_laser"
energy_drain = 60
projectile = /obj/projectile/beam/laser/heavylaser
- fire_sound = 'sound/weapons/lasercannonfire.ogg'
+ fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
equip_cooldown = 20
@@ -128,7 +128,7 @@
icon_state = "mecha_ion"
energy_drain = 120
projectile = /obj/projectile/ion
- fire_sound = 'sound/weapons/laser.ogg'
+ fire_sound = 'sound/items/weapons/laser.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
equip_cooldown = 35
@@ -137,7 +137,7 @@
icon_state = "mecha_ion"
energy_drain = 500
projectile = /obj/projectile/energy/tesla/cannon
- fire_sound = 'sound/magic/lightningbolt.ogg'
+ fire_sound = 'sound/effects/magic/lightningbolt.ogg'
harmful = TRUE
/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
@@ -147,7 +147,7 @@
icon_state = "mecha_pulse"
energy_drain = 120
projectile = /obj/projectile/beam/pulse/heavy
- fire_sound = 'sound/weapons/marauder.ogg'
+ fire_sound = 'sound/items/weapons/marauder.ogg'
harmful = TRUE
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
@@ -160,7 +160,7 @@
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
energy_drain = 30
projectile = /obj/projectile/plasma/adv/mech
- fire_sound = 'sound/weapons/plasma_cutter.ogg'
+ fire_sound = 'sound/items/weapons/plasma_cutter.ogg'
harmful = TRUE
mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING
@@ -172,7 +172,7 @@
icon_state = "mecha_kineticgun"
energy_drain = 30
projectile = /obj/projectile/kinetic/mech
- fire_sound = 'sound/weapons/kinetic_accel.ogg'
+ fire_sound = 'sound/items/weapons/kinetic_accel.ogg'
harmful = TRUE
mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING
@@ -183,7 +183,7 @@
energy_drain = 20
equip_cooldown = 8
projectile = /obj/projectile/energy/electrode
- fire_sound = 'sound/weapons/taser.ogg'
+ fire_sound = 'sound/items/weapons/taser.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
@@ -200,7 +200,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
return
- playsound(chassis, 'sound/items/airhorn.ogg', 100, TRUE)
+ playsound(chassis, 'sound/items/airhorn/airhorn.ogg', 100, TRUE)
to_chat(source, "[icon2html(src, source)]HONK")
for(var/mob/living/carbon/M in ohearers(6, chassis))
if(!M.can_hear())
@@ -232,7 +232,7 @@
//Base ballistic weapon type
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
name = "general ballistic weapon"
- fire_sound = 'sound/weapons/gun/smg/shot.ogg'
+ fire_sound = 'sound/items/weapons/gun/smg/shot.ogg'
var/projectiles
var/projectiles_cache //ammo to be loaded in, if possible.
var/projectiles_cache_max
@@ -301,7 +301,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced
name = "\improper S.H.H. \"Quietus\" Carbine"
desc = "A weapon for combat exosuits. A mime invention, field tests have shown that targets cannot even scream before going down."
- fire_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg'
icon_state = "mecha_mime"
equip_cooldown = 30
projectile = /obj/projectile/bullet/mime
@@ -347,7 +347,7 @@
desc = "A weapon for combat exosuits. Launches short range missiles."
icon_state = "mecha_missilerack"
projectile = /obj/projectile/bullet/rocket/srm
- fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/rocket_launch.ogg'
projectiles = 8
projectiles_cache = 0
projectiles_cache_max = 0
@@ -362,7 +362,7 @@
desc = "A weapon for combat exosuits. Launches precision explosive projectiles designed to explode only when striking a structured target, including walls, exosuits and cyborgs."
icon_state = "mecha_missilerack_six"
projectile = /obj/projectile/bullet/rocket/pep
- fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/rocket_launch.ogg'
projectiles = 6
projectiles_cache = 0
projectiles_cache_max = 0
@@ -381,7 +381,7 @@
return
TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT(type), equip_cooldown)
chassis.use_energy(energy_drain)
- var/newtonian_target = turn(chassis.dir,180)
+ var/newtonian_target = dir2angle(REVERSE_DIR(chassis.dir))
var/obj/O = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, TRUE)
log_message("Launched a [O.name] from [name], targeting [target].", LOG_MECHA)
@@ -403,7 +403,7 @@
desc = "A weapon for combat exosuits. Launches primed flashbangs."
icon_state = "mecha_grenadelnchr"
projectile = /obj/item/grenade/flashbang
- fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
projectiles = 6
projectiles_cache = 6
projectiles_cache_max = 24
@@ -543,7 +543,7 @@
desc = "A weapon for combat exosuits. Launches primed tear-stache grenades."
icon_state = "mecha_grenadelnchr"
projectile = /obj/item/grenade/chem_grenade/teargas/moustache
- fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg'
+ fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
projectiles = 6
missile_speed = 1.5
projectiles_cache = 999
@@ -566,7 +566,7 @@
///Chassis but typed for the cargo_hold var
var/obj/vehicle/sealed/mecha/ripley/secmech
///Audio for using the hydraulic clamp
- var/clampsound = 'sound/mecha/hydraulic.ogg'
+ var/clampsound = 'sound/vehicles/mecha/hydraulic.ogg'
///Var for the cuff type. Basically stole how cuffing works from secbots
var/cuff_type = /obj/item/restraints/handcuffs/cable/zipties/used
///Var for autocuff, can be toggled in the mech interface.
diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm
index b167f38141594..54f8cee9ed4c5 100644
--- a/code/modules/vehicles/mecha/mech_fabricator.dm
+++ b/code/modules/vehicles/mecha/mech_fabricator.dm
@@ -163,7 +163,7 @@
illegal_local_designs |= illegal_mech_design
cached_designs |= illegal_mech_design
say("R$c!i&ed ERROR de#i$ns. C@n%ec$%ng to ~NULL~ se%ve$s.")
- playsound(src, 'sound/machines/uplinkerror.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/uplink/uplinkerror.ogg', 50, TRUE)
update_static_data_for_all_viewers()
return TRUE
@@ -187,7 +187,7 @@
if(design_delta > 0)
say("Received [design_delta] new design[design_delta == 1 ? "" : "s"].")
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
update_static_data_for_all_viewers()
diff --git a/code/modules/vehicles/mecha/mech_melee_attack.dm b/code/modules/vehicles/mecha/mech_melee_attack.dm
index f37d092b83f32..0d25c21bb4e3c 100644
--- a/code/modules/vehicles/mecha/mech_melee_attack.dm
+++ b/code/modules/vehicles/mecha/mech_melee_attack.dm
@@ -42,9 +42,9 @@
mecha_attacker.do_attack_animation(src)
switch(mecha_attacker.damtype)
if(BRUTE)
- playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/punch4.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE)
else
return
mecha_attacker.visible_message(span_danger("[mecha_attacker] hits [src]!"), span_danger("You hit [src]!"), null, COMBAT_MESSAGE_RANGE)
@@ -79,9 +79,9 @@
mecha_attacker.do_attack_animation(src)
switch(mecha_attacker.damtype)
if(BRUTE)
- playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE)
+ playsound(src, 'sound/items/weapons/punch4.ogg', 50, TRUE)
if(BURN)
- playsound(src, 'sound/items/welder.ogg', 50, TRUE)
+ playsound(src, 'sound/items/tools/welder.ogg', 50, TRUE)
else
return
mecha_attacker.visible_message(span_danger("[mecha_attacker] hits [src]!"), span_danger("You hit [src]!"), null, COMBAT_MESSAGE_RANGE)
diff --git a/code/modules/vehicles/mecha/mecha_actions.dm b/code/modules/vehicles/mecha/mecha_actions.dm
index 322a1189053b8..5e3c658a525e2 100644
--- a/code/modules/vehicles/mecha/mecha_actions.dm
+++ b/code/modules/vehicles/mecha/mecha_actions.dm
@@ -101,7 +101,7 @@
for(var/mob/occupant in occupants)
balloon_alert(occupant, "strafing [strafe?"on":"off"]")
- occupant.playsound_local(src, 'sound/machines/terminal_eject.ogg', 50, TRUE)
+ occupant.playsound_local(src, 'sound/machines/terminal/terminal_eject.ogg', 50, TRUE)
log_message("Toggled strafing mode [strafe?"on":"off"].", LOG_MECHA)
for(var/occupant in occupants)
diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm
index 8634ff88591e7..f0fdc3997a39d 100644
--- a/code/modules/vehicles/mecha/mecha_defense.dm
+++ b/code/modules/vehicles/mecha/mecha_defense.dm
@@ -63,7 +63,7 @@
return
user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
- playsound(loc, 'sound/weapons/tap.ogg', 40, TRUE, -1)
+ playsound(loc, 'sound/items/weapons/tap.ogg', 40, TRUE, -1)
user.visible_message(span_danger("[user] hits [src]. Nothing happens."), null, null, COMBAT_MESSAGE_RANGE)
log_message("Attack by hand/paw (no damage). Attacker - [user].", LOG_MECHA, color="red")
@@ -72,7 +72,7 @@
/obj/vehicle/sealed/mecha/attack_alien(mob/living/user, list/modifiers)
log_message("Attack by alien. Attacker - [user].", LOG_MECHA, color="red")
- playsound(loc, 'sound/weapons/slash.ogg', 100, TRUE)
+ playsound(loc, 'sound/items/weapons/slash.ogg', 100, TRUE)
attack_generic(user, rand(user.melee_damage_lower, user.melee_damage_upper), BRUTE, MELEE, 0)
/obj/vehicle/sealed/mecha/attack_animal(mob/living/simple_animal/user, list/modifiers)
@@ -268,7 +268,7 @@
cell = weapon
balloon_alert(user, "installed power cell")
diag_hud_set_mechcell()
- playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, FALSE)
log_message("Power cell installed", LOG_MECHA)
else
balloon_alert(user, "already installed!")
@@ -280,7 +280,7 @@
return
scanmod = weapon
balloon_alert(user, "installed scanning module")
- playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, FALSE)
log_message("[weapon] installed", LOG_MECHA)
update_part_values()
else
@@ -293,7 +293,7 @@
return
capacitor = weapon
balloon_alert(user, "installed capacitor")
- playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, FALSE)
log_message("[weapon] installed", LOG_MECHA)
update_part_values()
else
@@ -306,7 +306,7 @@
return
servo = weapon
balloon_alert(user, "installed servo")
- playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 50, FALSE)
log_message("[weapon] installed", LOG_MECHA)
update_part_values()
else
diff --git a/code/modules/vehicles/mecha/mecha_mob_interaction.dm b/code/modules/vehicles/mecha/mecha_mob_interaction.dm
index 18f04c056e18e..53ad199cc0be7 100644
--- a/code/modules/vehicles/mecha/mecha_mob_interaction.dm
+++ b/code/modules/vehicles/mecha/mecha_mob_interaction.dm
@@ -50,7 +50,7 @@
playsound(src, 'sound/machines/windowdoor.ogg', 50, TRUE)
set_mouse_pointer()
if(!internal_damage)
- SEND_SOUND(newoccupant, sound('sound/mecha/nominal.ogg',volume=50))
+ SEND_SOUND(newoccupant, sound('sound/vehicles/mecha/nominal.ogg',volume=50))
return TRUE
///proc called when a new mmi mob tries to enter this mech
@@ -100,7 +100,7 @@
setDir(SOUTH)
log_message("[brain_obj] moved in as pilot.", LOG_MECHA)
if(!internal_damage)
- SEND_SOUND(brain_obj, sound('sound/mecha/nominal.ogg',volume=50))
+ SEND_SOUND(brain_obj, sound('sound/vehicles/mecha/nominal.ogg',volume=50))
user.log_message("has put the MMI/posibrain of [key_name(brain_mob)] into [src]", LOG_GAME)
brain_mob.log_message("was put into [src] by [key_name(user)]", LOG_GAME, log_globally = FALSE)
return TRUE
diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm
index 3c743bd7fb357..dcd6f47c4fc05 100644
--- a/code/modules/vehicles/mecha/mecha_movement.dm
+++ b/code/modules/vehicles/mecha/mecha_movement.dm
@@ -42,7 +42,7 @@
if(!istype(backup) || !movement_dir || backup.anchored || continuous_move) //get_spacemove_backup() already checks if a returned turf is solid, so we can just go
return TRUE
last_pushoff = world.time
- if(backup.newtonian_move(REVERSE_DIR(movement_dir), instant = TRUE))
+ if(backup.newtonian_move(dir2angle(REVERSE_DIR(movement_dir)), instant = TRUE))
backup.last_pushoff = world.time
step_silent = TRUE
if(return_drivers())
diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm
index 0acfa2749a5bd..8ccee945ed26e 100644
--- a/code/modules/vehicles/mecha/working/clarke.dm
+++ b/code/modules/vehicles/mecha/working/clarke.dm
@@ -105,7 +105,7 @@
if(isnull(cached_ore_box))
return FALSE
cached_ore_box.dump_box_contents()
- playsound(chassis, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/weapons/tap.ogg', 50, TRUE)
log_message("Dumped [cached_ore_box].", LOG_MECHA)
return TRUE
diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm
index f5c55f613ee10..a2aaa53784f45 100644
--- a/code/modules/vehicles/mecha/working/ripley.dm
+++ b/code/modules/vehicles/mecha/working/ripley.dm
@@ -25,8 +25,8 @@
enter_delay = 10 //can enter in a quarter of the time of other mechs
exit_delay = 10
/// Custom Ripley step and turning sounds (from TGMC)
- stepsound = 'sound/mecha/powerloader_step.ogg'
- turnsound = 'sound/mecha/powerloader_turn2.ogg'
+ stepsound = 'sound/vehicles/mecha/powerloader_step.ogg'
+ turnsound = 'sound/vehicles/mecha/powerloader_turn2.ogg'
equip_by_category = list(
MECHA_L_ARM = null,
MECHA_R_ARM = null,
@@ -350,7 +350,7 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo)
crate.forceMove(drop_location())
if(crate == chassis.ore_box)
chassis.ore_box = null
- playsound(chassis, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/weapons/tap.ogg', 50, TRUE)
log_message("Unloaded [crate]. Cargo compartment capacity: [cargo_capacity - contents.len]", LOG_MECHA)
return TRUE
@@ -390,7 +390,7 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo)
to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_notice("You unload [passenger].")]")
passenger.forceMove(drop_location())
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), passenger, chassis.dir), 1) //That's right, one tick. Just enough to cause the tile move animation.
- playsound(chassis, 'sound/weapons/tap.ogg', 50, TRUE)
+ playsound(chassis, 'sound/items/weapons/tap.ogg', 50, TRUE)
log_message("Unloaded [passenger]. Cargo compartment capacity: [cargo_capacity - contents.len]", LOG_MECHA)
return TRUE
return ..()
@@ -405,7 +405,7 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo)
if(!do_after(user, breakout_time, target = chassis))
return
to_chat(user, span_notice("You break out of the [src]."))
- playsound(chassis, 'sound/items/crowbar.ogg', 100, TRUE)
+ playsound(chassis, 'sound/items/tools/crowbar.ogg', 100, TRUE)
cheese_it(user)
for(var/mob/freebird in contents)
if(user != freebird)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 25e8ed9740943..392c890ca8fd2 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -154,7 +154,7 @@
sparks.start() //the most radical way to start plasma fires
for(var/mob/living/carbon/victim in location)
if(victim.body_position == LYING_DOWN)
- playsound(location, 'sound/items/trayhit2.ogg', 40)
+ playsound(location, 'sound/items/trayhit/trayhit2.ogg', 40)
victim.apply_damage(damage = 25, damagetype = BRUTE, def_zone = victim.get_random_valid_zone(even_weights = TRUE), wound_bonus = 20)
victim.Paralyze(1.5 SECONDS)
skater.adjustStaminaLoss(instability)
diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm
index c378009996618..b5249c216a742 100644
--- a/code/modules/vehicles/vehicle_actions.dm
+++ b/code/modules/vehicles/vehicle_actions.dm
@@ -252,7 +252,7 @@
vehicle_entered_target.headlights_toggle = !vehicle_entered_target.headlights_toggle
vehicle_entered_target.set_light_on(vehicle_entered_target.headlights_toggle)
vehicle_entered_target.update_appearance()
- playsound(owner, vehicle_entered_target.headlights_toggle ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE)
+ playsound(owner, vehicle_entered_target.headlights_toggle ? 'sound/items/weapons/magin.ogg' : 'sound/items/weapons/magout.ogg', 40, TRUE)
/datum/action/vehicle/sealed/dump_kidnapped_mobs
name = "Dump Kidnapped Mobs"
@@ -444,7 +444,7 @@
name = "Buzz."
desc = "Negative!"
button_icon_state = "vim_buzz"
- sound_path = 'sound/machines/buzz-sigh.ogg'
+ sound_path = 'sound/machines/buzz/buzz-sigh.ogg'
sound_message = "buzzes."
/datum/action/vehicle/sealed/noise/buzz/Trigger(trigger_flags)
diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm
index 5f57895d8ac81..2bcc17115b060 100644
--- a/code/modules/vehicles/vehicle_key.dm
+++ b/code/modules/vehicles/vehicle_key.dm
@@ -63,7 +63,7 @@
if(SKILL_LEVEL_LEGENDARY to INFINITY) //Holy shit, look at that janny go!
user.visible_message(span_suicide("[user] is putting \the [src] in [user.p_their()] mouth and has epically become one with the janicart, and they're even in overdrive mode! It looks like [user.p_theyre()] trying to commit suicide!"))
user.AddElement(/datum/element/cleaning)
- playsound(src, 'sound//magic/lightning_chargeup.ogg', 50, TRUE, -1)
+ playsound(src, 'sound/effects/magic/lightning_chargeup.ogg', 50, TRUE, -1)
user.reagents.add_reagent(/datum/reagent/drug/methamphetamine, 10) //Gotta go fast!
for(var/i in 1 to 150)
addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, add_atom_colour), (i % 2)? "#a245bb" : "#7a7d82", ADMIN_COLOUR_PRIORITY), i)
@@ -90,5 +90,5 @@
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
attack_verb_continuous = list("flogs", "whips", "lashes", "disciplines")
attack_verb_simple = list("flog", "whip", "lash", "discipline")
- hitsound = 'sound/weapons/whip.ogg'
+ hitsound = 'sound/items/weapons/whip.ogg'
slot_flags = ITEM_SLOT_BELT
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 1db108ffe1a41..2a7de87ac558a 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -896,7 +896,7 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock)
living_target.Paralyze(paralyze_time)
living_target.emote("scream")
- playsound(living_target, 'sound/effects/blobattack.ogg', 40, TRUE)
+ playsound(living_target, 'sound/effects/blob/blobattack.ogg', 40, TRUE)
playsound(living_target, 'sound/effects/splat.ogg', 50, TRUE)
post_crush_living(living_target, was_alive)
flags_to_return |= (SUCCESSFULLY_CRUSHED_MOB|SUCCESSFULLY_CRUSHED_ATOM)
diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm
index 902e34e04f06c..450c8e74100c6 100644
--- a/code/modules/vending/cigarette.dm
+++ b/code/modules/vending/cigarette.dm
@@ -18,6 +18,7 @@
)
contraband = list(
/obj/item/vape = 5,
+ /obj/item/cigarette/dart = 1,
)
premium = list(
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3,
diff --git a/code/modules/vending/runic_vendor.dm b/code/modules/vending/runic_vendor.dm
index f338340c8b1d8..3e6d21c708fe1 100644
--- a/code/modules/vending/runic_vendor.dm
+++ b/code/modules/vending/runic_vendor.dm
@@ -65,7 +65,7 @@
SHOULD_NOT_OVERRIDE(TRUE)
visible_message(span_warning("[src] flickers and disappears!"))
- playsound(src,'sound/weapons/resonator_blast.ogg',25,TRUE)
+ playsound(src,'sound/items/weapons/resonator_blast.ogg',25,TRUE)
return ..()
/obj/machinery/vending/runic_vendor/proc/runic_explosion()
diff --git a/code/modules/wiremod/components/action/soundemitter.dm b/code/modules/wiremod/components/action/soundemitter.dm
index 44b9cbae8ab05..676ce8744385f 100644
--- a/code/modules/wiremod/components/action/soundemitter.dm
+++ b/code/modules/wiremod/components/action/soundemitter.dm
@@ -47,26 +47,26 @@
/obj/item/circuit_component/soundemitter/populate_options()
var/static/component_options = list(
- "Buzz" = 'sound/machines/buzz-sigh.ogg',
- "Buzz Twice" = 'sound/machines/buzz-two.ogg',
+ "Buzz" = 'sound/machines/buzz/buzz-sigh.ogg',
+ "Buzz Twice" = 'sound/machines/buzz/buzz-two.ogg',
"Chime" = 'sound/machines/chime.ogg',
"Honk" = 'sound/items/bikehorn.ogg',
"Ping" = 'sound/machines/ping.ogg',
"Sad Trombone" = 'sound/misc/sadtrombone.ogg',
"Warn" = 'sound/machines/warning-buzzer.ogg',
"Slow Clap" = 'sound/machines/slowclap.ogg',
- "Moth Buzz" = 'sound/voice/moth/scream_moth.ogg',
- "Squeak" = 'sound/items/toysqueak1.ogg',
- "Rip" = 'sound/items/poster_ripped.ogg',
+ "Moth Buzz" = 'sound/mobs/humanoids/moth/scream_moth.ogg',
+ "Squeak" = 'sound/items/toy_squeak/toysqueak1.ogg',
+ "Rip" = 'sound/items/poster/poster_ripped.ogg',
"Coinflip" = 'sound/items/coinflip.ogg',
"Megaphone" = 'sound/items/megaphone.ogg',
- "Warpwhistle" = 'sound/magic/warpwhistle.ogg',
- "Hiss" = 'sound/voice/hiss1.ogg',
- "Lizard" = 'sound/voice/lizard/lizard_scream_1.ogg',
- "Flashbang" = 'sound/weapons/flashbang.ogg',
- "Flash" = 'sound/weapons/flash.ogg',
- "Whip" = 'sound/weapons/whip.ogg',
- "Laugh Track" = 'sound/items/SitcomLaugh1.ogg',
+ "Warpwhistle" = 'sound/effects/magic/warpwhistle.ogg',
+ "Hiss" = 'sound/mobs/non-humanoids/hiss/hiss1.ogg',
+ "Lizard" = 'sound/mobs/humanoids/lizard/lizard_scream_1.ogg',
+ "Flashbang" = 'sound/items/weapons/flashbang.ogg',
+ "Flash" = 'sound/items/weapons/flash.ogg',
+ "Whip" = 'sound/items/weapons/whip.ogg',
+ "Laugh Track" = 'sound/items/sitcom_laugh/sitcomLaugh1.ogg',
"Gavel" = 'sound/items/gavel.ogg',
)
sound_file = add_option_port("Sound Option", component_options)
diff --git a/code/modules/wiremod/core/marker.dm b/code/modules/wiremod/core/marker.dm
index 65ed029213e30..f4f36af427b63 100644
--- a/code/modules/wiremod/core/marker.dm
+++ b/code/modules/wiremod/core/marker.dm
@@ -45,7 +45,7 @@
RegisterSignal(marked_atom, COMSIG_QDELETING, PROC_REF(cleanup_marked_atom))
update_icon()
flick("multitool_circuit_flick", src)
- playsound(src.loc, 'sound/misc/compiler-stage2.ogg', 30, TRUE)
+ playsound(src.loc, 'sound/machines/compiler/compiler-stage2.ogg', 30, TRUE)
return TRUE
/// Allow users to mark items equipped by the target that are visible.
diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm
index 23683bf0ee81d..5197403c9e693 100644
--- a/code/modules/wiremod/core/usb_cable.dm
+++ b/code/modules/wiremod/core/usb_cable.dm
@@ -53,7 +53,7 @@
CRASH("Producers of COMSIG_USB_CABLE_CONNECTED_TO_CIRCUIT must set attached_circuit")
balloon_alert(user, "connected to circuit\nconnect to a port")
- playsound(src, 'sound/machines/pda_button1.ogg', 20, TRUE)
+ playsound(src, 'sound/machines/pda_button/pda_button1.ogg', 20, TRUE)
if (last_attached_circuit != attached_circuit)
if (!isnull(last_attached_circuit))
@@ -73,7 +73,7 @@
connection_description = "machine"
balloon_alert(user, "connected to [connection_description]")
- playsound(src, 'sound/items/screwdriver2.ogg', 20, TRUE)
+ playsound(src, 'sound/items/tools/screwdriver2.ogg', 20, TRUE)
return TRUE
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index 7adefcaa5eda6..7e9f79a58f65a 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -460,7 +460,7 @@
var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci)
if (isnull(bci_organ) && isnull(bci_to_implant))
say("No brain-computer interface inserted, and occupant does not have one. Insert a BCI to implant one.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
return FALSE
addtimer(CALLBACK(src, PROC_REF(start_process)), 1 SECONDS)
diff --git a/code/modules/wiremod/shell/gun.dm b/code/modules/wiremod/shell/gun.dm
index 7115c3b548bee..9bfa8764f41df 100644
--- a/code/modules/wiremod/shell/gun.dm
+++ b/code/modules/wiremod/shell/gun.dm
@@ -21,7 +21,7 @@
projectile_type = /obj/projectile/energy/wiremod_gun
harmful = FALSE
select_name = "circuit"
- fire_sound = 'sound/weapons/blaster.ogg'
+ fire_sound = 'sound/items/weapons/blaster.ogg'
/obj/projectile/energy/wiremod_gun
name = "scanning beam"
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index 14dc6edee1118..894eeeeeb2183 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -5,7 +5,7 @@
sustain the zombie, smashing open airlock doors and opening \
child-safe caps on bottles."
- hitsound = 'sound/hallucinations/growl1.ogg'
+ hitsound = 'sound/effects/hallucinations/growl1.ogg'
force = 21 // Just enough to break airlocks with melee attacks
wound_bonus = -30
bare_wound_bonus = 15
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index 2ed2bf541d88c..bd8646ccb780d 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -70,9 +70,9 @@
if(owner.stat != DEAD && !converts_living)
return
if(!iszombie(owner))
- to_chat(owner, "You can feel your heart stopping, but something isn't right... \
+ to_chat(owner, span_cult_large("You can feel your heart stopping, but something isn't right... \
life has not abandoned your broken form. You can only feel a deep and immutable hunger that \
- not even death can stop, you will rise again!")
+ not even death can stop, you will rise again!"))
var/revive_time = rand(revive_time_min, revive_time_max)
var/flags = TIMER_STOPPABLE
timer_id = addtimer(CALLBACK(src, PROC_REF(zombify), owner), revive_time, flags)
@@ -95,7 +95,7 @@
to_chat(target, span_alien("You HUNGER!"))
to_chat(target, span_alertalien("You are now a zombie! Do not seek to be cured, do not help any non-zombies in any way, do not harm your zombie brethren and spread the disease by killing others. You are a creature of hunger and violence."))
- playsound(target, 'sound/hallucinations/far_noise.ogg', 50, 1)
+ playsound(target, 'sound/effects/hallucinations/far_noise.ogg', 50, 1)
target.do_jitter_animation(living_transformation_time)
target.Stun(living_transformation_time)
diff --git a/html/changelogs/AutoChangeLog-pr-86791.yml b/html/changelogs/AutoChangeLog-pr-86791.yml
new file mode 100644
index 0000000000000..8cad532c946c4
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86791.yml
@@ -0,0 +1,4 @@
+author: "00-Steven"
+delete-after: True
+changes:
+ - rscadd: "You can now see people whispering, even if you cannot hear what they're saying, unless you are blind (obviously). The speaker wearing something that covers their mouth, being invisible, or being inside of something counteracts this."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86814.yml b/html/changelogs/AutoChangeLog-pr-86814.yml
deleted file mode 100644
index a57e7d4e0fc72..0000000000000
--- a/html/changelogs/AutoChangeLog-pr-86814.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Sealed101"
-delete-after: True
-changes:
- - spellcheck: "fixed examine and balloon alert text for boulder refining machinery"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86820.yml b/html/changelogs/AutoChangeLog-pr-86820.yml
new file mode 100644
index 0000000000000..d57e4f388337f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86820.yml
@@ -0,0 +1,4 @@
+author: "00-Steven"
+delete-after: True
+changes:
+ - balance: "The pAI digital messenger software now includes the NTNRC client."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86834.yml b/html/changelogs/AutoChangeLog-pr-86834.yml
new file mode 100644
index 0000000000000..4742c8725c79d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86834.yml
@@ -0,0 +1,7 @@
+author: "ArcaneMusic"
+delete-after: True
+changes:
+ - bugfix: "Artifact boulders should keep their alien icon even after a first round of processing."
+ - bugfix: "Boulders are less likely to exist with zero materials after processing."
+ - bugfix: "Boulders should be slightly less laggy on conveyor belts."
+ - bugfix: "Grammar of refinery/smeltery examine is corrected."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86859.yml b/html/changelogs/AutoChangeLog-pr-86859.yml
new file mode 100644
index 0000000000000..6619ac4e8b5de
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86859.yml
@@ -0,0 +1,5 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - code_imp: "Add missing signal to reagent dispenser RMB interactions."
+ - sound: "Fix missing pour sounds from reagent dispensers"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86863.yml b/html/changelogs/AutoChangeLog-pr-86863.yml
new file mode 100644
index 0000000000000..0ef2a98f9138b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86863.yml
@@ -0,0 +1,4 @@
+author: "00-Steven"
+delete-after: True
+changes:
+ - bugfix: "Imaginary friends can now hear their host wherever they are."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86865.yml b/html/changelogs/AutoChangeLog-pr-86865.yml
new file mode 100644
index 0000000000000..5392926586867
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86865.yml
@@ -0,0 +1,6 @@
+author: "00-Steven"
+delete-after: True
+changes:
+ - qol: "Imaginary friend smite ghost poll actually lets you jump to the target and shows their name."
+ - admin: "Imaginary friend smite now works with build mode."
+ - admin: "The imaginary friend smite configuration menus have been changed slightly."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86873.yml b/html/changelogs/AutoChangeLog-pr-86873.yml
new file mode 100644
index 0000000000000..c7562c525da85
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86873.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - bugfix: "Added missing venue prices for certain foods and reagents"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86897.yml b/html/changelogs/AutoChangeLog-pr-86897.yml
new file mode 100644
index 0000000000000..85ac5c543263c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86897.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - bugfix: "Players no longer can randomly get semi-permanently offset from being shoved"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86909.yml b/html/changelogs/AutoChangeLog-pr-86909.yml
new file mode 100644
index 0000000000000..4a71fc158ecea
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86909.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+ - bugfix: "Mindswap can no longer be used inside of pipes"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86910.yml b/html/changelogs/AutoChangeLog-pr-86910.yml
new file mode 100644
index 0000000000000..8c093c570c9f4
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86910.yml
@@ -0,0 +1,4 @@
+author: "SyncIt21"
+delete-after: True
+changes:
+ - bugfix: "Fixes ethereal APC drain/charge attack"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86912.yml b/html/changelogs/AutoChangeLog-pr-86912.yml
new file mode 100644
index 0000000000000..7598fc5b582d6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86912.yml
@@ -0,0 +1,4 @@
+author: "vinylspiders"
+delete-after: True
+changes:
+ - bugfix: "fixes pulsing tumor failing to spawn the elite if no ghosts respond to the poll and leaving you in a bugged state, and possibly other related issues"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86914.yml b/html/changelogs/AutoChangeLog-pr-86914.yml
new file mode 100644
index 0000000000000..a743ee3a28cc3
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86914.yml
@@ -0,0 +1,4 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - bugfix: "Fix air alarms being stuck and not updating their icons."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86915.yml b/html/changelogs/AutoChangeLog-pr-86915.yml
new file mode 100644
index 0000000000000..956d4b2fa5773
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86915.yml
@@ -0,0 +1,4 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - bugfix: "Fix air alarm helper to ignore gas when appropriate"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86917.yml b/html/changelogs/AutoChangeLog-pr-86917.yml
new file mode 100644
index 0000000000000..334faafa398a8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86917.yml
@@ -0,0 +1,4 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - bugfix: "Fix air alarms warning message to use pressure & temp settings"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86918.yml b/html/changelogs/AutoChangeLog-pr-86918.yml
new file mode 100644
index 0000000000000..8663c672627a0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86918.yml
@@ -0,0 +1,4 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - bugfix: "Fix air alarm not checking missing gases"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86922.yml b/html/changelogs/AutoChangeLog-pr-86922.yml
new file mode 100644
index 0000000000000..9365a9a1bebf6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86922.yml
@@ -0,0 +1,4 @@
+author: "Sealed101"
+delete-after: True
+changes:
+ - bugfix: "A joint effort of Gorlex Marauders and MI13 tech support teams has finally managed to center the Syndicate Infiltrator shuttle's preview on the navigation console. Nuclear Ops teams sector-wide, rejoice!"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86923.yml b/html/changelogs/AutoChangeLog-pr-86923.yml
new file mode 100644
index 0000000000000..a1757370637a6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86923.yml
@@ -0,0 +1,4 @@
+author: "timothymtorres"
+delete-after: True
+changes:
+ - bugfix: "Fix Meta's medical freezer air alarm to not trigger on cold temps. Fix missing atmos alarm in Wawa kitchen coldroom."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-86925.yml b/html/changelogs/AutoChangeLog-pr-86925.yml
new file mode 100644
index 0000000000000..8bbb16786d86a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-86925.yml
@@ -0,0 +1,4 @@
+author: "Ben10Omintrix"
+delete-after: True
+changes:
+ - bugfix: "fixes raptors retaliating against each other and their owners"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml
index 2dd9ac000774d..00d9a59b348d8 100644
--- a/html/changelogs/archive/2024-09.yml
+++ b/html/changelogs/archive/2024-09.yml
@@ -683,3 +683,167 @@
the mailing room:'
- rscadd: The drone bay spot in maintenance has been cleared out by a gang of rowdy
assistants, and turned into a drug den.
+2024-09-23:
+ Bisar:
+ - balance: Changelings are now able to respec multiple times if they have absorbed
+ multiple humanoids, instead of it being toggled on if it was off during their
+ most recent absorb.
+ - balance: Last Resort is now an innate ability for changelings.
+ - code_imp: Added a little counter and a tgui function for displaying how many absorbs
+ lings have in their belly to spend for readaptions!
+ EnterTheJake:
+ - balance: Void Conduit has less range and no longer ignores Line of Sight.
+ Ghommie:
+ - rscadd: You can now fish new, tasty treats by the station deep fryers.
+ - rscadd: You can now grow fish inside an aquarium by feeding them regularly (at
+ 50% hunger for maximum growth).
+ - rscadd: Added the evolution for pikes to armored pikes.
+ - rscadd: Added more customizable options to PDA virtual pets, which can be unlocked
+ by completing achievements.
+ - rscadd: Added a fat dart that can be rarely found in hacked cigarette vending
+ machines.
+ - image: added icon states for linkable fishing spots in the fish portal gen radial
+ menu.
+ - balance: The fishing skill now positively affects fishing rod cast range and reeling
+ objects outside of the minigame. Reeling objects also provides a pitiable amount
+ of fishing experience.
+ - balance: High fishing skill now reduces experience gained from low difficulty
+ fishing spots.
+ - sound: Removed noise from reeling sounds.
+ Likteer:
+ - rscdel: Intentional screaming has been unmuted. Now has a 5s cooldown instead.
+ Sealed101:
+ - spellcheck: fixed examine and balloon alert text for boulder refining machinery
+ SmArtKar:
+ - bugfix: Emergency shuttle console no longer reopens its UI on its own
+ - bugfix: Mapped in express supply consoles now work instead of displaying an empty
+ UI.
+ - bugfix: Emagged express supply consoles now display updated prices.
+ - refactor: Rewrote a large chunk of express supply console code
+ - balance: Express supply consoles now drop their upgrade disk upon being deconstructed,
+ and emagged consoles now will try to send at least one package to the station
+ if cargo budget doesn't have enough funds for all 5.
+ - bugfix: Fixed infective components not cleaning up disease datums after themselves
+ grungussuss:
+ - sound: pruned higher frequencies from the resonant shriek ability sound, making
+ it lighter on the ears
+ - sound: lavaland magma ambience has been changed
+2024-09-24:
+ Absolucy:
+ - bugfix: Fixed the Living Heart ritual deleting your old heart when replacing it
+ instead of having it dramatically burst out of your chest like it should.
+ - qol: The Living Heart ritual will now work if you don't have one at all for some
+ reason, in the same way that'd you use an organic heart in the ritual to replace
+ a cybernetic heart.
+ - qol: The Living Heart ritual, when putting a new heart into your chest, will now
+ heal the heart enough to be just under the "severe damage" threshold, if needed.
+ theselfish:
+ - bugfix: The Beer Sixpack no longer magically turns into bottles.
+2024-09-25:
+ 00-Steven:
+ - bugfix: The greeting message imaginary friends get upon becoming one actually
+ includes the owner's name, instead of displaying nothing where it should've
+ been.
+ Jewelry-x:
+ - bugfix: fixed link for the rules button
+ Sealed101:
+ - bugfix: gelatinous cubes now puke out their consume victim when said victim dies,
+ not when it accumulates 200 brute damage (not all mobs can get damaged to that
+ point)
+ - qol: gelatinous cube's Consume action can now be used to eject the currently consumed
+ mob
+ - bugfix: "fixed gelatinous cube's consume attempt not showing the victim's name\
+ \ properly (You start attempting to devour \_!)"
+ SmArtKar:
+ - bugfix: Storage UI should no longer (not so much) randomly disappear, hooray!
+ grungussuss:
+ - refactor: the sound folder in the source code has been reorganized, please report
+ any oddities with sounds playing or not playing
+ - server: lobby music has been repathed to sound/music/lobby_music
+ imedial:
+ - bugfix: fixes soapbox being given to non-mobs
+2024-09-26:
+ 00-Steven:
+ - bugfix: Fixed cat ears not layering properly.
+ - bugfix: Husked bodies show their blood with the right colours in photographs.
+ Bisar:
+ - bugfix: Fixes augs not being able to heal with cables if they're naked or going
+ commando.
+ Jewelry-x:
+ - rscadd: Added ability to turn broadcast microphone on or off
+ Melbert:
+ - qol: Health Analyzer output has been reworked to be less "it takes up my entire
+ chat box", report any oddities or missing information
+ Skilets:
+ - image: Resprited the experimentor.
+ SmArtKar:
+ - bugfix: Kilo whiteship no longer has varedited turrets in it
+ TheBoondock:
+ - bugfix: fixed lava proofed clothing from xenobio potion being damaged from fire
+ grungussus:
+ - sound: audible emotes share the same cooldown
+2024-09-27:
+ 00-Steven:
+ - bugfix: Fixed two broken spans, primarily used in traitor panel and some basic
+ bot stuff.
+ - admin: Traitor panel text is no longer bright red when an antag is selected, and
+ remove button is no longer blocked.
+ EnterTheJake:
+ - bugfix: Mansus Grasp can now properly interact with non living things.
+ - code_imp: proc/on_hand_hit and secondary have better return values.
+ Ghommie:
+ - bugfix: The Pun Pun job trait doesn't leave behind a fake (or is it?) Pun Pun.
+ - bugfix: Fixed water overlays showing on toilets facing directions other than SOUTH
+ (down).
+ Iamgoofball:
+ - bugfix: Removes particles from Slimed and Slime Food status effects to fix fps
+ lag in xenobio
+ Jewelry-x:
+ - bugfix: fixed hydroponics tray not updating new crop sprite properly
+ SmArtKar:
+ - rscadd: You can now craft tether anchors, which can be secured with a wrench and
+ attached to with right click. They won't let you drift into space and you can
+ adjust tether length/cut it via lmb/rmb/ctrl click on the wire.
+ - rscadd: MOD tethers now remotely place and connect to tether anchors instead of
+ throwing you at where they landed.
+ - balance: MOD tethers can now be used in gravity
+ - balance: Jetpacks are now inertia-based.
+ - balance: Guns can accelerate you significantly in zero-g.
+ - balance: All jetpacks now give you equal speed buff, however advanced MOD ion
+ jets and captain's jetpack have higher acceleration/deceleration values.
+ - refactor: Refactored zero-g movement to be inertia-based and utilize angles instead
+ of directions.
+ Tattle:
+ - balance: insulated gloves no longer have the chunky fingers trait
+ ZeWaka:
+ - bugfix: TGUI windows now flash less when opening new windows.
+ carlarctg:
+ - qol: you can now use the toy codex cicatrix as base for the codex ritual
+ grungussuss:
+ - sound: improved click.ogg
+ - bugfix: thrown items now respect the vary variable when making drop sounds.
+ - sound: lead pipe now only makes an obnoxious drop sound when thrown., reduced
+ its sound by 10db
+ mc-oofert:
+ - bugfix: fixed password paper in museum
+ oranges:
+ - rscadd: Cardboard rolls and Wrapping paper can now be used to hit people on the
+ head with
+2024-09-28:
+ Cheshify:
+ - balance: laser muskets have been rebalanced
+ - balance: crank weapons can be charged while moving
+ Goat:
+ - bugfix: Removes a random bookcase that was in the holdout bunker holodeck simulation
+ Melbert:
+ - rscdel: Advanced Health Analyzers can no longer be used to determine if a body
+ is faking death (like a changeling)
+ Rhials:
+ - bugfix: Replaces the unusable blink spell on the Necromancer deathmatch kit with
+ a nether portal summon.
+ Soupfgc:
+ - spellcheck: Fixed closet typos
+ SyncIt21:
+ - bugfix: Debug chem synthesizer now has temperature control for adding reagents
+ grungussuss:
+ - sound: the volume of the nuclear fission explosive have been reduced
diff --git a/icons/hud/radial_fishing.dmi b/icons/hud/radial_fishing.dmi
index 6870698fbe689..90b2b17c83a8a 100644
Binary files a/icons/hud/radial_fishing.dmi and b/icons/hud/radial_fishing.dmi differ
diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi
index aa92eb702e27a..fa81c45d24606 100644
Binary files a/icons/mob/actions/actions_slime.dmi and b/icons/mob/actions/actions_slime.dmi differ
diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi
index ac40c153dd784..4ac9143e7a834 100644
Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ
diff --git a/icons/mob/human/cat_features.dmi b/icons/mob/human/cat_features.dmi
index d2d67fdd9b32e..6e7fd024fee1d 100644
Binary files a/icons/mob/human/cat_features.dmi and b/icons/mob/human/cat_features.dmi differ
diff --git a/icons/obj/aquarium/fish.dmi b/icons/obj/aquarium/fish.dmi
index e3b41f4cf906d..eec60317b0e08 100644
Binary files a/icons/obj/aquarium/fish.dmi and b/icons/obj/aquarium/fish.dmi differ
diff --git a/icons/obj/aquarium/wide.dmi b/icons/obj/aquarium/wide.dmi
index 5334fcf1808c8..33c8e43950f96 100644
Binary files a/icons/obj/aquarium/wide.dmi and b/icons/obj/aquarium/wide.dmi differ
diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi
index 1be85df6c156d..c9e9186b7a853 100644
Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ
diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi
index 9d5600dab8073..9811af0b54838 100644
Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ
diff --git a/icons/obj/fishing.dmi b/icons/obj/fishing.dmi
index 9c6a535fd839e..dc0e65fac5898 100644
Binary files a/icons/obj/fishing.dmi and b/icons/obj/fishing.dmi differ
diff --git a/icons/obj/machines/experimentator.dmi b/icons/obj/machines/experimentator.dmi
index 924606d9847bb..64e11b3ead086 100644
Binary files a/icons/obj/machines/experimentator.dmi and b/icons/obj/machines/experimentator.dmi differ
diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi
index f8f83d9ab54ae..c8bee52855868 100644
Binary files a/icons/obj/watercloset.dmi and b/icons/obj/watercloset.dmi differ
diff --git a/modular_doppler/cell_component/code/cell_component.dm b/modular_doppler/cell_component/code/cell_component.dm
index c9e467bbd26b3..279b681be5baf 100644
--- a/modular_doppler/cell_component/code/cell_component.dm
+++ b/modular_doppler/cell_component/code/cell_component.dm
@@ -161,7 +161,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa
if(inserted_cell)
to_chat(user, span_notice("You remove [inserted_cell] from [equipment]!"))
- playsound(equipment, 'sound/weapons/magout.ogg', 40, TRUE)
+ playsound(equipment, 'sound/items/weapons/magout.ogg', 40, TRUE)
inserted_cell.forceMove(get_turf(equipment))
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob/living, put_in_hands), inserted_cell)
inserted_cell = null
@@ -188,7 +188,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa
return
to_chat(user, span_notice("You insert [inserting_item] into [equipment]!"))
- playsound(equipment, 'sound/weapons/magin.ogg', 40, TRUE)
+ playsound(equipment, 'sound/items/weapons/magin.ogg', 40, TRUE)
inserted_cell = inserting_item
inserting_item.forceMove(parent)
handle_cell_overlays(FALSE)
diff --git a/modular_doppler/colony_fabricator/code/colony_fabricator.dm b/modular_doppler/colony_fabricator/code/colony_fabricator.dm
index 828aff57669b2..0913e2a181b6a 100644
--- a/modular_doppler/colony_fabricator/code/colony_fabricator.dm
+++ b/modular_doppler/colony_fabricator/code/colony_fabricator.dm
@@ -77,7 +77,7 @@
if(design_delta > 0)
say("Received [design_delta] new design[design_delta == 1 ? "" : "s"].")
- playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE)
+ playsound(src, 'sound/machines/beep/twobeep_high.ogg', 50, TRUE)
update_static_data_for_all_viewers()
diff --git a/modular_doppler/colony_fabricator/code/machines/ore_silo.dm b/modular_doppler/colony_fabricator/code/machines/ore_silo.dm
index d8c004ae28f60..1a059fe74d466 100644
--- a/modular_doppler/colony_fabricator/code/machines/ore_silo.dm
+++ b/modular_doppler/colony_fabricator/code/machines/ore_silo.dm
@@ -13,7 +13,7 @@
/obj/machinery/ore_silo/colony_lathe/silo_log(obj/machinery/machinery_in_question, action, amount, noun, list/mats)
. = ..()
- playsound(src, 'sound/machines/beep.ogg', 30, TRUE)
+ playsound(src, 'sound/machines/beep/beep.ogg', 30, TRUE)
/obj/machinery/ore_silo/colony_lathe/default_deconstruction_crowbar()
return
diff --git a/modular_doppler/colony_fabricator/code/repacking_element.dm b/modular_doppler/colony_fabricator/code/repacking_element.dm
index 4d11cece58c6f..bf4db0c09eae6 100644
--- a/modular_doppler/colony_fabricator/code/repacking_element.dm
+++ b/modular_doppler/colony_fabricator/code/repacking_element.dm
@@ -55,7 +55,7 @@
if(!do_after(user, 3 SECONDS, target = source))
return
- playsound(source, 'sound/items/ratchet.ogg', 50, TRUE)
+ playsound(source, 'sound/items/tools/ratchet.ogg', 50, TRUE)
new item_to_pack_into(source.drop_location())
diff --git a/modular_doppler/colony_fabricator/code/tools/tools.dm b/modular_doppler/colony_fabricator/code/tools/tools.dm
index 419ad19bad4ba..c48670058f7c7 100644
--- a/modular_doppler/colony_fabricator/code/tools/tools.dm
+++ b/modular_doppler/colony_fabricator/code/tools/tools.dm
@@ -23,8 +23,8 @@
throw_range = 3
attack_verb_continuous = list("drills", "screws", "jabs", "whacks")
attack_verb_simple = list("drill", "screw", "jab", "whack")
- hitsound = 'sound/items/drill_hit.ogg'
- usesound = 'sound/items/drill_use.ogg'
+ hitsound = 'sound/items/tools/drill_hit.ogg'
+ usesound = 'sound/items/tools/drill_use.ogg'
w_class = WEIGHT_CLASS_SMALL
toolspeed = 1
random_color = FALSE
@@ -83,7 +83,7 @@
if("Screwdriver")
tool_behaviour = TOOL_SCREWDRIVER
sharpness = SHARP_POINTY
- playsound(src, 'sound/items/change_drill.ogg', 50, vary = TRUE)
+ playsound(src, 'sound/items/tools/change_drill.ogg', 50, vary = TRUE)
update_appearance(UPDATE_ICON)
/obj/item/screwdriver/omni_drill/proc/check_menu(mob/user)
@@ -160,7 +160,7 @@
if(!(item_use_power(power_use_amount, user, TRUE) & COMPONENT_POWER_SUCCESS))
return
powered = !powered
- playsound(src, 'sound/effects/sparks4.ogg', 100, TRUE)
+ playsound(src, 'sound/effects/sparks/sparks4.ogg', 100, TRUE)
if(powered)
to_chat(user, span_notice("You turn [src] on."))
switched_on()
@@ -174,7 +174,7 @@
light_on = TRUE
force = 15
damtype = BURN
- hitsound = 'sound/items/welder.ogg'
+ hitsound = 'sound/items/tools/welder.ogg'
set_light_on(powered)
update_appearance()
START_PROCESSING(SSobj, src)
diff --git a/modular_doppler/cryosleep/code/admin.dm b/modular_doppler/cryosleep/code/admin.dm
index 4b6ce389eee24..ceb2a7db14739 100644
--- a/modular_doppler/cryosleep/code/admin.dm
+++ b/modular_doppler/cryosleep/code/admin.dm
@@ -1,7 +1,7 @@
/// Send player in not-quiet cryopod. If with_paper = TRUE, place a paper with notification under player.
/mob/proc/send_to_cryo(with_paper = FALSE)
//effect
- playsound(loc, 'sound/magic/Repulse.ogg', 100, 1)
+ playsound(loc, 'sound/effects/magic/repulse.ogg', 100, 1)
var/datum/effect_system/spark_spread/quantum/sparks = new
sparks.set_up(10, 1, loc)
sparks.attach(loc)
diff --git a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm b/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm
index ba489b8834e4e..8d6b2ca392c6c 100644
--- a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm
+++ b/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm
@@ -142,7 +142,7 @@
span_danger("[source] effortlessly dodges [hitting_projectile]!"),
span_userdanger("You effortlessly evade [hitting_projectile]!"),
)
- playsound(source, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ playsound(source, pick('sound/items/weapons/bulletflyby.ogg', 'sound/items/weapons/bulletflyby2.ogg', 'sound/items/weapons/bulletflyby3.ogg'), 75, TRUE)
source.add_filter(TWITCH_BLUR_EFFECT, 2, gauss_blur_filter(5))
addtimer(CALLBACK(source, TYPE_PROC_REF(/datum, remove_filter), TWITCH_BLUR_EFFECT), 0.5 SECONDS)
return COMPONENT_BULLET_PIERCED
diff --git a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
index d7f79749f1d4b..245ba6699f93a 100644
--- a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
+++ b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm
@@ -30,7 +30,7 @@
/datum/wound/muscle,
)
/// The sound we play upon successfully treating the wound
- var/treatment_sound = 'sound/items/duct_tape_rip.ogg'
+ var/treatment_sound = 'sound/items/duct_tape/duct_tape_rip.ogg'
// This is only relevant for the types of wounds defined, we can't work if there are none
/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent, looping)
diff --git a/modular_doppler/emotes/code/added_emotes/animal_sounds.dm b/modular_doppler/emotes/code/added_emotes/animal_sounds.dm
index bcad9a92e8cba..acf202293453a 100644
--- a/modular_doppler/emotes/code/added_emotes/animal_sounds.dm
+++ b/modular_doppler/emotes/code/added_emotes/animal_sounds.dm
@@ -50,7 +50,7 @@
if(ismoth(user))
return 'modular_doppler/emotes/sound/mothchitter.ogg'
else
- return 'sound/creatures/chitter.ogg'
+ return 'sound/mobs/non-humanoids/insect/chitter.ogg'
/datum/emote/living/flutter
key = "flutter"
@@ -59,7 +59,7 @@
emote_type = EMOTE_AUDIBLE
cant_muffle = TRUE
vary = TRUE
- sound = 'sound/voice/moth/moth_flutter.ogg'
+ sound = 'sound/mobs/humanoids/moth/moth_flutter.ogg'
// Mouse squeak but an emote
@@ -69,7 +69,7 @@
message = "squeaks!"
emote_type = EMOTE_AUDIBLE
vary = TRUE
- sound = 'sound/creatures/mousesqueek.ogg'
+ sound = 'sound/mobs/non-humanoids/mouse/mousesqueek.ogg'
// Barking, like a dog
@@ -285,7 +285,7 @@
message = "gnashes."
emote_type = EMOTE_AUDIBLE
vary = TRUE
- sound = 'sound/weapons/bite.ogg'
+ sound = 'sound/items/weapons/bite.ogg'
/datum/emote/living/thump
key = "thump"
@@ -294,4 +294,4 @@
emote_type = EMOTE_AUDIBLE
cant_muffle = TRUE
vary = TRUE
- sound = 'sound/effects/glassbash.ogg'
+ sound = 'sound/effects/glass/glassbash.ogg'
diff --git a/modular_doppler/hearthkin/primitive_structures/code/fencing.dm b/modular_doppler/hearthkin/primitive_structures/code/fencing.dm
index ec6d83cb34b8d..b66811226d3df 100644
--- a/modular_doppler/hearthkin/primitive_structures/code/fencing.dm
+++ b/modular_doppler/hearthkin/primitive_structures/code/fencing.dm
@@ -60,7 +60,7 @@
opened = !opened
set_density(!opened)
icon_state = "[opened ? "gate_open" : "gate"]"
- playsound(src, (opened ? 'sound/machines/wooden_closet_open.ogg' : 'sound/machines/wooden_closet_close.ogg'), 100, TRUE)
+ playsound(src, (opened ? 'sound/machines/closet/wooden_closet_open.ogg' : 'sound/machines/closet/wooden_closet_close.ogg'), 100, TRUE)
update_appearance()
/obj/structure/railing/wooden_fencing/gate/update_icon()
@@ -74,8 +74,8 @@
name = "large wooden gate"
icon = 'modular_doppler/hearthkin/primitive_structures/icons/wooden_gate.dmi'
icon_state = "gate"
- openSound = 'sound/machines/wooden_closet_open.ogg'
- closeSound = 'sound/machines/wooden_closet_close.ogg'
+ openSound = 'sound/machines/closet/wooden_closet_open.ogg'
+ closeSound = 'sound/machines/closet/wooden_closet_close.ogg'
/obj/structure/mineral_door/wood/large_gate/Open()
playsound(src, openSound, 100, TRUE)
diff --git a/modular_doppler/hearthkin/tribal_extended/code/weapons/sword.dm b/modular_doppler/hearthkin/tribal_extended/code/weapons/sword.dm
index a2c7cff9cdccc..6b31ae93fa279 100644
--- a/modular_doppler/hearthkin/tribal_extended/code/weapons/sword.dm
+++ b/modular_doppler/hearthkin/tribal_extended/code/weapons/sword.dm
@@ -13,7 +13,7 @@
throwforce = 10
armour_penetration = 10
w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 0
armor_type = /datum/armor/claymore_bone
diff --git a/modular_doppler/icspawn/observer_spawn.dm b/modular_doppler/icspawn/observer_spawn.dm
index f3dbf06aac84f..4f0948ec05b1d 100644
--- a/modular_doppler/icspawn/observer_spawn.dm
+++ b/modular_doppler/icspawn/observer_spawn.dm
@@ -65,7 +65,7 @@
QDEL_IN(user, 1)
if (teleport_option == "Bluespace")
- playsound(spawned_player, 'sound/magic/Disable_Tech.ogg', 100, 1)
+ playsound(spawned_player, 'sound/effects/magic/disable_tech.ogg', 100, 1)
if(user.mind && isliving(spawned_player))
user.mind.transfer_to(spawned_player, 1) // second argument to force key move to new mob
diff --git a/modular_doppler/icspawn/spell.dm b/modular_doppler/icspawn/spell.dm
index b9dca8dbdb13d..dc4e0c9709794 100644
--- a/modular_doppler/icspawn/spell.dm
+++ b/modular_doppler/icspawn/spell.dm
@@ -1,7 +1,7 @@
/datum/action/cooldown/spell/return_back
name = "Return"
desc = "Activates your return beacon."
- sound = 'sound/magic/Repulse.ogg'
+ sound = 'sound/effects/magic/repulse.ogg'
button_icon_state = "lightning"
spell_requirements = NONE
invocation = "Return on!"
diff --git a/modular_doppler/modular_antagonists/sapper_gang/code/creditminer.dm b/modular_doppler/modular_antagonists/sapper_gang/code/creditminer.dm
index e26b5899e51cd..7f24002ed134e 100644
--- a/modular_doppler/modular_antagonists/sapper_gang/code/creditminer.dm
+++ b/modular_doppler/modular_antagonists/sapper_gang/code/creditminer.dm
@@ -62,7 +62,7 @@
/obj/item/powersink/creditminer/proc/print()
if(cash_out > 0)
- playsound(src, 'sound/items/poster_being_created.ogg', 100, TRUE)
+ playsound(src, 'sound/items/poster/poster_being_created.ogg', 100, TRUE)
balloon_alert_to_viewers("printed [trunc(cash_out)] credits")
new /obj/item/holochip(drop_location(), trunc(cash_out)) //get the loot
cash_out = 0
diff --git a/modular_doppler/modular_antagonists/sapper_gang/sapper.dm b/modular_doppler/modular_antagonists/sapper_gang/sapper.dm
index d3f5dfb1e6220..9c746691984ca 100644
--- a/modular_doppler/modular_antagonists/sapper_gang/sapper.dm
+++ b/modular_doppler/modular_antagonists/sapper_gang/sapper.dm
@@ -101,7 +101,7 @@
/datum/team/sapper/roundend_report()
var/list/parts = list()
- parts += "Sapper Gang were:"
+ parts += span_header("Sapper Gang were:")
parts += printplayerlist(members)
var/datum/objective/sapper/sapper_objective = locate() in objectives
parts += "Total cash out: [sapper_objective.get_loot_value()] credits"
diff --git a/modular_doppler/modular_cosmetics/code/head/hair_tie.dm b/modular_doppler/modular_cosmetics/code/head/hair_tie.dm
index a10dd68230c4b..b935e7acda5c5 100644
--- a/modular_doppler/modular_cosmetics/code/head/hair_tie.dm
+++ b/modular_doppler/modular_cosmetics/code/head/hair_tie.dm
@@ -102,14 +102,14 @@
proj.firer = user
proj.fired_from = user
proj.fire((dir2angle(user.dir) + rand(-projectile_aim_radius, projectile_aim_radius)))
- playsound(src, 'sound/weapons/effects/batreflect.ogg', 25, TRUE)
+ playsound(src, 'sound/items/weapons/effects/batreflect.ogg', 25, TRUE)
//get rid of what we just launched to let projectile_drop spawn a new one
qdel(src)
/obj/projectile/bullet/hair_tie
icon = 'modular_doppler/modular_cosmetics/icons/obj/head/hair_ties.dmi'
icon_state = "hairtie"
- hitsound = 'sound/weapons/genhit.ogg'
+ hitsound = 'sound/items/weapons/genhit.ogg'
damage = 0 //its just about the knockdown
sharpness = NONE
shrapnel_type = NONE //no embedding pls
diff --git a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm
index 882f440c220c7..f4562c5599628 100644
--- a/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm
+++ b/modular_doppler/modular_food_drinks_and_chems/food_and_drinks/drinks.dm
@@ -13,7 +13,7 @@
user.visible_message(span_warning("[user] crushes the can of [src] on [user.p_their()] forehead!"), span_notice("You crush the can of [src] on your forehead."))
else
user.visible_message(span_warning("[user] crushes the can of [src] on [M]'s forehead!"), span_notice("You crush the can of [src] on [M]'s forehead."))
- playsound(M,'sound/weapons/pierce.ogg', rand(10,50), TRUE)
+ playsound(M,'sound/items/weapons/pierce.ogg', rand(10,50), TRUE)
var/obj/item/trash/can/doppler/crushed_can = new /obj/item/trash/can/doppler(M.loc)
crushed_can.icon_state = icon_state
qdel(src)
diff --git a/modular_doppler/modular_items/hyposprays/code/hyposprays_II.dm b/modular_doppler/modular_items/hyposprays/code/hyposprays_II.dm
index e077f45928914..235d0ecb7ae91 100644
--- a/modular_doppler/modular_items/hyposprays/code/hyposprays_II.dm
+++ b/modular_doppler/modular_items/hyposprays/code/hyposprays_II.dm
@@ -174,7 +174,7 @@
to_chat(user, span_notice("You remove [vial] from [src]."))
vial = null
update_icon()
- playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
+ playsound(loc, 'sound/items/weapons/empty.ogg', 50, 1)
else
to_chat(user, span_notice("This hypo isn't loaded!"))
return
@@ -193,7 +193,7 @@
vial.forceMove(quickswap_loc)
vial = new_vial
user.visible_message(span_notice("[user] has loaded a vial into [src]."), span_notice("You have loaded [vial] into [src]."))
- playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
+ playsound(loc, 'sound/items/weapons/gun/pistol/drop_small.ogg', 35, 1)
update_appearance()
/obj/item/hypospray/mkii/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
diff --git a/modular_doppler/modular_mapping/code/areas/ruins.dm b/modular_doppler/modular_mapping/code/areas/ruins.dm
index 1369264c447f5..734106281c19c 100644
--- a/modular_doppler/modular_mapping/code/areas/ruins.dm
+++ b/modular_doppler/modular_mapping/code/areas/ruins.dm
@@ -3,14 +3,14 @@
/area/ruin/unpowered/magic_hotsprings
name = "Magical Hotsprings"
icon_state = "ruins"
- ambientsounds = list('sound/ambience/ambiicemelody2.ogg')
+ ambientsounds = list('sound/ambience/icemoon/ambiicemelody2.ogg')
/area/ruin/unpowered/abandoned_hearth
name = "Abandoned Hearth"
icon_state = "ruins"
- ambientsounds = list('sound/ambience/ambiicesting4.ogg', 'sound/ambience/ambiicemelody1.ogg')
+ ambientsounds = list('sound/ambience/icemoon/ambiicesting4.ogg', 'sound/ambience/icemoon/ambiicemelody1.ogg')
/area/ruin/unpowered/abandoned_sacred_temple
name = "Abandoned Sacred Temple"
icon_state = "ruins"
- ambientsounds = list('sound/ambience/ambiholy.ogg')
+ ambientsounds = list('sound/ambience/holy/ambiholy.ogg')
diff --git a/modular_doppler/modular_quirks/paycheck_rations/code/tickets.dm b/modular_doppler/modular_quirks/paycheck_rations/code/tickets.dm
index f088e6d043688..fc9677bca8953 100644
--- a/modular_doppler/modular_quirks/paycheck_rations/code/tickets.dm
+++ b/modular_doppler/modular_quirks/paycheck_rations/code/tickets.dm
@@ -20,7 +20,7 @@
/// Attempts to fill out the order list with items of the user's choosing, will stop in its tracks if it fails
/obj/item/paper/paperslip/ration_ticket/proc/try_to_make_ration_order_list(obj/machinery/computer/cargo/object_we_attack, mob/living/user)
forceMove(object_we_attack)
- playsound(object_we_attack, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
// List of meat options we get
var/list/radial_meat_options = list(
@@ -34,7 +34,7 @@
if(!meats_choice)
object_we_attack.balloon_alert(user, "no selection made")
forceMove(drop_location(object_we_attack))
- playsound(object_we_attack, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
return
switch(meats_choice)
@@ -60,7 +60,7 @@
// Reset the list if we fail
items_we_deliver = list()
forceMove(drop_location(object_we_attack))
- playsound(object_we_attack, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
return
switch(produce_choice)
@@ -88,7 +88,7 @@
// Reset the list if we fail
items_we_deliver = list()
forceMove(drop_location(object_we_attack))
- playsound(object_we_attack, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
return
switch(flour_choice)
@@ -162,7 +162,7 @@
/// Attempts to fill out the order list with items of the user's choosing, will stop in its tracks if it fails
/obj/item/paper/paperslip/ration_ticket/luxury/try_to_make_ration_order_list(obj/machinery/computer/cargo/object_we_attack, mob/living/user)
forceMove(object_we_attack)
- playsound(object_we_attack, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(object_we_attack, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
// List of meat options we get
var/list/radial_alcohol_options = list(
diff --git a/modular_doppler/modular_species/species_types/golem/golem.dm b/modular_doppler/modular_species/species_types/golem/golem.dm
index 635296a43bccd..243419437c294 100644
--- a/modular_doppler/modular_species/species_types/golem/golem.dm
+++ b/modular_doppler/modular_species/species_types/golem/golem.dm
@@ -134,7 +134,7 @@
return ..()
to_chat(owner, span_warning("Your [name] crumbles into loose stone!"))
- playsound(owner, 'sound/effects/rock_break.ogg', 60, TRUE)
+ playsound(owner, 'sound/effects/rock/rock_break.ogg', 60, TRUE)
new /obj/item/stack/stone(drop_location(), 4)
. = ..()
drop_organs(src, TRUE)
@@ -146,7 +146,7 @@
return ..()
to_chat(owner, span_warning("Your [name] crumbles into loose stone!"))
- playsound(owner, 'sound/effects/rock_break.ogg', 60, TRUE)
+ playsound(owner, 'sound/effects/rock/rock_break.ogg', 60, TRUE)
new /obj/item/stack/stone(drop_location(), 4)
. = ..()
drop_organs(src, TRUE)
@@ -158,7 +158,7 @@
return ..()
to_chat(owner, span_warning("Your [name] crumbles into loose stone!"))
- playsound(owner, 'sound/effects/rock_break.ogg', 60, TRUE)
+ playsound(owner, 'sound/effects/rock/rock_break.ogg', 60, TRUE)
new /obj/item/stack/stone(drop_location(), 4)
. = ..()
drop_organs(src, TRUE)
@@ -170,7 +170,7 @@
return ..()
to_chat(owner, span_warning("Your [name] crumbles into loose stone!"))
- playsound(owner, 'sound/effects/rock_break.ogg', 60, TRUE)
+ playsound(owner, 'sound/effects/rock/rock_break.ogg', 60, TRUE)
new /obj/item/stack/stone(drop_location(), 4)
. = ..()
drop_organs(src, TRUE)
diff --git a/modular_doppler/modular_species/species_types/slugcats/slugcat.dm b/modular_doppler/modular_species/species_types/slugcats/slugcat.dm
index 843ab3079c92c..acc99870aadbe 100644
--- a/modular_doppler/modular_species/species_types/slugcats/slugcat.dm
+++ b/modular_doppler/modular_species/species_types/slugcats/slugcat.dm
@@ -80,51 +80,51 @@
/datum/species/slugcat/get_cough_sound(mob/living/carbon/human/scug)
if(scug.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cough1.ogg',
- 'sound/voice/human/female_cough2.ogg',
- 'sound/voice/human/female_cough3.ogg',
- 'sound/voice/human/female_cough4.ogg',
- 'sound/voice/human/female_cough5.ogg',
- 'sound/voice/human/female_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/female_cough6.ogg',
)
return pick(
- 'sound/voice/human/male_cough1.ogg',
- 'sound/voice/human/male_cough2.ogg',
- 'sound/voice/human/male_cough3.ogg',
- 'sound/voice/human/male_cough4.ogg',
- 'sound/voice/human/male_cough5.ogg',
- 'sound/voice/human/male_cough6.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough1.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough2.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough3.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough4.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough5.ogg',
+ 'sound/mobs/humanoids/human/cough/male_cough6.ogg',
)
/datum/species/slugcat/get_cry_sound(mob/living/carbon/human/scug)
if(scug.physique == FEMALE)
return pick(
- 'sound/voice/human/female_cry1.ogg',
- 'sound/voice/human/female_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/female_cry2.ogg',
)
return pick(
- 'sound/voice/human/male_cry1.ogg',
- 'sound/voice/human/male_cry2.ogg',
- 'sound/voice/human/male_cry3.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry1.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry2.ogg',
+ 'sound/mobs/humanoids/human/cry/male_cry3.ogg',
)
/datum/species/lizard/get_sneeze_sound(mob/living/carbon/human/scug)
if(scug.physique == FEMALE)
- return 'sound/voice/human/female_sneeze1.ogg'
- return 'sound/voice/human/male_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg'
+ return 'sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg'
/datum/species/lizard/get_laugh_sound(mob/living/carbon/human/scug)
return 'modular_doppler/modular_species/species_types/slugcats/sounds/scuglaugh_1.ogg'
/datum/species/lizard/get_sigh_sound(mob/living/carbon/human/scug)
if(scug.physique == FEMALE)
- return 'sound/voice/human/female_sigh.ogg'
- return 'sound/voice/human/male_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/female_sigh.ogg'
+ return 'sound/mobs/humanoids/human/sigh/male_sigh.ogg'
/datum/species/lizard/get_sniff_sound(mob/living/carbon/human/scug)
if(scug.physique == FEMALE)
- return 'sound/voice/human/female_sniff.ogg'
- return 'sound/voice/human/male_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/female_sniff.ogg'
+ return 'sound/mobs/humanoids/human/sniff/male_sniff.ogg'
/// SOUNDS BREAKER END
/datum/species/slugcat/get_species_description()
diff --git a/modular_doppler/modular_species/species_types/snails/organs/snail_heart.dm b/modular_doppler/modular_species/species_types/snails/organs/snail_heart.dm
index 7c8362a56cd81..1883a738d6a0c 100644
--- a/modular_doppler/modular_species/species_types/snails/organs/snail_heart.dm
+++ b/modular_doppler/modular_species/species_types/snails/organs/snail_heart.dm
@@ -57,7 +57,7 @@
if(COOLDOWN_FINISHED(src, shell_effect_cd))
source.visible_message(span_warning("[source]'s shell weathers the blow, absorbing most of the shock!"))
- playsound(source, 'sound/weapons/parry.ogg', 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
+ playsound(source, 'sound/effects/parry.ogg', 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
COOLDOWN_START(src, shell_effect_cd, 3 SECONDS) // Cooldown resets EVERY time we get hit
diff --git a/modular_doppler/reagent_forging/code/anvil.dm b/modular_doppler/reagent_forging/code/anvil.dm
index e175bd6eb089e..129eade5cb9f0 100644
--- a/modular_doppler/reagent_forging/code/anvil.dm
+++ b/modular_doppler/reagent_forging/code/anvil.dm
@@ -158,6 +158,6 @@
)
poor_target.Paralyze(5 SECONDS)
poor_target.emote("scream")
- playsound(poor_target, 'sound/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
+ playsound(poor_target, 'sound/effects/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
add_memory_in_range(poor_target, 7, /datum/memory/witness_vendor_crush, protagonist = poor_target, antognist = src)
return TRUE
diff --git a/modular_doppler/reagent_forging/code/forge.dm b/modular_doppler/reagent_forging/code/forge.dm
index b183b392662c1..410879207253b 100644
--- a/modular_doppler/reagent_forging/code/forge.dm
+++ b/modular_doppler/reagent_forging/code/forge.dm
@@ -417,7 +417,7 @@
minimum_target_temperature = 25 // This won't matter except in a few cases here, but we still need to cover those few cases
forge_level = FORGE_LEVEL_LEGENDARY
- playsound(src, 'sound/weapons/parry.ogg', 50, TRUE) // Play a feedback sound to really let players know we just did an upgrade
+ playsound(src, 'sound/effects/parry.ogg', 50, TRUE) // Play a feedback sound to really let players know we just did an upgrade
/obj/structure/reagent_forge/attackby(obj/item/attacking_item, mob/living/user, params)
if(!used_tray && istype(attacking_item, /obj/item/plate/oven_tray))
@@ -611,7 +611,7 @@
attacking_weapon.color = mix_color_from_reagents(attacking_weapon.reagents.reagent_list)
balloon_alert_to_viewers("imbued [attacking_weapon]")
user.mind.adjust_experience(/datum/skill/smithing, 60)
- playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
in_use = FALSE
return TRUE
@@ -661,7 +661,7 @@
attacking_clothing.color = mix_color_from_reagents(attacking_clothing.reagents.reagent_list)
balloon_alert_to_viewers("imbued [attacking_clothing]")
user.mind.adjust_experience(/datum/skill/smithing, 60)
- playsound(src, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
in_use = FALSE
return TRUE
diff --git a/modular_doppler/reagent_forging/code/forge_weapons.dm b/modular_doppler/reagent_forging/code/forge_weapons.dm
index 7eb24174bc0cf..af1602e9e3800 100644
--- a/modular_doppler/reagent_forging/code/forge_weapons.dm
+++ b/modular_doppler/reagent_forging/code/forge_weapons.dm
@@ -26,7 +26,7 @@
inhand_icon_state = "sword"
worn_icon_state = "sword_back"
belt_icon_state = "sword_belt"
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
throwforce = 10
block_chance = 25
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
@@ -47,7 +47,7 @@
inhand_icon_state = "katana"
worn_icon_state = "katana_back"
belt_icon_state = "katana_belt"
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
throwforce = 10
block_chance = 20
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
@@ -66,7 +66,7 @@
inhand_icon_state = "dagger"
worn_icon_state = "dagger_back"
belt_icon_state = "dagger_belt"
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
throw_speed = 4
embed_type = /datum/embed_data/forged_dagger
throwforce = 15
@@ -118,7 +118,7 @@
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
resistance_flags = FIRE_PROOF
- hitsound = 'sound/weapons/bladeslice.ogg'
+ hitsound = 'sound/items/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
wound_bonus = -15
@@ -317,9 +317,9 @@
if(prob(final_block_chance))
if(attack_type == PROJECTILE_ATTACK)
owner.visible_message(span_danger("[owner] deflects [attack_text] with [src]!"))
- playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, TRUE)
+ playsound(src, pick('sound/items/weapons/effects/ric1.ogg', 'sound/items/weapons/effects/ric2.ogg', 'sound/items/weapons/effects/ric3.ogg', 'sound/items/weapons/effects/ric4.ogg', 'sound/items/weapons/effects/ric5.ogg'), 100, TRUE)
else
- playsound(src, 'sound/weapons/parry.ogg', 75, TRUE)
+ playsound(src, 'sound/items/weapons/parry.ogg', 75, TRUE)
owner.visible_message(span_danger("[owner] parries [attack_text] with [src]!"))
var/owner_turf = get_turf(owner)
new block_effect(owner_turf, COLOR_YELLOW)
diff --git a/modular_doppler/stone/code/stone.dm b/modular_doppler/stone/code/stone.dm
index 1cac695222c94..d5e8fa5e19704 100644
--- a/modular_doppler/stone/code/stone.dm
+++ b/modular_doppler/stone/code/stone.dm
@@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(stone_recipes, list ( \
/obj/item/stack/stone/attackby(obj/item/attacking_item, mob/user, params)
if((attacking_item.tool_behaviour != TOOL_MINING) && !(istype(attacking_item, /obj/item/chisel)))
return ..()
- playsound(src, 'sound/effects/picaxe1.ogg', 50, TRUE)
+ playsound(src, 'sound/effects/pickaxe/picaxe1.ogg', 50, TRUE)
balloon_alert_to_viewers("cutting...")
if(!do_after(user, 5 SECONDS, target = src))
balloon_alert_to_viewers("stopped cutting")
diff --git a/modular_doppler/tableflip/tableflip.dm b/modular_doppler/tableflip/tableflip.dm
index c864fd7b29005..19d119536d436 100644
--- a/modular_doppler/tableflip/tableflip.dm
+++ b/modular_doppler/tableflip/tableflip.dm
@@ -64,7 +64,7 @@
if(custom_materials)
unflipped_table.set_custom_materials(custom_materials)
user.balloon_alert_to_viewers("table flipped upright")
- playsound(src, 'sound/items/trayhit2.ogg', 100)
+ playsound(src, 'sound/items/trayhit/trayhit2.ogg', 100)
qdel(src)
//TABLES
@@ -111,7 +111,7 @@
sound_volume = 40
user.balloon_alert_to_viewers(balloon_message)
- playsound(src, 'sound/items/trayhit2.ogg', sound_volume)
+ playsound(src, 'sound/items/trayhit/trayhit2.ogg', sound_volume)
qdel(src)
var/turf/throw_target = get_step(flipped_table, flipped_table.dir)
diff --git a/modular_doppler/time_clock/code/console.dm b/modular_doppler/time_clock/code/console.dm
index e5faf4202eab0..472d53c436905 100644
--- a/modular_doppler/time_clock/code/console.dm
+++ b/modular_doppler/time_clock/code/console.dm
@@ -74,7 +74,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/time_clock, 28)
eject_inserted_id(user)
return FALSE
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE)
return TRUE
/obj/machinery/time_clock/click_alt(mob/user)
@@ -94,7 +94,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/time_clock, 28)
inserted_id = FALSE
update_appearance()
update_static_data_for_all_viewers()
- playsound(src, 'sound/machines/terminal_eject.ogg', 50, FALSE)
+ playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 50, FALSE)
return TRUE
diff --git a/sound/ambience/antag/attribution.txt b/sound/ambience/antag/attribution.txt
deleted file mode 100644
index 8db2b1b8ec2eb..0000000000000
--- a/sound/ambience/antag/attribution.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-sound/ambience/antag/abductee.ogg is from "Warp SFX" https://freesound.org/people/Breviceps/sounds/453391 (CC0)
-sound/ambience/antag/brainwash.ogg is from "nog.wav" https://freesound.org/people/_NOMINAL_/sounds/124602 (CC-BY 3.0)
-sound/ambience/antag/hypnosis.ogg is from "Flashback.wav" https://freesound.org/people/Sclolex/sounds/342103 (CC0)
-
-{
-ambimaint8.ogg
-ambimaint9.ogg
-ambimaint10.ogg
-ambimaint11.ogg
-ambimaint12.ogg
-} made by Kayozz , license: CC-by-SA
\ No newline at end of file
diff --git a/sound/ambience/antag/heretic/attribution.txt b/sound/ambience/antag/heretic/attribution.txt
deleted file mode 100644
index 8744b2497f5bd..0000000000000
--- a/sound/ambience/antag/heretic/attribution.txt
+++ /dev/null
@@ -1 +0,0 @@
-heretic_sacrifice.ogg - made by sadboysusss, License: CC-by-SA
\ No newline at end of file
diff --git a/sound/ambience/attribution.txt b/sound/ambience/attribution.txt
new file mode 100644
index 0000000000000..881197c211b7e
--- /dev/null
+++ b/sound/ambience/attribution.txt
@@ -0,0 +1 @@
+magma.ogg - Hot spring.Seething and bubbles(2lrs,mltprcssng).wav by newlocknew -- https://freesound.org/s/581417/ -- License: Attribution 4.0 and wind 5 by ZIP.Creates -- https://freesound.org/s/726316/ -- License: Creative Commons 0
diff --git a/sound/ambience/aurora_caelus/attribution.txt b/sound/ambience/aurora_caelus/attribution.txt
new file mode 100644
index 0000000000000..3249d093518d3
--- /dev/null
+++ b/sound/ambience/aurora_caelus/attribution.txt
@@ -0,0 +1,2 @@
+aurora_caelus.ogg is Music for Manatees, by Kevin Macleod. It has been licensed under CC-BY 3.0 license.
+ It has been cropped for use ingame, and also fades out.
diff --git a/sound/ambience/aurora_caelus.ogg b/sound/ambience/aurora_caelus/aurora_caelus.ogg
similarity index 100%
rename from sound/ambience/aurora_caelus.ogg
rename to sound/ambience/aurora_caelus/aurora_caelus.ogg
diff --git a/sound/ambience/aurora_caelus_short.ogg b/sound/ambience/aurora_caelus/aurora_caelus_short.ogg
similarity index 100%
rename from sound/ambience/aurora_caelus_short.ogg
rename to sound/ambience/aurora_caelus/aurora_caelus_short.ogg
diff --git a/sound/ambience/seag1.ogg b/sound/ambience/beach/seag1.ogg
similarity index 100%
rename from sound/ambience/seag1.ogg
rename to sound/ambience/beach/seag1.ogg
diff --git a/sound/ambience/seag2.ogg b/sound/ambience/beach/seag2.ogg
similarity index 100%
rename from sound/ambience/seag2.ogg
rename to sound/ambience/beach/seag2.ogg
diff --git a/sound/ambience/seag3.ogg b/sound/ambience/beach/seag3.ogg
similarity index 100%
rename from sound/ambience/seag3.ogg
rename to sound/ambience/beach/seag3.ogg
diff --git a/sound/ambience/shore.ogg b/sound/ambience/beach/shore.ogg
similarity index 100%
rename from sound/ambience/shore.ogg
rename to sound/ambience/beach/shore.ogg
diff --git a/sound/misc/earth_rumble.ogg b/sound/ambience/earth_rumble/earth_rumble.ogg
similarity index 100%
rename from sound/misc/earth_rumble.ogg
rename to sound/ambience/earth_rumble/earth_rumble.ogg
diff --git a/sound/misc/earth_rumble_distant1.ogg b/sound/ambience/earth_rumble/earth_rumble_distant1.ogg
similarity index 100%
rename from sound/misc/earth_rumble_distant1.ogg
rename to sound/ambience/earth_rumble/earth_rumble_distant1.ogg
diff --git a/sound/misc/earth_rumble_distant2.ogg b/sound/ambience/earth_rumble/earth_rumble_distant2.ogg
similarity index 100%
rename from sound/misc/earth_rumble_distant2.ogg
rename to sound/ambience/earth_rumble/earth_rumble_distant2.ogg
diff --git a/sound/misc/earth_rumble_distant3.ogg b/sound/ambience/earth_rumble/earth_rumble_distant3.ogg
similarity index 100%
rename from sound/misc/earth_rumble_distant3.ogg
rename to sound/ambience/earth_rumble/earth_rumble_distant3.ogg
diff --git a/sound/misc/earth_rumble_distant4.ogg b/sound/ambience/earth_rumble/earth_rumble_distant4.ogg
similarity index 100%
rename from sound/misc/earth_rumble_distant4.ogg
rename to sound/ambience/earth_rumble/earth_rumble_distant4.ogg
diff --git a/sound/ambience/ambiatmos.ogg b/sound/ambience/engineering/ambiatmos.ogg
similarity index 100%
rename from sound/ambience/ambiatmos.ogg
rename to sound/ambience/engineering/ambiatmos.ogg
diff --git a/sound/ambience/ambiatmos2.ogg b/sound/ambience/engineering/ambiatmos2.ogg
similarity index 100%
rename from sound/ambience/ambiatmos2.ogg
rename to sound/ambience/engineering/ambiatmos2.ogg
diff --git a/sound/ambience/ambisin1.ogg b/sound/ambience/engineering/ambisin1.ogg
similarity index 100%
rename from sound/ambience/ambisin1.ogg
rename to sound/ambience/engineering/ambisin1.ogg
diff --git a/sound/ambience/ambisin2.ogg b/sound/ambience/engineering/ambisin2.ogg
similarity index 100%
rename from sound/ambience/ambisin2.ogg
rename to sound/ambience/engineering/ambisin2.ogg
diff --git a/sound/ambience/ambisin3.ogg b/sound/ambience/engineering/ambisin3.ogg
similarity index 100%
rename from sound/ambience/ambisin3.ogg
rename to sound/ambience/engineering/ambisin3.ogg
diff --git a/sound/ambience/ambisin4.ogg b/sound/ambience/engineering/ambisin4.ogg
similarity index 100%
rename from sound/ambience/ambisin4.ogg
rename to sound/ambience/engineering/ambisin4.ogg
diff --git a/sound/ambience/ambitech.ogg b/sound/ambience/engineering/ambitech.ogg
similarity index 100%
rename from sound/ambience/ambitech.ogg
rename to sound/ambience/engineering/ambitech.ogg
diff --git a/sound/ambience/ambitech2.ogg b/sound/ambience/engineering/ambitech2.ogg
similarity index 100%
rename from sound/ambience/ambitech2.ogg
rename to sound/ambience/engineering/ambitech2.ogg
diff --git a/sound/ambience/ambitech3.ogg b/sound/ambience/engineering/ambitech3.ogg
similarity index 100%
rename from sound/ambience/ambitech3.ogg
rename to sound/ambience/engineering/ambitech3.ogg
diff --git a/sound/ambience/ambigen1.ogg b/sound/ambience/general/ambigen1.ogg
similarity index 100%
rename from sound/ambience/ambigen1.ogg
rename to sound/ambience/general/ambigen1.ogg
diff --git a/sound/ambience/ambigen10.ogg b/sound/ambience/general/ambigen10.ogg
similarity index 100%
rename from sound/ambience/ambigen10.ogg
rename to sound/ambience/general/ambigen10.ogg
diff --git a/sound/ambience/ambigen11.ogg b/sound/ambience/general/ambigen11.ogg
similarity index 100%
rename from sound/ambience/ambigen11.ogg
rename to sound/ambience/general/ambigen11.ogg
diff --git a/sound/ambience/ambigen12.ogg b/sound/ambience/general/ambigen12.ogg
similarity index 100%
rename from sound/ambience/ambigen12.ogg
rename to sound/ambience/general/ambigen12.ogg
diff --git a/sound/ambience/ambigen13.ogg b/sound/ambience/general/ambigen13.ogg
similarity index 100%
rename from sound/ambience/ambigen13.ogg
rename to sound/ambience/general/ambigen13.ogg
diff --git a/sound/ambience/ambigen14.ogg b/sound/ambience/general/ambigen14.ogg
similarity index 100%
rename from sound/ambience/ambigen14.ogg
rename to sound/ambience/general/ambigen14.ogg
diff --git a/sound/ambience/ambigen2.ogg b/sound/ambience/general/ambigen2.ogg
similarity index 100%
rename from sound/ambience/ambigen2.ogg
rename to sound/ambience/general/ambigen2.ogg
diff --git a/sound/ambience/ambigen3.ogg b/sound/ambience/general/ambigen3.ogg
similarity index 100%
rename from sound/ambience/ambigen3.ogg
rename to sound/ambience/general/ambigen3.ogg
diff --git a/sound/ambience/ambigen4.ogg b/sound/ambience/general/ambigen4.ogg
similarity index 100%
rename from sound/ambience/ambigen4.ogg
rename to sound/ambience/general/ambigen4.ogg
diff --git a/sound/ambience/ambigen5.ogg b/sound/ambience/general/ambigen5.ogg
similarity index 100%
rename from sound/ambience/ambigen5.ogg
rename to sound/ambience/general/ambigen5.ogg
diff --git a/sound/ambience/ambigen6.ogg b/sound/ambience/general/ambigen6.ogg
similarity index 100%
rename from sound/ambience/ambigen6.ogg
rename to sound/ambience/general/ambigen6.ogg
diff --git a/sound/ambience/ambigen7.ogg b/sound/ambience/general/ambigen7.ogg
similarity index 100%
rename from sound/ambience/ambigen7.ogg
rename to sound/ambience/general/ambigen7.ogg
diff --git a/sound/ambience/ambigen8.ogg b/sound/ambience/general/ambigen8.ogg
similarity index 100%
rename from sound/ambience/ambigen8.ogg
rename to sound/ambience/general/ambigen8.ogg
diff --git a/sound/ambience/ambigen9.ogg b/sound/ambience/general/ambigen9.ogg
similarity index 100%
rename from sound/ambience/ambigen9.ogg
rename to sound/ambience/general/ambigen9.ogg
diff --git a/sound/ambience/shipambience.ogg b/sound/ambience/general/shipambience.ogg
similarity index 100%
rename from sound/ambience/shipambience.ogg
rename to sound/ambience/general/shipambience.ogg
diff --git a/sound/ambience/ambicha1.ogg b/sound/ambience/holy/ambicha1.ogg
similarity index 100%
rename from sound/ambience/ambicha1.ogg
rename to sound/ambience/holy/ambicha1.ogg
diff --git a/sound/ambience/ambicha2.ogg b/sound/ambience/holy/ambicha2.ogg
similarity index 100%
rename from sound/ambience/ambicha2.ogg
rename to sound/ambience/holy/ambicha2.ogg
diff --git a/sound/ambience/ambicha3.ogg b/sound/ambience/holy/ambicha3.ogg
similarity index 100%
rename from sound/ambience/ambicha3.ogg
rename to sound/ambience/holy/ambicha3.ogg
diff --git a/sound/ambience/ambicha4.ogg b/sound/ambience/holy/ambicha4.ogg
similarity index 100%
rename from sound/ambience/ambicha4.ogg
rename to sound/ambience/holy/ambicha4.ogg
diff --git a/sound/ambience/ambiholy.ogg b/sound/ambience/holy/ambiholy.ogg
similarity index 100%
rename from sound/ambience/ambiholy.ogg
rename to sound/ambience/holy/ambiholy.ogg
diff --git a/sound/ambience/ambiholy2.ogg b/sound/ambience/holy/ambiholy2.ogg
similarity index 100%
rename from sound/ambience/ambiholy2.ogg
rename to sound/ambience/holy/ambiholy2.ogg
diff --git a/sound/ambience/ambiholy3.ogg b/sound/ambience/holy/ambiholy3.ogg
similarity index 100%
rename from sound/ambience/ambiholy3.ogg
rename to sound/ambience/holy/ambiholy3.ogg
diff --git a/sound/ambience/ambiicemelody1.ogg b/sound/ambience/icemoon/ambiicemelody1.ogg
similarity index 100%
rename from sound/ambience/ambiicemelody1.ogg
rename to sound/ambience/icemoon/ambiicemelody1.ogg
diff --git a/sound/ambience/ambiicemelody2.ogg b/sound/ambience/icemoon/ambiicemelody2.ogg
similarity index 100%
rename from sound/ambience/ambiicemelody2.ogg
rename to sound/ambience/icemoon/ambiicemelody2.ogg
diff --git a/sound/ambience/ambiicemelody3.ogg b/sound/ambience/icemoon/ambiicemelody3.ogg
similarity index 100%
rename from sound/ambience/ambiicemelody3.ogg
rename to sound/ambience/icemoon/ambiicemelody3.ogg
diff --git a/sound/ambience/ambiicemelody4.ogg b/sound/ambience/icemoon/ambiicemelody4.ogg
similarity index 100%
rename from sound/ambience/ambiicemelody4.ogg
rename to sound/ambience/icemoon/ambiicemelody4.ogg
diff --git a/sound/ambience/ambiicesting1.ogg b/sound/ambience/icemoon/ambiicesting1.ogg
similarity index 100%
rename from sound/ambience/ambiicesting1.ogg
rename to sound/ambience/icemoon/ambiicesting1.ogg
diff --git a/sound/ambience/ambiicesting2.ogg b/sound/ambience/icemoon/ambiicesting2.ogg
similarity index 100%
rename from sound/ambience/ambiicesting2.ogg
rename to sound/ambience/icemoon/ambiicesting2.ogg
diff --git a/sound/ambience/ambiicesting3.ogg b/sound/ambience/icemoon/ambiicesting3.ogg
similarity index 100%
rename from sound/ambience/ambiicesting3.ogg
rename to sound/ambience/icemoon/ambiicesting3.ogg
diff --git a/sound/ambience/ambiicesting4.ogg b/sound/ambience/icemoon/ambiicesting4.ogg
similarity index 100%
rename from sound/ambience/ambiicesting4.ogg
rename to sound/ambience/icemoon/ambiicesting4.ogg
diff --git a/sound/ambience/ambiicesting5.ogg b/sound/ambience/icemoon/ambiicesting5.ogg
similarity index 100%
rename from sound/ambience/ambiicesting5.ogg
rename to sound/ambience/icemoon/ambiicesting5.ogg
diff --git a/sound/ambience/ambiicetheme.ogg b/sound/ambience/icemoon/ambiicetheme.ogg
similarity index 100%
rename from sound/ambience/ambiicetheme.ogg
rename to sound/ambience/icemoon/ambiicetheme.ogg
diff --git a/sound/ambience/ambicave.ogg b/sound/ambience/lavaland/ambicave.ogg
similarity index 100%
rename from sound/ambience/ambicave.ogg
rename to sound/ambience/lavaland/ambicave.ogg
diff --git a/sound/ambience/ambilava1.ogg b/sound/ambience/lavaland/ambilava1.ogg
similarity index 100%
rename from sound/ambience/ambilava1.ogg
rename to sound/ambience/lavaland/ambilava1.ogg
diff --git a/sound/ambience/ambilava2.ogg b/sound/ambience/lavaland/ambilava2.ogg
similarity index 100%
rename from sound/ambience/ambilava2.ogg
rename to sound/ambience/lavaland/ambilava2.ogg
diff --git a/sound/ambience/ambilava3.ogg b/sound/ambience/lavaland/ambilava3.ogg
similarity index 100%
rename from sound/ambience/ambilava3.ogg
rename to sound/ambience/lavaland/ambilava3.ogg
diff --git a/sound/ambience/lavaland/magma.ogg b/sound/ambience/lavaland/magma.ogg
new file mode 100644
index 0000000000000..e461801f9aead
Binary files /dev/null and b/sound/ambience/lavaland/magma.ogg differ
diff --git a/sound/ambience/license.txt b/sound/ambience/license.txt
deleted file mode 100644
index a0b6efb24c5c1..0000000000000
--- a/sound/ambience/license.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-ambidet1.ogg and spy.ogg is Fast Talking by Kevin Macleod. It has been licensed under the CC-BY 3.0 license.
- It has been cropped for use ingame.
-ambidet2.ogg is Night on the Docks, Piano by Kevin Macleod. It has been licensed under CC-BY 3.0 license.
- It has been cropped for use ingame, and also fades in.
-aurora_caelus.ogg is Music for Manatees, by Kevin Macleod. It has been licensed under CC-BY 3.0 license.
- It has been cropped for use ingame, and also fades out.
-title0.ogg is Endless Space by Solus. It has been licensed under CC-BY 3.0 license. Source file downloaded from https://www.newgrounds.com/audio/listen/74946
-title1.mod is Flip-Flap created by Jakub "AceMan" SzelÄ…g and taken from http://aminet.net/package/mods/xceed/Flipflap
-title2.ogg is Robocop Theme (gameboy) remixed by Eric Schumacker
-title3.ogg is Tintin On The Moon remixed by Cuboos https://tgstation13.org/phpBB/viewtopic.php?f=10&t=2157 (assumed CC under allowing it to be submitted to the github, see thread)
-
-VoidsEmbrace.ogg is Chopin - Waltz in C Sharp Minor (Op. 64 No. 2). It is in public domain.
-
-ambispace4.ogg is Sipping Bird, by Capsandi. It has been licensed under CC-BY 3.0 license.
-ambimaint6.ogg and ambimaint7.ogg, created by Capsandi are licensed under CC-BY 3.0 license.
-
-CC-BY 3.0: http://creativecommons.org/licenses/by/3.0/
diff --git a/sound/ambience/magma.ogg b/sound/ambience/magma.ogg
deleted file mode 100644
index 415c62966fcc4..0000000000000
Binary files a/sound/ambience/magma.ogg and /dev/null differ
diff --git a/sound/ambience/ambimaint.ogg b/sound/ambience/maintenance/ambimaint.ogg
similarity index 100%
rename from sound/ambience/ambimaint.ogg
rename to sound/ambience/maintenance/ambimaint.ogg
diff --git a/sound/ambience/ambimaint1.ogg b/sound/ambience/maintenance/ambimaint1.ogg
similarity index 100%
rename from sound/ambience/ambimaint1.ogg
rename to sound/ambience/maintenance/ambimaint1.ogg
diff --git a/sound/ambience/ambimaint10.ogg b/sound/ambience/maintenance/ambimaint10.ogg
similarity index 100%
rename from sound/ambience/ambimaint10.ogg
rename to sound/ambience/maintenance/ambimaint10.ogg
diff --git a/sound/ambience/ambimaint11.ogg b/sound/ambience/maintenance/ambimaint11.ogg
similarity index 100%
rename from sound/ambience/ambimaint11.ogg
rename to sound/ambience/maintenance/ambimaint11.ogg
diff --git a/sound/ambience/ambimaint12.ogg b/sound/ambience/maintenance/ambimaint12.ogg
similarity index 100%
rename from sound/ambience/ambimaint12.ogg
rename to sound/ambience/maintenance/ambimaint12.ogg
diff --git a/sound/ambience/ambimaint2.ogg b/sound/ambience/maintenance/ambimaint2.ogg
similarity index 100%
rename from sound/ambience/ambimaint2.ogg
rename to sound/ambience/maintenance/ambimaint2.ogg
diff --git a/sound/ambience/ambimaint3.ogg b/sound/ambience/maintenance/ambimaint3.ogg
similarity index 100%
rename from sound/ambience/ambimaint3.ogg
rename to sound/ambience/maintenance/ambimaint3.ogg
diff --git a/sound/ambience/ambimaint4.ogg b/sound/ambience/maintenance/ambimaint4.ogg
similarity index 100%
rename from sound/ambience/ambimaint4.ogg
rename to sound/ambience/maintenance/ambimaint4.ogg
diff --git a/sound/ambience/ambimaint5.ogg b/sound/ambience/maintenance/ambimaint5.ogg
similarity index 100%
rename from sound/ambience/ambimaint5.ogg
rename to sound/ambience/maintenance/ambimaint5.ogg
diff --git a/sound/ambience/ambimaint6.ogg b/sound/ambience/maintenance/ambimaint6.ogg
similarity index 100%
rename from sound/ambience/ambimaint6.ogg
rename to sound/ambience/maintenance/ambimaint6.ogg
diff --git a/sound/ambience/ambimaint7.ogg b/sound/ambience/maintenance/ambimaint7.ogg
similarity index 100%
rename from sound/ambience/ambimaint7.ogg
rename to sound/ambience/maintenance/ambimaint7.ogg
diff --git a/sound/ambience/ambimaint8.ogg b/sound/ambience/maintenance/ambimaint8.ogg
similarity index 100%
rename from sound/ambience/ambimaint8.ogg
rename to sound/ambience/maintenance/ambimaint8.ogg
diff --git a/sound/ambience/ambimaint9.ogg b/sound/ambience/maintenance/ambimaint9.ogg
similarity index 100%
rename from sound/ambience/ambimaint9.ogg
rename to sound/ambience/maintenance/ambimaint9.ogg
diff --git a/sound/ambience/maintenance/attribution.txt b/sound/ambience/maintenance/attribution.txt
new file mode 100644
index 0000000000000..cf7d2fe0676b2
--- /dev/null
+++ b/sound/ambience/maintenance/attribution.txt
@@ -0,0 +1,2 @@
+ambispace4.ogg is Sipping Bird, by Capsandi. It has been licensed under CC-BY 3.0 license.
+ambimaint6.ogg and ambimaint7.ogg, created by Capsandi are licensed under CC-BY 3.0 license.
diff --git a/sound/ambience/maintambience.ogg b/sound/ambience/maintenance/maintambience.ogg
similarity index 100%
rename from sound/ambience/maintambience.ogg
rename to sound/ambience/maintenance/maintambience.ogg
diff --git a/sound/ambience/source_corridor2.ogg b/sound/ambience/maintenance/source_corridor2.ogg
similarity index 100%
rename from sound/ambience/source_corridor2.ogg
rename to sound/ambience/maintenance/source_corridor2.ogg
diff --git a/sound/ambience/ambimo1.ogg b/sound/ambience/medical/ambimo1.ogg
similarity index 100%
rename from sound/ambience/ambimo1.ogg
rename to sound/ambience/medical/ambimo1.ogg
diff --git a/sound/ambience/ambimo2.ogg b/sound/ambience/medical/ambimo2.ogg
similarity index 100%
rename from sound/ambience/ambimo2.ogg
rename to sound/ambience/medical/ambimo2.ogg
diff --git a/sound/ambience/ambinice.ogg b/sound/ambience/medical/ambinice.ogg
similarity index 100%
rename from sound/ambience/ambinice.ogg
rename to sound/ambience/medical/ambinice.ogg
diff --git a/sound/ambience/ambiviro.ogg b/sound/ambience/medical/ambiviro.ogg
similarity index 100%
rename from sound/ambience/ambiviro.ogg
rename to sound/ambience/medical/ambiviro.ogg
diff --git a/sound/ambience/ambiviro1.ogg b/sound/ambience/medical/ambiviro1.ogg
similarity index 100%
rename from sound/ambience/ambiviro1.ogg
rename to sound/ambience/medical/ambiviro1.ogg
diff --git a/sound/ambience/ambiviro2.ogg b/sound/ambience/medical/ambiviro2.ogg
similarity index 100%
rename from sound/ambience/ambiviro2.ogg
rename to sound/ambience/medical/ambiviro2.ogg
diff --git a/sound/ambience/ambiatm1.ogg b/sound/ambience/misc/ambiatm1.ogg
similarity index 100%
rename from sound/ambience/ambiatm1.ogg
rename to sound/ambience/misc/ambiatm1.ogg
diff --git a/sound/ambience/ambidanger.ogg b/sound/ambience/misc/ambidanger.ogg
similarity index 100%
rename from sound/ambience/ambidanger.ogg
rename to sound/ambience/misc/ambidanger.ogg
diff --git a/sound/ambience/ambidanger2.ogg b/sound/ambience/misc/ambidanger2.ogg
similarity index 100%
rename from sound/ambience/ambidanger2.ogg
rename to sound/ambience/misc/ambidanger2.ogg
diff --git a/sound/ambience/ambifailure.ogg b/sound/ambience/misc/ambifailure.ogg
similarity index 100%
rename from sound/ambience/ambifailure.ogg
rename to sound/ambience/misc/ambifailure.ogg
diff --git a/sound/ambience/ambimalf.ogg b/sound/ambience/misc/ambimalf.ogg
similarity index 100%
rename from sound/ambience/ambimalf.ogg
rename to sound/ambience/misc/ambimalf.ogg
diff --git a/sound/ambience/ambimystery.ogg b/sound/ambience/misc/ambimystery.ogg
similarity index 100%
rename from sound/ambience/ambimystery.ogg
rename to sound/ambience/misc/ambimystery.ogg
diff --git a/sound/ambience/ambiodd.ogg b/sound/ambience/misc/ambiodd.ogg
similarity index 100%
rename from sound/ambience/ambiodd.ogg
rename to sound/ambience/misc/ambiodd.ogg
diff --git a/sound/ambience/ambireebe1.ogg b/sound/ambience/misc/ambireebe1.ogg
similarity index 100%
rename from sound/ambience/ambireebe1.ogg
rename to sound/ambience/misc/ambireebe1.ogg
diff --git a/sound/ambience/ambireebe2.ogg b/sound/ambience/misc/ambireebe2.ogg
similarity index 100%
rename from sound/ambience/ambireebe2.ogg
rename to sound/ambience/misc/ambireebe2.ogg
diff --git a/sound/ambience/ambireebe3.ogg b/sound/ambience/misc/ambireebe3.ogg
similarity index 100%
rename from sound/ambience/ambireebe3.ogg
rename to sound/ambience/misc/ambireebe3.ogg
diff --git a/sound/ambience/ambivapor1.ogg b/sound/ambience/misc/ambivapor1.ogg
similarity index 100%
rename from sound/ambience/ambivapor1.ogg
rename to sound/ambience/misc/ambivapor1.ogg
diff --git a/sound/ambience/cavesound3.ogg b/sound/ambience/misc/cavesound3.ogg
similarity index 100%
rename from sound/ambience/cavesound3.ogg
rename to sound/ambience/misc/cavesound3.ogg
diff --git a/sound/ambience/signal.ogg b/sound/ambience/misc/signal.ogg
similarity index 100%
rename from sound/ambience/signal.ogg
rename to sound/ambience/misc/signal.ogg
diff --git a/sound/ambience/source_holehit3.ogg b/sound/ambience/misc/source_holehit3.ogg
similarity index 100%
rename from sound/ambience/source_holehit3.ogg
rename to sound/ambience/misc/source_holehit3.ogg
diff --git a/sound/ambience/ticking_clock.ogg b/sound/ambience/misc/ticking_clock.ogg
similarity index 100%
rename from sound/ambience/ticking_clock.ogg
rename to sound/ambience/misc/ticking_clock.ogg
diff --git a/sound/ambience/ambimine.ogg b/sound/ambience/ruin/ambimine.ogg
similarity index 100%
rename from sound/ambience/ambimine.ogg
rename to sound/ambience/ruin/ambimine.ogg
diff --git a/sound/ambience/ambiruin.ogg b/sound/ambience/ruin/ambiruin.ogg
similarity index 100%
rename from sound/ambience/ambiruin.ogg
rename to sound/ambience/ruin/ambiruin.ogg
diff --git a/sound/ambience/ambiruin2.ogg b/sound/ambience/ruin/ambiruin2.ogg
similarity index 100%
rename from sound/ambience/ambiruin2.ogg
rename to sound/ambience/ruin/ambiruin2.ogg
diff --git a/sound/ambience/ambiruin3.ogg b/sound/ambience/ruin/ambiruin3.ogg
similarity index 100%
rename from sound/ambience/ambiruin3.ogg
rename to sound/ambience/ruin/ambiruin3.ogg
diff --git a/sound/ambience/ambiruin4.ogg b/sound/ambience/ruin/ambiruin4.ogg
similarity index 100%
rename from sound/ambience/ambiruin4.ogg
rename to sound/ambience/ruin/ambiruin4.ogg
diff --git a/sound/ambience/ambiruin5.ogg b/sound/ambience/ruin/ambiruin5.ogg
similarity index 100%
rename from sound/ambience/ambiruin5.ogg
rename to sound/ambience/ruin/ambiruin5.ogg
diff --git a/sound/ambience/ambiruin6.ogg b/sound/ambience/ruin/ambiruin6.ogg
similarity index 100%
rename from sound/ambience/ambiruin6.ogg
rename to sound/ambience/ruin/ambiruin6.ogg
diff --git a/sound/ambience/ambiruin7.ogg b/sound/ambience/ruin/ambiruin7.ogg
similarity index 100%
rename from sound/ambience/ambiruin7.ogg
rename to sound/ambience/ruin/ambiruin7.ogg
diff --git a/sound/ambience/servicebell.ogg b/sound/ambience/ruin/servicebell.ogg
similarity index 100%
rename from sound/ambience/servicebell.ogg
rename to sound/ambience/ruin/servicebell.ogg
diff --git a/sound/ambience/ambidet1.ogg b/sound/ambience/security/ambidet1.ogg
similarity index 100%
rename from sound/ambience/ambidet1.ogg
rename to sound/ambience/security/ambidet1.ogg
diff --git a/sound/ambience/ambidet2.ogg b/sound/ambience/security/ambidet2.ogg
similarity index 100%
rename from sound/ambience/ambidet2.ogg
rename to sound/ambience/security/ambidet2.ogg
diff --git a/sound/ambience/security/attribution.txt b/sound/ambience/security/attribution.txt
new file mode 100644
index 0000000000000..ea51a227e9e91
--- /dev/null
+++ b/sound/ambience/security/attribution.txt
@@ -0,0 +1,4 @@
+ambidet1.ogg and spy.ogg is Fast Talking by Kevin Macleod. It has been licensed under the CC-BY 3.0 license.
+ It has been cropped for use ingame.
+ambidet2.ogg is Night on the Docks, Piano by Kevin Macleod. It has been licensed under CC-BY 3.0 license.
+ It has been cropped for use ingame, and also fades in.
diff --git a/sound/ambience/ambispace.ogg b/sound/ambience/space/ambispace.ogg
similarity index 100%
rename from sound/ambience/ambispace.ogg
rename to sound/ambience/space/ambispace.ogg
diff --git a/sound/ambience/ambispace2.ogg b/sound/ambience/space/ambispace2.ogg
similarity index 100%
rename from sound/ambience/ambispace2.ogg
rename to sound/ambience/space/ambispace2.ogg
diff --git a/sound/ambience/ambispace3.ogg b/sound/ambience/space/ambispace3.ogg
similarity index 100%
rename from sound/ambience/ambispace3.ogg
rename to sound/ambience/space/ambispace3.ogg
diff --git a/sound/ambience/ambispace4.ogg b/sound/ambience/space/ambispace4.ogg
similarity index 100%
rename from sound/ambience/ambispace4.ogg
rename to sound/ambience/space/ambispace4.ogg
diff --git a/sound/ambience/ambispace5.ogg b/sound/ambience/space/ambispace5.ogg
similarity index 100%
rename from sound/ambience/ambispace5.ogg
rename to sound/ambience/space/ambispace5.ogg
diff --git a/sound/ambience/ambispace6.ogg b/sound/ambience/space/ambispace6.ogg
similarity index 100%
rename from sound/ambience/ambispace6.ogg
rename to sound/ambience/space/ambispace6.ogg
diff --git a/sound/weather/ashstorm/inside/active_end.ogg b/sound/ambience/weather/ashstorm/inside/active_end.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/active_end.ogg
rename to sound/ambience/weather/ashstorm/inside/active_end.ogg
diff --git a/sound/weather/ashstorm/inside/active_mid1.ogg b/sound/ambience/weather/ashstorm/inside/active_mid1.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/active_mid1.ogg
rename to sound/ambience/weather/ashstorm/inside/active_mid1.ogg
diff --git a/sound/weather/ashstorm/inside/active_mid2.ogg b/sound/ambience/weather/ashstorm/inside/active_mid2.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/active_mid2.ogg
rename to sound/ambience/weather/ashstorm/inside/active_mid2.ogg
diff --git a/sound/weather/ashstorm/inside/active_mid3.ogg b/sound/ambience/weather/ashstorm/inside/active_mid3.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/active_mid3.ogg
rename to sound/ambience/weather/ashstorm/inside/active_mid3.ogg
diff --git a/sound/weather/ashstorm/inside/active_start.ogg b/sound/ambience/weather/ashstorm/inside/active_start.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/active_start.ogg
rename to sound/ambience/weather/ashstorm/inside/active_start.ogg
diff --git a/sound/weather/ashstorm/inside/weak_end.ogg b/sound/ambience/weather/ashstorm/inside/weak_end.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/weak_end.ogg
rename to sound/ambience/weather/ashstorm/inside/weak_end.ogg
diff --git a/sound/weather/ashstorm/inside/weak_mid1.ogg b/sound/ambience/weather/ashstorm/inside/weak_mid1.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/weak_mid1.ogg
rename to sound/ambience/weather/ashstorm/inside/weak_mid1.ogg
diff --git a/sound/weather/ashstorm/inside/weak_mid2.ogg b/sound/ambience/weather/ashstorm/inside/weak_mid2.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/weak_mid2.ogg
rename to sound/ambience/weather/ashstorm/inside/weak_mid2.ogg
diff --git a/sound/weather/ashstorm/inside/weak_mid3.ogg b/sound/ambience/weather/ashstorm/inside/weak_mid3.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/weak_mid3.ogg
rename to sound/ambience/weather/ashstorm/inside/weak_mid3.ogg
diff --git a/sound/weather/ashstorm/inside/weak_start.ogg b/sound/ambience/weather/ashstorm/inside/weak_start.ogg
similarity index 100%
rename from sound/weather/ashstorm/inside/weak_start.ogg
rename to sound/ambience/weather/ashstorm/inside/weak_start.ogg
diff --git a/sound/weather/ashstorm/outside/active_end.ogg b/sound/ambience/weather/ashstorm/outside/active_end.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/active_end.ogg
rename to sound/ambience/weather/ashstorm/outside/active_end.ogg
diff --git a/sound/weather/ashstorm/outside/active_mid1.ogg b/sound/ambience/weather/ashstorm/outside/active_mid1.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/active_mid1.ogg
rename to sound/ambience/weather/ashstorm/outside/active_mid1.ogg
diff --git a/sound/weather/ashstorm/outside/active_mid2.ogg b/sound/ambience/weather/ashstorm/outside/active_mid2.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/active_mid2.ogg
rename to sound/ambience/weather/ashstorm/outside/active_mid2.ogg
diff --git a/sound/weather/ashstorm/outside/active_mid3.ogg b/sound/ambience/weather/ashstorm/outside/active_mid3.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/active_mid3.ogg
rename to sound/ambience/weather/ashstorm/outside/active_mid3.ogg
diff --git a/sound/weather/ashstorm/outside/active_start.ogg b/sound/ambience/weather/ashstorm/outside/active_start.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/active_start.ogg
rename to sound/ambience/weather/ashstorm/outside/active_start.ogg
diff --git a/sound/weather/ashstorm/outside/weak_end.ogg b/sound/ambience/weather/ashstorm/outside/weak_end.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/weak_end.ogg
rename to sound/ambience/weather/ashstorm/outside/weak_end.ogg
diff --git a/sound/weather/ashstorm/outside/weak_mid1.ogg b/sound/ambience/weather/ashstorm/outside/weak_mid1.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/weak_mid1.ogg
rename to sound/ambience/weather/ashstorm/outside/weak_mid1.ogg
diff --git a/sound/weather/ashstorm/outside/weak_mid2.ogg b/sound/ambience/weather/ashstorm/outside/weak_mid2.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/weak_mid2.ogg
rename to sound/ambience/weather/ashstorm/outside/weak_mid2.ogg
diff --git a/sound/weather/ashstorm/outside/weak_mid3.ogg b/sound/ambience/weather/ashstorm/outside/weak_mid3.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/weak_mid3.ogg
rename to sound/ambience/weather/ashstorm/outside/weak_mid3.ogg
diff --git a/sound/weather/ashstorm/outside/weak_start.ogg b/sound/ambience/weather/ashstorm/outside/weak_start.ogg
similarity index 100%
rename from sound/weather/ashstorm/outside/weak_start.ogg
rename to sound/ambience/weather/ashstorm/outside/weak_start.ogg
diff --git a/sound/voice/ApproachingTG.ogg b/sound/announcer/ApproachingTG.ogg
similarity index 100%
rename from sound/voice/ApproachingTG.ogg
rename to sound/announcer/ApproachingTG.ogg
diff --git a/sound/misc/airraid.ogg b/sound/announcer/alarm/airraid.ogg
similarity index 100%
rename from sound/misc/airraid.ogg
rename to sound/announcer/alarm/airraid.ogg
diff --git a/sound/announcer/alarm/attribution.txt b/sound/announcer/alarm/attribution.txt
new file mode 100644
index 0000000000000..47b896ed5e4f4
--- /dev/null
+++ b/sound/announcer/alarm/attribution.txt
@@ -0,0 +1,2 @@
+airraid.ogg by Jwade722. Shortened and cut.
+https://freesound.org/people/Jwade722/sounds/534550/
diff --git a/sound/misc/bloblarm.ogg b/sound/announcer/alarm/bloblarm.ogg
similarity index 100%
rename from sound/misc/bloblarm.ogg
rename to sound/announcer/alarm/bloblarm.ogg
diff --git a/sound/machines/alarm.ogg b/sound/announcer/alarm/nuke_alarm.ogg
similarity index 100%
rename from sound/machines/alarm.ogg
rename to sound/announcer/alarm/nuke_alarm.ogg
diff --git a/sound/misc/announce.ogg b/sound/announcer/announcement/announce.ogg
similarity index 100%
rename from sound/misc/announce.ogg
rename to sound/announcer/announcement/announce.ogg
diff --git a/sound/misc/announce_dig.ogg b/sound/announcer/announcement/announce_dig.ogg
similarity index 100%
rename from sound/misc/announce_dig.ogg
rename to sound/announcer/announcement/announce_dig.ogg
diff --git a/sound/misc/announce_syndi.ogg b/sound/announcer/announcement/announce_syndi.ogg
similarity index 100%
rename from sound/misc/announce_syndi.ogg
rename to sound/announcer/announcement/announce_syndi.ogg
diff --git a/sound/ai/default/aimalf.ogg b/sound/announcer/default/aimalf.ogg
similarity index 100%
rename from sound/ai/default/aimalf.ogg
rename to sound/announcer/default/aimalf.ogg
diff --git a/sound/ai/default/aliens.ogg b/sound/announcer/default/aliens.ogg
similarity index 100%
rename from sound/ai/default/aliens.ogg
rename to sound/announcer/default/aliens.ogg
diff --git a/sound/ai/default/animes.ogg b/sound/announcer/default/animes.ogg
similarity index 100%
rename from sound/ai/default/animes.ogg
rename to sound/announcer/default/animes.ogg
diff --git a/sound/ai/default/attention.ogg b/sound/announcer/default/attention.ogg
similarity index 100%
rename from sound/ai/default/attention.ogg
rename to sound/announcer/default/attention.ogg
diff --git a/sound/ai/default/commandreport.ogg b/sound/announcer/default/commandreport.ogg
similarity index 100%
rename from sound/ai/default/commandreport.ogg
rename to sound/announcer/default/commandreport.ogg
diff --git a/sound/ai/default/granomalies.ogg b/sound/announcer/default/granomalies.ogg
similarity index 100%
rename from sound/ai/default/granomalies.ogg
rename to sound/announcer/default/granomalies.ogg
diff --git a/sound/ai/default/intercept.ogg b/sound/announcer/default/intercept.ogg
similarity index 100%
rename from sound/ai/default/intercept.ogg
rename to sound/announcer/default/intercept.ogg
diff --git a/sound/ai/default/ionstorm.ogg b/sound/announcer/default/ionstorm.ogg
similarity index 100%
rename from sound/ai/default/ionstorm.ogg
rename to sound/announcer/default/ionstorm.ogg
diff --git a/sound/ai/default/meteors.ogg b/sound/announcer/default/meteors.ogg
similarity index 100%
rename from sound/ai/default/meteors.ogg
rename to sound/announcer/default/meteors.ogg
diff --git a/sound/ai/default/outbreak5.ogg b/sound/announcer/default/outbreak5.ogg
similarity index 100%
rename from sound/ai/default/outbreak5.ogg
rename to sound/announcer/default/outbreak5.ogg
diff --git a/sound/ai/default/outbreak7.ogg b/sound/announcer/default/outbreak7.ogg
similarity index 100%
rename from sound/ai/default/outbreak7.ogg
rename to sound/announcer/default/outbreak7.ogg
diff --git a/sound/ai/default/poweroff.ogg b/sound/announcer/default/poweroff.ogg
similarity index 100%
rename from sound/ai/default/poweroff.ogg
rename to sound/announcer/default/poweroff.ogg
diff --git a/sound/ai/default/poweron.ogg b/sound/announcer/default/poweron.ogg
similarity index 100%
rename from sound/ai/default/poweron.ogg
rename to sound/announcer/default/poweron.ogg
diff --git a/sound/ai/default/radiation.ogg b/sound/announcer/default/radiation.ogg
similarity index 100%
rename from sound/ai/default/radiation.ogg
rename to sound/announcer/default/radiation.ogg
diff --git a/sound/ai/default/shuttlecalled.ogg b/sound/announcer/default/shuttlecalled.ogg
similarity index 100%
rename from sound/ai/default/shuttlecalled.ogg
rename to sound/announcer/default/shuttlecalled.ogg
diff --git a/sound/ai/default/shuttledock.ogg b/sound/announcer/default/shuttledock.ogg
similarity index 100%
rename from sound/ai/default/shuttledock.ogg
rename to sound/announcer/default/shuttledock.ogg
diff --git a/sound/ai/default/shuttlerecalled.ogg b/sound/announcer/default/shuttlerecalled.ogg
similarity index 100%
rename from sound/ai/default/shuttlerecalled.ogg
rename to sound/announcer/default/shuttlerecalled.ogg
diff --git a/sound/ai/default/spanomalies.ogg b/sound/announcer/default/spanomalies.ogg
similarity index 100%
rename from sound/ai/default/spanomalies.ogg
rename to sound/announcer/default/spanomalies.ogg
diff --git a/sound/ai/default/welcome.ogg b/sound/announcer/default/welcome.ogg
similarity index 100%
rename from sound/ai/default/welcome.ogg
rename to sound/announcer/default/welcome.ogg
diff --git a/sound/ai/intern/alerts/1.ogg b/sound/announcer/intern/alerts/1.ogg
similarity index 100%
rename from sound/ai/intern/alerts/1.ogg
rename to sound/announcer/intern/alerts/1.ogg
diff --git a/sound/ai/intern/alerts/10.ogg b/sound/announcer/intern/alerts/10.ogg
similarity index 100%
rename from sound/ai/intern/alerts/10.ogg
rename to sound/announcer/intern/alerts/10.ogg
diff --git a/sound/ai/intern/alerts/11.ogg b/sound/announcer/intern/alerts/11.ogg
similarity index 100%
rename from sound/ai/intern/alerts/11.ogg
rename to sound/announcer/intern/alerts/11.ogg
diff --git a/sound/ai/intern/alerts/12.ogg b/sound/announcer/intern/alerts/12.ogg
similarity index 100%
rename from sound/ai/intern/alerts/12.ogg
rename to sound/announcer/intern/alerts/12.ogg
diff --git a/sound/ai/intern/alerts/13.ogg b/sound/announcer/intern/alerts/13.ogg
similarity index 100%
rename from sound/ai/intern/alerts/13.ogg
rename to sound/announcer/intern/alerts/13.ogg
diff --git a/sound/ai/intern/alerts/14.ogg b/sound/announcer/intern/alerts/14.ogg
similarity index 100%
rename from sound/ai/intern/alerts/14.ogg
rename to sound/announcer/intern/alerts/14.ogg
diff --git a/sound/ai/intern/alerts/2.ogg b/sound/announcer/intern/alerts/2.ogg
similarity index 100%
rename from sound/ai/intern/alerts/2.ogg
rename to sound/announcer/intern/alerts/2.ogg
diff --git a/sound/ai/intern/alerts/3.ogg b/sound/announcer/intern/alerts/3.ogg
similarity index 100%
rename from sound/ai/intern/alerts/3.ogg
rename to sound/announcer/intern/alerts/3.ogg
diff --git a/sound/ai/intern/alerts/4.ogg b/sound/announcer/intern/alerts/4.ogg
similarity index 100%
rename from sound/ai/intern/alerts/4.ogg
rename to sound/announcer/intern/alerts/4.ogg
diff --git a/sound/ai/intern/alerts/5.ogg b/sound/announcer/intern/alerts/5.ogg
similarity index 100%
rename from sound/ai/intern/alerts/5.ogg
rename to sound/announcer/intern/alerts/5.ogg
diff --git a/sound/ai/intern/alerts/6.ogg b/sound/announcer/intern/alerts/6.ogg
similarity index 100%
rename from sound/ai/intern/alerts/6.ogg
rename to sound/announcer/intern/alerts/6.ogg
diff --git a/sound/ai/intern/alerts/7.ogg b/sound/announcer/intern/alerts/7.ogg
similarity index 100%
rename from sound/ai/intern/alerts/7.ogg
rename to sound/announcer/intern/alerts/7.ogg
diff --git a/sound/ai/intern/alerts/8.ogg b/sound/announcer/intern/alerts/8.ogg
similarity index 100%
rename from sound/ai/intern/alerts/8.ogg
rename to sound/announcer/intern/alerts/8.ogg
diff --git a/sound/ai/intern/alerts/9.ogg b/sound/announcer/intern/alerts/9.ogg
similarity index 100%
rename from sound/ai/intern/alerts/9.ogg
rename to sound/announcer/intern/alerts/9.ogg
diff --git a/sound/ai/intern/aliens.ogg b/sound/announcer/intern/aliens.ogg
similarity index 100%
rename from sound/ai/intern/aliens.ogg
rename to sound/announcer/intern/aliens.ogg
diff --git a/sound/ai/intern/animes.ogg b/sound/announcer/intern/animes.ogg
similarity index 100%
rename from sound/ai/intern/animes.ogg
rename to sound/announcer/intern/animes.ogg
diff --git a/sound/ai/intern/commandreport/1.ogg b/sound/announcer/intern/commandreport/1.ogg
similarity index 100%
rename from sound/ai/intern/commandreport/1.ogg
rename to sound/announcer/intern/commandreport/1.ogg
diff --git a/sound/ai/intern/commandreport/2.ogg b/sound/announcer/intern/commandreport/2.ogg
similarity index 100%
rename from sound/ai/intern/commandreport/2.ogg
rename to sound/announcer/intern/commandreport/2.ogg
diff --git a/sound/ai/intern/commandreport/3.ogg b/sound/announcer/intern/commandreport/3.ogg
similarity index 100%
rename from sound/ai/intern/commandreport/3.ogg
rename to sound/announcer/intern/commandreport/3.ogg
diff --git a/sound/ai/intern/granomalies.ogg b/sound/announcer/intern/granomalies.ogg
similarity index 100%
rename from sound/ai/intern/granomalies.ogg
rename to sound/announcer/intern/granomalies.ogg
diff --git a/sound/ai/intern/intercept.ogg b/sound/announcer/intern/intercept.ogg
similarity index 100%
rename from sound/ai/intern/intercept.ogg
rename to sound/announcer/intern/intercept.ogg
diff --git a/sound/ai/intern/ionstorm.ogg b/sound/announcer/intern/ionstorm.ogg
similarity index 100%
rename from sound/ai/intern/ionstorm.ogg
rename to sound/announcer/intern/ionstorm.ogg
diff --git a/sound/ai/intern/meteors.ogg b/sound/announcer/intern/meteors.ogg
similarity index 100%
rename from sound/ai/intern/meteors.ogg
rename to sound/announcer/intern/meteors.ogg
diff --git a/sound/ai/intern/outbreak5.ogg b/sound/announcer/intern/outbreak5.ogg
similarity index 100%
rename from sound/ai/intern/outbreak5.ogg
rename to sound/announcer/intern/outbreak5.ogg
diff --git a/sound/ai/intern/outbreak7.ogg b/sound/announcer/intern/outbreak7.ogg
similarity index 100%
rename from sound/ai/intern/outbreak7.ogg
rename to sound/announcer/intern/outbreak7.ogg
diff --git a/sound/ai/intern/poweroff.ogg b/sound/announcer/intern/poweroff.ogg
similarity index 100%
rename from sound/ai/intern/poweroff.ogg
rename to sound/announcer/intern/poweroff.ogg
diff --git a/sound/ai/intern/poweron.ogg b/sound/announcer/intern/poweron.ogg
similarity index 100%
rename from sound/ai/intern/poweron.ogg
rename to sound/announcer/intern/poweron.ogg
diff --git a/sound/ai/intern/radiation.ogg b/sound/announcer/intern/radiation.ogg
similarity index 100%
rename from sound/ai/intern/radiation.ogg
rename to sound/announcer/intern/radiation.ogg
diff --git a/sound/ai/intern/shuttlecalled.ogg b/sound/announcer/intern/shuttlecalled.ogg
similarity index 100%
rename from sound/ai/intern/shuttlecalled.ogg
rename to sound/announcer/intern/shuttlecalled.ogg
diff --git a/sound/ai/intern/shuttledock.ogg b/sound/announcer/intern/shuttledock.ogg
similarity index 100%
rename from sound/ai/intern/shuttledock.ogg
rename to sound/announcer/intern/shuttledock.ogg
diff --git a/sound/ai/intern/shuttlerecalled.ogg b/sound/announcer/intern/shuttlerecalled.ogg
similarity index 100%
rename from sound/ai/intern/shuttlerecalled.ogg
rename to sound/announcer/intern/shuttlerecalled.ogg
diff --git a/sound/ai/intern/spanomalies.ogg b/sound/announcer/intern/spanomalies.ogg
similarity index 100%
rename from sound/ai/intern/spanomalies.ogg
rename to sound/announcer/intern/spanomalies.ogg
diff --git a/sound/ai/intern/welcome/1.ogg b/sound/announcer/intern/welcome/1.ogg
similarity index 100%
rename from sound/ai/intern/welcome/1.ogg
rename to sound/announcer/intern/welcome/1.ogg
diff --git a/sound/ai/intern/welcome/2.ogg b/sound/announcer/intern/welcome/2.ogg
similarity index 100%
rename from sound/ai/intern/welcome/2.ogg
rename to sound/announcer/intern/welcome/2.ogg
diff --git a/sound/ai/intern/welcome/3.ogg b/sound/announcer/intern/welcome/3.ogg
similarity index 100%
rename from sound/ai/intern/welcome/3.ogg
rename to sound/announcer/intern/welcome/3.ogg
diff --git a/sound/ai/intern/welcome/4.ogg b/sound/announcer/intern/welcome/4.ogg
similarity index 100%
rename from sound/ai/intern/welcome/4.ogg
rename to sound/announcer/intern/welcome/4.ogg
diff --git a/sound/ai/intern/welcome/5.ogg b/sound/announcer/intern/welcome/5.ogg
similarity index 100%
rename from sound/ai/intern/welcome/5.ogg
rename to sound/announcer/intern/welcome/5.ogg
diff --git a/sound/ai/intern/welcome/6.ogg b/sound/announcer/intern/welcome/6.ogg
similarity index 100%
rename from sound/ai/intern/welcome/6.ogg
rename to sound/announcer/intern/welcome/6.ogg
diff --git a/sound/ai/medbot/aliens.ogg b/sound/announcer/medbot/aliens.ogg
similarity index 100%
rename from sound/ai/medbot/aliens.ogg
rename to sound/announcer/medbot/aliens.ogg
diff --git a/sound/ai/medbot/animes.ogg b/sound/announcer/medbot/animes.ogg
similarity index 100%
rename from sound/ai/medbot/animes.ogg
rename to sound/announcer/medbot/animes.ogg
diff --git a/sound/ai/medbot/attention.ogg b/sound/announcer/medbot/attention.ogg
similarity index 100%
rename from sound/ai/medbot/attention.ogg
rename to sound/announcer/medbot/attention.ogg
diff --git a/sound/ai/medbot/commandreport.ogg b/sound/announcer/medbot/commandreport.ogg
similarity index 100%
rename from sound/ai/medbot/commandreport.ogg
rename to sound/announcer/medbot/commandreport.ogg
diff --git a/sound/ai/medbot/granomalies.ogg b/sound/announcer/medbot/granomalies.ogg
similarity index 100%
rename from sound/ai/medbot/granomalies.ogg
rename to sound/announcer/medbot/granomalies.ogg
diff --git a/sound/ai/medbot/intercept.ogg b/sound/announcer/medbot/intercept.ogg
similarity index 100%
rename from sound/ai/medbot/intercept.ogg
rename to sound/announcer/medbot/intercept.ogg
diff --git a/sound/ai/medbot/ionstorm.ogg b/sound/announcer/medbot/ionstorm.ogg
similarity index 100%
rename from sound/ai/medbot/ionstorm.ogg
rename to sound/announcer/medbot/ionstorm.ogg
diff --git a/sound/ai/medbot/meteors.ogg b/sound/announcer/medbot/meteors.ogg
similarity index 100%
rename from sound/ai/medbot/meteors.ogg
rename to sound/announcer/medbot/meteors.ogg
diff --git a/sound/ai/medbot/newAI.ogg b/sound/announcer/medbot/newAI.ogg
similarity index 100%
rename from sound/ai/medbot/newAI.ogg
rename to sound/announcer/medbot/newAI.ogg
diff --git a/sound/ai/medbot/outbreak5.ogg b/sound/announcer/medbot/outbreak5.ogg
similarity index 100%
rename from sound/ai/medbot/outbreak5.ogg
rename to sound/announcer/medbot/outbreak5.ogg
diff --git a/sound/ai/medbot/outbreak7.ogg b/sound/announcer/medbot/outbreak7.ogg
similarity index 100%
rename from sound/ai/medbot/outbreak7.ogg
rename to sound/announcer/medbot/outbreak7.ogg
diff --git a/sound/ai/medbot/poweroff.ogg b/sound/announcer/medbot/poweroff.ogg
similarity index 100%
rename from sound/ai/medbot/poweroff.ogg
rename to sound/announcer/medbot/poweroff.ogg
diff --git a/sound/ai/medbot/poweron.ogg b/sound/announcer/medbot/poweron.ogg
similarity index 100%
rename from sound/ai/medbot/poweron.ogg
rename to sound/announcer/medbot/poweron.ogg
diff --git a/sound/ai/medbot/radiation.ogg b/sound/announcer/medbot/radiation.ogg
similarity index 100%
rename from sound/ai/medbot/radiation.ogg
rename to sound/announcer/medbot/radiation.ogg
diff --git a/sound/ai/medbot/shuttlecalled.ogg b/sound/announcer/medbot/shuttlecalled.ogg
similarity index 100%
rename from sound/ai/medbot/shuttlecalled.ogg
rename to sound/announcer/medbot/shuttlecalled.ogg
diff --git a/sound/ai/medbot/shuttledock.ogg b/sound/announcer/medbot/shuttledock.ogg
similarity index 100%
rename from sound/ai/medbot/shuttledock.ogg
rename to sound/announcer/medbot/shuttledock.ogg
diff --git a/sound/ai/medbot/shuttlerecalled.ogg b/sound/announcer/medbot/shuttlerecalled.ogg
similarity index 100%
rename from sound/ai/medbot/shuttlerecalled.ogg
rename to sound/announcer/medbot/shuttlerecalled.ogg
diff --git a/sound/ai/medbot/spanomalies.ogg b/sound/announcer/medbot/spanomalies.ogg
similarity index 100%
rename from sound/ai/medbot/spanomalies.ogg
rename to sound/announcer/medbot/spanomalies.ogg
diff --git a/sound/ai/medbot/welcome.ogg b/sound/announcer/medbot/welcome.ogg
similarity index 100%
rename from sound/ai/medbot/welcome.ogg
rename to sound/announcer/medbot/welcome.ogg
diff --git a/sound/misc/notice1.ogg b/sound/announcer/notice/notice1.ogg
similarity index 100%
rename from sound/misc/notice1.ogg
rename to sound/announcer/notice/notice1.ogg
diff --git a/sound/misc/notice2.ogg b/sound/announcer/notice/notice2.ogg
similarity index 100%
rename from sound/misc/notice2.ogg
rename to sound/announcer/notice/notice2.ogg
diff --git a/sound/misc/notice3.ogg b/sound/announcer/notice/notice3.ogg
similarity index 100%
rename from sound/misc/notice3.ogg
rename to sound/announcer/notice/notice3.ogg
diff --git a/sound/vox_fem/,.ogg b/sound/announcer/vox_fem/,.ogg
similarity index 100%
rename from sound/vox_fem/,.ogg
rename to sound/announcer/vox_fem/,.ogg
diff --git a/sound/vox_fem/..ogg b/sound/announcer/vox_fem/..ogg
similarity index 100%
rename from sound/vox_fem/..ogg
rename to sound/announcer/vox_fem/..ogg
diff --git a/sound/vox_fem/a.ogg b/sound/announcer/vox_fem/a.ogg
similarity index 100%
rename from sound/vox_fem/a.ogg
rename to sound/announcer/vox_fem/a.ogg
diff --git a/sound/vox_fem/abduction.ogg b/sound/announcer/vox_fem/abduction.ogg
similarity index 100%
rename from sound/vox_fem/abduction.ogg
rename to sound/announcer/vox_fem/abduction.ogg
diff --git a/sound/vox_fem/abortions.ogg b/sound/announcer/vox_fem/abortions.ogg
similarity index 100%
rename from sound/vox_fem/abortions.ogg
rename to sound/announcer/vox_fem/abortions.ogg
diff --git a/sound/vox_fem/above.ogg b/sound/announcer/vox_fem/above.ogg
similarity index 100%
rename from sound/vox_fem/above.ogg
rename to sound/announcer/vox_fem/above.ogg
diff --git a/sound/vox_fem/absorb.ogg b/sound/announcer/vox_fem/absorb.ogg
similarity index 100%
rename from sound/vox_fem/absorb.ogg
rename to sound/announcer/vox_fem/absorb.ogg
diff --git a/sound/vox_fem/absorbed.ogg b/sound/announcer/vox_fem/absorbed.ogg
similarity index 100%
rename from sound/vox_fem/absorbed.ogg
rename to sound/announcer/vox_fem/absorbed.ogg
diff --git a/sound/vox_fem/absorbing.ogg b/sound/announcer/vox_fem/absorbing.ogg
similarity index 100%
rename from sound/vox_fem/absorbing.ogg
rename to sound/announcer/vox_fem/absorbing.ogg
diff --git a/sound/vox_fem/abstain.ogg b/sound/announcer/vox_fem/abstain.ogg
similarity index 100%
rename from sound/vox_fem/abstain.ogg
rename to sound/announcer/vox_fem/abstain.ogg
diff --git a/sound/vox_fem/accelerating.ogg b/sound/announcer/vox_fem/accelerating.ogg
similarity index 100%
rename from sound/vox_fem/accelerating.ogg
rename to sound/announcer/vox_fem/accelerating.ogg
diff --git a/sound/vox_fem/accelerator.ogg b/sound/announcer/vox_fem/accelerator.ogg
similarity index 100%
rename from sound/vox_fem/accelerator.ogg
rename to sound/announcer/vox_fem/accelerator.ogg
diff --git a/sound/vox_fem/accepted.ogg b/sound/announcer/vox_fem/accepted.ogg
similarity index 100%
rename from sound/vox_fem/accepted.ogg
rename to sound/announcer/vox_fem/accepted.ogg
diff --git a/sound/vox_fem/access.ogg b/sound/announcer/vox_fem/access.ogg
similarity index 100%
rename from sound/vox_fem/access.ogg
rename to sound/announcer/vox_fem/access.ogg
diff --git a/sound/vox_fem/acknowledge.ogg b/sound/announcer/vox_fem/acknowledge.ogg
similarity index 100%
rename from sound/vox_fem/acknowledge.ogg
rename to sound/announcer/vox_fem/acknowledge.ogg
diff --git a/sound/vox_fem/acknowledged.ogg b/sound/announcer/vox_fem/acknowledged.ogg
similarity index 100%
rename from sound/vox_fem/acknowledged.ogg
rename to sound/announcer/vox_fem/acknowledged.ogg
diff --git a/sound/vox_fem/acquired.ogg b/sound/announcer/vox_fem/acquired.ogg
similarity index 100%
rename from sound/vox_fem/acquired.ogg
rename to sound/announcer/vox_fem/acquired.ogg
diff --git a/sound/vox_fem/acquisition.ogg b/sound/announcer/vox_fem/acquisition.ogg
similarity index 100%
rename from sound/vox_fem/acquisition.ogg
rename to sound/announcer/vox_fem/acquisition.ogg
diff --git a/sound/vox_fem/across.ogg b/sound/announcer/vox_fem/across.ogg
similarity index 100%
rename from sound/vox_fem/across.ogg
rename to sound/announcer/vox_fem/across.ogg
diff --git a/sound/vox_fem/activate.ogg b/sound/announcer/vox_fem/activate.ogg
similarity index 100%
rename from sound/vox_fem/activate.ogg
rename to sound/announcer/vox_fem/activate.ogg
diff --git a/sound/vox_fem/activated.ogg b/sound/announcer/vox_fem/activated.ogg
similarity index 100%
rename from sound/vox_fem/activated.ogg
rename to sound/announcer/vox_fem/activated.ogg
diff --git a/sound/vox_fem/activating.ogg b/sound/announcer/vox_fem/activating.ogg
similarity index 100%
rename from sound/vox_fem/activating.ogg
rename to sound/announcer/vox_fem/activating.ogg
diff --git a/sound/vox_fem/activation.ogg b/sound/announcer/vox_fem/activation.ogg
similarity index 100%
rename from sound/vox_fem/activation.ogg
rename to sound/announcer/vox_fem/activation.ogg
diff --git a/sound/vox_fem/active.ogg b/sound/announcer/vox_fem/active.ogg
similarity index 100%
rename from sound/vox_fem/active.ogg
rename to sound/announcer/vox_fem/active.ogg
diff --git a/sound/vox_fem/activity.ogg b/sound/announcer/vox_fem/activity.ogg
similarity index 100%
rename from sound/vox_fem/activity.ogg
rename to sound/announcer/vox_fem/activity.ogg
diff --git a/sound/vox_fem/adios.ogg b/sound/announcer/vox_fem/adios.ogg
similarity index 100%
rename from sound/vox_fem/adios.ogg
rename to sound/announcer/vox_fem/adios.ogg
diff --git a/sound/vox_fem/administration.ogg b/sound/announcer/vox_fem/administration.ogg
similarity index 100%
rename from sound/vox_fem/administration.ogg
rename to sound/announcer/vox_fem/administration.ogg
diff --git a/sound/vox_fem/advanced.ogg b/sound/announcer/vox_fem/advanced.ogg
similarity index 100%
rename from sound/vox_fem/advanced.ogg
rename to sound/announcer/vox_fem/advanced.ogg
diff --git a/sound/vox_fem/advised.ogg b/sound/announcer/vox_fem/advised.ogg
similarity index 100%
rename from sound/vox_fem/advised.ogg
rename to sound/announcer/vox_fem/advised.ogg
diff --git a/sound/vox_fem/affect.ogg b/sound/announcer/vox_fem/affect.ogg
similarity index 100%
rename from sound/vox_fem/affect.ogg
rename to sound/announcer/vox_fem/affect.ogg
diff --git a/sound/vox_fem/affected.ogg b/sound/announcer/vox_fem/affected.ogg
similarity index 100%
rename from sound/vox_fem/affected.ogg
rename to sound/announcer/vox_fem/affected.ogg
diff --git a/sound/vox_fem/affecting.ogg b/sound/announcer/vox_fem/affecting.ogg
similarity index 100%
rename from sound/vox_fem/affecting.ogg
rename to sound/announcer/vox_fem/affecting.ogg
diff --git a/sound/vox_fem/aft.ogg b/sound/announcer/vox_fem/aft.ogg
similarity index 100%
rename from sound/vox_fem/aft.ogg
rename to sound/announcer/vox_fem/aft.ogg
diff --git a/sound/vox_fem/after.ogg b/sound/announcer/vox_fem/after.ogg
similarity index 100%
rename from sound/vox_fem/after.ogg
rename to sound/announcer/vox_fem/after.ogg
diff --git a/sound/vox_fem/agent.ogg b/sound/announcer/vox_fem/agent.ogg
similarity index 100%
rename from sound/vox_fem/agent.ogg
rename to sound/announcer/vox_fem/agent.ogg
diff --git a/sound/vox_fem/ai.ogg b/sound/announcer/vox_fem/ai.ogg
similarity index 100%
rename from sound/vox_fem/ai.ogg
rename to sound/announcer/vox_fem/ai.ogg
diff --git a/sound/vox_fem/air.ogg b/sound/announcer/vox_fem/air.ogg
similarity index 100%
rename from sound/vox_fem/air.ogg
rename to sound/announcer/vox_fem/air.ogg
diff --git a/sound/vox_fem/airlock.ogg b/sound/announcer/vox_fem/airlock.ogg
similarity index 100%
rename from sound/vox_fem/airlock.ogg
rename to sound/announcer/vox_fem/airlock.ogg
diff --git a/sound/vox_fem/alarm.ogg b/sound/announcer/vox_fem/alarm.ogg
similarity index 100%
rename from sound/vox_fem/alarm.ogg
rename to sound/announcer/vox_fem/alarm.ogg
diff --git a/sound/vox_fem/alarmed.ogg b/sound/announcer/vox_fem/alarmed.ogg
similarity index 100%
rename from sound/vox_fem/alarmed.ogg
rename to sound/announcer/vox_fem/alarmed.ogg
diff --git a/sound/vox_fem/alarming.ogg b/sound/announcer/vox_fem/alarming.ogg
similarity index 100%
rename from sound/vox_fem/alarming.ogg
rename to sound/announcer/vox_fem/alarming.ogg
diff --git a/sound/vox_fem/alcohol.ogg b/sound/announcer/vox_fem/alcohol.ogg
similarity index 100%
rename from sound/vox_fem/alcohol.ogg
rename to sound/announcer/vox_fem/alcohol.ogg
diff --git a/sound/vox_fem/alert.ogg b/sound/announcer/vox_fem/alert.ogg
similarity index 100%
rename from sound/vox_fem/alert.ogg
rename to sound/announcer/vox_fem/alert.ogg
diff --git a/sound/vox_fem/alerted.ogg b/sound/announcer/vox_fem/alerted.ogg
similarity index 100%
rename from sound/vox_fem/alerted.ogg
rename to sound/announcer/vox_fem/alerted.ogg
diff --git a/sound/vox_fem/alerting.ogg b/sound/announcer/vox_fem/alerting.ogg
similarity index 100%
rename from sound/vox_fem/alerting.ogg
rename to sound/announcer/vox_fem/alerting.ogg
diff --git a/sound/vox_fem/alien.ogg b/sound/announcer/vox_fem/alien.ogg
similarity index 100%
rename from sound/vox_fem/alien.ogg
rename to sound/announcer/vox_fem/alien.ogg
diff --git a/sound/vox_fem/align.ogg b/sound/announcer/vox_fem/align.ogg
similarity index 100%
rename from sound/vox_fem/align.ogg
rename to sound/announcer/vox_fem/align.ogg
diff --git a/sound/vox_fem/aligned.ogg b/sound/announcer/vox_fem/aligned.ogg
similarity index 100%
rename from sound/vox_fem/aligned.ogg
rename to sound/announcer/vox_fem/aligned.ogg
diff --git a/sound/vox_fem/all.ogg b/sound/announcer/vox_fem/all.ogg
similarity index 100%
rename from sound/vox_fem/all.ogg
rename to sound/announcer/vox_fem/all.ogg
diff --git a/sound/vox_fem/allow.ogg b/sound/announcer/vox_fem/allow.ogg
similarity index 100%
rename from sound/vox_fem/allow.ogg
rename to sound/announcer/vox_fem/allow.ogg
diff --git a/sound/vox_fem/alongside.ogg b/sound/announcer/vox_fem/alongside.ogg
similarity index 100%
rename from sound/vox_fem/alongside.ogg
rename to sound/announcer/vox_fem/alongside.ogg
diff --git a/sound/vox_fem/alpha.ogg b/sound/announcer/vox_fem/alpha.ogg
similarity index 100%
rename from sound/vox_fem/alpha.ogg
rename to sound/announcer/vox_fem/alpha.ogg
diff --git a/sound/vox_fem/also.ogg b/sound/announcer/vox_fem/also.ogg
similarity index 100%
rename from sound/vox_fem/also.ogg
rename to sound/announcer/vox_fem/also.ogg
diff --git a/sound/vox_fem/am.ogg b/sound/announcer/vox_fem/am.ogg
similarity index 100%
rename from sound/vox_fem/am.ogg
rename to sound/announcer/vox_fem/am.ogg
diff --git a/sound/vox_fem/amigo.ogg b/sound/announcer/vox_fem/amigo.ogg
similarity index 100%
rename from sound/vox_fem/amigo.ogg
rename to sound/announcer/vox_fem/amigo.ogg
diff --git a/sound/vox_fem/ammunition.ogg b/sound/announcer/vox_fem/ammunition.ogg
similarity index 100%
rename from sound/vox_fem/ammunition.ogg
rename to sound/announcer/vox_fem/ammunition.ogg
diff --git a/sound/vox_fem/amount.ogg b/sound/announcer/vox_fem/amount.ogg
similarity index 100%
rename from sound/vox_fem/amount.ogg
rename to sound/announcer/vox_fem/amount.ogg
diff --git a/sound/vox_fem/an.ogg b/sound/announcer/vox_fem/an.ogg
similarity index 100%
rename from sound/vox_fem/an.ogg
rename to sound/announcer/vox_fem/an.ogg
diff --git a/sound/vox_fem/and.ogg b/sound/announcer/vox_fem/and.ogg
similarity index 100%
rename from sound/vox_fem/and.ogg
rename to sound/announcer/vox_fem/and.ogg
diff --git a/sound/vox_fem/animal.ogg b/sound/announcer/vox_fem/animal.ogg
similarity index 100%
rename from sound/vox_fem/animal.ogg
rename to sound/announcer/vox_fem/animal.ogg
diff --git a/sound/vox_fem/annihilate.ogg b/sound/announcer/vox_fem/annihilate.ogg
similarity index 100%
rename from sound/vox_fem/annihilate.ogg
rename to sound/announcer/vox_fem/annihilate.ogg
diff --git a/sound/vox_fem/annihilated.ogg b/sound/announcer/vox_fem/annihilated.ogg
similarity index 100%
rename from sound/vox_fem/annihilated.ogg
rename to sound/announcer/vox_fem/annihilated.ogg
diff --git a/sound/vox_fem/annihilating.ogg b/sound/announcer/vox_fem/annihilating.ogg
similarity index 100%
rename from sound/vox_fem/annihilating.ogg
rename to sound/announcer/vox_fem/annihilating.ogg
diff --git a/sound/vox_fem/annihilation.ogg b/sound/announcer/vox_fem/annihilation.ogg
similarity index 100%
rename from sound/vox_fem/annihilation.ogg
rename to sound/announcer/vox_fem/annihilation.ogg
diff --git a/sound/vox_fem/announcement.ogg b/sound/announcer/vox_fem/announcement.ogg
similarity index 100%
rename from sound/vox_fem/announcement.ogg
rename to sound/announcer/vox_fem/announcement.ogg
diff --git a/sound/vox_fem/anomalous.ogg b/sound/announcer/vox_fem/anomalous.ogg
similarity index 100%
rename from sound/vox_fem/anomalous.ogg
rename to sound/announcer/vox_fem/anomalous.ogg
diff --git a/sound/vox_fem/answer.ogg b/sound/announcer/vox_fem/answer.ogg
similarity index 100%
rename from sound/vox_fem/answer.ogg
rename to sound/announcer/vox_fem/answer.ogg
diff --git a/sound/vox_fem/antenna.ogg b/sound/announcer/vox_fem/antenna.ogg
similarity index 100%
rename from sound/vox_fem/antenna.ogg
rename to sound/announcer/vox_fem/antenna.ogg
diff --git a/sound/vox_fem/anti-noblium.ogg b/sound/announcer/vox_fem/anti-noblium.ogg
similarity index 100%
rename from sound/vox_fem/anti-noblium.ogg
rename to sound/announcer/vox_fem/anti-noblium.ogg
diff --git a/sound/vox_fem/any.ogg b/sound/announcer/vox_fem/any.ogg
similarity index 100%
rename from sound/vox_fem/any.ogg
rename to sound/announcer/vox_fem/any.ogg
diff --git a/sound/vox_fem/apc.ogg b/sound/announcer/vox_fem/apc.ogg
similarity index 100%
rename from sound/vox_fem/apc.ogg
rename to sound/announcer/vox_fem/apc.ogg
diff --git a/sound/vox_fem/apprehend.ogg b/sound/announcer/vox_fem/apprehend.ogg
similarity index 100%
rename from sound/vox_fem/apprehend.ogg
rename to sound/announcer/vox_fem/apprehend.ogg
diff --git a/sound/vox_fem/approach.ogg b/sound/announcer/vox_fem/approach.ogg
similarity index 100%
rename from sound/vox_fem/approach.ogg
rename to sound/announcer/vox_fem/approach.ogg
diff --git a/sound/vox_fem/arc.ogg b/sound/announcer/vox_fem/arc.ogg
similarity index 100%
rename from sound/vox_fem/arc.ogg
rename to sound/announcer/vox_fem/arc.ogg
diff --git a/sound/vox_fem/arcs.ogg b/sound/announcer/vox_fem/arcs.ogg
similarity index 100%
rename from sound/vox_fem/arcs.ogg
rename to sound/announcer/vox_fem/arcs.ogg
diff --git a/sound/vox_fem/are.ogg b/sound/announcer/vox_fem/are.ogg
similarity index 100%
rename from sound/vox_fem/are.ogg
rename to sound/announcer/vox_fem/are.ogg
diff --git a/sound/vox_fem/area.ogg b/sound/announcer/vox_fem/area.ogg
similarity index 100%
rename from sound/vox_fem/area.ogg
rename to sound/announcer/vox_fem/area.ogg
diff --git a/sound/vox_fem/arm.ogg b/sound/announcer/vox_fem/arm.ogg
similarity index 100%
rename from sound/vox_fem/arm.ogg
rename to sound/announcer/vox_fem/arm.ogg
diff --git a/sound/vox_fem/armed.ogg b/sound/announcer/vox_fem/armed.ogg
similarity index 100%
rename from sound/vox_fem/armed.ogg
rename to sound/announcer/vox_fem/armed.ogg
diff --git a/sound/vox_fem/armor.ogg b/sound/announcer/vox_fem/armor.ogg
similarity index 100%
rename from sound/vox_fem/armor.ogg
rename to sound/announcer/vox_fem/armor.ogg
diff --git a/sound/vox_fem/armory.ogg b/sound/announcer/vox_fem/armory.ogg
similarity index 100%
rename from sound/vox_fem/armory.ogg
rename to sound/announcer/vox_fem/armory.ogg
diff --git a/sound/vox_fem/around.ogg b/sound/announcer/vox_fem/around.ogg
similarity index 100%
rename from sound/vox_fem/around.ogg
rename to sound/announcer/vox_fem/around.ogg
diff --git a/sound/vox_fem/array.ogg b/sound/announcer/vox_fem/array.ogg
similarity index 100%
rename from sound/vox_fem/array.ogg
rename to sound/announcer/vox_fem/array.ogg
diff --git a/sound/vox_fem/arrest.ogg b/sound/announcer/vox_fem/arrest.ogg
similarity index 100%
rename from sound/vox_fem/arrest.ogg
rename to sound/announcer/vox_fem/arrest.ogg
diff --git a/sound/vox_fem/artillery.ogg b/sound/announcer/vox_fem/artillery.ogg
similarity index 100%
rename from sound/vox_fem/artillery.ogg
rename to sound/announcer/vox_fem/artillery.ogg
diff --git a/sound/vox_fem/asimov.ogg b/sound/announcer/vox_fem/asimov.ogg
similarity index 100%
rename from sound/vox_fem/asimov.ogg
rename to sound/announcer/vox_fem/asimov.ogg
diff --git a/sound/vox_fem/ask.ogg b/sound/announcer/vox_fem/ask.ogg
similarity index 100%
rename from sound/vox_fem/ask.ogg
rename to sound/announcer/vox_fem/ask.ogg
diff --git a/sound/vox_fem/ass.ogg b/sound/announcer/vox_fem/ass.ogg
similarity index 100%
rename from sound/vox_fem/ass.ogg
rename to sound/announcer/vox_fem/ass.ogg
diff --git a/sound/vox_fem/asshole.ogg b/sound/announcer/vox_fem/asshole.ogg
similarity index 100%
rename from sound/vox_fem/asshole.ogg
rename to sound/announcer/vox_fem/asshole.ogg
diff --git a/sound/vox_fem/assholes.ogg b/sound/announcer/vox_fem/assholes.ogg
similarity index 100%
rename from sound/vox_fem/assholes.ogg
rename to sound/announcer/vox_fem/assholes.ogg
diff --git a/sound/vox_fem/assistance.ogg b/sound/announcer/vox_fem/assistance.ogg
similarity index 100%
rename from sound/vox_fem/assistance.ogg
rename to sound/announcer/vox_fem/assistance.ogg
diff --git a/sound/vox_fem/assistant.ogg b/sound/announcer/vox_fem/assistant.ogg
similarity index 100%
rename from sound/vox_fem/assistant.ogg
rename to sound/announcer/vox_fem/assistant.ogg
diff --git a/sound/vox_fem/at.ogg b/sound/announcer/vox_fem/at.ogg
similarity index 100%
rename from sound/vox_fem/at.ogg
rename to sound/announcer/vox_fem/at.ogg
diff --git a/sound/vox_fem/ate.ogg b/sound/announcer/vox_fem/ate.ogg
similarity index 100%
rename from sound/vox_fem/ate.ogg
rename to sound/announcer/vox_fem/ate.ogg
diff --git a/sound/vox_fem/atmosphere.ogg b/sound/announcer/vox_fem/atmosphere.ogg
similarity index 100%
rename from sound/vox_fem/atmosphere.ogg
rename to sound/announcer/vox_fem/atmosphere.ogg
diff --git a/sound/vox_fem/atmospheric.ogg b/sound/announcer/vox_fem/atmospheric.ogg
similarity index 100%
rename from sound/vox_fem/atmospheric.ogg
rename to sound/announcer/vox_fem/atmospheric.ogg
diff --git a/sound/vox_fem/atmospherics.ogg b/sound/announcer/vox_fem/atmospherics.ogg
similarity index 100%
rename from sound/vox_fem/atmospherics.ogg
rename to sound/announcer/vox_fem/atmospherics.ogg
diff --git a/sound/vox_fem/atomic.ogg b/sound/announcer/vox_fem/atomic.ogg
similarity index 100%
rename from sound/vox_fem/atomic.ogg
rename to sound/announcer/vox_fem/atomic.ogg
diff --git a/sound/vox_fem/attention.ogg b/sound/announcer/vox_fem/attention.ogg
similarity index 100%
rename from sound/vox_fem/attention.ogg
rename to sound/announcer/vox_fem/attention.ogg
diff --git a/sound/vox_fem/authentication.ogg b/sound/announcer/vox_fem/authentication.ogg
similarity index 100%
rename from sound/vox_fem/authentication.ogg
rename to sound/announcer/vox_fem/authentication.ogg
diff --git a/sound/vox_fem/authorize.ogg b/sound/announcer/vox_fem/authorize.ogg
similarity index 100%
rename from sound/vox_fem/authorize.ogg
rename to sound/announcer/vox_fem/authorize.ogg
diff --git a/sound/vox_fem/authorized.ogg b/sound/announcer/vox_fem/authorized.ogg
similarity index 100%
rename from sound/vox_fem/authorized.ogg
rename to sound/announcer/vox_fem/authorized.ogg
diff --git a/sound/vox_fem/automatic.ogg b/sound/announcer/vox_fem/automatic.ogg
similarity index 100%
rename from sound/vox_fem/automatic.ogg
rename to sound/announcer/vox_fem/automatic.ogg
diff --git a/sound/vox_fem/away.ogg b/sound/announcer/vox_fem/away.ogg
similarity index 100%
rename from sound/vox_fem/away.ogg
rename to sound/announcer/vox_fem/away.ogg
diff --git a/sound/vox_fem/awful.ogg b/sound/announcer/vox_fem/awful.ogg
similarity index 100%
rename from sound/vox_fem/awful.ogg
rename to sound/announcer/vox_fem/awful.ogg
diff --git a/sound/vox_fem/b.ogg b/sound/announcer/vox_fem/b.ogg
similarity index 100%
rename from sound/vox_fem/b.ogg
rename to sound/announcer/vox_fem/b.ogg
diff --git a/sound/vox_fem/back.ogg b/sound/announcer/vox_fem/back.ogg
similarity index 100%
rename from sound/vox_fem/back.ogg
rename to sound/announcer/vox_fem/back.ogg
diff --git a/sound/vox_fem/backman.ogg b/sound/announcer/vox_fem/backman.ogg
similarity index 100%
rename from sound/vox_fem/backman.ogg
rename to sound/announcer/vox_fem/backman.ogg
diff --git a/sound/vox_fem/bad.ogg b/sound/announcer/vox_fem/bad.ogg
similarity index 100%
rename from sound/vox_fem/bad.ogg
rename to sound/announcer/vox_fem/bad.ogg
diff --git a/sound/vox_fem/bag.ogg b/sound/announcer/vox_fem/bag.ogg
similarity index 100%
rename from sound/vox_fem/bag.ogg
rename to sound/announcer/vox_fem/bag.ogg
diff --git a/sound/vox_fem/bailey.ogg b/sound/announcer/vox_fem/bailey.ogg
similarity index 100%
rename from sound/vox_fem/bailey.ogg
rename to sound/announcer/vox_fem/bailey.ogg
diff --git a/sound/vox_fem/bar.ogg b/sound/announcer/vox_fem/bar.ogg
similarity index 100%
rename from sound/vox_fem/bar.ogg
rename to sound/announcer/vox_fem/bar.ogg
diff --git a/sound/vox_fem/barracks.ogg b/sound/announcer/vox_fem/barracks.ogg
similarity index 100%
rename from sound/vox_fem/barracks.ogg
rename to sound/announcer/vox_fem/barracks.ogg
diff --git a/sound/vox_fem/bartender.ogg b/sound/announcer/vox_fem/bartender.ogg
similarity index 100%
rename from sound/vox_fem/bartender.ogg
rename to sound/announcer/vox_fem/bartender.ogg
diff --git a/sound/vox_fem/base.ogg b/sound/announcer/vox_fem/base.ogg
similarity index 100%
rename from sound/vox_fem/base.ogg
rename to sound/announcer/vox_fem/base.ogg
diff --git a/sound/vox_fem/bay.ogg b/sound/announcer/vox_fem/bay.ogg
similarity index 100%
rename from sound/vox_fem/bay.ogg
rename to sound/announcer/vox_fem/bay.ogg
diff --git a/sound/vox_fem/be.ogg b/sound/announcer/vox_fem/be.ogg
similarity index 100%
rename from sound/vox_fem/be.ogg
rename to sound/announcer/vox_fem/be.ogg
diff --git a/sound/vox_fem/beaker.ogg b/sound/announcer/vox_fem/beaker.ogg
similarity index 100%
rename from sound/vox_fem/beaker.ogg
rename to sound/announcer/vox_fem/beaker.ogg
diff --git a/sound/vox_fem/beam.ogg b/sound/announcer/vox_fem/beam.ogg
similarity index 100%
rename from sound/vox_fem/beam.ogg
rename to sound/announcer/vox_fem/beam.ogg
diff --git a/sound/vox_fem/been.ogg b/sound/announcer/vox_fem/been.ogg
similarity index 100%
rename from sound/vox_fem/been.ogg
rename to sound/announcer/vox_fem/been.ogg
diff --git a/sound/vox_fem/beep.ogg b/sound/announcer/vox_fem/beep.ogg
similarity index 100%
rename from sound/vox_fem/beep.ogg
rename to sound/announcer/vox_fem/beep.ogg
diff --git a/sound/vox_fem/before.ogg b/sound/announcer/vox_fem/before.ogg
similarity index 100%
rename from sound/vox_fem/before.ogg
rename to sound/announcer/vox_fem/before.ogg
diff --git a/sound/vox_fem/began.ogg b/sound/announcer/vox_fem/began.ogg
similarity index 100%
rename from sound/vox_fem/began.ogg
rename to sound/announcer/vox_fem/began.ogg
diff --git a/sound/vox_fem/begin.ogg b/sound/announcer/vox_fem/begin.ogg
similarity index 100%
rename from sound/vox_fem/begin.ogg
rename to sound/announcer/vox_fem/begin.ogg
diff --git a/sound/vox_fem/begins.ogg b/sound/announcer/vox_fem/begins.ogg
similarity index 100%
rename from sound/vox_fem/begins.ogg
rename to sound/announcer/vox_fem/begins.ogg
diff --git a/sound/vox_fem/below.ogg b/sound/announcer/vox_fem/below.ogg
similarity index 100%
rename from sound/vox_fem/below.ogg
rename to sound/announcer/vox_fem/below.ogg
diff --git a/sound/vox_fem/beside.ogg b/sound/announcer/vox_fem/beside.ogg
similarity index 100%
rename from sound/vox_fem/beside.ogg
rename to sound/announcer/vox_fem/beside.ogg
diff --git a/sound/vox_fem/beware.ogg b/sound/announcer/vox_fem/beware.ogg
similarity index 100%
rename from sound/vox_fem/beware.ogg
rename to sound/announcer/vox_fem/beware.ogg
diff --git a/sound/vox_fem/beyond.ogg b/sound/announcer/vox_fem/beyond.ogg
similarity index 100%
rename from sound/vox_fem/beyond.ogg
rename to sound/announcer/vox_fem/beyond.ogg
diff --git a/sound/vox_fem/big.ogg b/sound/announcer/vox_fem/big.ogg
similarity index 100%
rename from sound/vox_fem/big.ogg
rename to sound/announcer/vox_fem/big.ogg
diff --git a/sound/vox_fem/billion.ogg b/sound/announcer/vox_fem/billion.ogg
similarity index 100%
rename from sound/vox_fem/billion.ogg
rename to sound/announcer/vox_fem/billion.ogg
diff --git a/sound/vox_fem/biohazard.ogg b/sound/announcer/vox_fem/biohazard.ogg
similarity index 100%
rename from sound/vox_fem/biohazard.ogg
rename to sound/announcer/vox_fem/biohazard.ogg
diff --git a/sound/vox_fem/biological.ogg b/sound/announcer/vox_fem/biological.ogg
similarity index 100%
rename from sound/vox_fem/biological.ogg
rename to sound/announcer/vox_fem/biological.ogg
diff --git a/sound/vox_fem/birdwell.ogg b/sound/announcer/vox_fem/birdwell.ogg
similarity index 100%
rename from sound/vox_fem/birdwell.ogg
rename to sound/announcer/vox_fem/birdwell.ogg
diff --git a/sound/vox_fem/bitch.ogg b/sound/announcer/vox_fem/bitch.ogg
similarity index 100%
rename from sound/vox_fem/bitch.ogg
rename to sound/announcer/vox_fem/bitch.ogg
diff --git a/sound/vox_fem/bitches.ogg b/sound/announcer/vox_fem/bitches.ogg
similarity index 100%
rename from sound/vox_fem/bitches.ogg
rename to sound/announcer/vox_fem/bitches.ogg
diff --git a/sound/vox_fem/bitcoin.ogg b/sound/announcer/vox_fem/bitcoin.ogg
similarity index 100%
rename from sound/vox_fem/bitcoin.ogg
rename to sound/announcer/vox_fem/bitcoin.ogg
diff --git a/sound/vox_fem/bitrun.ogg b/sound/announcer/vox_fem/bitrun.ogg
similarity index 100%
rename from sound/vox_fem/bitrun.ogg
rename to sound/announcer/vox_fem/bitrun.ogg
diff --git a/sound/vox_fem/bitrunner.ogg b/sound/announcer/vox_fem/bitrunner.ogg
similarity index 100%
rename from sound/vox_fem/bitrunner.ogg
rename to sound/announcer/vox_fem/bitrunner.ogg
diff --git a/sound/vox_fem/bitrunning.ogg b/sound/announcer/vox_fem/bitrunning.ogg
similarity index 100%
rename from sound/vox_fem/bitrunning.ogg
rename to sound/announcer/vox_fem/bitrunning.ogg
diff --git a/sound/vox_fem/black.ogg b/sound/announcer/vox_fem/black.ogg
similarity index 100%
rename from sound/vox_fem/black.ogg
rename to sound/announcer/vox_fem/black.ogg
diff --git a/sound/vox_fem/blast.ogg b/sound/announcer/vox_fem/blast.ogg
similarity index 100%
rename from sound/vox_fem/blast.ogg
rename to sound/announcer/vox_fem/blast.ogg
diff --git a/sound/vox_fem/bleed.ogg b/sound/announcer/vox_fem/bleed.ogg
similarity index 100%
rename from sound/vox_fem/bleed.ogg
rename to sound/announcer/vox_fem/bleed.ogg
diff --git a/sound/vox_fem/blob.ogg b/sound/announcer/vox_fem/blob.ogg
similarity index 100%
rename from sound/vox_fem/blob.ogg
rename to sound/announcer/vox_fem/blob.ogg
diff --git a/sound/vox_fem/blocked.ogg b/sound/announcer/vox_fem/blocked.ogg
similarity index 100%
rename from sound/vox_fem/blocked.ogg
rename to sound/announcer/vox_fem/blocked.ogg
diff --git a/sound/vox_fem/blood.ogg b/sound/announcer/vox_fem/blood.ogg
similarity index 100%
rename from sound/vox_fem/blood.ogg
rename to sound/announcer/vox_fem/blood.ogg
diff --git a/sound/vox_fem/bloop.ogg b/sound/announcer/vox_fem/bloop.ogg
similarity index 100%
rename from sound/vox_fem/bloop.ogg
rename to sound/announcer/vox_fem/bloop.ogg
diff --git a/sound/vox_fem/blue.ogg b/sound/announcer/vox_fem/blue.ogg
similarity index 100%
rename from sound/vox_fem/blue.ogg
rename to sound/announcer/vox_fem/blue.ogg
diff --git a/sound/vox_fem/bluespace.ogg b/sound/announcer/vox_fem/bluespace.ogg
similarity index 100%
rename from sound/vox_fem/bluespace.ogg
rename to sound/announcer/vox_fem/bluespace.ogg
diff --git a/sound/vox_fem/bomb.ogg b/sound/announcer/vox_fem/bomb.ogg
similarity index 100%
rename from sound/vox_fem/bomb.ogg
rename to sound/announcer/vox_fem/bomb.ogg
diff --git a/sound/vox_fem/bone.ogg b/sound/announcer/vox_fem/bone.ogg
similarity index 100%
rename from sound/vox_fem/bone.ogg
rename to sound/announcer/vox_fem/bone.ogg
diff --git a/sound/vox_fem/botanist.ogg b/sound/announcer/vox_fem/botanist.ogg
similarity index 100%
rename from sound/vox_fem/botanist.ogg
rename to sound/announcer/vox_fem/botanist.ogg
diff --git a/sound/vox_fem/botany.ogg b/sound/announcer/vox_fem/botany.ogg
similarity index 100%
rename from sound/vox_fem/botany.ogg
rename to sound/announcer/vox_fem/botany.ogg
diff --git a/sound/vox_fem/bottle.ogg b/sound/announcer/vox_fem/bottle.ogg
similarity index 100%
rename from sound/vox_fem/bottle.ogg
rename to sound/announcer/vox_fem/bottle.ogg
diff --git a/sound/vox_fem/bottom.ogg b/sound/announcer/vox_fem/bottom.ogg
similarity index 100%
rename from sound/vox_fem/bottom.ogg
rename to sound/announcer/vox_fem/bottom.ogg
diff --git a/sound/vox_fem/bravo.ogg b/sound/announcer/vox_fem/bravo.ogg
similarity index 100%
rename from sound/vox_fem/bravo.ogg
rename to sound/announcer/vox_fem/bravo.ogg
diff --git a/sound/vox_fem/breach.ogg b/sound/announcer/vox_fem/breach.ogg
similarity index 100%
rename from sound/vox_fem/breach.ogg
rename to sound/announcer/vox_fem/breach.ogg
diff --git a/sound/vox_fem/breached.ogg b/sound/announcer/vox_fem/breached.ogg
similarity index 100%
rename from sound/vox_fem/breached.ogg
rename to sound/announcer/vox_fem/breached.ogg
diff --git a/sound/vox_fem/break.ogg b/sound/announcer/vox_fem/break.ogg
similarity index 100%
rename from sound/vox_fem/break.ogg
rename to sound/announcer/vox_fem/break.ogg
diff --git a/sound/vox_fem/bridge.ogg b/sound/announcer/vox_fem/bridge.ogg
similarity index 100%
rename from sound/vox_fem/bridge.ogg
rename to sound/announcer/vox_fem/bridge.ogg
diff --git a/sound/vox_fem/brig.ogg b/sound/announcer/vox_fem/brig.ogg
similarity index 100%
rename from sound/vox_fem/brig.ogg
rename to sound/announcer/vox_fem/brig.ogg
diff --git a/sound/vox_fem/broke.ogg b/sound/announcer/vox_fem/broke.ogg
similarity index 100%
rename from sound/vox_fem/broke.ogg
rename to sound/announcer/vox_fem/broke.ogg
diff --git a/sound/vox_fem/broken.ogg b/sound/announcer/vox_fem/broken.ogg
similarity index 100%
rename from sound/vox_fem/broken.ogg
rename to sound/announcer/vox_fem/broken.ogg
diff --git a/sound/vox_fem/bump.ogg b/sound/announcer/vox_fem/bump.ogg
similarity index 100%
rename from sound/vox_fem/bump.ogg
rename to sound/announcer/vox_fem/bump.ogg
diff --git a/sound/vox_fem/bumped.ogg b/sound/announcer/vox_fem/bumped.ogg
similarity index 100%
rename from sound/vox_fem/bumped.ogg
rename to sound/announcer/vox_fem/bumped.ogg
diff --git a/sound/vox_fem/bumps.ogg b/sound/announcer/vox_fem/bumps.ogg
similarity index 100%
rename from sound/vox_fem/bumps.ogg
rename to sound/announcer/vox_fem/bumps.ogg
diff --git a/sound/vox_fem/bust.ogg b/sound/announcer/vox_fem/bust.ogg
similarity index 100%
rename from sound/vox_fem/bust.ogg
rename to sound/announcer/vox_fem/bust.ogg
diff --git a/sound/vox_fem/but.ogg b/sound/announcer/vox_fem/but.ogg
similarity index 100%
rename from sound/vox_fem/but.ogg
rename to sound/announcer/vox_fem/but.ogg
diff --git a/sound/vox_fem/button.ogg b/sound/announcer/vox_fem/button.ogg
similarity index 100%
rename from sound/vox_fem/button.ogg
rename to sound/announcer/vox_fem/button.ogg
diff --git a/sound/vox_fem/bypass.ogg b/sound/announcer/vox_fem/bypass.ogg
similarity index 100%
rename from sound/vox_fem/bypass.ogg
rename to sound/announcer/vox_fem/bypass.ogg
diff --git a/sound/vox_fem/c.ogg b/sound/announcer/vox_fem/c.ogg
similarity index 100%
rename from sound/vox_fem/c.ogg
rename to sound/announcer/vox_fem/c.ogg
diff --git a/sound/vox_fem/cable.ogg b/sound/announcer/vox_fem/cable.ogg
similarity index 100%
rename from sound/vox_fem/cable.ogg
rename to sound/announcer/vox_fem/cable.ogg
diff --git a/sound/vox_fem/call.ogg b/sound/announcer/vox_fem/call.ogg
similarity index 100%
rename from sound/vox_fem/call.ogg
rename to sound/announcer/vox_fem/call.ogg
diff --git a/sound/vox_fem/called.ogg b/sound/announcer/vox_fem/called.ogg
similarity index 100%
rename from sound/vox_fem/called.ogg
rename to sound/announcer/vox_fem/called.ogg
diff --git a/sound/vox_fem/can.ogg b/sound/announcer/vox_fem/can.ogg
similarity index 100%
rename from sound/vox_fem/can.ogg
rename to sound/announcer/vox_fem/can.ogg
diff --git a/sound/vox_fem/canal.ogg b/sound/announcer/vox_fem/canal.ogg
similarity index 100%
rename from sound/vox_fem/canal.ogg
rename to sound/announcer/vox_fem/canal.ogg
diff --git a/sound/vox_fem/canister.ogg b/sound/announcer/vox_fem/canister.ogg
similarity index 100%
rename from sound/vox_fem/canister.ogg
rename to sound/announcer/vox_fem/canister.ogg
diff --git a/sound/vox_fem/cap.ogg b/sound/announcer/vox_fem/cap.ogg
similarity index 100%
rename from sound/vox_fem/cap.ogg
rename to sound/announcer/vox_fem/cap.ogg
diff --git a/sound/vox_fem/captain.ogg b/sound/announcer/vox_fem/captain.ogg
similarity index 100%
rename from sound/vox_fem/captain.ogg
rename to sound/announcer/vox_fem/captain.ogg
diff --git a/sound/vox_fem/capture.ogg b/sound/announcer/vox_fem/capture.ogg
similarity index 100%
rename from sound/vox_fem/capture.ogg
rename to sound/announcer/vox_fem/capture.ogg
diff --git a/sound/vox_fem/carbon.ogg b/sound/announcer/vox_fem/carbon.ogg
similarity index 100%
rename from sound/vox_fem/carbon.ogg
rename to sound/announcer/vox_fem/carbon.ogg
diff --git a/sound/vox_fem/cargo.ogg b/sound/announcer/vox_fem/cargo.ogg
similarity index 100%
rename from sound/vox_fem/cargo.ogg
rename to sound/announcer/vox_fem/cargo.ogg
diff --git a/sound/vox_fem/cascade.ogg b/sound/announcer/vox_fem/cascade.ogg
similarity index 100%
rename from sound/vox_fem/cascade.ogg
rename to sound/announcer/vox_fem/cascade.ogg
diff --git a/sound/vox_fem/cat.ogg b/sound/announcer/vox_fem/cat.ogg
similarity index 100%
rename from sound/vox_fem/cat.ogg
rename to sound/announcer/vox_fem/cat.ogg
diff --git a/sound/vox_fem/cause.ogg b/sound/announcer/vox_fem/cause.ogg
similarity index 100%
rename from sound/vox_fem/cause.ogg
rename to sound/announcer/vox_fem/cause.ogg
diff --git a/sound/vox_fem/caused.ogg b/sound/announcer/vox_fem/caused.ogg
similarity index 100%
rename from sound/vox_fem/caused.ogg
rename to sound/announcer/vox_fem/caused.ogg
diff --git a/sound/vox_fem/causes.ogg b/sound/announcer/vox_fem/causes.ogg
similarity index 100%
rename from sound/vox_fem/causes.ogg
rename to sound/announcer/vox_fem/causes.ogg
diff --git a/sound/vox_fem/causing.ogg b/sound/announcer/vox_fem/causing.ogg
similarity index 100%
rename from sound/vox_fem/causing.ogg
rename to sound/announcer/vox_fem/causing.ogg
diff --git a/sound/vox_fem/ce.ogg b/sound/announcer/vox_fem/ce.ogg
similarity index 100%
rename from sound/vox_fem/ce.ogg
rename to sound/announcer/vox_fem/ce.ogg
diff --git a/sound/vox_fem/cease.ogg b/sound/announcer/vox_fem/cease.ogg
similarity index 100%
rename from sound/vox_fem/cease.ogg
rename to sound/announcer/vox_fem/cease.ogg
diff --git a/sound/vox_fem/ceiling.ogg b/sound/announcer/vox_fem/ceiling.ogg
similarity index 100%
rename from sound/vox_fem/ceiling.ogg
rename to sound/announcer/vox_fem/ceiling.ogg
diff --git a/sound/vox_fem/celsius.ogg b/sound/announcer/vox_fem/celsius.ogg
similarity index 100%
rename from sound/vox_fem/celsius.ogg
rename to sound/announcer/vox_fem/celsius.ogg
diff --git a/sound/vox_fem/centcom.ogg b/sound/announcer/vox_fem/centcom.ogg
similarity index 100%
rename from sound/vox_fem/centcom.ogg
rename to sound/announcer/vox_fem/centcom.ogg
diff --git a/sound/vox_fem/center.ogg b/sound/announcer/vox_fem/center.ogg
similarity index 100%
rename from sound/vox_fem/center.ogg
rename to sound/announcer/vox_fem/center.ogg
diff --git a/sound/vox_fem/centi.ogg b/sound/announcer/vox_fem/centi.ogg
similarity index 100%
rename from sound/vox_fem/centi.ogg
rename to sound/announcer/vox_fem/centi.ogg
diff --git a/sound/vox_fem/central.ogg b/sound/announcer/vox_fem/central.ogg
similarity index 100%
rename from sound/vox_fem/central.ogg
rename to sound/announcer/vox_fem/central.ogg
diff --git a/sound/vox_fem/challenge.ogg b/sound/announcer/vox_fem/challenge.ogg
similarity index 100%
rename from sound/vox_fem/challenge.ogg
rename to sound/announcer/vox_fem/challenge.ogg
diff --git a/sound/vox_fem/chamber.ogg b/sound/announcer/vox_fem/chamber.ogg
similarity index 100%
rename from sound/vox_fem/chamber.ogg
rename to sound/announcer/vox_fem/chamber.ogg
diff --git a/sound/vox_fem/change.ogg b/sound/announcer/vox_fem/change.ogg
similarity index 100%
rename from sound/vox_fem/change.ogg
rename to sound/announcer/vox_fem/change.ogg
diff --git a/sound/vox_fem/changed.ogg b/sound/announcer/vox_fem/changed.ogg
similarity index 100%
rename from sound/vox_fem/changed.ogg
rename to sound/announcer/vox_fem/changed.ogg
diff --git a/sound/vox_fem/changeling.ogg b/sound/announcer/vox_fem/changeling.ogg
similarity index 100%
rename from sound/vox_fem/changeling.ogg
rename to sound/announcer/vox_fem/changeling.ogg
diff --git a/sound/vox_fem/chapel.ogg b/sound/announcer/vox_fem/chapel.ogg
similarity index 100%
rename from sound/vox_fem/chapel.ogg
rename to sound/announcer/vox_fem/chapel.ogg
diff --git a/sound/vox_fem/chaplain.ogg b/sound/announcer/vox_fem/chaplain.ogg
similarity index 100%
rename from sound/vox_fem/chaplain.ogg
rename to sound/announcer/vox_fem/chaplain.ogg
diff --git a/sound/vox_fem/charge.ogg b/sound/announcer/vox_fem/charge.ogg
similarity index 100%
rename from sound/vox_fem/charge.ogg
rename to sound/announcer/vox_fem/charge.ogg
diff --git a/sound/vox_fem/charlie.ogg b/sound/announcer/vox_fem/charlie.ogg
similarity index 100%
rename from sound/vox_fem/charlie.ogg
rename to sound/announcer/vox_fem/charlie.ogg
diff --git a/sound/vox_fem/check.ogg b/sound/announcer/vox_fem/check.ogg
similarity index 100%
rename from sound/vox_fem/check.ogg
rename to sound/announcer/vox_fem/check.ogg
diff --git a/sound/vox_fem/checkpoint.ogg b/sound/announcer/vox_fem/checkpoint.ogg
similarity index 100%
rename from sound/vox_fem/checkpoint.ogg
rename to sound/announcer/vox_fem/checkpoint.ogg
diff --git a/sound/vox_fem/chemical.ogg b/sound/announcer/vox_fem/chemical.ogg
similarity index 100%
rename from sound/vox_fem/chemical.ogg
rename to sound/announcer/vox_fem/chemical.ogg
diff --git a/sound/vox_fem/chemist.ogg b/sound/announcer/vox_fem/chemist.ogg
similarity index 100%
rename from sound/vox_fem/chemist.ogg
rename to sound/announcer/vox_fem/chemist.ogg
diff --git a/sound/vox_fem/chief.ogg b/sound/announcer/vox_fem/chief.ogg
similarity index 100%
rename from sound/vox_fem/chief.ogg
rename to sound/announcer/vox_fem/chief.ogg
diff --git a/sound/vox_fem/christ.ogg b/sound/announcer/vox_fem/christ.ogg
similarity index 100%
rename from sound/vox_fem/christ.ogg
rename to sound/announcer/vox_fem/christ.ogg
diff --git a/sound/vox_fem/christmas.ogg b/sound/announcer/vox_fem/christmas.ogg
similarity index 100%
rename from sound/vox_fem/christmas.ogg
rename to sound/announcer/vox_fem/christmas.ogg
diff --git a/sound/vox_fem/chuckle.ogg b/sound/announcer/vox_fem/chuckle.ogg
similarity index 100%
rename from sound/vox_fem/chuckle.ogg
rename to sound/announcer/vox_fem/chuckle.ogg
diff --git a/sound/vox_fem/circuit.ogg b/sound/announcer/vox_fem/circuit.ogg
similarity index 100%
rename from sound/vox_fem/circuit.ogg
rename to sound/announcer/vox_fem/circuit.ogg
diff --git a/sound/vox_fem/cleanup.ogg b/sound/announcer/vox_fem/cleanup.ogg
similarity index 100%
rename from sound/vox_fem/cleanup.ogg
rename to sound/announcer/vox_fem/cleanup.ogg
diff --git a/sound/vox_fem/clear.ogg b/sound/announcer/vox_fem/clear.ogg
similarity index 100%
rename from sound/vox_fem/clear.ogg
rename to sound/announcer/vox_fem/clear.ogg
diff --git a/sound/vox_fem/clearance.ogg b/sound/announcer/vox_fem/clearance.ogg
similarity index 100%
rename from sound/vox_fem/clearance.ogg
rename to sound/announcer/vox_fem/clearance.ogg
diff --git a/sound/vox_fem/clockwork.ogg b/sound/announcer/vox_fem/clockwork.ogg
similarity index 100%
rename from sound/vox_fem/clockwork.ogg
rename to sound/announcer/vox_fem/clockwork.ogg
diff --git a/sound/vox_fem/clog.ogg b/sound/announcer/vox_fem/clog.ogg
similarity index 100%
rename from sound/vox_fem/clog.ogg
rename to sound/announcer/vox_fem/clog.ogg
diff --git a/sound/vox_fem/close.ogg b/sound/announcer/vox_fem/close.ogg
similarity index 100%
rename from sound/vox_fem/close.ogg
rename to sound/announcer/vox_fem/close.ogg
diff --git a/sound/vox_fem/closed.ogg b/sound/announcer/vox_fem/closed.ogg
similarity index 100%
rename from sound/vox_fem/closed.ogg
rename to sound/announcer/vox_fem/closed.ogg
diff --git a/sound/vox_fem/closing.ogg b/sound/announcer/vox_fem/closing.ogg
similarity index 100%
rename from sound/vox_fem/closing.ogg
rename to sound/announcer/vox_fem/closing.ogg
diff --git a/sound/vox_fem/clothing.ogg b/sound/announcer/vox_fem/clothing.ogg
similarity index 100%
rename from sound/vox_fem/clothing.ogg
rename to sound/announcer/vox_fem/clothing.ogg
diff --git a/sound/vox_fem/clown.ogg b/sound/announcer/vox_fem/clown.ogg
similarity index 100%
rename from sound/vox_fem/clown.ogg
rename to sound/announcer/vox_fem/clown.ogg
diff --git a/sound/vox_fem/clowning.ogg b/sound/announcer/vox_fem/clowning.ogg
similarity index 100%
rename from sound/vox_fem/clowning.ogg
rename to sound/announcer/vox_fem/clowning.ogg
diff --git a/sound/vox_fem/cmo.ogg b/sound/announcer/vox_fem/cmo.ogg
similarity index 100%
rename from sound/vox_fem/cmo.ogg
rename to sound/announcer/vox_fem/cmo.ogg
diff --git a/sound/vox_fem/code.ogg b/sound/announcer/vox_fem/code.ogg
similarity index 100%
rename from sound/vox_fem/code.ogg
rename to sound/announcer/vox_fem/code.ogg
diff --git a/sound/vox_fem/coded.ogg b/sound/announcer/vox_fem/coded.ogg
similarity index 100%
rename from sound/vox_fem/coded.ogg
rename to sound/announcer/vox_fem/coded.ogg
diff --git a/sound/vox_fem/coil.ogg b/sound/announcer/vox_fem/coil.ogg
similarity index 100%
rename from sound/vox_fem/coil.ogg
rename to sound/announcer/vox_fem/coil.ogg
diff --git a/sound/vox_fem/coils.ogg b/sound/announcer/vox_fem/coils.ogg
similarity index 100%
rename from sound/vox_fem/coils.ogg
rename to sound/announcer/vox_fem/coils.ogg
diff --git a/sound/vox_fem/cold.ogg b/sound/announcer/vox_fem/cold.ogg
similarity index 100%
rename from sound/vox_fem/cold.ogg
rename to sound/announcer/vox_fem/cold.ogg
diff --git a/sound/vox_fem/collider.ogg b/sound/announcer/vox_fem/collider.ogg
similarity index 100%
rename from sound/vox_fem/collider.ogg
rename to sound/announcer/vox_fem/collider.ogg
diff --git a/sound/vox_fem/combat.ogg b/sound/announcer/vox_fem/combat.ogg
similarity index 100%
rename from sound/vox_fem/combat.ogg
rename to sound/announcer/vox_fem/combat.ogg
diff --git a/sound/vox_fem/combatant.ogg b/sound/announcer/vox_fem/combatant.ogg
similarity index 100%
rename from sound/vox_fem/combatant.ogg
rename to sound/announcer/vox_fem/combatant.ogg
diff --git a/sound/vox_fem/come.ogg b/sound/announcer/vox_fem/come.ogg
similarity index 100%
rename from sound/vox_fem/come.ogg
rename to sound/announcer/vox_fem/come.ogg
diff --git a/sound/vox_fem/command.ogg b/sound/announcer/vox_fem/command.ogg
similarity index 100%
rename from sound/vox_fem/command.ogg
rename to sound/announcer/vox_fem/command.ogg
diff --git a/sound/vox_fem/communication.ogg b/sound/announcer/vox_fem/communication.ogg
similarity index 100%
rename from sound/vox_fem/communication.ogg
rename to sound/announcer/vox_fem/communication.ogg
diff --git a/sound/vox_fem/complete.ogg b/sound/announcer/vox_fem/complete.ogg
similarity index 100%
rename from sound/vox_fem/complete.ogg
rename to sound/announcer/vox_fem/complete.ogg
diff --git a/sound/vox_fem/completed.ogg b/sound/announcer/vox_fem/completed.ogg
similarity index 100%
rename from sound/vox_fem/completed.ogg
rename to sound/announcer/vox_fem/completed.ogg
diff --git a/sound/vox_fem/completion.ogg b/sound/announcer/vox_fem/completion.ogg
similarity index 100%
rename from sound/vox_fem/completion.ogg
rename to sound/announcer/vox_fem/completion.ogg
diff --git a/sound/vox_fem/complex.ogg b/sound/announcer/vox_fem/complex.ogg
similarity index 100%
rename from sound/vox_fem/complex.ogg
rename to sound/announcer/vox_fem/complex.ogg
diff --git a/sound/vox_fem/comply.ogg b/sound/announcer/vox_fem/comply.ogg
similarity index 100%
rename from sound/vox_fem/comply.ogg
rename to sound/announcer/vox_fem/comply.ogg
diff --git a/sound/vox_fem/computer.ogg b/sound/announcer/vox_fem/computer.ogg
similarity index 100%
rename from sound/vox_fem/computer.ogg
rename to sound/announcer/vox_fem/computer.ogg
diff --git a/sound/vox_fem/condition.ogg b/sound/announcer/vox_fem/condition.ogg
similarity index 100%
rename from sound/vox_fem/condition.ogg
rename to sound/announcer/vox_fem/condition.ogg
diff --git a/sound/vox_fem/conditions.ogg b/sound/announcer/vox_fem/conditions.ogg
similarity index 100%
rename from sound/vox_fem/conditions.ogg
rename to sound/announcer/vox_fem/conditions.ogg
diff --git a/sound/vox_fem/condom.ogg b/sound/announcer/vox_fem/condom.ogg
similarity index 100%
rename from sound/vox_fem/condom.ogg
rename to sound/announcer/vox_fem/condom.ogg
diff --git a/sound/vox_fem/configure.ogg b/sound/announcer/vox_fem/configure.ogg
similarity index 100%
rename from sound/vox_fem/configure.ogg
rename to sound/announcer/vox_fem/configure.ogg
diff --git a/sound/vox_fem/configured.ogg b/sound/announcer/vox_fem/configured.ogg
similarity index 100%
rename from sound/vox_fem/configured.ogg
rename to sound/announcer/vox_fem/configured.ogg
diff --git a/sound/vox_fem/configuring.ogg b/sound/announcer/vox_fem/configuring.ogg
similarity index 100%
rename from sound/vox_fem/configuring.ogg
rename to sound/announcer/vox_fem/configuring.ogg
diff --git a/sound/vox_fem/confirmed.ogg b/sound/announcer/vox_fem/confirmed.ogg
similarity index 100%
rename from sound/vox_fem/confirmed.ogg
rename to sound/announcer/vox_fem/confirmed.ogg
diff --git a/sound/vox_fem/connor.ogg b/sound/announcer/vox_fem/connor.ogg
similarity index 100%
rename from sound/vox_fem/connor.ogg
rename to sound/announcer/vox_fem/connor.ogg
diff --git a/sound/vox_fem/console.ogg b/sound/announcer/vox_fem/console.ogg
similarity index 100%
rename from sound/vox_fem/console.ogg
rename to sound/announcer/vox_fem/console.ogg
diff --git a/sound/vox_fem/console2.ogg b/sound/announcer/vox_fem/console2.ogg
similarity index 100%
rename from sound/vox_fem/console2.ogg
rename to sound/announcer/vox_fem/console2.ogg
diff --git a/sound/vox_fem/construct.ogg b/sound/announcer/vox_fem/construct.ogg
similarity index 100%
rename from sound/vox_fem/construct.ogg
rename to sound/announcer/vox_fem/construct.ogg
diff --git a/sound/vox_fem/container.ogg b/sound/announcer/vox_fem/container.ogg
similarity index 100%
rename from sound/vox_fem/container.ogg
rename to sound/announcer/vox_fem/container.ogg
diff --git a/sound/vox_fem/containment.ogg b/sound/announcer/vox_fem/containment.ogg
similarity index 100%
rename from sound/vox_fem/containment.ogg
rename to sound/announcer/vox_fem/containment.ogg
diff --git a/sound/vox_fem/contamination.ogg b/sound/announcer/vox_fem/contamination.ogg
similarity index 100%
rename from sound/vox_fem/contamination.ogg
rename to sound/announcer/vox_fem/contamination.ogg
diff --git a/sound/vox_fem/contraband.ogg b/sound/announcer/vox_fem/contraband.ogg
similarity index 100%
rename from sound/vox_fem/contraband.ogg
rename to sound/announcer/vox_fem/contraband.ogg
diff --git a/sound/vox_fem/control.ogg b/sound/announcer/vox_fem/control.ogg
similarity index 100%
rename from sound/vox_fem/control.ogg
rename to sound/announcer/vox_fem/control.ogg
diff --git a/sound/vox_fem/cook.ogg b/sound/announcer/vox_fem/cook.ogg
similarity index 100%
rename from sound/vox_fem/cook.ogg
rename to sound/announcer/vox_fem/cook.ogg
diff --git a/sound/vox_fem/cool.ogg b/sound/announcer/vox_fem/cool.ogg
similarity index 100%
rename from sound/vox_fem/cool.ogg
rename to sound/announcer/vox_fem/cool.ogg
diff --git a/sound/vox_fem/coolant.ogg b/sound/announcer/vox_fem/coolant.ogg
similarity index 100%
rename from sound/vox_fem/coolant.ogg
rename to sound/announcer/vox_fem/coolant.ogg
diff --git a/sound/vox_fem/cooling.ogg b/sound/announcer/vox_fem/cooling.ogg
similarity index 100%
rename from sound/vox_fem/cooling.ogg
rename to sound/announcer/vox_fem/cooling.ogg
diff --git a/sound/vox_fem/coomer.ogg b/sound/announcer/vox_fem/coomer.ogg
similarity index 100%
rename from sound/vox_fem/coomer.ogg
rename to sound/announcer/vox_fem/coomer.ogg
diff --git a/sound/vox_fem/core.ogg b/sound/announcer/vox_fem/core.ogg
similarity index 100%
rename from sound/vox_fem/core.ogg
rename to sound/announcer/vox_fem/core.ogg
diff --git a/sound/vox_fem/corgi.ogg b/sound/announcer/vox_fem/corgi.ogg
similarity index 100%
rename from sound/vox_fem/corgi.ogg
rename to sound/announcer/vox_fem/corgi.ogg
diff --git a/sound/vox_fem/corporation.ogg b/sound/announcer/vox_fem/corporation.ogg
similarity index 100%
rename from sound/vox_fem/corporation.ogg
rename to sound/announcer/vox_fem/corporation.ogg
diff --git a/sound/vox_fem/correct.ogg b/sound/announcer/vox_fem/correct.ogg
similarity index 100%
rename from sound/vox_fem/correct.ogg
rename to sound/announcer/vox_fem/correct.ogg
diff --git a/sound/vox_fem/corridor.ogg b/sound/announcer/vox_fem/corridor.ogg
similarity index 100%
rename from sound/vox_fem/corridor.ogg
rename to sound/announcer/vox_fem/corridor.ogg
diff --git a/sound/vox_fem/corridors.ogg b/sound/announcer/vox_fem/corridors.ogg
similarity index 100%
rename from sound/vox_fem/corridors.ogg
rename to sound/announcer/vox_fem/corridors.ogg
diff --git a/sound/vox_fem/could.ogg b/sound/announcer/vox_fem/could.ogg
similarity index 100%
rename from sound/vox_fem/could.ogg
rename to sound/announcer/vox_fem/could.ogg
diff --git a/sound/vox_fem/couldnt.ogg b/sound/announcer/vox_fem/couldnt.ogg
similarity index 100%
rename from sound/vox_fem/couldnt.ogg
rename to sound/announcer/vox_fem/couldnt.ogg
diff --git a/sound/vox_fem/countdown.ogg b/sound/announcer/vox_fem/countdown.ogg
similarity index 100%
rename from sound/vox_fem/countdown.ogg
rename to sound/announcer/vox_fem/countdown.ogg
diff --git a/sound/vox_fem/coward.ogg b/sound/announcer/vox_fem/coward.ogg
similarity index 100%
rename from sound/vox_fem/coward.ogg
rename to sound/announcer/vox_fem/coward.ogg
diff --git a/sound/vox_fem/cowards.ogg b/sound/announcer/vox_fem/cowards.ogg
similarity index 100%
rename from sound/vox_fem/cowards.ogg
rename to sound/announcer/vox_fem/cowards.ogg
diff --git a/sound/vox_fem/crate.ogg b/sound/announcer/vox_fem/crate.ogg
similarity index 100%
rename from sound/vox_fem/crate.ogg
rename to sound/announcer/vox_fem/crate.ogg
diff --git a/sound/vox_fem/create.ogg b/sound/announcer/vox_fem/create.ogg
similarity index 100%
rename from sound/vox_fem/create.ogg
rename to sound/announcer/vox_fem/create.ogg
diff --git a/sound/vox_fem/created.ogg b/sound/announcer/vox_fem/created.ogg
similarity index 100%
rename from sound/vox_fem/created.ogg
rename to sound/announcer/vox_fem/created.ogg
diff --git a/sound/vox_fem/creating.ogg b/sound/announcer/vox_fem/creating.ogg
similarity index 100%
rename from sound/vox_fem/creating.ogg
rename to sound/announcer/vox_fem/creating.ogg
diff --git a/sound/vox_fem/creature.ogg b/sound/announcer/vox_fem/creature.ogg
similarity index 100%
rename from sound/vox_fem/creature.ogg
rename to sound/announcer/vox_fem/creature.ogg
diff --git a/sound/vox_fem/crew.ogg b/sound/announcer/vox_fem/crew.ogg
similarity index 100%
rename from sound/vox_fem/crew.ogg
rename to sound/announcer/vox_fem/crew.ogg
diff --git a/sound/vox_fem/critical.ogg b/sound/announcer/vox_fem/critical.ogg
similarity index 100%
rename from sound/vox_fem/critical.ogg
rename to sound/announcer/vox_fem/critical.ogg
diff --git a/sound/vox_fem/cross.ogg b/sound/announcer/vox_fem/cross.ogg
similarity index 100%
rename from sound/vox_fem/cross.ogg
rename to sound/announcer/vox_fem/cross.ogg
diff --git a/sound/vox_fem/cryogenic.ogg b/sound/announcer/vox_fem/cryogenic.ogg
similarity index 100%
rename from sound/vox_fem/cryogenic.ogg
rename to sound/announcer/vox_fem/cryogenic.ogg
diff --git a/sound/vox_fem/crystal.ogg b/sound/announcer/vox_fem/crystal.ogg
similarity index 100%
rename from sound/vox_fem/crystal.ogg
rename to sound/announcer/vox_fem/crystal.ogg
diff --git a/sound/vox_fem/cult.ogg b/sound/announcer/vox_fem/cult.ogg
similarity index 100%
rename from sound/vox_fem/cult.ogg
rename to sound/announcer/vox_fem/cult.ogg
diff --git a/sound/vox_fem/cultist.ogg b/sound/announcer/vox_fem/cultist.ogg
similarity index 100%
rename from sound/vox_fem/cultist.ogg
rename to sound/announcer/vox_fem/cultist.ogg
diff --git a/sound/vox_fem/cunt.ogg b/sound/announcer/vox_fem/cunt.ogg
similarity index 100%
rename from sound/vox_fem/cunt.ogg
rename to sound/announcer/vox_fem/cunt.ogg
diff --git a/sound/vox_fem/curator.ogg b/sound/announcer/vox_fem/curator.ogg
similarity index 100%
rename from sound/vox_fem/curator.ogg
rename to sound/announcer/vox_fem/curator.ogg
diff --git a/sound/vox_fem/cyborg.ogg b/sound/announcer/vox_fem/cyborg.ogg
similarity index 100%
rename from sound/vox_fem/cyborg.ogg
rename to sound/announcer/vox_fem/cyborg.ogg
diff --git a/sound/vox_fem/cyborgs.ogg b/sound/announcer/vox_fem/cyborgs.ogg
similarity index 100%
rename from sound/vox_fem/cyborgs.ogg
rename to sound/announcer/vox_fem/cyborgs.ogg
diff --git a/sound/vox_fem/d.ogg b/sound/announcer/vox_fem/d.ogg
similarity index 100%
rename from sound/vox_fem/d.ogg
rename to sound/announcer/vox_fem/d.ogg
diff --git a/sound/vox_fem/damage.ogg b/sound/announcer/vox_fem/damage.ogg
similarity index 100%
rename from sound/vox_fem/damage.ogg
rename to sound/announcer/vox_fem/damage.ogg
diff --git a/sound/vox_fem/damaged.ogg b/sound/announcer/vox_fem/damaged.ogg
similarity index 100%
rename from sound/vox_fem/damaged.ogg
rename to sound/announcer/vox_fem/damaged.ogg
diff --git a/sound/vox_fem/danger.ogg b/sound/announcer/vox_fem/danger.ogg
similarity index 100%
rename from sound/vox_fem/danger.ogg
rename to sound/announcer/vox_fem/danger.ogg
diff --git a/sound/vox_fem/dangerous.ogg b/sound/announcer/vox_fem/dangerous.ogg
similarity index 100%
rename from sound/vox_fem/dangerous.ogg
rename to sound/announcer/vox_fem/dangerous.ogg
diff --git a/sound/vox_fem/day.ogg b/sound/announcer/vox_fem/day.ogg
similarity index 100%
rename from sound/vox_fem/day.ogg
rename to sound/announcer/vox_fem/day.ogg
diff --git a/sound/vox_fem/deactivated.ogg b/sound/announcer/vox_fem/deactivated.ogg
similarity index 100%
rename from sound/vox_fem/deactivated.ogg
rename to sound/announcer/vox_fem/deactivated.ogg
diff --git a/sound/vox_fem/dead.ogg b/sound/announcer/vox_fem/dead.ogg
similarity index 100%
rename from sound/vox_fem/dead.ogg
rename to sound/announcer/vox_fem/dead.ogg
diff --git a/sound/vox_fem/death.ogg b/sound/announcer/vox_fem/death.ogg
similarity index 100%
rename from sound/vox_fem/death.ogg
rename to sound/announcer/vox_fem/death.ogg
diff --git a/sound/vox_fem/decompression.ogg b/sound/announcer/vox_fem/decompression.ogg
similarity index 100%
rename from sound/vox_fem/decompression.ogg
rename to sound/announcer/vox_fem/decompression.ogg
diff --git a/sound/vox_fem/decontamination.ogg b/sound/announcer/vox_fem/decontamination.ogg
similarity index 100%
rename from sound/vox_fem/decontamination.ogg
rename to sound/announcer/vox_fem/decontamination.ogg
diff --git a/sound/vox_fem/deeoo.ogg b/sound/announcer/vox_fem/deeoo.ogg
similarity index 100%
rename from sound/vox_fem/deeoo.ogg
rename to sound/announcer/vox_fem/deeoo.ogg
diff --git a/sound/vox_fem/defense.ogg b/sound/announcer/vox_fem/defense.ogg
similarity index 100%
rename from sound/vox_fem/defense.ogg
rename to sound/announcer/vox_fem/defense.ogg
diff --git a/sound/vox_fem/degrees.ogg b/sound/announcer/vox_fem/degrees.ogg
similarity index 100%
rename from sound/vox_fem/degrees.ogg
rename to sound/announcer/vox_fem/degrees.ogg
diff --git a/sound/vox_fem/delaminating.ogg b/sound/announcer/vox_fem/delaminating.ogg
similarity index 100%
rename from sound/vox_fem/delaminating.ogg
rename to sound/announcer/vox_fem/delaminating.ogg
diff --git a/sound/vox_fem/delamination.ogg b/sound/announcer/vox_fem/delamination.ogg
similarity index 100%
rename from sound/vox_fem/delamination.ogg
rename to sound/announcer/vox_fem/delamination.ogg
diff --git a/sound/vox_fem/delta.ogg b/sound/announcer/vox_fem/delta.ogg
similarity index 100%
rename from sound/vox_fem/delta.ogg
rename to sound/announcer/vox_fem/delta.ogg
diff --git a/sound/vox_fem/demon.ogg b/sound/announcer/vox_fem/demon.ogg
similarity index 100%
rename from sound/vox_fem/demon.ogg
rename to sound/announcer/vox_fem/demon.ogg
diff --git a/sound/vox_fem/denied.ogg b/sound/announcer/vox_fem/denied.ogg
similarity index 100%
rename from sound/vox_fem/denied.ogg
rename to sound/announcer/vox_fem/denied.ogg
diff --git a/sound/vox_fem/deny.ogg b/sound/announcer/vox_fem/deny.ogg
similarity index 100%
rename from sound/vox_fem/deny.ogg
rename to sound/announcer/vox_fem/deny.ogg
diff --git a/sound/vox_fem/departures.ogg b/sound/announcer/vox_fem/departures.ogg
similarity index 100%
rename from sound/vox_fem/departures.ogg
rename to sound/announcer/vox_fem/departures.ogg
diff --git a/sound/vox_fem/deploy.ogg b/sound/announcer/vox_fem/deploy.ogg
similarity index 100%
rename from sound/vox_fem/deploy.ogg
rename to sound/announcer/vox_fem/deploy.ogg
diff --git a/sound/vox_fem/deployed.ogg b/sound/announcer/vox_fem/deployed.ogg
similarity index 100%
rename from sound/vox_fem/deployed.ogg
rename to sound/announcer/vox_fem/deployed.ogg
diff --git a/sound/vox_fem/desire.ogg b/sound/announcer/vox_fem/desire.ogg
similarity index 100%
rename from sound/vox_fem/desire.ogg
rename to sound/announcer/vox_fem/desire.ogg
diff --git a/sound/vox_fem/desist.ogg b/sound/announcer/vox_fem/desist.ogg
similarity index 100%
rename from sound/vox_fem/desist.ogg
rename to sound/announcer/vox_fem/desist.ogg
diff --git a/sound/vox_fem/destroy.ogg b/sound/announcer/vox_fem/destroy.ogg
similarity index 100%
rename from sound/vox_fem/destroy.ogg
rename to sound/announcer/vox_fem/destroy.ogg
diff --git a/sound/vox_fem/destroyed.ogg b/sound/announcer/vox_fem/destroyed.ogg
similarity index 100%
rename from sound/vox_fem/destroyed.ogg
rename to sound/announcer/vox_fem/destroyed.ogg
diff --git a/sound/vox_fem/destruction.ogg b/sound/announcer/vox_fem/destruction.ogg
similarity index 100%
rename from sound/vox_fem/destruction.ogg
rename to sound/announcer/vox_fem/destruction.ogg
diff --git a/sound/vox_fem/detain.ogg b/sound/announcer/vox_fem/detain.ogg
similarity index 100%
rename from sound/vox_fem/detain.ogg
rename to sound/announcer/vox_fem/detain.ogg
diff --git a/sound/vox_fem/detect.ogg b/sound/announcer/vox_fem/detect.ogg
similarity index 100%
rename from sound/vox_fem/detect.ogg
rename to sound/announcer/vox_fem/detect.ogg
diff --git a/sound/vox_fem/detected.ogg b/sound/announcer/vox_fem/detected.ogg
similarity index 100%
rename from sound/vox_fem/detected.ogg
rename to sound/announcer/vox_fem/detected.ogg
diff --git a/sound/vox_fem/detecting.ogg b/sound/announcer/vox_fem/detecting.ogg
similarity index 100%
rename from sound/vox_fem/detecting.ogg
rename to sound/announcer/vox_fem/detecting.ogg
diff --git a/sound/vox_fem/detective.ogg b/sound/announcer/vox_fem/detective.ogg
similarity index 100%
rename from sound/vox_fem/detective.ogg
rename to sound/announcer/vox_fem/detective.ogg
diff --git a/sound/vox_fem/detonation.ogg b/sound/announcer/vox_fem/detonation.ogg
similarity index 100%
rename from sound/vox_fem/detonation.ogg
rename to sound/announcer/vox_fem/detonation.ogg
diff --git a/sound/vox_fem/device.ogg b/sound/announcer/vox_fem/device.ogg
similarity index 100%
rename from sound/vox_fem/device.ogg
rename to sound/announcer/vox_fem/device.ogg
diff --git a/sound/vox_fem/devil.ogg b/sound/announcer/vox_fem/devil.ogg
similarity index 100%
rename from sound/vox_fem/devil.ogg
rename to sound/announcer/vox_fem/devil.ogg
diff --git a/sound/vox_fem/did.ogg b/sound/announcer/vox_fem/did.ogg
similarity index 100%
rename from sound/vox_fem/did.ogg
rename to sound/announcer/vox_fem/did.ogg
diff --git a/sound/vox_fem/die.ogg b/sound/announcer/vox_fem/die.ogg
similarity index 100%
rename from sound/vox_fem/die.ogg
rename to sound/announcer/vox_fem/die.ogg
diff --git a/sound/vox_fem/died.ogg b/sound/announcer/vox_fem/died.ogg
similarity index 100%
rename from sound/vox_fem/died.ogg
rename to sound/announcer/vox_fem/died.ogg
diff --git a/sound/vox_fem/different.ogg b/sound/announcer/vox_fem/different.ogg
similarity index 100%
rename from sound/vox_fem/different.ogg
rename to sound/announcer/vox_fem/different.ogg
diff --git a/sound/vox_fem/dimensional.ogg b/sound/announcer/vox_fem/dimensional.ogg
similarity index 100%
rename from sound/vox_fem/dimensional.ogg
rename to sound/announcer/vox_fem/dimensional.ogg
diff --git a/sound/vox_fem/dioxide.ogg b/sound/announcer/vox_fem/dioxide.ogg
similarity index 100%
rename from sound/vox_fem/dioxide.ogg
rename to sound/announcer/vox_fem/dioxide.ogg
diff --git a/sound/vox_fem/direct.ogg b/sound/announcer/vox_fem/direct.ogg
similarity index 100%
rename from sound/vox_fem/direct.ogg
rename to sound/announcer/vox_fem/direct.ogg
diff --git a/sound/vox_fem/director.ogg b/sound/announcer/vox_fem/director.ogg
similarity index 100%
rename from sound/vox_fem/director.ogg
rename to sound/announcer/vox_fem/director.ogg
diff --git a/sound/vox_fem/dirt.ogg b/sound/announcer/vox_fem/dirt.ogg
similarity index 100%
rename from sound/vox_fem/dirt.ogg
rename to sound/announcer/vox_fem/dirt.ogg
diff --git a/sound/vox_fem/disabled.ogg b/sound/announcer/vox_fem/disabled.ogg
similarity index 100%
rename from sound/vox_fem/disabled.ogg
rename to sound/announcer/vox_fem/disabled.ogg
diff --git a/sound/vox_fem/disease.ogg b/sound/announcer/vox_fem/disease.ogg
similarity index 100%
rename from sound/vox_fem/disease.ogg
rename to sound/announcer/vox_fem/disease.ogg
diff --git a/sound/vox_fem/disengaged.ogg b/sound/announcer/vox_fem/disengaged.ogg
similarity index 100%
rename from sound/vox_fem/disengaged.ogg
rename to sound/announcer/vox_fem/disengaged.ogg
diff --git a/sound/vox_fem/dish.ogg b/sound/announcer/vox_fem/dish.ogg
similarity index 100%
rename from sound/vox_fem/dish.ogg
rename to sound/announcer/vox_fem/dish.ogg
diff --git a/sound/vox_fem/disk.ogg b/sound/announcer/vox_fem/disk.ogg
similarity index 100%
rename from sound/vox_fem/disk.ogg
rename to sound/announcer/vox_fem/disk.ogg
diff --git a/sound/vox_fem/disposal.ogg b/sound/announcer/vox_fem/disposal.ogg
similarity index 100%
rename from sound/vox_fem/disposal.ogg
rename to sound/announcer/vox_fem/disposal.ogg
diff --git a/sound/vox_fem/distance.ogg b/sound/announcer/vox_fem/distance.ogg
similarity index 100%
rename from sound/vox_fem/distance.ogg
rename to sound/announcer/vox_fem/distance.ogg
diff --git a/sound/vox_fem/distortion.ogg b/sound/announcer/vox_fem/distortion.ogg
similarity index 100%
rename from sound/vox_fem/distortion.ogg
rename to sound/announcer/vox_fem/distortion.ogg
diff --git a/sound/vox_fem/do.ogg b/sound/announcer/vox_fem/do.ogg
similarity index 100%
rename from sound/vox_fem/do.ogg
rename to sound/announcer/vox_fem/do.ogg
diff --git a/sound/vox_fem/doctor.ogg b/sound/announcer/vox_fem/doctor.ogg
similarity index 100%
rename from sound/vox_fem/doctor.ogg
rename to sound/announcer/vox_fem/doctor.ogg
diff --git a/sound/vox_fem/dog.ogg b/sound/announcer/vox_fem/dog.ogg
similarity index 100%
rename from sound/vox_fem/dog.ogg
rename to sound/announcer/vox_fem/dog.ogg
diff --git a/sound/vox_fem/dont.ogg b/sound/announcer/vox_fem/dont.ogg
similarity index 100%
rename from sound/vox_fem/dont.ogg
rename to sound/announcer/vox_fem/dont.ogg
diff --git a/sound/vox_fem/doomsday.ogg b/sound/announcer/vox_fem/doomsday.ogg
similarity index 100%
rename from sound/vox_fem/doomsday.ogg
rename to sound/announcer/vox_fem/doomsday.ogg
diff --git a/sound/vox_fem/doop.ogg b/sound/announcer/vox_fem/doop.ogg
similarity index 100%
rename from sound/vox_fem/doop.ogg
rename to sound/announcer/vox_fem/doop.ogg
diff --git a/sound/vox_fem/door.ogg b/sound/announcer/vox_fem/door.ogg
similarity index 100%
rename from sound/vox_fem/door.ogg
rename to sound/announcer/vox_fem/door.ogg
diff --git a/sound/vox_fem/dormitory.ogg b/sound/announcer/vox_fem/dormitory.ogg
similarity index 100%
rename from sound/vox_fem/dormitory.ogg
rename to sound/announcer/vox_fem/dormitory.ogg
diff --git a/sound/vox_fem/dot.ogg b/sound/announcer/vox_fem/dot.ogg
similarity index 100%
rename from sound/vox_fem/dot.ogg
rename to sound/announcer/vox_fem/dot.ogg
diff --git a/sound/vox_fem/double.ogg b/sound/announcer/vox_fem/double.ogg
similarity index 100%
rename from sound/vox_fem/double.ogg
rename to sound/announcer/vox_fem/double.ogg
diff --git a/sound/vox_fem/down.ogg b/sound/announcer/vox_fem/down.ogg
similarity index 100%
rename from sound/vox_fem/down.ogg
rename to sound/announcer/vox_fem/down.ogg
diff --git a/sound/vox_fem/dress.ogg b/sound/announcer/vox_fem/dress.ogg
similarity index 100%
rename from sound/vox_fem/dress.ogg
rename to sound/announcer/vox_fem/dress.ogg
diff --git a/sound/vox_fem/dressed.ogg b/sound/announcer/vox_fem/dressed.ogg
similarity index 100%
rename from sound/vox_fem/dressed.ogg
rename to sound/announcer/vox_fem/dressed.ogg
diff --git a/sound/vox_fem/dressing.ogg b/sound/announcer/vox_fem/dressing.ogg
similarity index 100%
rename from sound/vox_fem/dressing.ogg
rename to sound/announcer/vox_fem/dressing.ogg
diff --git a/sound/vox_fem/drone.ogg b/sound/announcer/vox_fem/drone.ogg
similarity index 100%
rename from sound/vox_fem/drone.ogg
rename to sound/announcer/vox_fem/drone.ogg
diff --git a/sound/vox_fem/dual.ogg b/sound/announcer/vox_fem/dual.ogg
similarity index 100%
rename from sound/vox_fem/dual.ogg
rename to sound/announcer/vox_fem/dual.ogg
diff --git a/sound/vox_fem/duct.ogg b/sound/announcer/vox_fem/duct.ogg
similarity index 100%
rename from sound/vox_fem/duct.ogg
rename to sound/announcer/vox_fem/duct.ogg
diff --git a/sound/vox_fem/e.ogg b/sound/announcer/vox_fem/e.ogg
similarity index 100%
rename from sound/vox_fem/e.ogg
rename to sound/announcer/vox_fem/e.ogg
diff --git a/sound/vox_fem/easily.ogg b/sound/announcer/vox_fem/easily.ogg
similarity index 100%
rename from sound/vox_fem/easily.ogg
rename to sound/announcer/vox_fem/easily.ogg
diff --git a/sound/vox_fem/east.ogg b/sound/announcer/vox_fem/east.ogg
similarity index 100%
rename from sound/vox_fem/east.ogg
rename to sound/announcer/vox_fem/east.ogg
diff --git a/sound/vox_fem/eat.ogg b/sound/announcer/vox_fem/eat.ogg
similarity index 100%
rename from sound/vox_fem/eat.ogg
rename to sound/announcer/vox_fem/eat.ogg
diff --git a/sound/vox_fem/eaten.ogg b/sound/announcer/vox_fem/eaten.ogg
similarity index 100%
rename from sound/vox_fem/eaten.ogg
rename to sound/announcer/vox_fem/eaten.ogg
diff --git a/sound/vox_fem/echo.ogg b/sound/announcer/vox_fem/echo.ogg
similarity index 100%
rename from sound/vox_fem/echo.ogg
rename to sound/announcer/vox_fem/echo.ogg
diff --git a/sound/vox_fem/ed.ogg b/sound/announcer/vox_fem/ed.ogg
similarity index 100%
rename from sound/vox_fem/ed.ogg
rename to sound/announcer/vox_fem/ed.ogg
diff --git a/sound/vox_fem/education.ogg b/sound/announcer/vox_fem/education.ogg
similarity index 100%
rename from sound/vox_fem/education.ogg
rename to sound/announcer/vox_fem/education.ogg
diff --git a/sound/vox_fem/effect.ogg b/sound/announcer/vox_fem/effect.ogg
similarity index 100%
rename from sound/vox_fem/effect.ogg
rename to sound/announcer/vox_fem/effect.ogg
diff --git a/sound/vox_fem/effects.ogg b/sound/announcer/vox_fem/effects.ogg
similarity index 100%
rename from sound/vox_fem/effects.ogg
rename to sound/announcer/vox_fem/effects.ogg
diff --git a/sound/vox_fem/egress.ogg b/sound/announcer/vox_fem/egress.ogg
similarity index 100%
rename from sound/vox_fem/egress.ogg
rename to sound/announcer/vox_fem/egress.ogg
diff --git a/sound/vox_fem/eight.ogg b/sound/announcer/vox_fem/eight.ogg
similarity index 100%
rename from sound/vox_fem/eight.ogg
rename to sound/announcer/vox_fem/eight.ogg
diff --git a/sound/vox_fem/eighteen.ogg b/sound/announcer/vox_fem/eighteen.ogg
similarity index 100%
rename from sound/vox_fem/eighteen.ogg
rename to sound/announcer/vox_fem/eighteen.ogg
diff --git a/sound/vox_fem/eighty.ogg b/sound/announcer/vox_fem/eighty.ogg
similarity index 100%
rename from sound/vox_fem/eighty.ogg
rename to sound/announcer/vox_fem/eighty.ogg
diff --git a/sound/vox_fem/electric.ogg b/sound/announcer/vox_fem/electric.ogg
similarity index 100%
rename from sound/vox_fem/electric.ogg
rename to sound/announcer/vox_fem/electric.ogg
diff --git a/sound/vox_fem/electrical.ogg b/sound/announcer/vox_fem/electrical.ogg
similarity index 100%
rename from sound/vox_fem/electrical.ogg
rename to sound/announcer/vox_fem/electrical.ogg
diff --git a/sound/vox_fem/electromagnetic.ogg b/sound/announcer/vox_fem/electromagnetic.ogg
similarity index 100%
rename from sound/vox_fem/electromagnetic.ogg
rename to sound/announcer/vox_fem/electromagnetic.ogg
diff --git a/sound/vox_fem/elevator.ogg b/sound/announcer/vox_fem/elevator.ogg
similarity index 100%
rename from sound/vox_fem/elevator.ogg
rename to sound/announcer/vox_fem/elevator.ogg
diff --git a/sound/vox_fem/eleven.ogg b/sound/announcer/vox_fem/eleven.ogg
similarity index 100%
rename from sound/vox_fem/eleven.ogg
rename to sound/announcer/vox_fem/eleven.ogg
diff --git a/sound/vox_fem/eliminate.ogg b/sound/announcer/vox_fem/eliminate.ogg
similarity index 100%
rename from sound/vox_fem/eliminate.ogg
rename to sound/announcer/vox_fem/eliminate.ogg
diff --git a/sound/vox_fem/emergency.ogg b/sound/announcer/vox_fem/emergency.ogg
similarity index 100%
rename from sound/vox_fem/emergency.ogg
rename to sound/announcer/vox_fem/emergency.ogg
diff --git a/sound/vox_fem/emitted.ogg b/sound/announcer/vox_fem/emitted.ogg
similarity index 100%
rename from sound/vox_fem/emitted.ogg
rename to sound/announcer/vox_fem/emitted.ogg
diff --git a/sound/vox_fem/emitter.ogg b/sound/announcer/vox_fem/emitter.ogg
similarity index 100%
rename from sound/vox_fem/emitter.ogg
rename to sound/announcer/vox_fem/emitter.ogg
diff --git a/sound/vox_fem/emitting.ogg b/sound/announcer/vox_fem/emitting.ogg
similarity index 100%
rename from sound/vox_fem/emitting.ogg
rename to sound/announcer/vox_fem/emitting.ogg
diff --git a/sound/vox_fem/enabled.ogg b/sound/announcer/vox_fem/enabled.ogg
similarity index 100%
rename from sound/vox_fem/enabled.ogg
rename to sound/announcer/vox_fem/enabled.ogg
diff --git a/sound/vox_fem/end.ogg b/sound/announcer/vox_fem/end.ogg
similarity index 100%
rename from sound/vox_fem/end.ogg
rename to sound/announcer/vox_fem/end.ogg
diff --git a/sound/vox_fem/ends.ogg b/sound/announcer/vox_fem/ends.ogg
similarity index 100%
rename from sound/vox_fem/ends.ogg
rename to sound/announcer/vox_fem/ends.ogg
diff --git a/sound/vox_fem/energy.ogg b/sound/announcer/vox_fem/energy.ogg
similarity index 100%
rename from sound/vox_fem/energy.ogg
rename to sound/announcer/vox_fem/energy.ogg
diff --git a/sound/vox_fem/engage.ogg b/sound/announcer/vox_fem/engage.ogg
similarity index 100%
rename from sound/vox_fem/engage.ogg
rename to sound/announcer/vox_fem/engage.ogg
diff --git a/sound/vox_fem/engaged.ogg b/sound/announcer/vox_fem/engaged.ogg
similarity index 100%
rename from sound/vox_fem/engaged.ogg
rename to sound/announcer/vox_fem/engaged.ogg
diff --git a/sound/vox_fem/engine.ogg b/sound/announcer/vox_fem/engine.ogg
similarity index 100%
rename from sound/vox_fem/engine.ogg
rename to sound/announcer/vox_fem/engine.ogg
diff --git a/sound/vox_fem/engineer.ogg b/sound/announcer/vox_fem/engineer.ogg
similarity index 100%
rename from sound/vox_fem/engineer.ogg
rename to sound/announcer/vox_fem/engineer.ogg
diff --git a/sound/vox_fem/engineering.ogg b/sound/announcer/vox_fem/engineering.ogg
similarity index 100%
rename from sound/vox_fem/engineering.ogg
rename to sound/announcer/vox_fem/engineering.ogg
diff --git a/sound/vox_fem/enormous.ogg b/sound/announcer/vox_fem/enormous.ogg
similarity index 100%
rename from sound/vox_fem/enormous.ogg
rename to sound/announcer/vox_fem/enormous.ogg
diff --git a/sound/vox_fem/enough.ogg b/sound/announcer/vox_fem/enough.ogg
similarity index 100%
rename from sound/vox_fem/enough.ogg
rename to sound/announcer/vox_fem/enough.ogg
diff --git a/sound/vox_fem/enter.ogg b/sound/announcer/vox_fem/enter.ogg
similarity index 100%
rename from sound/vox_fem/enter.ogg
rename to sound/announcer/vox_fem/enter.ogg
diff --git a/sound/vox_fem/entity.ogg b/sound/announcer/vox_fem/entity.ogg
similarity index 100%
rename from sound/vox_fem/entity.ogg
rename to sound/announcer/vox_fem/entity.ogg
diff --git a/sound/vox_fem/entry.ogg b/sound/announcer/vox_fem/entry.ogg
similarity index 100%
rename from sound/vox_fem/entry.ogg
rename to sound/announcer/vox_fem/entry.ogg
diff --git a/sound/vox_fem/environment.ogg b/sound/announcer/vox_fem/environment.ogg
similarity index 100%
rename from sound/vox_fem/environment.ogg
rename to sound/announcer/vox_fem/environment.ogg
diff --git a/sound/vox_fem/epic.ogg b/sound/announcer/vox_fem/epic.ogg
similarity index 100%
rename from sound/vox_fem/epic.ogg
rename to sound/announcer/vox_fem/epic.ogg
diff --git a/sound/vox_fem/equipment.ogg b/sound/announcer/vox_fem/equipment.ogg
similarity index 100%
rename from sound/vox_fem/equipment.ogg
rename to sound/announcer/vox_fem/equipment.ogg
diff --git a/sound/vox_fem/error.ogg b/sound/announcer/vox_fem/error.ogg
similarity index 100%
rename from sound/vox_fem/error.ogg
rename to sound/announcer/vox_fem/error.ogg
diff --git a/sound/vox_fem/escape.ogg b/sound/announcer/vox_fem/escape.ogg
similarity index 100%
rename from sound/vox_fem/escape.ogg
rename to sound/announcer/vox_fem/escape.ogg
diff --git a/sound/vox_fem/ethereal.ogg b/sound/announcer/vox_fem/ethereal.ogg
similarity index 100%
rename from sound/vox_fem/ethereal.ogg
rename to sound/announcer/vox_fem/ethereal.ogg
diff --git a/sound/vox_fem/eva.ogg b/sound/announcer/vox_fem/eva.ogg
similarity index 100%
rename from sound/vox_fem/eva.ogg
rename to sound/announcer/vox_fem/eva.ogg
diff --git a/sound/vox_fem/evacuate.ogg b/sound/announcer/vox_fem/evacuate.ogg
similarity index 100%
rename from sound/vox_fem/evacuate.ogg
rename to sound/announcer/vox_fem/evacuate.ogg
diff --git a/sound/vox_fem/even.ogg b/sound/announcer/vox_fem/even.ogg
similarity index 100%
rename from sound/vox_fem/even.ogg
rename to sound/announcer/vox_fem/even.ogg
diff --git a/sound/vox_fem/ever.ogg b/sound/announcer/vox_fem/ever.ogg
similarity index 100%
rename from sound/vox_fem/ever.ogg
rename to sound/announcer/vox_fem/ever.ogg
diff --git a/sound/vox_fem/every.ogg b/sound/announcer/vox_fem/every.ogg
similarity index 100%
rename from sound/vox_fem/every.ogg
rename to sound/announcer/vox_fem/every.ogg
diff --git a/sound/vox_fem/everybody.ogg b/sound/announcer/vox_fem/everybody.ogg
similarity index 100%
rename from sound/vox_fem/everybody.ogg
rename to sound/announcer/vox_fem/everybody.ogg
diff --git a/sound/vox_fem/everyone.ogg b/sound/announcer/vox_fem/everyone.ogg
similarity index 100%
rename from sound/vox_fem/everyone.ogg
rename to sound/announcer/vox_fem/everyone.ogg
diff --git a/sound/vox_fem/exchange.ogg b/sound/announcer/vox_fem/exchange.ogg
similarity index 100%
rename from sound/vox_fem/exchange.ogg
rename to sound/announcer/vox_fem/exchange.ogg
diff --git a/sound/vox_fem/execute.ogg b/sound/announcer/vox_fem/execute.ogg
similarity index 100%
rename from sound/vox_fem/execute.ogg
rename to sound/announcer/vox_fem/execute.ogg
diff --git a/sound/vox_fem/exit.ogg b/sound/announcer/vox_fem/exit.ogg
similarity index 100%
rename from sound/vox_fem/exit.ogg
rename to sound/announcer/vox_fem/exit.ogg
diff --git a/sound/vox_fem/expect.ogg b/sound/announcer/vox_fem/expect.ogg
similarity index 100%
rename from sound/vox_fem/expect.ogg
rename to sound/announcer/vox_fem/expect.ogg
diff --git a/sound/vox_fem/experiment.ogg b/sound/announcer/vox_fem/experiment.ogg
similarity index 100%
rename from sound/vox_fem/experiment.ogg
rename to sound/announcer/vox_fem/experiment.ogg
diff --git a/sound/vox_fem/experimental.ogg b/sound/announcer/vox_fem/experimental.ogg
similarity index 100%
rename from sound/vox_fem/experimental.ogg
rename to sound/announcer/vox_fem/experimental.ogg
diff --git a/sound/vox_fem/explode.ogg b/sound/announcer/vox_fem/explode.ogg
similarity index 100%
rename from sound/vox_fem/explode.ogg
rename to sound/announcer/vox_fem/explode.ogg
diff --git a/sound/vox_fem/exploded.ogg b/sound/announcer/vox_fem/exploded.ogg
similarity index 100%
rename from sound/vox_fem/exploded.ogg
rename to sound/announcer/vox_fem/exploded.ogg
diff --git a/sound/vox_fem/exploding.ogg b/sound/announcer/vox_fem/exploding.ogg
similarity index 100%
rename from sound/vox_fem/exploding.ogg
rename to sound/announcer/vox_fem/exploding.ogg
diff --git a/sound/vox_fem/explosion.ogg b/sound/announcer/vox_fem/explosion.ogg
similarity index 100%
rename from sound/vox_fem/explosion.ogg
rename to sound/announcer/vox_fem/explosion.ogg
diff --git a/sound/vox_fem/explosive.ogg b/sound/announcer/vox_fem/explosive.ogg
similarity index 100%
rename from sound/vox_fem/explosive.ogg
rename to sound/announcer/vox_fem/explosive.ogg
diff --git a/sound/vox_fem/exposure.ogg b/sound/announcer/vox_fem/exposure.ogg
similarity index 100%
rename from sound/vox_fem/exposure.ogg
rename to sound/announcer/vox_fem/exposure.ogg
diff --git a/sound/vox_fem/exterminate.ogg b/sound/announcer/vox_fem/exterminate.ogg
similarity index 100%
rename from sound/vox_fem/exterminate.ogg
rename to sound/announcer/vox_fem/exterminate.ogg
diff --git a/sound/vox_fem/external.ogg b/sound/announcer/vox_fem/external.ogg
similarity index 100%
rename from sound/vox_fem/external.ogg
rename to sound/announcer/vox_fem/external.ogg
diff --git a/sound/vox_fem/extinguish.ogg b/sound/announcer/vox_fem/extinguish.ogg
similarity index 100%
rename from sound/vox_fem/extinguish.ogg
rename to sound/announcer/vox_fem/extinguish.ogg
diff --git a/sound/vox_fem/extinguisher.ogg b/sound/announcer/vox_fem/extinguisher.ogg
similarity index 100%
rename from sound/vox_fem/extinguisher.ogg
rename to sound/announcer/vox_fem/extinguisher.ogg
diff --git a/sound/vox_fem/extra.ogg b/sound/announcer/vox_fem/extra.ogg
similarity index 100%
rename from sound/vox_fem/extra.ogg
rename to sound/announcer/vox_fem/extra.ogg
diff --git a/sound/vox_fem/extreme.ogg b/sound/announcer/vox_fem/extreme.ogg
similarity index 100%
rename from sound/vox_fem/extreme.ogg
rename to sound/announcer/vox_fem/extreme.ogg
diff --git a/sound/vox_fem/f.ogg b/sound/announcer/vox_fem/f.ogg
similarity index 100%
rename from sound/vox_fem/f.ogg
rename to sound/announcer/vox_fem/f.ogg
diff --git a/sound/vox_fem/facility.ogg b/sound/announcer/vox_fem/facility.ogg
similarity index 100%
rename from sound/vox_fem/facility.ogg
rename to sound/announcer/vox_fem/facility.ogg
diff --git a/sound/vox_fem/factory.ogg b/sound/announcer/vox_fem/factory.ogg
similarity index 100%
rename from sound/vox_fem/factory.ogg
rename to sound/announcer/vox_fem/factory.ogg
diff --git a/sound/vox_fem/fahrenheit.ogg b/sound/announcer/vox_fem/fahrenheit.ogg
similarity index 100%
rename from sound/vox_fem/fahrenheit.ogg
rename to sound/announcer/vox_fem/fahrenheit.ogg
diff --git a/sound/vox_fem/failed.ogg b/sound/announcer/vox_fem/failed.ogg
similarity index 100%
rename from sound/vox_fem/failed.ogg
rename to sound/announcer/vox_fem/failed.ogg
diff --git a/sound/vox_fem/failure.ogg b/sound/announcer/vox_fem/failure.ogg
similarity index 100%
rename from sound/vox_fem/failure.ogg
rename to sound/announcer/vox_fem/failure.ogg
diff --git a/sound/vox_fem/false.ogg b/sound/announcer/vox_fem/false.ogg
similarity index 100%
rename from sound/vox_fem/false.ogg
rename to sound/announcer/vox_fem/false.ogg
diff --git a/sound/vox_fem/farthest.ogg b/sound/announcer/vox_fem/farthest.ogg
similarity index 100%
rename from sound/vox_fem/farthest.ogg
rename to sound/announcer/vox_fem/farthest.ogg
diff --git a/sound/vox_fem/fast.ogg b/sound/announcer/vox_fem/fast.ogg
similarity index 100%
rename from sound/vox_fem/fast.ogg
rename to sound/announcer/vox_fem/fast.ogg
diff --git a/sound/vox_fem/fauna.ogg b/sound/announcer/vox_fem/fauna.ogg
similarity index 100%
rename from sound/vox_fem/fauna.ogg
rename to sound/announcer/vox_fem/fauna.ogg
diff --git a/sound/vox_fem/feature.ogg b/sound/announcer/vox_fem/feature.ogg
similarity index 100%
rename from sound/vox_fem/feature.ogg
rename to sound/announcer/vox_fem/feature.ogg
diff --git a/sound/vox_fem/featured.ogg b/sound/announcer/vox_fem/featured.ogg
similarity index 100%
rename from sound/vox_fem/featured.ogg
rename to sound/announcer/vox_fem/featured.ogg
diff --git a/sound/vox_fem/features.ogg b/sound/announcer/vox_fem/features.ogg
similarity index 100%
rename from sound/vox_fem/features.ogg
rename to sound/announcer/vox_fem/features.ogg
diff --git a/sound/vox_fem/featuring.ogg b/sound/announcer/vox_fem/featuring.ogg
similarity index 100%
rename from sound/vox_fem/featuring.ogg
rename to sound/announcer/vox_fem/featuring.ogg
diff --git a/sound/vox_fem/feet.ogg b/sound/announcer/vox_fem/feet.ogg
similarity index 100%
rename from sound/vox_fem/feet.ogg
rename to sound/announcer/vox_fem/feet.ogg
diff --git a/sound/vox_fem/felinid.ogg b/sound/announcer/vox_fem/felinid.ogg
similarity index 100%
rename from sound/vox_fem/felinid.ogg
rename to sound/announcer/vox_fem/felinid.ogg
diff --git a/sound/vox_fem/few.ogg b/sound/announcer/vox_fem/few.ogg
similarity index 100%
rename from sound/vox_fem/few.ogg
rename to sound/announcer/vox_fem/few.ogg
diff --git a/sound/vox_fem/field.ogg b/sound/announcer/vox_fem/field.ogg
similarity index 100%
rename from sound/vox_fem/field.ogg
rename to sound/announcer/vox_fem/field.ogg
diff --git a/sound/vox_fem/fifteen.ogg b/sound/announcer/vox_fem/fifteen.ogg
similarity index 100%
rename from sound/vox_fem/fifteen.ogg
rename to sound/announcer/vox_fem/fifteen.ogg
diff --git a/sound/vox_fem/fifth.ogg b/sound/announcer/vox_fem/fifth.ogg
similarity index 100%
rename from sound/vox_fem/fifth.ogg
rename to sound/announcer/vox_fem/fifth.ogg
diff --git a/sound/vox_fem/fifty.ogg b/sound/announcer/vox_fem/fifty.ogg
similarity index 100%
rename from sound/vox_fem/fifty.ogg
rename to sound/announcer/vox_fem/fifty.ogg
diff --git a/sound/vox_fem/filter.ogg b/sound/announcer/vox_fem/filter.ogg
similarity index 100%
rename from sound/vox_fem/filter.ogg
rename to sound/announcer/vox_fem/filter.ogg
diff --git a/sound/vox_fem/filters.ogg b/sound/announcer/vox_fem/filters.ogg
similarity index 100%
rename from sound/vox_fem/filters.ogg
rename to sound/announcer/vox_fem/filters.ogg
diff --git a/sound/vox_fem/final.ogg b/sound/announcer/vox_fem/final.ogg
similarity index 100%
rename from sound/vox_fem/final.ogg
rename to sound/announcer/vox_fem/final.ogg
diff --git a/sound/vox_fem/fine.ogg b/sound/announcer/vox_fem/fine.ogg
similarity index 100%
rename from sound/vox_fem/fine.ogg
rename to sound/announcer/vox_fem/fine.ogg
diff --git a/sound/vox_fem/fire.ogg b/sound/announcer/vox_fem/fire.ogg
similarity index 100%
rename from sound/vox_fem/fire.ogg
rename to sound/announcer/vox_fem/fire.ogg
diff --git a/sound/vox_fem/first.ogg b/sound/announcer/vox_fem/first.ogg
similarity index 100%
rename from sound/vox_fem/first.ogg
rename to sound/announcer/vox_fem/first.ogg
diff --git a/sound/vox_fem/five.ogg b/sound/announcer/vox_fem/five.ogg
similarity index 100%
rename from sound/vox_fem/five.ogg
rename to sound/announcer/vox_fem/five.ogg
diff --git a/sound/vox_fem/fix.ogg b/sound/announcer/vox_fem/fix.ogg
similarity index 100%
rename from sound/vox_fem/fix.ogg
rename to sound/announcer/vox_fem/fix.ogg
diff --git a/sound/vox_fem/flooding.ogg b/sound/announcer/vox_fem/flooding.ogg
similarity index 100%
rename from sound/vox_fem/flooding.ogg
rename to sound/announcer/vox_fem/flooding.ogg
diff --git a/sound/vox_fem/floor.ogg b/sound/announcer/vox_fem/floor.ogg
similarity index 100%
rename from sound/vox_fem/floor.ogg
rename to sound/announcer/vox_fem/floor.ogg
diff --git a/sound/vox_fem/flyman.ogg b/sound/announcer/vox_fem/flyman.ogg
similarity index 100%
rename from sound/vox_fem/flyman.ogg
rename to sound/announcer/vox_fem/flyman.ogg
diff --git a/sound/vox_fem/fool.ogg b/sound/announcer/vox_fem/fool.ogg
similarity index 100%
rename from sound/vox_fem/fool.ogg
rename to sound/announcer/vox_fem/fool.ogg
diff --git a/sound/vox_fem/foolish.ogg b/sound/announcer/vox_fem/foolish.ogg
similarity index 100%
rename from sound/vox_fem/foolish.ogg
rename to sound/announcer/vox_fem/foolish.ogg
diff --git a/sound/vox_fem/for.ogg b/sound/announcer/vox_fem/for.ogg
similarity index 100%
rename from sound/vox_fem/for.ogg
rename to sound/announcer/vox_fem/for.ogg
diff --git a/sound/vox_fem/forbidden.ogg b/sound/announcer/vox_fem/forbidden.ogg
similarity index 100%
rename from sound/vox_fem/forbidden.ogg
rename to sound/announcer/vox_fem/forbidden.ogg
diff --git a/sound/vox_fem/force.ogg b/sound/announcer/vox_fem/force.ogg
similarity index 100%
rename from sound/vox_fem/force.ogg
rename to sound/announcer/vox_fem/force.ogg
diff --git a/sound/vox_fem/fore.ogg b/sound/announcer/vox_fem/fore.ogg
similarity index 100%
rename from sound/vox_fem/fore.ogg
rename to sound/announcer/vox_fem/fore.ogg
diff --git a/sound/vox_fem/form.ogg b/sound/announcer/vox_fem/form.ogg
similarity index 100%
rename from sound/vox_fem/form.ogg
rename to sound/announcer/vox_fem/form.ogg
diff --git a/sound/vox_fem/formed.ogg b/sound/announcer/vox_fem/formed.ogg
similarity index 100%
rename from sound/vox_fem/formed.ogg
rename to sound/announcer/vox_fem/formed.ogg
diff --git a/sound/vox_fem/forms.ogg b/sound/announcer/vox_fem/forms.ogg
similarity index 100%
rename from sound/vox_fem/forms.ogg
rename to sound/announcer/vox_fem/forms.ogg
diff --git a/sound/vox_fem/forty.ogg b/sound/announcer/vox_fem/forty.ogg
similarity index 100%
rename from sound/vox_fem/forty.ogg
rename to sound/announcer/vox_fem/forty.ogg
diff --git a/sound/vox_fem/found.ogg b/sound/announcer/vox_fem/found.ogg
similarity index 100%
rename from sound/vox_fem/found.ogg
rename to sound/announcer/vox_fem/found.ogg
diff --git a/sound/vox_fem/four.ogg b/sound/announcer/vox_fem/four.ogg
similarity index 100%
rename from sound/vox_fem/four.ogg
rename to sound/announcer/vox_fem/four.ogg
diff --git a/sound/vox_fem/fourteen.ogg b/sound/announcer/vox_fem/fourteen.ogg
similarity index 100%
rename from sound/vox_fem/fourteen.ogg
rename to sound/announcer/vox_fem/fourteen.ogg
diff --git a/sound/vox_fem/fourth.ogg b/sound/announcer/vox_fem/fourth.ogg
similarity index 100%
rename from sound/vox_fem/fourth.ogg
rename to sound/announcer/vox_fem/fourth.ogg
diff --git a/sound/vox_fem/fourty.ogg b/sound/announcer/vox_fem/fourty.ogg
similarity index 100%
rename from sound/vox_fem/fourty.ogg
rename to sound/announcer/vox_fem/fourty.ogg
diff --git a/sound/vox_fem/foxtrot.ogg b/sound/announcer/vox_fem/foxtrot.ogg
similarity index 100%
rename from sound/vox_fem/foxtrot.ogg
rename to sound/announcer/vox_fem/foxtrot.ogg
diff --git a/sound/vox_fem/free.ogg b/sound/announcer/vox_fem/free.ogg
similarity index 100%
rename from sound/vox_fem/free.ogg
rename to sound/announcer/vox_fem/free.ogg
diff --git a/sound/vox_fem/freeman.ogg b/sound/announcer/vox_fem/freeman.ogg
similarity index 100%
rename from sound/vox_fem/freeman.ogg
rename to sound/announcer/vox_fem/freeman.ogg
diff --git a/sound/vox_fem/freeze.ogg b/sound/announcer/vox_fem/freeze.ogg
similarity index 100%
rename from sound/vox_fem/freeze.ogg
rename to sound/announcer/vox_fem/freeze.ogg
diff --git a/sound/vox_fem/freezer.ogg b/sound/announcer/vox_fem/freezer.ogg
similarity index 100%
rename from sound/vox_fem/freezer.ogg
rename to sound/announcer/vox_fem/freezer.ogg
diff --git a/sound/vox_fem/freezing.ogg b/sound/announcer/vox_fem/freezing.ogg
similarity index 100%
rename from sound/vox_fem/freezing.ogg
rename to sound/announcer/vox_fem/freezing.ogg
diff --git a/sound/vox_fem/freon.ogg b/sound/announcer/vox_fem/freon.ogg
similarity index 100%
rename from sound/vox_fem/freon.ogg
rename to sound/announcer/vox_fem/freon.ogg
diff --git a/sound/vox_fem/from.ogg b/sound/announcer/vox_fem/from.ogg
similarity index 100%
rename from sound/vox_fem/from.ogg
rename to sound/announcer/vox_fem/from.ogg
diff --git a/sound/vox_fem/front.ogg b/sound/announcer/vox_fem/front.ogg
similarity index 100%
rename from sound/vox_fem/front.ogg
rename to sound/announcer/vox_fem/front.ogg
diff --git a/sound/vox_fem/froze.ogg b/sound/announcer/vox_fem/froze.ogg
similarity index 100%
rename from sound/vox_fem/froze.ogg
rename to sound/announcer/vox_fem/froze.ogg
diff --git a/sound/vox_fem/frozen.ogg b/sound/announcer/vox_fem/frozen.ogg
similarity index 100%
rename from sound/vox_fem/frozen.ogg
rename to sound/announcer/vox_fem/frozen.ogg
diff --git a/sound/vox_fem/fuck.ogg b/sound/announcer/vox_fem/fuck.ogg
similarity index 100%
rename from sound/vox_fem/fuck.ogg
rename to sound/announcer/vox_fem/fuck.ogg
diff --git a/sound/vox_fem/fucking.ogg b/sound/announcer/vox_fem/fucking.ogg
similarity index 100%
rename from sound/vox_fem/fucking.ogg
rename to sound/announcer/vox_fem/fucking.ogg
diff --git a/sound/vox_fem/fucks.ogg b/sound/announcer/vox_fem/fucks.ogg
similarity index 100%
rename from sound/vox_fem/fucks.ogg
rename to sound/announcer/vox_fem/fucks.ogg
diff --git a/sound/vox_fem/fuel.ogg b/sound/announcer/vox_fem/fuel.ogg
similarity index 100%
rename from sound/vox_fem/fuel.ogg
rename to sound/announcer/vox_fem/fuel.ogg
diff --git a/sound/vox_fem/g.ogg b/sound/announcer/vox_fem/g.ogg
similarity index 100%
rename from sound/vox_fem/g.ogg
rename to sound/announcer/vox_fem/g.ogg
diff --git a/sound/vox_fem/gas.ogg b/sound/announcer/vox_fem/gas.ogg
similarity index 100%
rename from sound/vox_fem/gas.ogg
rename to sound/announcer/vox_fem/gas.ogg
diff --git a/sound/vox_fem/gases.ogg b/sound/announcer/vox_fem/gases.ogg
similarity index 100%
rename from sound/vox_fem/gases.ogg
rename to sound/announcer/vox_fem/gases.ogg
diff --git a/sound/vox_fem/gave.ogg b/sound/announcer/vox_fem/gave.ogg
similarity index 100%
rename from sound/vox_fem/gave.ogg
rename to sound/announcer/vox_fem/gave.ogg
diff --git a/sound/vox_fem/gear.ogg b/sound/announcer/vox_fem/gear.ogg
similarity index 100%
rename from sound/vox_fem/gear.ogg
rename to sound/announcer/vox_fem/gear.ogg
diff --git a/sound/vox_fem/geared.ogg b/sound/announcer/vox_fem/geared.ogg
similarity index 100%
rename from sound/vox_fem/geared.ogg
rename to sound/announcer/vox_fem/geared.ogg
diff --git a/sound/vox_fem/gearing.ogg b/sound/announcer/vox_fem/gearing.ogg
similarity index 100%
rename from sound/vox_fem/gearing.ogg
rename to sound/announcer/vox_fem/gearing.ogg
diff --git a/sound/vox_fem/generate.ogg b/sound/announcer/vox_fem/generate.ogg
similarity index 100%
rename from sound/vox_fem/generate.ogg
rename to sound/announcer/vox_fem/generate.ogg
diff --git a/sound/vox_fem/generated.ogg b/sound/announcer/vox_fem/generated.ogg
similarity index 100%
rename from sound/vox_fem/generated.ogg
rename to sound/announcer/vox_fem/generated.ogg
diff --git a/sound/vox_fem/generating.ogg b/sound/announcer/vox_fem/generating.ogg
similarity index 100%
rename from sound/vox_fem/generating.ogg
rename to sound/announcer/vox_fem/generating.ogg
diff --git a/sound/vox_fem/generator.ogg b/sound/announcer/vox_fem/generator.ogg
similarity index 100%
rename from sound/vox_fem/generator.ogg
rename to sound/announcer/vox_fem/generator.ogg
diff --git a/sound/vox_fem/geneticist.ogg b/sound/announcer/vox_fem/geneticist.ogg
similarity index 100%
rename from sound/vox_fem/geneticist.ogg
rename to sound/announcer/vox_fem/geneticist.ogg
diff --git a/sound/vox_fem/get.ogg b/sound/announcer/vox_fem/get.ogg
similarity index 100%
rename from sound/vox_fem/get.ogg
rename to sound/announcer/vox_fem/get.ogg
diff --git a/sound/vox_fem/give.ogg b/sound/announcer/vox_fem/give.ogg
similarity index 100%
rename from sound/vox_fem/give.ogg
rename to sound/announcer/vox_fem/give.ogg
diff --git a/sound/vox_fem/given.ogg b/sound/announcer/vox_fem/given.ogg
similarity index 100%
rename from sound/vox_fem/given.ogg
rename to sound/announcer/vox_fem/given.ogg
diff --git a/sound/vox_fem/glory.ogg b/sound/announcer/vox_fem/glory.ogg
similarity index 100%
rename from sound/vox_fem/glory.ogg
rename to sound/announcer/vox_fem/glory.ogg
diff --git a/sound/vox_fem/go.ogg b/sound/announcer/vox_fem/go.ogg
similarity index 100%
rename from sound/vox_fem/go.ogg
rename to sound/announcer/vox_fem/go.ogg
diff --git a/sound/vox_fem/god.ogg b/sound/announcer/vox_fem/god.ogg
similarity index 100%
rename from sound/vox_fem/god.ogg
rename to sound/announcer/vox_fem/god.ogg
diff --git a/sound/vox_fem/going.ogg b/sound/announcer/vox_fem/going.ogg
similarity index 100%
rename from sound/vox_fem/going.ogg
rename to sound/announcer/vox_fem/going.ogg
diff --git a/sound/vox_fem/golem.ogg b/sound/announcer/vox_fem/golem.ogg
similarity index 100%
rename from sound/vox_fem/golem.ogg
rename to sound/announcer/vox_fem/golem.ogg
diff --git a/sound/vox_fem/good.ogg b/sound/announcer/vox_fem/good.ogg
similarity index 100%
rename from sound/vox_fem/good.ogg
rename to sound/announcer/vox_fem/good.ogg
diff --git a/sound/vox_fem/goodbye.ogg b/sound/announcer/vox_fem/goodbye.ogg
similarity index 100%
rename from sound/vox_fem/goodbye.ogg
rename to sound/announcer/vox_fem/goodbye.ogg
diff --git a/sound/vox_fem/gordon.ogg b/sound/announcer/vox_fem/gordon.ogg
similarity index 100%
rename from sound/vox_fem/gordon.ogg
rename to sound/announcer/vox_fem/gordon.ogg
diff --git a/sound/vox_fem/got.ogg b/sound/announcer/vox_fem/got.ogg
similarity index 100%
rename from sound/vox_fem/got.ogg
rename to sound/announcer/vox_fem/got.ogg
diff --git a/sound/vox_fem/government.ogg b/sound/announcer/vox_fem/government.ogg
similarity index 100%
rename from sound/vox_fem/government.ogg
rename to sound/announcer/vox_fem/government.ogg
diff --git a/sound/vox_fem/granted.ogg b/sound/announcer/vox_fem/granted.ogg
similarity index 100%
rename from sound/vox_fem/granted.ogg
rename to sound/announcer/vox_fem/granted.ogg
diff --git a/sound/vox_fem/gravity.ogg b/sound/announcer/vox_fem/gravity.ogg
similarity index 100%
rename from sound/vox_fem/gravity.ogg
rename to sound/announcer/vox_fem/gravity.ogg
diff --git a/sound/vox_fem/gray.ogg b/sound/announcer/vox_fem/gray.ogg
similarity index 100%
rename from sound/vox_fem/gray.ogg
rename to sound/announcer/vox_fem/gray.ogg
diff --git a/sound/vox_fem/great.ogg b/sound/announcer/vox_fem/great.ogg
similarity index 100%
rename from sound/vox_fem/great.ogg
rename to sound/announcer/vox_fem/great.ogg
diff --git a/sound/vox_fem/green.ogg b/sound/announcer/vox_fem/green.ogg
similarity index 100%
rename from sound/vox_fem/green.ogg
rename to sound/announcer/vox_fem/green.ogg
diff --git a/sound/vox_fem/grenade.ogg b/sound/announcer/vox_fem/grenade.ogg
similarity index 100%
rename from sound/vox_fem/grenade.ogg
rename to sound/announcer/vox_fem/grenade.ogg
diff --git a/sound/vox_fem/guard.ogg b/sound/announcer/vox_fem/guard.ogg
similarity index 100%
rename from sound/vox_fem/guard.ogg
rename to sound/announcer/vox_fem/guard.ogg
diff --git a/sound/vox_fem/gulf.ogg b/sound/announcer/vox_fem/gulf.ogg
similarity index 100%
rename from sound/vox_fem/gulf.ogg
rename to sound/announcer/vox_fem/gulf.ogg
diff --git a/sound/vox_fem/gun.ogg b/sound/announcer/vox_fem/gun.ogg
similarity index 100%
rename from sound/vox_fem/gun.ogg
rename to sound/announcer/vox_fem/gun.ogg
diff --git a/sound/vox_fem/guthrie.ogg b/sound/announcer/vox_fem/guthrie.ogg
similarity index 100%
rename from sound/vox_fem/guthrie.ogg
rename to sound/announcer/vox_fem/guthrie.ogg
diff --git a/sound/vox_fem/h.ogg b/sound/announcer/vox_fem/h.ogg
similarity index 100%
rename from sound/vox_fem/h.ogg
rename to sound/announcer/vox_fem/h.ogg
diff --git a/sound/vox_fem/hacker.ogg b/sound/announcer/vox_fem/hacker.ogg
similarity index 100%
rename from sound/vox_fem/hacker.ogg
rename to sound/announcer/vox_fem/hacker.ogg
diff --git a/sound/vox_fem/hackers.ogg b/sound/announcer/vox_fem/hackers.ogg
similarity index 100%
rename from sound/vox_fem/hackers.ogg
rename to sound/announcer/vox_fem/hackers.ogg
diff --git a/sound/vox_fem/had.ogg b/sound/announcer/vox_fem/had.ogg
similarity index 100%
rename from sound/vox_fem/had.ogg
rename to sound/announcer/vox_fem/had.ogg
diff --git a/sound/vox_fem/hall.ogg b/sound/announcer/vox_fem/hall.ogg
similarity index 100%
rename from sound/vox_fem/hall.ogg
rename to sound/announcer/vox_fem/hall.ogg
diff --git a/sound/vox_fem/hallway.ogg b/sound/announcer/vox_fem/hallway.ogg
similarity index 100%
rename from sound/vox_fem/hallway.ogg
rename to sound/announcer/vox_fem/hallway.ogg
diff --git a/sound/vox_fem/halon.ogg b/sound/announcer/vox_fem/halon.ogg
similarity index 100%
rename from sound/vox_fem/halon.ogg
rename to sound/announcer/vox_fem/halon.ogg
diff --git a/sound/vox_fem/handling.ogg b/sound/announcer/vox_fem/handling.ogg
similarity index 100%
rename from sound/vox_fem/handling.ogg
rename to sound/announcer/vox_fem/handling.ogg
diff --git a/sound/vox_fem/hangar.ogg b/sound/announcer/vox_fem/hangar.ogg
similarity index 100%
rename from sound/vox_fem/hangar.ogg
rename to sound/announcer/vox_fem/hangar.ogg
diff --git a/sound/vox_fem/hard.ogg b/sound/announcer/vox_fem/hard.ogg
similarity index 100%
rename from sound/vox_fem/hard.ogg
rename to sound/announcer/vox_fem/hard.ogg
diff --git a/sound/vox_fem/hardly.ogg b/sound/announcer/vox_fem/hardly.ogg
similarity index 100%
rename from sound/vox_fem/hardly.ogg
rename to sound/announcer/vox_fem/hardly.ogg
diff --git a/sound/vox_fem/harm.ogg b/sound/announcer/vox_fem/harm.ogg
similarity index 100%
rename from sound/vox_fem/harm.ogg
rename to sound/announcer/vox_fem/harm.ogg
diff --git a/sound/vox_fem/harmful.ogg b/sound/announcer/vox_fem/harmful.ogg
similarity index 100%
rename from sound/vox_fem/harmful.ogg
rename to sound/announcer/vox_fem/harmful.ogg
diff --git a/sound/vox_fem/harness.ogg b/sound/announcer/vox_fem/harness.ogg
similarity index 100%
rename from sound/vox_fem/harness.ogg
rename to sound/announcer/vox_fem/harness.ogg
diff --git a/sound/vox_fem/harnessed.ogg b/sound/announcer/vox_fem/harnessed.ogg
similarity index 100%
rename from sound/vox_fem/harnessed.ogg
rename to sound/announcer/vox_fem/harnessed.ogg
diff --git a/sound/vox_fem/harnessing.ogg b/sound/announcer/vox_fem/harnessing.ogg
similarity index 100%
rename from sound/vox_fem/harnessing.ogg
rename to sound/announcer/vox_fem/harnessing.ogg
diff --git a/sound/vox_fem/has.ogg b/sound/announcer/vox_fem/has.ogg
similarity index 100%
rename from sound/vox_fem/has.ogg
rename to sound/announcer/vox_fem/has.ogg
diff --git a/sound/vox_fem/have.ogg b/sound/announcer/vox_fem/have.ogg
similarity index 100%
rename from sound/vox_fem/have.ogg
rename to sound/announcer/vox_fem/have.ogg
diff --git a/sound/vox_fem/hazard.ogg b/sound/announcer/vox_fem/hazard.ogg
similarity index 100%
rename from sound/vox_fem/hazard.ogg
rename to sound/announcer/vox_fem/hazard.ogg
diff --git a/sound/vox_fem/he.ogg b/sound/announcer/vox_fem/he.ogg
similarity index 100%
rename from sound/vox_fem/he.ogg
rename to sound/announcer/vox_fem/he.ogg
diff --git a/sound/vox_fem/head.ogg b/sound/announcer/vox_fem/head.ogg
similarity index 100%
rename from sound/vox_fem/head.ogg
rename to sound/announcer/vox_fem/head.ogg
diff --git a/sound/vox_fem/heal.ogg b/sound/announcer/vox_fem/heal.ogg
similarity index 100%
rename from sound/vox_fem/heal.ogg
rename to sound/announcer/vox_fem/heal.ogg
diff --git a/sound/vox_fem/healed.ogg b/sound/announcer/vox_fem/healed.ogg
similarity index 100%
rename from sound/vox_fem/healed.ogg
rename to sound/announcer/vox_fem/healed.ogg
diff --git a/sound/vox_fem/healing.ogg b/sound/announcer/vox_fem/healing.ogg
similarity index 100%
rename from sound/vox_fem/healing.ogg
rename to sound/announcer/vox_fem/healing.ogg
diff --git a/sound/vox_fem/healium.ogg b/sound/announcer/vox_fem/healium.ogg
similarity index 100%
rename from sound/vox_fem/healium.ogg
rename to sound/announcer/vox_fem/healium.ogg
diff --git a/sound/vox_fem/health.ogg b/sound/announcer/vox_fem/health.ogg
similarity index 100%
rename from sound/vox_fem/health.ogg
rename to sound/announcer/vox_fem/health.ogg
diff --git a/sound/vox_fem/heat.ogg b/sound/announcer/vox_fem/heat.ogg
similarity index 100%
rename from sound/vox_fem/heat.ogg
rename to sound/announcer/vox_fem/heat.ogg
diff --git a/sound/vox_fem/heated.ogg b/sound/announcer/vox_fem/heated.ogg
similarity index 100%
rename from sound/vox_fem/heated.ogg
rename to sound/announcer/vox_fem/heated.ogg
diff --git a/sound/vox_fem/heating.ogg b/sound/announcer/vox_fem/heating.ogg
similarity index 100%
rename from sound/vox_fem/heating.ogg
rename to sound/announcer/vox_fem/heating.ogg
diff --git a/sound/vox_fem/helicopter.ogg b/sound/announcer/vox_fem/helicopter.ogg
similarity index 100%
rename from sound/vox_fem/helicopter.ogg
rename to sound/announcer/vox_fem/helicopter.ogg
diff --git a/sound/vox_fem/helium.ogg b/sound/announcer/vox_fem/helium.ogg
similarity index 100%
rename from sound/vox_fem/helium.ogg
rename to sound/announcer/vox_fem/helium.ogg
diff --git a/sound/vox_fem/hello.ogg b/sound/announcer/vox_fem/hello.ogg
similarity index 100%
rename from sound/vox_fem/hello.ogg
rename to sound/announcer/vox_fem/hello.ogg
diff --git a/sound/vox_fem/help.ogg b/sound/announcer/vox_fem/help.ogg
similarity index 100%
rename from sound/vox_fem/help.ogg
rename to sound/announcer/vox_fem/help.ogg
diff --git a/sound/vox_fem/her.ogg b/sound/announcer/vox_fem/her.ogg
similarity index 100%
rename from sound/vox_fem/her.ogg
rename to sound/announcer/vox_fem/her.ogg
diff --git a/sound/vox_fem/here.ogg b/sound/announcer/vox_fem/here.ogg
similarity index 100%
rename from sound/vox_fem/here.ogg
rename to sound/announcer/vox_fem/here.ogg
diff --git a/sound/vox_fem/heretic.ogg b/sound/announcer/vox_fem/heretic.ogg
similarity index 100%
rename from sound/vox_fem/heretic.ogg
rename to sound/announcer/vox_fem/heretic.ogg
diff --git a/sound/vox_fem/hide.ogg b/sound/announcer/vox_fem/hide.ogg
similarity index 100%
rename from sound/vox_fem/hide.ogg
rename to sound/announcer/vox_fem/hide.ogg
diff --git a/sound/vox_fem/high.ogg b/sound/announcer/vox_fem/high.ogg
similarity index 100%
rename from sound/vox_fem/high.ogg
rename to sound/announcer/vox_fem/high.ogg
diff --git a/sound/vox_fem/highest.ogg b/sound/announcer/vox_fem/highest.ogg
similarity index 100%
rename from sound/vox_fem/highest.ogg
rename to sound/announcer/vox_fem/highest.ogg
diff --git a/sound/vox_fem/him.ogg b/sound/announcer/vox_fem/him.ogg
similarity index 100%
rename from sound/vox_fem/him.ogg
rename to sound/announcer/vox_fem/him.ogg
diff --git a/sound/vox_fem/hit.ogg b/sound/announcer/vox_fem/hit.ogg
similarity index 100%
rename from sound/vox_fem/hit.ogg
rename to sound/announcer/vox_fem/hit.ogg
diff --git a/sound/vox_fem/hole.ogg b/sound/announcer/vox_fem/hole.ogg
similarity index 100%
rename from sound/vox_fem/hole.ogg
rename to sound/announcer/vox_fem/hole.ogg
diff --git a/sound/vox_fem/honk.ogg b/sound/announcer/vox_fem/honk.ogg
similarity index 100%
rename from sound/vox_fem/honk.ogg
rename to sound/announcer/vox_fem/honk.ogg
diff --git a/sound/vox_fem/hop.ogg b/sound/announcer/vox_fem/hop.ogg
similarity index 100%
rename from sound/vox_fem/hop.ogg
rename to sound/announcer/vox_fem/hop.ogg
diff --git a/sound/vox_fem/hos.ogg b/sound/announcer/vox_fem/hos.ogg
similarity index 100%
rename from sound/vox_fem/hos.ogg
rename to sound/announcer/vox_fem/hos.ogg
diff --git a/sound/vox_fem/hostile.ogg b/sound/announcer/vox_fem/hostile.ogg
similarity index 100%
rename from sound/vox_fem/hostile.ogg
rename to sound/announcer/vox_fem/hostile.ogg
diff --git a/sound/vox_fem/hot.ogg b/sound/announcer/vox_fem/hot.ogg
similarity index 100%
rename from sound/vox_fem/hot.ogg
rename to sound/announcer/vox_fem/hot.ogg
diff --git a/sound/vox_fem/hotel.ogg b/sound/announcer/vox_fem/hotel.ogg
similarity index 100%
rename from sound/vox_fem/hotel.ogg
rename to sound/announcer/vox_fem/hotel.ogg
diff --git a/sound/vox_fem/hour.ogg b/sound/announcer/vox_fem/hour.ogg
similarity index 100%
rename from sound/vox_fem/hour.ogg
rename to sound/announcer/vox_fem/hour.ogg
diff --git a/sound/vox_fem/hours.ogg b/sound/announcer/vox_fem/hours.ogg
similarity index 100%
rename from sound/vox_fem/hours.ogg
rename to sound/announcer/vox_fem/hours.ogg
diff --git a/sound/vox_fem/how.ogg b/sound/announcer/vox_fem/how.ogg
similarity index 100%
rename from sound/vox_fem/how.ogg
rename to sound/announcer/vox_fem/how.ogg
diff --git a/sound/vox_fem/human.ogg b/sound/announcer/vox_fem/human.ogg
similarity index 100%
rename from sound/vox_fem/human.ogg
rename to sound/announcer/vox_fem/human.ogg
diff --git a/sound/vox_fem/humanoid.ogg b/sound/announcer/vox_fem/humanoid.ogg
similarity index 100%
rename from sound/vox_fem/humanoid.ogg
rename to sound/announcer/vox_fem/humanoid.ogg
diff --git a/sound/vox_fem/humans.ogg b/sound/announcer/vox_fem/humans.ogg
similarity index 100%
rename from sound/vox_fem/humans.ogg
rename to sound/announcer/vox_fem/humans.ogg
diff --git a/sound/vox_fem/hundred.ogg b/sound/announcer/vox_fem/hundred.ogg
similarity index 100%
rename from sound/vox_fem/hundred.ogg
rename to sound/announcer/vox_fem/hundred.ogg
diff --git a/sound/vox_fem/hunger.ogg b/sound/announcer/vox_fem/hunger.ogg
similarity index 100%
rename from sound/vox_fem/hunger.ogg
rename to sound/announcer/vox_fem/hunger.ogg
diff --git a/sound/vox_fem/hurt.ogg b/sound/announcer/vox_fem/hurt.ogg
similarity index 100%
rename from sound/vox_fem/hurt.ogg
rename to sound/announcer/vox_fem/hurt.ogg
diff --git a/sound/vox_fem/hydro.ogg b/sound/announcer/vox_fem/hydro.ogg
similarity index 100%
rename from sound/vox_fem/hydro.ogg
rename to sound/announcer/vox_fem/hydro.ogg
diff --git a/sound/vox_fem/hydrogen.ogg b/sound/announcer/vox_fem/hydrogen.ogg
similarity index 100%
rename from sound/vox_fem/hydrogen.ogg
rename to sound/announcer/vox_fem/hydrogen.ogg
diff --git a/sound/vox_fem/hydroponics.ogg b/sound/announcer/vox_fem/hydroponics.ogg
similarity index 100%
rename from sound/vox_fem/hydroponics.ogg
rename to sound/announcer/vox_fem/hydroponics.ogg
diff --git a/sound/vox_fem/hyper-noblium.ogg b/sound/announcer/vox_fem/hyper-noblium.ogg
similarity index 100%
rename from sound/vox_fem/hyper-noblium.ogg
rename to sound/announcer/vox_fem/hyper-noblium.ogg
diff --git a/sound/vox_fem/i.ogg b/sound/announcer/vox_fem/i.ogg
similarity index 100%
rename from sound/vox_fem/i.ogg
rename to sound/announcer/vox_fem/i.ogg
diff --git a/sound/vox_fem/ian.ogg b/sound/announcer/vox_fem/ian.ogg
similarity index 100%
rename from sound/vox_fem/ian.ogg
rename to sound/announcer/vox_fem/ian.ogg
diff --git a/sound/vox_fem/idiot.ogg b/sound/announcer/vox_fem/idiot.ogg
similarity index 100%
rename from sound/vox_fem/idiot.ogg
rename to sound/announcer/vox_fem/idiot.ogg
diff --git a/sound/vox_fem/if.ogg b/sound/announcer/vox_fem/if.ogg
similarity index 100%
rename from sound/vox_fem/if.ogg
rename to sound/announcer/vox_fem/if.ogg
diff --git a/sound/vox_fem/if2.ogg b/sound/announcer/vox_fem/if2.ogg
similarity index 100%
rename from sound/vox_fem/if2.ogg
rename to sound/announcer/vox_fem/if2.ogg
diff --git a/sound/vox_fem/illegal.ogg b/sound/announcer/vox_fem/illegal.ogg
similarity index 100%
rename from sound/vox_fem/illegal.ogg
rename to sound/announcer/vox_fem/illegal.ogg
diff --git a/sound/vox_fem/immediate.ogg b/sound/announcer/vox_fem/immediate.ogg
similarity index 100%
rename from sound/vox_fem/immediate.ogg
rename to sound/announcer/vox_fem/immediate.ogg
diff --git a/sound/vox_fem/immediately.ogg b/sound/announcer/vox_fem/immediately.ogg
similarity index 100%
rename from sound/vox_fem/immediately.ogg
rename to sound/announcer/vox_fem/immediately.ogg
diff --git a/sound/vox_fem/immortal.ogg b/sound/announcer/vox_fem/immortal.ogg
similarity index 100%
rename from sound/vox_fem/immortal.ogg
rename to sound/announcer/vox_fem/immortal.ogg
diff --git a/sound/vox_fem/impossible.ogg b/sound/announcer/vox_fem/impossible.ogg
similarity index 100%
rename from sound/vox_fem/impossible.ogg
rename to sound/announcer/vox_fem/impossible.ogg
diff --git a/sound/vox_fem/in.ogg b/sound/announcer/vox_fem/in.ogg
similarity index 100%
rename from sound/vox_fem/in.ogg
rename to sound/announcer/vox_fem/in.ogg
diff --git a/sound/vox_fem/inches.ogg b/sound/announcer/vox_fem/inches.ogg
similarity index 100%
rename from sound/vox_fem/inches.ogg
rename to sound/announcer/vox_fem/inches.ogg
diff --git a/sound/vox_fem/india.ogg b/sound/announcer/vox_fem/india.ogg
similarity index 100%
rename from sound/vox_fem/india.ogg
rename to sound/announcer/vox_fem/india.ogg
diff --git a/sound/vox_fem/inert.ogg b/sound/announcer/vox_fem/inert.ogg
similarity index 100%
rename from sound/vox_fem/inert.ogg
rename to sound/announcer/vox_fem/inert.ogg
diff --git a/sound/vox_fem/ing.ogg b/sound/announcer/vox_fem/ing.ogg
similarity index 100%
rename from sound/vox_fem/ing.ogg
rename to sound/announcer/vox_fem/ing.ogg
diff --git a/sound/vox_fem/inoperative.ogg b/sound/announcer/vox_fem/inoperative.ogg
similarity index 100%
rename from sound/vox_fem/inoperative.ogg
rename to sound/announcer/vox_fem/inoperative.ogg
diff --git a/sound/vox_fem/inside.ogg b/sound/announcer/vox_fem/inside.ogg
similarity index 100%
rename from sound/vox_fem/inside.ogg
rename to sound/announcer/vox_fem/inside.ogg
diff --git a/sound/vox_fem/inspection.ogg b/sound/announcer/vox_fem/inspection.ogg
similarity index 100%
rename from sound/vox_fem/inspection.ogg
rename to sound/announcer/vox_fem/inspection.ogg
diff --git a/sound/vox_fem/inspector.ogg b/sound/announcer/vox_fem/inspector.ogg
similarity index 100%
rename from sound/vox_fem/inspector.ogg
rename to sound/announcer/vox_fem/inspector.ogg
diff --git a/sound/vox_fem/interchange.ogg b/sound/announcer/vox_fem/interchange.ogg
similarity index 100%
rename from sound/vox_fem/interchange.ogg
rename to sound/announcer/vox_fem/interchange.ogg
diff --git a/sound/vox_fem/internal.ogg b/sound/announcer/vox_fem/internal.ogg
similarity index 100%
rename from sound/vox_fem/internal.ogg
rename to sound/announcer/vox_fem/internal.ogg
diff --git a/sound/vox_fem/internals.ogg b/sound/announcer/vox_fem/internals.ogg
similarity index 100%
rename from sound/vox_fem/internals.ogg
rename to sound/announcer/vox_fem/internals.ogg
diff --git a/sound/vox_fem/intruder.ogg b/sound/announcer/vox_fem/intruder.ogg
similarity index 100%
rename from sound/vox_fem/intruder.ogg
rename to sound/announcer/vox_fem/intruder.ogg
diff --git a/sound/vox_fem/invalid.ogg b/sound/announcer/vox_fem/invalid.ogg
similarity index 100%
rename from sound/vox_fem/invalid.ogg
rename to sound/announcer/vox_fem/invalid.ogg
diff --git a/sound/vox_fem/invalidate.ogg b/sound/announcer/vox_fem/invalidate.ogg
similarity index 100%
rename from sound/vox_fem/invalidate.ogg
rename to sound/announcer/vox_fem/invalidate.ogg
diff --git a/sound/vox_fem/invasion.ogg b/sound/announcer/vox_fem/invasion.ogg
similarity index 100%
rename from sound/vox_fem/invasion.ogg
rename to sound/announcer/vox_fem/invasion.ogg
diff --git a/sound/vox_fem/irradiate.ogg b/sound/announcer/vox_fem/irradiate.ogg
similarity index 100%
rename from sound/vox_fem/irradiate.ogg
rename to sound/announcer/vox_fem/irradiate.ogg
diff --git a/sound/vox_fem/is.ogg b/sound/announcer/vox_fem/is.ogg
similarity index 100%
rename from sound/vox_fem/is.ogg
rename to sound/announcer/vox_fem/is.ogg
diff --git a/sound/vox_fem/it.ogg b/sound/announcer/vox_fem/it.ogg
similarity index 100%
rename from sound/vox_fem/it.ogg
rename to sound/announcer/vox_fem/it.ogg
diff --git a/sound/vox_fem/its.ogg b/sound/announcer/vox_fem/its.ogg
similarity index 100%
rename from sound/vox_fem/its.ogg
rename to sound/announcer/vox_fem/its.ogg
diff --git a/sound/vox_fem/j.ogg b/sound/announcer/vox_fem/j.ogg
similarity index 100%
rename from sound/vox_fem/j.ogg
rename to sound/announcer/vox_fem/j.ogg
diff --git a/sound/vox_fem/janitor.ogg b/sound/announcer/vox_fem/janitor.ogg
similarity index 100%
rename from sound/vox_fem/janitor.ogg
rename to sound/announcer/vox_fem/janitor.ogg
diff --git a/sound/vox_fem/jesus.ogg b/sound/announcer/vox_fem/jesus.ogg
similarity index 100%
rename from sound/vox_fem/jesus.ogg
rename to sound/announcer/vox_fem/jesus.ogg
diff --git a/sound/vox_fem/job.ogg b/sound/announcer/vox_fem/job.ogg
similarity index 100%
rename from sound/vox_fem/job.ogg
rename to sound/announcer/vox_fem/job.ogg
diff --git a/sound/vox_fem/jobs.ogg b/sound/announcer/vox_fem/jobs.ogg
similarity index 100%
rename from sound/vox_fem/jobs.ogg
rename to sound/announcer/vox_fem/jobs.ogg
diff --git a/sound/vox_fem/johnson.ogg b/sound/announcer/vox_fem/johnson.ogg
similarity index 100%
rename from sound/vox_fem/johnson.ogg
rename to sound/announcer/vox_fem/johnson.ogg
diff --git a/sound/vox_fem/jolly.ogg b/sound/announcer/vox_fem/jolly.ogg
similarity index 100%
rename from sound/vox_fem/jolly.ogg
rename to sound/announcer/vox_fem/jolly.ogg
diff --git a/sound/vox_fem/juliet.ogg b/sound/announcer/vox_fem/juliet.ogg
similarity index 100%
rename from sound/vox_fem/juliet.ogg
rename to sound/announcer/vox_fem/juliet.ogg
diff --git a/sound/vox_fem/k.ogg b/sound/announcer/vox_fem/k.ogg
similarity index 100%
rename from sound/vox_fem/k.ogg
rename to sound/announcer/vox_fem/k.ogg
diff --git a/sound/vox_fem/kelvin.ogg b/sound/announcer/vox_fem/kelvin.ogg
similarity index 100%
rename from sound/vox_fem/kelvin.ogg
rename to sound/announcer/vox_fem/kelvin.ogg
diff --git a/sound/vox_fem/key.ogg b/sound/announcer/vox_fem/key.ogg
similarity index 100%
rename from sound/vox_fem/key.ogg
rename to sound/announcer/vox_fem/key.ogg
diff --git a/sound/vox_fem/kidnapped.ogg b/sound/announcer/vox_fem/kidnapped.ogg
similarity index 100%
rename from sound/vox_fem/kidnapped.ogg
rename to sound/announcer/vox_fem/kidnapped.ogg
diff --git a/sound/vox_fem/kidnapping.ogg b/sound/announcer/vox_fem/kidnapping.ogg
similarity index 100%
rename from sound/vox_fem/kidnapping.ogg
rename to sound/announcer/vox_fem/kidnapping.ogg
diff --git a/sound/vox_fem/kill.ogg b/sound/announcer/vox_fem/kill.ogg
similarity index 100%
rename from sound/vox_fem/kill.ogg
rename to sound/announcer/vox_fem/kill.ogg
diff --git a/sound/vox_fem/killed.ogg b/sound/announcer/vox_fem/killed.ogg
similarity index 100%
rename from sound/vox_fem/killed.ogg
rename to sound/announcer/vox_fem/killed.ogg
diff --git a/sound/vox_fem/killer.ogg b/sound/announcer/vox_fem/killer.ogg
similarity index 100%
rename from sound/vox_fem/killer.ogg
rename to sound/announcer/vox_fem/killer.ogg
diff --git a/sound/vox_fem/kilo.ogg b/sound/announcer/vox_fem/kilo.ogg
similarity index 100%
rename from sound/vox_fem/kilo.ogg
rename to sound/announcer/vox_fem/kilo.ogg
diff --git a/sound/vox_fem/kit.ogg b/sound/announcer/vox_fem/kit.ogg
similarity index 100%
rename from sound/vox_fem/kit.ogg
rename to sound/announcer/vox_fem/kit.ogg
diff --git a/sound/vox_fem/kitchen.ogg b/sound/announcer/vox_fem/kitchen.ogg
similarity index 100%
rename from sound/vox_fem/kitchen.ogg
rename to sound/announcer/vox_fem/kitchen.ogg
diff --git a/sound/vox_fem/l.ogg b/sound/announcer/vox_fem/l.ogg
similarity index 100%
rename from sound/vox_fem/l.ogg
rename to sound/announcer/vox_fem/l.ogg
diff --git a/sound/vox_fem/lab.ogg b/sound/announcer/vox_fem/lab.ogg
similarity index 100%
rename from sound/vox_fem/lab.ogg
rename to sound/announcer/vox_fem/lab.ogg
diff --git a/sound/vox_fem/lambda.ogg b/sound/announcer/vox_fem/lambda.ogg
similarity index 100%
rename from sound/vox_fem/lambda.ogg
rename to sound/announcer/vox_fem/lambda.ogg
diff --git a/sound/vox_fem/large.ogg b/sound/announcer/vox_fem/large.ogg
similarity index 100%
rename from sound/vox_fem/large.ogg
rename to sound/announcer/vox_fem/large.ogg
diff --git a/sound/vox_fem/laser.ogg b/sound/announcer/vox_fem/laser.ogg
similarity index 100%
rename from sound/vox_fem/laser.ogg
rename to sound/announcer/vox_fem/laser.ogg
diff --git a/sound/vox_fem/last.ogg b/sound/announcer/vox_fem/last.ogg
similarity index 100%
rename from sound/vox_fem/last.ogg
rename to sound/announcer/vox_fem/last.ogg
diff --git a/sound/vox_fem/launch.ogg b/sound/announcer/vox_fem/launch.ogg
similarity index 100%
rename from sound/vox_fem/launch.ogg
rename to sound/announcer/vox_fem/launch.ogg
diff --git a/sound/vox_fem/lavaland.ogg b/sound/announcer/vox_fem/lavaland.ogg
similarity index 100%
rename from sound/vox_fem/lavaland.ogg
rename to sound/announcer/vox_fem/lavaland.ogg
diff --git a/sound/vox_fem/law.ogg b/sound/announcer/vox_fem/law.ogg
similarity index 100%
rename from sound/vox_fem/law.ogg
rename to sound/announcer/vox_fem/law.ogg
diff --git a/sound/vox_fem/laws.ogg b/sound/announcer/vox_fem/laws.ogg
similarity index 100%
rename from sound/vox_fem/laws.ogg
rename to sound/announcer/vox_fem/laws.ogg
diff --git a/sound/vox_fem/lawyer.ogg b/sound/announcer/vox_fem/lawyer.ogg
similarity index 100%
rename from sound/vox_fem/lawyer.ogg
rename to sound/announcer/vox_fem/lawyer.ogg
diff --git a/sound/vox_fem/leak.ogg b/sound/announcer/vox_fem/leak.ogg
similarity index 100%
rename from sound/vox_fem/leak.ogg
rename to sound/announcer/vox_fem/leak.ogg
diff --git a/sound/vox_fem/leave.ogg b/sound/announcer/vox_fem/leave.ogg
similarity index 100%
rename from sound/vox_fem/leave.ogg
rename to sound/announcer/vox_fem/leave.ogg
diff --git a/sound/vox_fem/left.ogg b/sound/announcer/vox_fem/left.ogg
similarity index 100%
rename from sound/vox_fem/left.ogg
rename to sound/announcer/vox_fem/left.ogg
diff --git a/sound/vox_fem/legal.ogg b/sound/announcer/vox_fem/legal.ogg
similarity index 100%
rename from sound/vox_fem/legal.ogg
rename to sound/announcer/vox_fem/legal.ogg
diff --git a/sound/vox_fem/level.ogg b/sound/announcer/vox_fem/level.ogg
similarity index 100%
rename from sound/vox_fem/level.ogg
rename to sound/announcer/vox_fem/level.ogg
diff --git a/sound/vox_fem/lever.ogg b/sound/announcer/vox_fem/lever.ogg
similarity index 100%
rename from sound/vox_fem/lever.ogg
rename to sound/announcer/vox_fem/lever.ogg
diff --git a/sound/vox_fem/library.ogg b/sound/announcer/vox_fem/library.ogg
similarity index 100%
rename from sound/vox_fem/library.ogg
rename to sound/announcer/vox_fem/library.ogg
diff --git a/sound/vox_fem/lie.ogg b/sound/announcer/vox_fem/lie.ogg
similarity index 100%
rename from sound/vox_fem/lie.ogg
rename to sound/announcer/vox_fem/lie.ogg
diff --git a/sound/vox_fem/lieutenant.ogg b/sound/announcer/vox_fem/lieutenant.ogg
similarity index 100%
rename from sound/vox_fem/lieutenant.ogg
rename to sound/announcer/vox_fem/lieutenant.ogg
diff --git a/sound/vox_fem/life.ogg b/sound/announcer/vox_fem/life.ogg
similarity index 100%
rename from sound/vox_fem/life.ogg
rename to sound/announcer/vox_fem/life.ogg
diff --git a/sound/vox_fem/lifeform.ogg b/sound/announcer/vox_fem/lifeform.ogg
similarity index 100%
rename from sound/vox_fem/lifeform.ogg
rename to sound/announcer/vox_fem/lifeform.ogg
diff --git a/sound/vox_fem/light.ogg b/sound/announcer/vox_fem/light.ogg
similarity index 100%
rename from sound/vox_fem/light.ogg
rename to sound/announcer/vox_fem/light.ogg
diff --git a/sound/vox_fem/lightbulb.ogg b/sound/announcer/vox_fem/lightbulb.ogg
similarity index 100%
rename from sound/vox_fem/lightbulb.ogg
rename to sound/announcer/vox_fem/lightbulb.ogg
diff --git a/sound/vox_fem/lima.ogg b/sound/announcer/vox_fem/lima.ogg
similarity index 100%
rename from sound/vox_fem/lima.ogg
rename to sound/announcer/vox_fem/lima.ogg
diff --git a/sound/vox_fem/limit.ogg b/sound/announcer/vox_fem/limit.ogg
similarity index 100%
rename from sound/vox_fem/limit.ogg
rename to sound/announcer/vox_fem/limit.ogg
diff --git a/sound/vox_fem/limited.ogg b/sound/announcer/vox_fem/limited.ogg
similarity index 100%
rename from sound/vox_fem/limited.ogg
rename to sound/announcer/vox_fem/limited.ogg
diff --git a/sound/vox_fem/liquid.ogg b/sound/announcer/vox_fem/liquid.ogg
similarity index 100%
rename from sound/vox_fem/liquid.ogg
rename to sound/announcer/vox_fem/liquid.ogg
diff --git a/sound/vox_fem/list.ogg b/sound/announcer/vox_fem/list.ogg
similarity index 100%
rename from sound/vox_fem/list.ogg
rename to sound/announcer/vox_fem/list.ogg
diff --git a/sound/vox_fem/live.ogg b/sound/announcer/vox_fem/live.ogg
similarity index 100%
rename from sound/vox_fem/live.ogg
rename to sound/announcer/vox_fem/live.ogg
diff --git a/sound/vox_fem/live2.ogg b/sound/announcer/vox_fem/live2.ogg
similarity index 100%
rename from sound/vox_fem/live2.ogg
rename to sound/announcer/vox_fem/live2.ogg
diff --git a/sound/vox_fem/lizard.ogg b/sound/announcer/vox_fem/lizard.ogg
similarity index 100%
rename from sound/vox_fem/lizard.ogg
rename to sound/announcer/vox_fem/lizard.ogg
diff --git a/sound/vox_fem/lizardperson.ogg b/sound/announcer/vox_fem/lizardperson.ogg
similarity index 100%
rename from sound/vox_fem/lizardperson.ogg
rename to sound/announcer/vox_fem/lizardperson.ogg
diff --git a/sound/vox_fem/loading.ogg b/sound/announcer/vox_fem/loading.ogg
similarity index 100%
rename from sound/vox_fem/loading.ogg
rename to sound/announcer/vox_fem/loading.ogg
diff --git a/sound/vox_fem/locate.ogg b/sound/announcer/vox_fem/locate.ogg
similarity index 100%
rename from sound/vox_fem/locate.ogg
rename to sound/announcer/vox_fem/locate.ogg
diff --git a/sound/vox_fem/located.ogg b/sound/announcer/vox_fem/located.ogg
similarity index 100%
rename from sound/vox_fem/located.ogg
rename to sound/announcer/vox_fem/located.ogg
diff --git a/sound/vox_fem/location.ogg b/sound/announcer/vox_fem/location.ogg
similarity index 100%
rename from sound/vox_fem/location.ogg
rename to sound/announcer/vox_fem/location.ogg
diff --git a/sound/vox_fem/lock.ogg b/sound/announcer/vox_fem/lock.ogg
similarity index 100%
rename from sound/vox_fem/lock.ogg
rename to sound/announcer/vox_fem/lock.ogg
diff --git a/sound/vox_fem/locked.ogg b/sound/announcer/vox_fem/locked.ogg
similarity index 100%
rename from sound/vox_fem/locked.ogg
rename to sound/announcer/vox_fem/locked.ogg
diff --git a/sound/vox_fem/locker.ogg b/sound/announcer/vox_fem/locker.ogg
similarity index 100%
rename from sound/vox_fem/locker.ogg
rename to sound/announcer/vox_fem/locker.ogg
diff --git a/sound/vox_fem/lockout.ogg b/sound/announcer/vox_fem/lockout.ogg
similarity index 100%
rename from sound/vox_fem/lockout.ogg
rename to sound/announcer/vox_fem/lockout.ogg
diff --git a/sound/vox_fem/long.ogg b/sound/announcer/vox_fem/long.ogg
similarity index 100%
rename from sound/vox_fem/long.ogg
rename to sound/announcer/vox_fem/long.ogg
diff --git a/sound/vox_fem/look.ogg b/sound/announcer/vox_fem/look.ogg
similarity index 100%
rename from sound/vox_fem/look.ogg
rename to sound/announcer/vox_fem/look.ogg
diff --git a/sound/vox_fem/loop.ogg b/sound/announcer/vox_fem/loop.ogg
similarity index 100%
rename from sound/vox_fem/loop.ogg
rename to sound/announcer/vox_fem/loop.ogg
diff --git a/sound/vox_fem/loose.ogg b/sound/announcer/vox_fem/loose.ogg
similarity index 100%
rename from sound/vox_fem/loose.ogg
rename to sound/announcer/vox_fem/loose.ogg
diff --git a/sound/vox_fem/lot.ogg b/sound/announcer/vox_fem/lot.ogg
similarity index 100%
rename from sound/vox_fem/lot.ogg
rename to sound/announcer/vox_fem/lot.ogg
diff --git a/sound/vox_fem/lower.ogg b/sound/announcer/vox_fem/lower.ogg
similarity index 100%
rename from sound/vox_fem/lower.ogg
rename to sound/announcer/vox_fem/lower.ogg
diff --git a/sound/vox_fem/lowest.ogg b/sound/announcer/vox_fem/lowest.ogg
similarity index 100%
rename from sound/vox_fem/lowest.ogg
rename to sound/announcer/vox_fem/lowest.ogg
diff --git a/sound/vox_fem/lusty.ogg b/sound/announcer/vox_fem/lusty.ogg
similarity index 100%
rename from sound/vox_fem/lusty.ogg
rename to sound/announcer/vox_fem/lusty.ogg
diff --git a/sound/vox_fem/m.ogg b/sound/announcer/vox_fem/m.ogg
similarity index 100%
rename from sound/vox_fem/m.ogg
rename to sound/announcer/vox_fem/m.ogg
diff --git a/sound/vox_fem/machine.ogg b/sound/announcer/vox_fem/machine.ogg
similarity index 100%
rename from sound/vox_fem/machine.ogg
rename to sound/announcer/vox_fem/machine.ogg
diff --git a/sound/vox_fem/made.ogg b/sound/announcer/vox_fem/made.ogg
similarity index 100%
rename from sound/vox_fem/made.ogg
rename to sound/announcer/vox_fem/made.ogg
diff --git a/sound/vox_fem/magic.ogg b/sound/announcer/vox_fem/magic.ogg
similarity index 100%
rename from sound/vox_fem/magic.ogg
rename to sound/announcer/vox_fem/magic.ogg
diff --git a/sound/vox_fem/magnetic.ogg b/sound/announcer/vox_fem/magnetic.ogg
similarity index 100%
rename from sound/vox_fem/magnetic.ogg
rename to sound/announcer/vox_fem/magnetic.ogg
diff --git a/sound/vox_fem/main.ogg b/sound/announcer/vox_fem/main.ogg
similarity index 100%
rename from sound/vox_fem/main.ogg
rename to sound/announcer/vox_fem/main.ogg
diff --git a/sound/vox_fem/maintainer.ogg b/sound/announcer/vox_fem/maintainer.ogg
similarity index 100%
rename from sound/vox_fem/maintainer.ogg
rename to sound/announcer/vox_fem/maintainer.ogg
diff --git a/sound/vox_fem/maintenance.ogg b/sound/announcer/vox_fem/maintenance.ogg
similarity index 100%
rename from sound/vox_fem/maintenance.ogg
rename to sound/announcer/vox_fem/maintenance.ogg
diff --git a/sound/vox_fem/major.ogg b/sound/announcer/vox_fem/major.ogg
similarity index 100%
rename from sound/vox_fem/major.ogg
rename to sound/announcer/vox_fem/major.ogg
diff --git a/sound/vox_fem/making.ogg b/sound/announcer/vox_fem/making.ogg
similarity index 100%
rename from sound/vox_fem/making.ogg
rename to sound/announcer/vox_fem/making.ogg
diff --git a/sound/vox_fem/malfunction.ogg b/sound/announcer/vox_fem/malfunction.ogg
similarity index 100%
rename from sound/vox_fem/malfunction.ogg
rename to sound/announcer/vox_fem/malfunction.ogg
diff --git a/sound/vox_fem/man.ogg b/sound/announcer/vox_fem/man.ogg
similarity index 100%
rename from sound/vox_fem/man.ogg
rename to sound/announcer/vox_fem/man.ogg
diff --git a/sound/vox_fem/many.ogg b/sound/announcer/vox_fem/many.ogg
similarity index 100%
rename from sound/vox_fem/many.ogg
rename to sound/announcer/vox_fem/many.ogg
diff --git a/sound/vox_fem/mass.ogg b/sound/announcer/vox_fem/mass.ogg
similarity index 100%
rename from sound/vox_fem/mass.ogg
rename to sound/announcer/vox_fem/mass.ogg
diff --git a/sound/vox_fem/materials.ogg b/sound/announcer/vox_fem/materials.ogg
similarity index 100%
rename from sound/vox_fem/materials.ogg
rename to sound/announcer/vox_fem/materials.ogg
diff --git a/sound/vox_fem/maximum.ogg b/sound/announcer/vox_fem/maximum.ogg
similarity index 100%
rename from sound/vox_fem/maximum.ogg
rename to sound/announcer/vox_fem/maximum.ogg
diff --git a/sound/vox_fem/may.ogg b/sound/announcer/vox_fem/may.ogg
similarity index 100%
rename from sound/vox_fem/may.ogg
rename to sound/announcer/vox_fem/may.ogg
diff --git a/sound/vox_fem/me.ogg b/sound/announcer/vox_fem/me.ogg
similarity index 100%
rename from sound/vox_fem/me.ogg
rename to sound/announcer/vox_fem/me.ogg
diff --git a/sound/vox_fem/mean.ogg b/sound/announcer/vox_fem/mean.ogg
similarity index 100%
rename from sound/vox_fem/mean.ogg
rename to sound/announcer/vox_fem/mean.ogg
diff --git a/sound/vox_fem/means.ogg b/sound/announcer/vox_fem/means.ogg
similarity index 100%
rename from sound/vox_fem/means.ogg
rename to sound/announcer/vox_fem/means.ogg
diff --git a/sound/vox_fem/meat.ogg b/sound/announcer/vox_fem/meat.ogg
similarity index 100%
rename from sound/vox_fem/meat.ogg
rename to sound/announcer/vox_fem/meat.ogg
diff --git a/sound/vox_fem/medbay.ogg b/sound/announcer/vox_fem/medbay.ogg
similarity index 100%
rename from sound/vox_fem/medbay.ogg
rename to sound/announcer/vox_fem/medbay.ogg
diff --git a/sound/vox_fem/medical.ogg b/sound/announcer/vox_fem/medical.ogg
similarity index 100%
rename from sound/vox_fem/medical.ogg
rename to sound/announcer/vox_fem/medical.ogg
diff --git a/sound/vox_fem/medium.ogg b/sound/announcer/vox_fem/medium.ogg
similarity index 100%
rename from sound/vox_fem/medium.ogg
rename to sound/announcer/vox_fem/medium.ogg
diff --git a/sound/vox_fem/megafauna.ogg b/sound/announcer/vox_fem/megafauna.ogg
similarity index 100%
rename from sound/vox_fem/megafauna.ogg
rename to sound/announcer/vox_fem/megafauna.ogg
diff --git a/sound/vox_fem/men.ogg b/sound/announcer/vox_fem/men.ogg
similarity index 100%
rename from sound/vox_fem/men.ogg
rename to sound/announcer/vox_fem/men.ogg
diff --git a/sound/vox_fem/mercy.ogg b/sound/announcer/vox_fem/mercy.ogg
similarity index 100%
rename from sound/vox_fem/mercy.ogg
rename to sound/announcer/vox_fem/mercy.ogg
diff --git a/sound/vox_fem/mesa.ogg b/sound/announcer/vox_fem/mesa.ogg
similarity index 100%
rename from sound/vox_fem/mesa.ogg
rename to sound/announcer/vox_fem/mesa.ogg
diff --git a/sound/vox_fem/meson.ogg b/sound/announcer/vox_fem/meson.ogg
similarity index 100%
rename from sound/vox_fem/meson.ogg
rename to sound/announcer/vox_fem/meson.ogg
diff --git a/sound/vox_fem/message.ogg b/sound/announcer/vox_fem/message.ogg
similarity index 100%
rename from sound/vox_fem/message.ogg
rename to sound/announcer/vox_fem/message.ogg
diff --git a/sound/vox_fem/meter.ogg b/sound/announcer/vox_fem/meter.ogg
similarity index 100%
rename from sound/vox_fem/meter.ogg
rename to sound/announcer/vox_fem/meter.ogg
diff --git a/sound/vox_fem/method.ogg b/sound/announcer/vox_fem/method.ogg
similarity index 100%
rename from sound/vox_fem/method.ogg
rename to sound/announcer/vox_fem/method.ogg
diff --git a/sound/vox_fem/miasma.ogg b/sound/announcer/vox_fem/miasma.ogg
similarity index 100%
rename from sound/vox_fem/miasma.ogg
rename to sound/announcer/vox_fem/miasma.ogg
diff --git a/sound/vox_fem/micro.ogg b/sound/announcer/vox_fem/micro.ogg
similarity index 100%
rename from sound/vox_fem/micro.ogg
rename to sound/announcer/vox_fem/micro.ogg
diff --git a/sound/vox_fem/middle.ogg b/sound/announcer/vox_fem/middle.ogg
similarity index 100%
rename from sound/vox_fem/middle.ogg
rename to sound/announcer/vox_fem/middle.ogg
diff --git a/sound/vox_fem/mike.ogg b/sound/announcer/vox_fem/mike.ogg
similarity index 100%
rename from sound/vox_fem/mike.ogg
rename to sound/announcer/vox_fem/mike.ogg
diff --git a/sound/vox_fem/miles.ogg b/sound/announcer/vox_fem/miles.ogg
similarity index 100%
rename from sound/vox_fem/miles.ogg
rename to sound/announcer/vox_fem/miles.ogg
diff --git a/sound/vox_fem/military.ogg b/sound/announcer/vox_fem/military.ogg
similarity index 100%
rename from sound/vox_fem/military.ogg
rename to sound/announcer/vox_fem/military.ogg
diff --git a/sound/vox_fem/milli.ogg b/sound/announcer/vox_fem/milli.ogg
similarity index 100%
rename from sound/vox_fem/milli.ogg
rename to sound/announcer/vox_fem/milli.ogg
diff --git a/sound/vox_fem/million.ogg b/sound/announcer/vox_fem/million.ogg
similarity index 100%
rename from sound/vox_fem/million.ogg
rename to sound/announcer/vox_fem/million.ogg
diff --git a/sound/vox_fem/mime.ogg b/sound/announcer/vox_fem/mime.ogg
similarity index 100%
rename from sound/vox_fem/mime.ogg
rename to sound/announcer/vox_fem/mime.ogg
diff --git a/sound/vox_fem/minefield.ogg b/sound/announcer/vox_fem/minefield.ogg
similarity index 100%
rename from sound/vox_fem/minefield.ogg
rename to sound/announcer/vox_fem/minefield.ogg
diff --git a/sound/vox_fem/miner.ogg b/sound/announcer/vox_fem/miner.ogg
similarity index 100%
rename from sound/vox_fem/miner.ogg
rename to sound/announcer/vox_fem/miner.ogg
diff --git a/sound/vox_fem/minimum.ogg b/sound/announcer/vox_fem/minimum.ogg
similarity index 100%
rename from sound/vox_fem/minimum.ogg
rename to sound/announcer/vox_fem/minimum.ogg
diff --git a/sound/vox_fem/minor.ogg b/sound/announcer/vox_fem/minor.ogg
similarity index 100%
rename from sound/vox_fem/minor.ogg
rename to sound/announcer/vox_fem/minor.ogg
diff --git a/sound/vox_fem/minute.ogg b/sound/announcer/vox_fem/minute.ogg
similarity index 100%
rename from sound/vox_fem/minute.ogg
rename to sound/announcer/vox_fem/minute.ogg
diff --git a/sound/vox_fem/minutes.ogg b/sound/announcer/vox_fem/minutes.ogg
similarity index 100%
rename from sound/vox_fem/minutes.ogg
rename to sound/announcer/vox_fem/minutes.ogg
diff --git a/sound/vox_fem/mister.ogg b/sound/announcer/vox_fem/mister.ogg
similarity index 100%
rename from sound/vox_fem/mister.ogg
rename to sound/announcer/vox_fem/mister.ogg
diff --git a/sound/vox_fem/mixture.ogg b/sound/announcer/vox_fem/mixture.ogg
similarity index 100%
rename from sound/vox_fem/mixture.ogg
rename to sound/announcer/vox_fem/mixture.ogg
diff --git a/sound/vox_fem/mode.ogg b/sound/announcer/vox_fem/mode.ogg
similarity index 100%
rename from sound/vox_fem/mode.ogg
rename to sound/announcer/vox_fem/mode.ogg
diff --git a/sound/vox_fem/modification.ogg b/sound/announcer/vox_fem/modification.ogg
similarity index 100%
rename from sound/vox_fem/modification.ogg
rename to sound/announcer/vox_fem/modification.ogg
diff --git a/sound/vox_fem/money.ogg b/sound/announcer/vox_fem/money.ogg
similarity index 100%
rename from sound/vox_fem/money.ogg
rename to sound/announcer/vox_fem/money.ogg
diff --git a/sound/vox_fem/monkey.ogg b/sound/announcer/vox_fem/monkey.ogg
similarity index 100%
rename from sound/vox_fem/monkey.ogg
rename to sound/announcer/vox_fem/monkey.ogg
diff --git a/sound/vox_fem/most.ogg b/sound/announcer/vox_fem/most.ogg
similarity index 100%
rename from sound/vox_fem/most.ogg
rename to sound/announcer/vox_fem/most.ogg
diff --git a/sound/vox_fem/moth.ogg b/sound/announcer/vox_fem/moth.ogg
similarity index 100%
rename from sound/vox_fem/moth.ogg
rename to sound/announcer/vox_fem/moth.ogg
diff --git a/sound/vox_fem/mothperson.ogg b/sound/announcer/vox_fem/mothperson.ogg
similarity index 100%
rename from sound/vox_fem/mothperson.ogg
rename to sound/announcer/vox_fem/mothperson.ogg
diff --git a/sound/vox_fem/motor.ogg b/sound/announcer/vox_fem/motor.ogg
similarity index 100%
rename from sound/vox_fem/motor.ogg
rename to sound/announcer/vox_fem/motor.ogg
diff --git a/sound/vox_fem/motorpool.ogg b/sound/announcer/vox_fem/motorpool.ogg
similarity index 100%
rename from sound/vox_fem/motorpool.ogg
rename to sound/announcer/vox_fem/motorpool.ogg
diff --git a/sound/vox_fem/move.ogg b/sound/announcer/vox_fem/move.ogg
similarity index 100%
rename from sound/vox_fem/move.ogg
rename to sound/announcer/vox_fem/move.ogg
diff --git a/sound/vox_fem/moved.ogg b/sound/announcer/vox_fem/moved.ogg
similarity index 100%
rename from sound/vox_fem/moved.ogg
rename to sound/announcer/vox_fem/moved.ogg
diff --git a/sound/vox_fem/moving.ogg b/sound/announcer/vox_fem/moving.ogg
similarity index 100%
rename from sound/vox_fem/moving.ogg
rename to sound/announcer/vox_fem/moving.ogg
diff --git a/sound/vox_fem/multitude.ogg b/sound/announcer/vox_fem/multitude.ogg
similarity index 100%
rename from sound/vox_fem/multitude.ogg
rename to sound/announcer/vox_fem/multitude.ogg
diff --git a/sound/vox_fem/murder.ogg b/sound/announcer/vox_fem/murder.ogg
similarity index 100%
rename from sound/vox_fem/murder.ogg
rename to sound/announcer/vox_fem/murder.ogg
diff --git a/sound/vox_fem/murderer.ogg b/sound/announcer/vox_fem/murderer.ogg
similarity index 100%
rename from sound/vox_fem/murderer.ogg
rename to sound/announcer/vox_fem/murderer.ogg
diff --git a/sound/vox_fem/must.ogg b/sound/announcer/vox_fem/must.ogg
similarity index 100%
rename from sound/vox_fem/must.ogg
rename to sound/announcer/vox_fem/must.ogg
diff --git a/sound/vox_fem/my.ogg b/sound/announcer/vox_fem/my.ogg
similarity index 100%
rename from sound/vox_fem/my.ogg
rename to sound/announcer/vox_fem/my.ogg
diff --git a/sound/vox_fem/mythic.ogg b/sound/announcer/vox_fem/mythic.ogg
similarity index 100%
rename from sound/vox_fem/mythic.ogg
rename to sound/announcer/vox_fem/mythic.ogg
diff --git a/sound/vox_fem/n.ogg b/sound/announcer/vox_fem/n.ogg
similarity index 100%
rename from sound/vox_fem/n.ogg
rename to sound/announcer/vox_fem/n.ogg
diff --git a/sound/vox_fem/nanotrasen.ogg b/sound/announcer/vox_fem/nanotrasen.ogg
similarity index 100%
rename from sound/vox_fem/nanotrasen.ogg
rename to sound/announcer/vox_fem/nanotrasen.ogg
diff --git a/sound/vox_fem/near.ogg b/sound/announcer/vox_fem/near.ogg
similarity index 100%
rename from sound/vox_fem/near.ogg
rename to sound/announcer/vox_fem/near.ogg
diff --git a/sound/vox_fem/nearest.ogg b/sound/announcer/vox_fem/nearest.ogg
similarity index 100%
rename from sound/vox_fem/nearest.ogg
rename to sound/announcer/vox_fem/nearest.ogg
diff --git a/sound/vox_fem/nearly.ogg b/sound/announcer/vox_fem/nearly.ogg
similarity index 100%
rename from sound/vox_fem/nearly.ogg
rename to sound/announcer/vox_fem/nearly.ogg
diff --git a/sound/vox_fem/need.ogg b/sound/announcer/vox_fem/need.ogg
similarity index 100%
rename from sound/vox_fem/need.ogg
rename to sound/announcer/vox_fem/need.ogg
diff --git a/sound/vox_fem/never.ogg b/sound/announcer/vox_fem/never.ogg
similarity index 100%
rename from sound/vox_fem/never.ogg
rename to sound/announcer/vox_fem/never.ogg
diff --git a/sound/vox_fem/nice.ogg b/sound/announcer/vox_fem/nice.ogg
similarity index 100%
rename from sound/vox_fem/nice.ogg
rename to sound/announcer/vox_fem/nice.ogg
diff --git a/sound/vox_fem/night.ogg b/sound/announcer/vox_fem/night.ogg
similarity index 100%
rename from sound/vox_fem/night.ogg
rename to sound/announcer/vox_fem/night.ogg
diff --git a/sound/vox_fem/nine.ogg b/sound/announcer/vox_fem/nine.ogg
similarity index 100%
rename from sound/vox_fem/nine.ogg
rename to sound/announcer/vox_fem/nine.ogg
diff --git a/sound/vox_fem/nineteen.ogg b/sound/announcer/vox_fem/nineteen.ogg
similarity index 100%
rename from sound/vox_fem/nineteen.ogg
rename to sound/announcer/vox_fem/nineteen.ogg
diff --git a/sound/vox_fem/ninety.ogg b/sound/announcer/vox_fem/ninety.ogg
similarity index 100%
rename from sound/vox_fem/ninety.ogg
rename to sound/announcer/vox_fem/ninety.ogg
diff --git a/sound/vox_fem/nitrogen.ogg b/sound/announcer/vox_fem/nitrogen.ogg
similarity index 100%
rename from sound/vox_fem/nitrogen.ogg
rename to sound/announcer/vox_fem/nitrogen.ogg
diff --git a/sound/vox_fem/no.ogg b/sound/announcer/vox_fem/no.ogg
similarity index 100%
rename from sound/vox_fem/no.ogg
rename to sound/announcer/vox_fem/no.ogg
diff --git a/sound/vox_fem/nominal.ogg b/sound/announcer/vox_fem/nominal.ogg
similarity index 100%
rename from sound/vox_fem/nominal.ogg
rename to sound/announcer/vox_fem/nominal.ogg
diff --git a/sound/vox_fem/none.ogg b/sound/announcer/vox_fem/none.ogg
similarity index 100%
rename from sound/vox_fem/none.ogg
rename to sound/announcer/vox_fem/none.ogg
diff --git a/sound/vox_fem/normal.ogg b/sound/announcer/vox_fem/normal.ogg
similarity index 100%
rename from sound/vox_fem/normal.ogg
rename to sound/announcer/vox_fem/normal.ogg
diff --git a/sound/vox_fem/normally.ogg b/sound/announcer/vox_fem/normally.ogg
similarity index 100%
rename from sound/vox_fem/normally.ogg
rename to sound/announcer/vox_fem/normally.ogg
diff --git a/sound/vox_fem/north.ogg b/sound/announcer/vox_fem/north.ogg
similarity index 100%
rename from sound/vox_fem/north.ogg
rename to sound/announcer/vox_fem/north.ogg
diff --git a/sound/vox_fem/northeast.ogg b/sound/announcer/vox_fem/northeast.ogg
similarity index 100%
rename from sound/vox_fem/northeast.ogg
rename to sound/announcer/vox_fem/northeast.ogg
diff --git a/sound/vox_fem/northwest.ogg b/sound/announcer/vox_fem/northwest.ogg
similarity index 100%
rename from sound/vox_fem/northwest.ogg
rename to sound/announcer/vox_fem/northwest.ogg
diff --git a/sound/vox_fem/not.ogg b/sound/announcer/vox_fem/not.ogg
similarity index 100%
rename from sound/vox_fem/not.ogg
rename to sound/announcer/vox_fem/not.ogg
diff --git a/sound/vox_fem/notably.ogg b/sound/announcer/vox_fem/notably.ogg
similarity index 100%
rename from sound/vox_fem/notably.ogg
rename to sound/announcer/vox_fem/notably.ogg
diff --git a/sound/vox_fem/november.ogg b/sound/announcer/vox_fem/november.ogg
similarity index 100%
rename from sound/vox_fem/november.ogg
rename to sound/announcer/vox_fem/november.ogg
diff --git a/sound/vox_fem/now.ogg b/sound/announcer/vox_fem/now.ogg
similarity index 100%
rename from sound/vox_fem/now.ogg
rename to sound/announcer/vox_fem/now.ogg
diff --git a/sound/vox_fem/nuclear.ogg b/sound/announcer/vox_fem/nuclear.ogg
similarity index 100%
rename from sound/vox_fem/nuclear.ogg
rename to sound/announcer/vox_fem/nuclear.ogg
diff --git a/sound/vox_fem/nuke.ogg b/sound/announcer/vox_fem/nuke.ogg
similarity index 100%
rename from sound/vox_fem/nuke.ogg
rename to sound/announcer/vox_fem/nuke.ogg
diff --git a/sound/vox_fem/number.ogg b/sound/announcer/vox_fem/number.ogg
similarity index 100%
rename from sound/vox_fem/number.ogg
rename to sound/announcer/vox_fem/number.ogg
diff --git a/sound/vox_fem/o.ogg b/sound/announcer/vox_fem/o.ogg
similarity index 100%
rename from sound/vox_fem/o.ogg
rename to sound/announcer/vox_fem/o.ogg
diff --git a/sound/vox_fem/object.ogg b/sound/announcer/vox_fem/object.ogg
similarity index 100%
rename from sound/vox_fem/object.ogg
rename to sound/announcer/vox_fem/object.ogg
diff --git a/sound/vox_fem/objective.ogg b/sound/announcer/vox_fem/objective.ogg
similarity index 100%
rename from sound/vox_fem/objective.ogg
rename to sound/announcer/vox_fem/objective.ogg
diff --git a/sound/vox_fem/obliterate.ogg b/sound/announcer/vox_fem/obliterate.ogg
similarity index 100%
rename from sound/vox_fem/obliterate.ogg
rename to sound/announcer/vox_fem/obliterate.ogg
diff --git a/sound/vox_fem/obliterated.ogg b/sound/announcer/vox_fem/obliterated.ogg
similarity index 100%
rename from sound/vox_fem/obliterated.ogg
rename to sound/announcer/vox_fem/obliterated.ogg
diff --git a/sound/vox_fem/obliterating.ogg b/sound/announcer/vox_fem/obliterating.ogg
similarity index 100%
rename from sound/vox_fem/obliterating.ogg
rename to sound/announcer/vox_fem/obliterating.ogg
diff --git a/sound/vox_fem/observation.ogg b/sound/announcer/vox_fem/observation.ogg
similarity index 100%
rename from sound/vox_fem/observation.ogg
rename to sound/announcer/vox_fem/observation.ogg
diff --git a/sound/vox_fem/obtain.ogg b/sound/announcer/vox_fem/obtain.ogg
similarity index 100%
rename from sound/vox_fem/obtain.ogg
rename to sound/announcer/vox_fem/obtain.ogg
diff --git a/sound/vox_fem/of.ogg b/sound/announcer/vox_fem/of.ogg
similarity index 100%
rename from sound/vox_fem/of.ogg
rename to sound/announcer/vox_fem/of.ogg
diff --git a/sound/vox_fem/off.ogg b/sound/announcer/vox_fem/off.ogg
similarity index 100%
rename from sound/vox_fem/off.ogg
rename to sound/announcer/vox_fem/off.ogg
diff --git a/sound/vox_fem/office.ogg b/sound/announcer/vox_fem/office.ogg
similarity index 100%
rename from sound/vox_fem/office.ogg
rename to sound/announcer/vox_fem/office.ogg
diff --git a/sound/vox_fem/officer.ogg b/sound/announcer/vox_fem/officer.ogg
similarity index 100%
rename from sound/vox_fem/officer.ogg
rename to sound/announcer/vox_fem/officer.ogg
diff --git a/sound/vox_fem/oh.ogg b/sound/announcer/vox_fem/oh.ogg
similarity index 100%
rename from sound/vox_fem/oh.ogg
rename to sound/announcer/vox_fem/oh.ogg
diff --git a/sound/vox_fem/ok.ogg b/sound/announcer/vox_fem/ok.ogg
similarity index 100%
rename from sound/vox_fem/ok.ogg
rename to sound/announcer/vox_fem/ok.ogg
diff --git a/sound/vox_fem/okay.ogg b/sound/announcer/vox_fem/okay.ogg
similarity index 100%
rename from sound/vox_fem/okay.ogg
rename to sound/announcer/vox_fem/okay.ogg
diff --git a/sound/vox_fem/on.ogg b/sound/announcer/vox_fem/on.ogg
similarity index 100%
rename from sound/vox_fem/on.ogg
rename to sound/announcer/vox_fem/on.ogg
diff --git a/sound/vox_fem/once.ogg b/sound/announcer/vox_fem/once.ogg
similarity index 100%
rename from sound/vox_fem/once.ogg
rename to sound/announcer/vox_fem/once.ogg
diff --git a/sound/vox_fem/one.ogg b/sound/announcer/vox_fem/one.ogg
similarity index 100%
rename from sound/vox_fem/one.ogg
rename to sound/announcer/vox_fem/one.ogg
diff --git a/sound/vox_fem/oof.ogg b/sound/announcer/vox_fem/oof.ogg
similarity index 100%
rename from sound/vox_fem/oof.ogg
rename to sound/announcer/vox_fem/oof.ogg
diff --git a/sound/vox_fem/open.ogg b/sound/announcer/vox_fem/open.ogg
similarity index 100%
rename from sound/vox_fem/open.ogg
rename to sound/announcer/vox_fem/open.ogg
diff --git a/sound/vox_fem/opened.ogg b/sound/announcer/vox_fem/opened.ogg
similarity index 100%
rename from sound/vox_fem/opened.ogg
rename to sound/announcer/vox_fem/opened.ogg
diff --git a/sound/vox_fem/opening.ogg b/sound/announcer/vox_fem/opening.ogg
similarity index 100%
rename from sound/vox_fem/opening.ogg
rename to sound/announcer/vox_fem/opening.ogg
diff --git a/sound/vox_fem/operating.ogg b/sound/announcer/vox_fem/operating.ogg
similarity index 100%
rename from sound/vox_fem/operating.ogg
rename to sound/announcer/vox_fem/operating.ogg
diff --git a/sound/vox_fem/operations.ogg b/sound/announcer/vox_fem/operations.ogg
similarity index 100%
rename from sound/vox_fem/operations.ogg
rename to sound/announcer/vox_fem/operations.ogg
diff --git a/sound/vox_fem/operative.ogg b/sound/announcer/vox_fem/operative.ogg
similarity index 100%
rename from sound/vox_fem/operative.ogg
rename to sound/announcer/vox_fem/operative.ogg
diff --git a/sound/vox_fem/option.ogg b/sound/announcer/vox_fem/option.ogg
similarity index 100%
rename from sound/vox_fem/option.ogg
rename to sound/announcer/vox_fem/option.ogg
diff --git a/sound/vox_fem/or.ogg b/sound/announcer/vox_fem/or.ogg
similarity index 100%
rename from sound/vox_fem/or.ogg
rename to sound/announcer/vox_fem/or.ogg
diff --git a/sound/vox_fem/order.ogg b/sound/announcer/vox_fem/order.ogg
similarity index 100%
rename from sound/vox_fem/order.ogg
rename to sound/announcer/vox_fem/order.ogg
diff --git a/sound/vox_fem/ordered.ogg b/sound/announcer/vox_fem/ordered.ogg
similarity index 100%
rename from sound/vox_fem/ordered.ogg
rename to sound/announcer/vox_fem/ordered.ogg
diff --git a/sound/vox_fem/ordering.ogg b/sound/announcer/vox_fem/ordering.ogg
similarity index 100%
rename from sound/vox_fem/ordering.ogg
rename to sound/announcer/vox_fem/ordering.ogg
diff --git a/sound/vox_fem/organic.ogg b/sound/announcer/vox_fem/organic.ogg
similarity index 100%
rename from sound/vox_fem/organic.ogg
rename to sound/announcer/vox_fem/organic.ogg
diff --git a/sound/vox_fem/oscar.ogg b/sound/announcer/vox_fem/oscar.ogg
similarity index 100%
rename from sound/vox_fem/oscar.ogg
rename to sound/announcer/vox_fem/oscar.ogg
diff --git a/sound/vox_fem/out.ogg b/sound/announcer/vox_fem/out.ogg
similarity index 100%
rename from sound/vox_fem/out.ogg
rename to sound/announcer/vox_fem/out.ogg
diff --git a/sound/vox_fem/output.ogg b/sound/announcer/vox_fem/output.ogg
similarity index 100%
rename from sound/vox_fem/output.ogg
rename to sound/announcer/vox_fem/output.ogg
diff --git a/sound/vox_fem/outside.ogg b/sound/announcer/vox_fem/outside.ogg
similarity index 100%
rename from sound/vox_fem/outside.ogg
rename to sound/announcer/vox_fem/outside.ogg
diff --git a/sound/vox_fem/over.ogg b/sound/announcer/vox_fem/over.ogg
similarity index 100%
rename from sound/vox_fem/over.ogg
rename to sound/announcer/vox_fem/over.ogg
diff --git a/sound/vox_fem/overload.ogg b/sound/announcer/vox_fem/overload.ogg
similarity index 100%
rename from sound/vox_fem/overload.ogg
rename to sound/announcer/vox_fem/overload.ogg
diff --git a/sound/vox_fem/override.ogg b/sound/announcer/vox_fem/override.ogg
similarity index 100%
rename from sound/vox_fem/override.ogg
rename to sound/announcer/vox_fem/override.ogg
diff --git a/sound/vox_fem/own.ogg b/sound/announcer/vox_fem/own.ogg
similarity index 100%
rename from sound/vox_fem/own.ogg
rename to sound/announcer/vox_fem/own.ogg
diff --git a/sound/vox_fem/oxygen.ogg b/sound/announcer/vox_fem/oxygen.ogg
similarity index 100%
rename from sound/vox_fem/oxygen.ogg
rename to sound/announcer/vox_fem/oxygen.ogg
diff --git a/sound/vox_fem/p.ogg b/sound/announcer/vox_fem/p.ogg
similarity index 100%
rename from sound/vox_fem/p.ogg
rename to sound/announcer/vox_fem/p.ogg
diff --git a/sound/vox_fem/pacification.ogg b/sound/announcer/vox_fem/pacification.ogg
similarity index 100%
rename from sound/vox_fem/pacification.ogg
rename to sound/announcer/vox_fem/pacification.ogg
diff --git a/sound/vox_fem/pacify.ogg b/sound/announcer/vox_fem/pacify.ogg
similarity index 100%
rename from sound/vox_fem/pacify.ogg
rename to sound/announcer/vox_fem/pacify.ogg
diff --git a/sound/vox_fem/pain.ogg b/sound/announcer/vox_fem/pain.ogg
similarity index 100%
rename from sound/vox_fem/pain.ogg
rename to sound/announcer/vox_fem/pain.ogg
diff --git a/sound/vox_fem/pal.ogg b/sound/announcer/vox_fem/pal.ogg
similarity index 100%
rename from sound/vox_fem/pal.ogg
rename to sound/announcer/vox_fem/pal.ogg
diff --git a/sound/vox_fem/panel.ogg b/sound/announcer/vox_fem/panel.ogg
similarity index 100%
rename from sound/vox_fem/panel.ogg
rename to sound/announcer/vox_fem/panel.ogg
diff --git a/sound/vox_fem/panting.ogg b/sound/announcer/vox_fem/panting.ogg
similarity index 100%
rename from sound/vox_fem/panting.ogg
rename to sound/announcer/vox_fem/panting.ogg
diff --git a/sound/vox_fem/pathetic.ogg b/sound/announcer/vox_fem/pathetic.ogg
similarity index 100%
rename from sound/vox_fem/pathetic.ogg
rename to sound/announcer/vox_fem/pathetic.ogg
diff --git a/sound/vox_fem/pda.ogg b/sound/announcer/vox_fem/pda.ogg
similarity index 100%
rename from sound/vox_fem/pda.ogg
rename to sound/announcer/vox_fem/pda.ogg
diff --git a/sound/vox_fem/percent.ogg b/sound/announcer/vox_fem/percent.ogg
similarity index 100%
rename from sound/vox_fem/percent.ogg
rename to sound/announcer/vox_fem/percent.ogg
diff --git a/sound/vox_fem/perfect.ogg b/sound/announcer/vox_fem/perfect.ogg
similarity index 100%
rename from sound/vox_fem/perfect.ogg
rename to sound/announcer/vox_fem/perfect.ogg
diff --git a/sound/vox_fem/perhaps.ogg b/sound/announcer/vox_fem/perhaps.ogg
similarity index 100%
rename from sound/vox_fem/perhaps.ogg
rename to sound/announcer/vox_fem/perhaps.ogg
diff --git a/sound/vox_fem/perimeter.ogg b/sound/announcer/vox_fem/perimeter.ogg
similarity index 100%
rename from sound/vox_fem/perimeter.ogg
rename to sound/announcer/vox_fem/perimeter.ogg
diff --git a/sound/vox_fem/permitted.ogg b/sound/announcer/vox_fem/permitted.ogg
similarity index 100%
rename from sound/vox_fem/permitted.ogg
rename to sound/announcer/vox_fem/permitted.ogg
diff --git a/sound/vox_fem/personal.ogg b/sound/announcer/vox_fem/personal.ogg
similarity index 100%
rename from sound/vox_fem/personal.ogg
rename to sound/announcer/vox_fem/personal.ogg
diff --git a/sound/vox_fem/personnel.ogg b/sound/announcer/vox_fem/personnel.ogg
similarity index 100%
rename from sound/vox_fem/personnel.ogg
rename to sound/announcer/vox_fem/personnel.ogg
diff --git a/sound/vox_fem/pipe.ogg b/sound/announcer/vox_fem/pipe.ogg
similarity index 100%
rename from sound/vox_fem/pipe.ogg
rename to sound/announcer/vox_fem/pipe.ogg
diff --git a/sound/vox_fem/piping.ogg b/sound/announcer/vox_fem/piping.ogg
similarity index 100%
rename from sound/vox_fem/piping.ogg
rename to sound/announcer/vox_fem/piping.ogg
diff --git a/sound/vox_fem/piss.ogg b/sound/announcer/vox_fem/piss.ogg
similarity index 100%
rename from sound/vox_fem/piss.ogg
rename to sound/announcer/vox_fem/piss.ogg
diff --git a/sound/vox_fem/plant.ogg b/sound/announcer/vox_fem/plant.ogg
similarity index 100%
rename from sound/vox_fem/plant.ogg
rename to sound/announcer/vox_fem/plant.ogg
diff --git a/sound/vox_fem/plasma.ogg b/sound/announcer/vox_fem/plasma.ogg
similarity index 100%
rename from sound/vox_fem/plasma.ogg
rename to sound/announcer/vox_fem/plasma.ogg
diff --git a/sound/vox_fem/plasmaman.ogg b/sound/announcer/vox_fem/plasmaman.ogg
similarity index 100%
rename from sound/vox_fem/plasmaman.ogg
rename to sound/announcer/vox_fem/plasmaman.ogg
diff --git a/sound/vox_fem/platform.ogg b/sound/announcer/vox_fem/platform.ogg
similarity index 100%
rename from sound/vox_fem/platform.ogg
rename to sound/announcer/vox_fem/platform.ogg
diff --git a/sound/vox_fem/plating.ogg b/sound/announcer/vox_fem/plating.ogg
similarity index 100%
rename from sound/vox_fem/plating.ogg
rename to sound/announcer/vox_fem/plating.ogg
diff --git a/sound/vox_fem/plausible.ogg b/sound/announcer/vox_fem/plausible.ogg
similarity index 100%
rename from sound/vox_fem/plausible.ogg
rename to sound/announcer/vox_fem/plausible.ogg
diff --git a/sound/vox_fem/please.ogg b/sound/announcer/vox_fem/please.ogg
similarity index 100%
rename from sound/vox_fem/please.ogg
rename to sound/announcer/vox_fem/please.ogg
diff --git a/sound/vox_fem/pluoxium.ogg b/sound/announcer/vox_fem/pluoxium.ogg
similarity index 100%
rename from sound/vox_fem/pluoxium.ogg
rename to sound/announcer/vox_fem/pluoxium.ogg
diff --git a/sound/vox_fem/point.ogg b/sound/announcer/vox_fem/point.ogg
similarity index 100%
rename from sound/vox_fem/point.ogg
rename to sound/announcer/vox_fem/point.ogg
diff --git a/sound/vox_fem/port.ogg b/sound/announcer/vox_fem/port.ogg
similarity index 100%
rename from sound/vox_fem/port.ogg
rename to sound/announcer/vox_fem/port.ogg
diff --git a/sound/vox_fem/portal.ogg b/sound/announcer/vox_fem/portal.ogg
similarity index 100%
rename from sound/vox_fem/portal.ogg
rename to sound/announcer/vox_fem/portal.ogg
diff --git a/sound/vox_fem/portion.ogg b/sound/announcer/vox_fem/portion.ogg
similarity index 100%
rename from sound/vox_fem/portion.ogg
rename to sound/announcer/vox_fem/portion.ogg
diff --git a/sound/vox_fem/possible.ogg b/sound/announcer/vox_fem/possible.ogg
similarity index 100%
rename from sound/vox_fem/possible.ogg
rename to sound/announcer/vox_fem/possible.ogg
diff --git a/sound/vox_fem/power.ogg b/sound/announcer/vox_fem/power.ogg
similarity index 100%
rename from sound/vox_fem/power.ogg
rename to sound/announcer/vox_fem/power.ogg
diff --git a/sound/vox_fem/powered.ogg b/sound/announcer/vox_fem/powered.ogg
similarity index 100%
rename from sound/vox_fem/powered.ogg
rename to sound/announcer/vox_fem/powered.ogg
diff --git a/sound/vox_fem/powering.ogg b/sound/announcer/vox_fem/powering.ogg
similarity index 100%
rename from sound/vox_fem/powering.ogg
rename to sound/announcer/vox_fem/powering.ogg
diff --git a/sound/vox_fem/premature.ogg b/sound/announcer/vox_fem/premature.ogg
similarity index 100%
rename from sound/vox_fem/premature.ogg
rename to sound/announcer/vox_fem/premature.ogg
diff --git a/sound/vox_fem/prematurely.ogg b/sound/announcer/vox_fem/prematurely.ogg
similarity index 100%
rename from sound/vox_fem/prematurely.ogg
rename to sound/announcer/vox_fem/prematurely.ogg
diff --git a/sound/vox_fem/presence.ogg b/sound/announcer/vox_fem/presence.ogg
similarity index 100%
rename from sound/vox_fem/presence.ogg
rename to sound/announcer/vox_fem/presence.ogg
diff --git a/sound/vox_fem/present.ogg b/sound/announcer/vox_fem/present.ogg
similarity index 100%
rename from sound/vox_fem/present.ogg
rename to sound/announcer/vox_fem/present.ogg
diff --git a/sound/vox_fem/presents.ogg b/sound/announcer/vox_fem/presents.ogg
similarity index 100%
rename from sound/vox_fem/presents.ogg
rename to sound/announcer/vox_fem/presents.ogg
diff --git a/sound/vox_fem/press.ogg b/sound/announcer/vox_fem/press.ogg
similarity index 100%
rename from sound/vox_fem/press.ogg
rename to sound/announcer/vox_fem/press.ogg
diff --git a/sound/vox_fem/pressure.ogg b/sound/announcer/vox_fem/pressure.ogg
similarity index 100%
rename from sound/vox_fem/pressure.ogg
rename to sound/announcer/vox_fem/pressure.ogg
diff --git a/sound/vox_fem/primary.ogg b/sound/announcer/vox_fem/primary.ogg
similarity index 100%
rename from sound/vox_fem/primary.ogg
rename to sound/announcer/vox_fem/primary.ogg
diff --git a/sound/vox_fem/priority.ogg b/sound/announcer/vox_fem/priority.ogg
similarity index 100%
rename from sound/vox_fem/priority.ogg
rename to sound/announcer/vox_fem/priority.ogg
diff --git a/sound/vox_fem/prison.ogg b/sound/announcer/vox_fem/prison.ogg
similarity index 100%
rename from sound/vox_fem/prison.ogg
rename to sound/announcer/vox_fem/prison.ogg
diff --git a/sound/vox_fem/prisoner.ogg b/sound/announcer/vox_fem/prisoner.ogg
similarity index 100%
rename from sound/vox_fem/prisoner.ogg
rename to sound/announcer/vox_fem/prisoner.ogg
diff --git a/sound/vox_fem/proceed.ogg b/sound/announcer/vox_fem/proceed.ogg
similarity index 100%
rename from sound/vox_fem/proceed.ogg
rename to sound/announcer/vox_fem/proceed.ogg
diff --git a/sound/vox_fem/processing.ogg b/sound/announcer/vox_fem/processing.ogg
similarity index 100%
rename from sound/vox_fem/processing.ogg
rename to sound/announcer/vox_fem/processing.ogg
diff --git a/sound/vox_fem/progress.ogg b/sound/announcer/vox_fem/progress.ogg
similarity index 100%
rename from sound/vox_fem/progress.ogg
rename to sound/announcer/vox_fem/progress.ogg
diff --git a/sound/vox_fem/projectile.ogg b/sound/announcer/vox_fem/projectile.ogg
similarity index 100%
rename from sound/vox_fem/projectile.ogg
rename to sound/announcer/vox_fem/projectile.ogg
diff --git a/sound/vox_fem/proper.ogg b/sound/announcer/vox_fem/proper.ogg
similarity index 100%
rename from sound/vox_fem/proper.ogg
rename to sound/announcer/vox_fem/proper.ogg
diff --git a/sound/vox_fem/propulsion.ogg b/sound/announcer/vox_fem/propulsion.ogg
similarity index 100%
rename from sound/vox_fem/propulsion.ogg
rename to sound/announcer/vox_fem/propulsion.ogg
diff --git a/sound/vox_fem/prosecute.ogg b/sound/announcer/vox_fem/prosecute.ogg
similarity index 100%
rename from sound/vox_fem/prosecute.ogg
rename to sound/announcer/vox_fem/prosecute.ogg
diff --git a/sound/vox_fem/protect.ogg b/sound/announcer/vox_fem/protect.ogg
similarity index 100%
rename from sound/vox_fem/protect.ogg
rename to sound/announcer/vox_fem/protect.ogg
diff --git a/sound/vox_fem/protected.ogg b/sound/announcer/vox_fem/protected.ogg
similarity index 100%
rename from sound/vox_fem/protected.ogg
rename to sound/announcer/vox_fem/protected.ogg
diff --git a/sound/vox_fem/protection.ogg b/sound/announcer/vox_fem/protection.ogg
similarity index 100%
rename from sound/vox_fem/protection.ogg
rename to sound/announcer/vox_fem/protection.ogg
diff --git a/sound/vox_fem/protective.ogg b/sound/announcer/vox_fem/protective.ogg
similarity index 100%
rename from sound/vox_fem/protective.ogg
rename to sound/announcer/vox_fem/protective.ogg
diff --git a/sound/vox_fem/proto-nitrate.ogg b/sound/announcer/vox_fem/proto-nitrate.ogg
similarity index 100%
rename from sound/vox_fem/proto-nitrate.ogg
rename to sound/announcer/vox_fem/proto-nitrate.ogg
diff --git a/sound/vox_fem/pull.ogg b/sound/announcer/vox_fem/pull.ogg
similarity index 100%
rename from sound/vox_fem/pull.ogg
rename to sound/announcer/vox_fem/pull.ogg
diff --git a/sound/vox_fem/pulled.ogg b/sound/announcer/vox_fem/pulled.ogg
similarity index 100%
rename from sound/vox_fem/pulled.ogg
rename to sound/announcer/vox_fem/pulled.ogg
diff --git a/sound/vox_fem/pulling.ogg b/sound/announcer/vox_fem/pulling.ogg
similarity index 100%
rename from sound/vox_fem/pulling.ogg
rename to sound/announcer/vox_fem/pulling.ogg
diff --git a/sound/vox_fem/pump.ogg b/sound/announcer/vox_fem/pump.ogg
similarity index 100%
rename from sound/vox_fem/pump.ogg
rename to sound/announcer/vox_fem/pump.ogg
diff --git a/sound/vox_fem/pumps.ogg b/sound/announcer/vox_fem/pumps.ogg
similarity index 100%
rename from sound/vox_fem/pumps.ogg
rename to sound/announcer/vox_fem/pumps.ogg
diff --git a/sound/vox_fem/push.ogg b/sound/announcer/vox_fem/push.ogg
similarity index 100%
rename from sound/vox_fem/push.ogg
rename to sound/announcer/vox_fem/push.ogg
diff --git a/sound/vox_fem/put.ogg b/sound/announcer/vox_fem/put.ogg
similarity index 100%
rename from sound/vox_fem/put.ogg
rename to sound/announcer/vox_fem/put.ogg
diff --git a/sound/vox_fem/q.ogg b/sound/announcer/vox_fem/q.ogg
similarity index 100%
rename from sound/vox_fem/q.ogg
rename to sound/announcer/vox_fem/q.ogg
diff --git a/sound/vox_fem/quantum.ogg b/sound/announcer/vox_fem/quantum.ogg
similarity index 100%
rename from sound/vox_fem/quantum.ogg
rename to sound/announcer/vox_fem/quantum.ogg
diff --git a/sound/vox_fem/quarantine.ogg b/sound/announcer/vox_fem/quarantine.ogg
similarity index 100%
rename from sound/vox_fem/quarantine.ogg
rename to sound/announcer/vox_fem/quarantine.ogg
diff --git a/sound/vox_fem/quartermaster.ogg b/sound/announcer/vox_fem/quartermaster.ogg
similarity index 100%
rename from sound/vox_fem/quartermaster.ogg
rename to sound/announcer/vox_fem/quartermaster.ogg
diff --git a/sound/vox_fem/quebec.ogg b/sound/announcer/vox_fem/quebec.ogg
similarity index 100%
rename from sound/vox_fem/quebec.ogg
rename to sound/announcer/vox_fem/quebec.ogg
diff --git a/sound/vox_fem/queen.ogg b/sound/announcer/vox_fem/queen.ogg
similarity index 100%
rename from sound/vox_fem/queen.ogg
rename to sound/announcer/vox_fem/queen.ogg
diff --git a/sound/vox_fem/question.ogg b/sound/announcer/vox_fem/question.ogg
similarity index 100%
rename from sound/vox_fem/question.ogg
rename to sound/announcer/vox_fem/question.ogg
diff --git a/sound/vox_fem/questionable.ogg b/sound/announcer/vox_fem/questionable.ogg
similarity index 100%
rename from sound/vox_fem/questionable.ogg
rename to sound/announcer/vox_fem/questionable.ogg
diff --git a/sound/vox_fem/questioning.ogg b/sound/announcer/vox_fem/questioning.ogg
similarity index 100%
rename from sound/vox_fem/questioning.ogg
rename to sound/announcer/vox_fem/questioning.ogg
diff --git a/sound/vox_fem/quick.ogg b/sound/announcer/vox_fem/quick.ogg
similarity index 100%
rename from sound/vox_fem/quick.ogg
rename to sound/announcer/vox_fem/quick.ogg
diff --git a/sound/vox_fem/quit.ogg b/sound/announcer/vox_fem/quit.ogg
similarity index 100%
rename from sound/vox_fem/quit.ogg
rename to sound/announcer/vox_fem/quit.ogg
diff --git a/sound/vox_fem/r.ogg b/sound/announcer/vox_fem/r.ogg
similarity index 100%
rename from sound/vox_fem/r.ogg
rename to sound/announcer/vox_fem/r.ogg
diff --git a/sound/vox_fem/radiation.ogg b/sound/announcer/vox_fem/radiation.ogg
similarity index 100%
rename from sound/vox_fem/radiation.ogg
rename to sound/announcer/vox_fem/radiation.ogg
diff --git a/sound/vox_fem/radioactive.ogg b/sound/announcer/vox_fem/radioactive.ogg
similarity index 100%
rename from sound/vox_fem/radioactive.ogg
rename to sound/announcer/vox_fem/radioactive.ogg
diff --git a/sound/vox_fem/rads.ogg b/sound/announcer/vox_fem/rads.ogg
similarity index 100%
rename from sound/vox_fem/rads.ogg
rename to sound/announcer/vox_fem/rads.ogg
diff --git a/sound/vox_fem/raider.ogg b/sound/announcer/vox_fem/raider.ogg
similarity index 100%
rename from sound/vox_fem/raider.ogg
rename to sound/announcer/vox_fem/raider.ogg
diff --git a/sound/vox_fem/raiders.ogg b/sound/announcer/vox_fem/raiders.ogg
similarity index 100%
rename from sound/vox_fem/raiders.ogg
rename to sound/announcer/vox_fem/raiders.ogg
diff --git a/sound/vox_fem/rapid.ogg b/sound/announcer/vox_fem/rapid.ogg
similarity index 100%
rename from sound/vox_fem/rapid.ogg
rename to sound/announcer/vox_fem/rapid.ogg
diff --git a/sound/vox_fem/reach.ogg b/sound/announcer/vox_fem/reach.ogg
similarity index 100%
rename from sound/vox_fem/reach.ogg
rename to sound/announcer/vox_fem/reach.ogg
diff --git a/sound/vox_fem/reached.ogg b/sound/announcer/vox_fem/reached.ogg
similarity index 100%
rename from sound/vox_fem/reached.ogg
rename to sound/announcer/vox_fem/reached.ogg
diff --git a/sound/vox_fem/reactor.ogg b/sound/announcer/vox_fem/reactor.ogg
similarity index 100%
rename from sound/vox_fem/reactor.ogg
rename to sound/announcer/vox_fem/reactor.ogg
diff --git a/sound/vox_fem/red.ogg b/sound/announcer/vox_fem/red.ogg
similarity index 100%
rename from sound/vox_fem/red.ogg
rename to sound/announcer/vox_fem/red.ogg
diff --git a/sound/vox_fem/relay.ogg b/sound/announcer/vox_fem/relay.ogg
similarity index 100%
rename from sound/vox_fem/relay.ogg
rename to sound/announcer/vox_fem/relay.ogg
diff --git a/sound/vox_fem/release.ogg b/sound/announcer/vox_fem/release.ogg
similarity index 100%
rename from sound/vox_fem/release.ogg
rename to sound/announcer/vox_fem/release.ogg
diff --git a/sound/vox_fem/released.ogg b/sound/announcer/vox_fem/released.ogg
similarity index 100%
rename from sound/vox_fem/released.ogg
rename to sound/announcer/vox_fem/released.ogg
diff --git a/sound/vox_fem/releasing.ogg b/sound/announcer/vox_fem/releasing.ogg
similarity index 100%
rename from sound/vox_fem/releasing.ogg
rename to sound/announcer/vox_fem/releasing.ogg
diff --git a/sound/vox_fem/remaining.ogg b/sound/announcer/vox_fem/remaining.ogg
similarity index 100%
rename from sound/vox_fem/remaining.ogg
rename to sound/announcer/vox_fem/remaining.ogg
diff --git a/sound/vox_fem/removal.ogg b/sound/announcer/vox_fem/removal.ogg
similarity index 100%
rename from sound/vox_fem/removal.ogg
rename to sound/announcer/vox_fem/removal.ogg
diff --git a/sound/vox_fem/remove.ogg b/sound/announcer/vox_fem/remove.ogg
similarity index 100%
rename from sound/vox_fem/remove.ogg
rename to sound/announcer/vox_fem/remove.ogg
diff --git a/sound/vox_fem/removed.ogg b/sound/announcer/vox_fem/removed.ogg
similarity index 100%
rename from sound/vox_fem/removed.ogg
rename to sound/announcer/vox_fem/removed.ogg
diff --git a/sound/vox_fem/removing.ogg b/sound/announcer/vox_fem/removing.ogg
similarity index 100%
rename from sound/vox_fem/removing.ogg
rename to sound/announcer/vox_fem/removing.ogg
diff --git a/sound/vox_fem/renegade.ogg b/sound/announcer/vox_fem/renegade.ogg
similarity index 100%
rename from sound/vox_fem/renegade.ogg
rename to sound/announcer/vox_fem/renegade.ogg
diff --git a/sound/vox_fem/repair.ogg b/sound/announcer/vox_fem/repair.ogg
similarity index 100%
rename from sound/vox_fem/repair.ogg
rename to sound/announcer/vox_fem/repair.ogg
diff --git a/sound/vox_fem/report.ogg b/sound/announcer/vox_fem/report.ogg
similarity index 100%
rename from sound/vox_fem/report.ogg
rename to sound/announcer/vox_fem/report.ogg
diff --git a/sound/vox_fem/reports.ogg b/sound/announcer/vox_fem/reports.ogg
similarity index 100%
rename from sound/vox_fem/reports.ogg
rename to sound/announcer/vox_fem/reports.ogg
diff --git a/sound/vox_fem/request.ogg b/sound/announcer/vox_fem/request.ogg
similarity index 100%
rename from sound/vox_fem/request.ogg
rename to sound/announcer/vox_fem/request.ogg
diff --git a/sound/vox_fem/requested.ogg b/sound/announcer/vox_fem/requested.ogg
similarity index 100%
rename from sound/vox_fem/requested.ogg
rename to sound/announcer/vox_fem/requested.ogg
diff --git a/sound/vox_fem/requesting.ogg b/sound/announcer/vox_fem/requesting.ogg
similarity index 100%
rename from sound/vox_fem/requesting.ogg
rename to sound/announcer/vox_fem/requesting.ogg
diff --git a/sound/vox_fem/require.ogg b/sound/announcer/vox_fem/require.ogg
similarity index 100%
rename from sound/vox_fem/require.ogg
rename to sound/announcer/vox_fem/require.ogg
diff --git a/sound/vox_fem/required.ogg b/sound/announcer/vox_fem/required.ogg
similarity index 100%
rename from sound/vox_fem/required.ogg
rename to sound/announcer/vox_fem/required.ogg
diff --git a/sound/vox_fem/research.ogg b/sound/announcer/vox_fem/research.ogg
similarity index 100%
rename from sound/vox_fem/research.ogg
rename to sound/announcer/vox_fem/research.ogg
diff --git a/sound/vox_fem/resevoir.ogg b/sound/announcer/vox_fem/resevoir.ogg
similarity index 100%
rename from sound/vox_fem/resevoir.ogg
rename to sound/announcer/vox_fem/resevoir.ogg
diff --git a/sound/vox_fem/resistance.ogg b/sound/announcer/vox_fem/resistance.ogg
similarity index 100%
rename from sound/vox_fem/resistance.ogg
rename to sound/announcer/vox_fem/resistance.ogg
diff --git a/sound/vox_fem/resistant.ogg b/sound/announcer/vox_fem/resistant.ogg
similarity index 100%
rename from sound/vox_fem/resistant.ogg
rename to sound/announcer/vox_fem/resistant.ogg
diff --git a/sound/vox_fem/resisting.ogg b/sound/announcer/vox_fem/resisting.ogg
similarity index 100%
rename from sound/vox_fem/resisting.ogg
rename to sound/announcer/vox_fem/resisting.ogg
diff --git a/sound/vox_fem/resonance.ogg b/sound/announcer/vox_fem/resonance.ogg
similarity index 100%
rename from sound/vox_fem/resonance.ogg
rename to sound/announcer/vox_fem/resonance.ogg
diff --git a/sound/vox_fem/rest.ogg b/sound/announcer/vox_fem/rest.ogg
similarity index 100%
rename from sound/vox_fem/rest.ogg
rename to sound/announcer/vox_fem/rest.ogg
diff --git a/sound/vox_fem/restoration.ogg b/sound/announcer/vox_fem/restoration.ogg
similarity index 100%
rename from sound/vox_fem/restoration.ogg
rename to sound/announcer/vox_fem/restoration.ogg
diff --git a/sound/vox_fem/revolution.ogg b/sound/announcer/vox_fem/revolution.ogg
similarity index 100%
rename from sound/vox_fem/revolution.ogg
rename to sound/announcer/vox_fem/revolution.ogg
diff --git a/sound/vox_fem/revolutionary.ogg b/sound/announcer/vox_fem/revolutionary.ogg
similarity index 100%
rename from sound/vox_fem/revolutionary.ogg
rename to sound/announcer/vox_fem/revolutionary.ogg
diff --git a/sound/vox_fem/right.ogg b/sound/announcer/vox_fem/right.ogg
similarity index 100%
rename from sound/vox_fem/right.ogg
rename to sound/announcer/vox_fem/right.ogg
diff --git a/sound/vox_fem/riot.ogg b/sound/announcer/vox_fem/riot.ogg
similarity index 100%
rename from sound/vox_fem/riot.ogg
rename to sound/announcer/vox_fem/riot.ogg
diff --git a/sound/vox_fem/roboticist.ogg b/sound/announcer/vox_fem/roboticist.ogg
similarity index 100%
rename from sound/vox_fem/roboticist.ogg
rename to sound/announcer/vox_fem/roboticist.ogg
diff --git a/sound/vox_fem/rocket.ogg b/sound/announcer/vox_fem/rocket.ogg
similarity index 100%
rename from sound/vox_fem/rocket.ogg
rename to sound/announcer/vox_fem/rocket.ogg
diff --git a/sound/vox_fem/roger.ogg b/sound/announcer/vox_fem/roger.ogg
similarity index 100%
rename from sound/vox_fem/roger.ogg
rename to sound/announcer/vox_fem/roger.ogg
diff --git a/sound/vox_fem/rogue.ogg b/sound/announcer/vox_fem/rogue.ogg
similarity index 100%
rename from sound/vox_fem/rogue.ogg
rename to sound/announcer/vox_fem/rogue.ogg
diff --git a/sound/vox_fem/romeo.ogg b/sound/announcer/vox_fem/romeo.ogg
similarity index 100%
rename from sound/vox_fem/romeo.ogg
rename to sound/announcer/vox_fem/romeo.ogg
diff --git a/sound/vox_fem/room.ogg b/sound/announcer/vox_fem/room.ogg
similarity index 100%
rename from sound/vox_fem/room.ogg
rename to sound/announcer/vox_fem/room.ogg
diff --git a/sound/vox_fem/round.ogg b/sound/announcer/vox_fem/round.ogg
similarity index 100%
rename from sound/vox_fem/round.ogg
rename to sound/announcer/vox_fem/round.ogg
diff --git a/sound/vox_fem/run.ogg b/sound/announcer/vox_fem/run.ogg
similarity index 100%
rename from sound/vox_fem/run.ogg
rename to sound/announcer/vox_fem/run.ogg
diff --git a/sound/vox_fem/rune.ogg b/sound/announcer/vox_fem/rune.ogg
similarity index 100%
rename from sound/vox_fem/rune.ogg
rename to sound/announcer/vox_fem/rune.ogg
diff --git a/sound/vox_fem/runtime.ogg b/sound/announcer/vox_fem/runtime.ogg
similarity index 100%
rename from sound/vox_fem/runtime.ogg
rename to sound/announcer/vox_fem/runtime.ogg
diff --git a/sound/vox_fem/s.ogg b/sound/announcer/vox_fem/s.ogg
similarity index 100%
rename from sound/vox_fem/s.ogg
rename to sound/announcer/vox_fem/s.ogg
diff --git a/sound/vox_fem/sabotage.ogg b/sound/announcer/vox_fem/sabotage.ogg
similarity index 100%
rename from sound/vox_fem/sabotage.ogg
rename to sound/announcer/vox_fem/sabotage.ogg
diff --git a/sound/vox_fem/sabotaged.ogg b/sound/announcer/vox_fem/sabotaged.ogg
similarity index 100%
rename from sound/vox_fem/sabotaged.ogg
rename to sound/announcer/vox_fem/sabotaged.ogg
diff --git a/sound/vox_fem/sabotaging.ogg b/sound/announcer/vox_fem/sabotaging.ogg
similarity index 100%
rename from sound/vox_fem/sabotaging.ogg
rename to sound/announcer/vox_fem/sabotaging.ogg
diff --git a/sound/vox_fem/safe.ogg b/sound/announcer/vox_fem/safe.ogg
similarity index 100%
rename from sound/vox_fem/safe.ogg
rename to sound/announcer/vox_fem/safe.ogg
diff --git a/sound/vox_fem/safety.ogg b/sound/announcer/vox_fem/safety.ogg
similarity index 100%
rename from sound/vox_fem/safety.ogg
rename to sound/announcer/vox_fem/safety.ogg
diff --git a/sound/vox_fem/sairhorn.ogg b/sound/announcer/vox_fem/sairhorn.ogg
similarity index 100%
rename from sound/vox_fem/sairhorn.ogg
rename to sound/announcer/vox_fem/sairhorn.ogg
diff --git a/sound/vox_fem/same.ogg b/sound/announcer/vox_fem/same.ogg
similarity index 100%
rename from sound/vox_fem/same.ogg
rename to sound/announcer/vox_fem/same.ogg
diff --git a/sound/vox_fem/sarah.ogg b/sound/announcer/vox_fem/sarah.ogg
similarity index 100%
rename from sound/vox_fem/sarah.ogg
rename to sound/announcer/vox_fem/sarah.ogg
diff --git a/sound/vox_fem/sargeant.ogg b/sound/announcer/vox_fem/sargeant.ogg
similarity index 100%
rename from sound/vox_fem/sargeant.ogg
rename to sound/announcer/vox_fem/sargeant.ogg
diff --git a/sound/vox_fem/satellite.ogg b/sound/announcer/vox_fem/satellite.ogg
similarity index 100%
rename from sound/vox_fem/satellite.ogg
rename to sound/announcer/vox_fem/satellite.ogg
diff --git a/sound/vox_fem/save.ogg b/sound/announcer/vox_fem/save.ogg
similarity index 100%
rename from sound/vox_fem/save.ogg
rename to sound/announcer/vox_fem/save.ogg
diff --git a/sound/vox_fem/saw.ogg b/sound/announcer/vox_fem/saw.ogg
similarity index 100%
rename from sound/vox_fem/saw.ogg
rename to sound/announcer/vox_fem/saw.ogg
diff --git a/sound/vox_fem/scan.ogg b/sound/announcer/vox_fem/scan.ogg
similarity index 100%
rename from sound/vox_fem/scan.ogg
rename to sound/announcer/vox_fem/scan.ogg
diff --git a/sound/vox_fem/scanned.ogg b/sound/announcer/vox_fem/scanned.ogg
similarity index 100%
rename from sound/vox_fem/scanned.ogg
rename to sound/announcer/vox_fem/scanned.ogg
diff --git a/sound/vox_fem/scanner.ogg b/sound/announcer/vox_fem/scanner.ogg
similarity index 100%
rename from sound/vox_fem/scanner.ogg
rename to sound/announcer/vox_fem/scanner.ogg
diff --git a/sound/vox_fem/scanners.ogg b/sound/announcer/vox_fem/scanners.ogg
similarity index 100%
rename from sound/vox_fem/scanners.ogg
rename to sound/announcer/vox_fem/scanners.ogg
diff --git a/sound/vox_fem/scanning.ogg b/sound/announcer/vox_fem/scanning.ogg
similarity index 100%
rename from sound/vox_fem/scanning.ogg
rename to sound/announcer/vox_fem/scanning.ogg
diff --git a/sound/vox_fem/scensor.ogg b/sound/announcer/vox_fem/scensor.ogg
similarity index 100%
rename from sound/vox_fem/scensor.ogg
rename to sound/announcer/vox_fem/scensor.ogg
diff --git a/sound/vox_fem/science.ogg b/sound/announcer/vox_fem/science.ogg
similarity index 100%
rename from sound/vox_fem/science.ogg
rename to sound/announcer/vox_fem/science.ogg
diff --git a/sound/vox_fem/scientist.ogg b/sound/announcer/vox_fem/scientist.ogg
similarity index 100%
rename from sound/vox_fem/scientist.ogg
rename to sound/announcer/vox_fem/scientist.ogg
diff --git a/sound/vox_fem/scream.ogg b/sound/announcer/vox_fem/scream.ogg
similarity index 100%
rename from sound/vox_fem/scream.ogg
rename to sound/announcer/vox_fem/scream.ogg
diff --git a/sound/vox_fem/screen.ogg b/sound/announcer/vox_fem/screen.ogg
similarity index 100%
rename from sound/vox_fem/screen.ogg
rename to sound/announcer/vox_fem/screen.ogg
diff --git a/sound/vox_fem/screw.ogg b/sound/announcer/vox_fem/screw.ogg
similarity index 100%
rename from sound/vox_fem/screw.ogg
rename to sound/announcer/vox_fem/screw.ogg
diff --git a/sound/vox_fem/search.ogg b/sound/announcer/vox_fem/search.ogg
similarity index 100%
rename from sound/vox_fem/search.ogg
rename to sound/announcer/vox_fem/search.ogg
diff --git a/sound/vox_fem/second.ogg b/sound/announcer/vox_fem/second.ogg
similarity index 100%
rename from sound/vox_fem/second.ogg
rename to sound/announcer/vox_fem/second.ogg
diff --git a/sound/vox_fem/secondary.ogg b/sound/announcer/vox_fem/secondary.ogg
similarity index 100%
rename from sound/vox_fem/secondary.ogg
rename to sound/announcer/vox_fem/secondary.ogg
diff --git a/sound/vox_fem/seconds.ogg b/sound/announcer/vox_fem/seconds.ogg
similarity index 100%
rename from sound/vox_fem/seconds.ogg
rename to sound/announcer/vox_fem/seconds.ogg
diff --git a/sound/vox_fem/section.ogg b/sound/announcer/vox_fem/section.ogg
similarity index 100%
rename from sound/vox_fem/section.ogg
rename to sound/announcer/vox_fem/section.ogg
diff --git a/sound/vox_fem/sector.ogg b/sound/announcer/vox_fem/sector.ogg
similarity index 100%
rename from sound/vox_fem/sector.ogg
rename to sound/announcer/vox_fem/sector.ogg
diff --git a/sound/vox_fem/secure.ogg b/sound/announcer/vox_fem/secure.ogg
similarity index 100%
rename from sound/vox_fem/secure.ogg
rename to sound/announcer/vox_fem/secure.ogg
diff --git a/sound/vox_fem/secured.ogg b/sound/announcer/vox_fem/secured.ogg
similarity index 100%
rename from sound/vox_fem/secured.ogg
rename to sound/announcer/vox_fem/secured.ogg
diff --git a/sound/vox_fem/security.ogg b/sound/announcer/vox_fem/security.ogg
similarity index 100%
rename from sound/vox_fem/security.ogg
rename to sound/announcer/vox_fem/security.ogg
diff --git a/sound/vox_fem/seen.ogg b/sound/announcer/vox_fem/seen.ogg
similarity index 100%
rename from sound/vox_fem/seen.ogg
rename to sound/announcer/vox_fem/seen.ogg
diff --git a/sound/vox_fem/select.ogg b/sound/announcer/vox_fem/select.ogg
similarity index 100%
rename from sound/vox_fem/select.ogg
rename to sound/announcer/vox_fem/select.ogg
diff --git a/sound/vox_fem/selected.ogg b/sound/announcer/vox_fem/selected.ogg
similarity index 100%
rename from sound/vox_fem/selected.ogg
rename to sound/announcer/vox_fem/selected.ogg
diff --git a/sound/vox_fem/self.ogg b/sound/announcer/vox_fem/self.ogg
similarity index 100%
rename from sound/vox_fem/self.ogg
rename to sound/announcer/vox_fem/self.ogg
diff --git a/sound/vox_fem/sensors.ogg b/sound/announcer/vox_fem/sensors.ogg
similarity index 100%
rename from sound/vox_fem/sensors.ogg
rename to sound/announcer/vox_fem/sensors.ogg
diff --git a/sound/vox_fem/server.ogg b/sound/announcer/vox_fem/server.ogg
similarity index 100%
rename from sound/vox_fem/server.ogg
rename to sound/announcer/vox_fem/server.ogg
diff --git a/sound/vox_fem/service.ogg b/sound/announcer/vox_fem/service.ogg
similarity index 100%
rename from sound/vox_fem/service.ogg
rename to sound/announcer/vox_fem/service.ogg
diff --git a/sound/vox_fem/set.ogg b/sound/announcer/vox_fem/set.ogg
similarity index 100%
rename from sound/vox_fem/set.ogg
rename to sound/announcer/vox_fem/set.ogg
diff --git a/sound/vox_fem/seven.ogg b/sound/announcer/vox_fem/seven.ogg
similarity index 100%
rename from sound/vox_fem/seven.ogg
rename to sound/announcer/vox_fem/seven.ogg
diff --git a/sound/vox_fem/seventeen.ogg b/sound/announcer/vox_fem/seventeen.ogg
similarity index 100%
rename from sound/vox_fem/seventeen.ogg
rename to sound/announcer/vox_fem/seventeen.ogg
diff --git a/sound/vox_fem/seventy.ogg b/sound/announcer/vox_fem/seventy.ogg
similarity index 100%
rename from sound/vox_fem/seventy.ogg
rename to sound/announcer/vox_fem/seventy.ogg
diff --git a/sound/vox_fem/sever.ogg b/sound/announcer/vox_fem/sever.ogg
similarity index 100%
rename from sound/vox_fem/sever.ogg
rename to sound/announcer/vox_fem/sever.ogg
diff --git a/sound/vox_fem/severe.ogg b/sound/announcer/vox_fem/severe.ogg
similarity index 100%
rename from sound/vox_fem/severe.ogg
rename to sound/announcer/vox_fem/severe.ogg
diff --git a/sound/vox_fem/severed.ogg b/sound/announcer/vox_fem/severed.ogg
similarity index 100%
rename from sound/vox_fem/severed.ogg
rename to sound/announcer/vox_fem/severed.ogg
diff --git a/sound/vox_fem/severing.ogg b/sound/announcer/vox_fem/severing.ogg
similarity index 100%
rename from sound/vox_fem/severing.ogg
rename to sound/announcer/vox_fem/severing.ogg
diff --git a/sound/vox_fem/sewage.ogg b/sound/announcer/vox_fem/sewage.ogg
similarity index 100%
rename from sound/vox_fem/sewage.ogg
rename to sound/announcer/vox_fem/sewage.ogg
diff --git a/sound/vox_fem/sewer.ogg b/sound/announcer/vox_fem/sewer.ogg
similarity index 100%
rename from sound/vox_fem/sewer.ogg
rename to sound/announcer/vox_fem/sewer.ogg
diff --git a/sound/vox_fem/shaft.ogg b/sound/announcer/vox_fem/shaft.ogg
similarity index 100%
rename from sound/vox_fem/shaft.ogg
rename to sound/announcer/vox_fem/shaft.ogg
diff --git a/sound/vox_fem/shame.ogg b/sound/announcer/vox_fem/shame.ogg
similarity index 100%
rename from sound/vox_fem/shame.ogg
rename to sound/announcer/vox_fem/shame.ogg
diff --git a/sound/vox_fem/shameful.ogg b/sound/announcer/vox_fem/shameful.ogg
similarity index 100%
rename from sound/vox_fem/shameful.ogg
rename to sound/announcer/vox_fem/shameful.ogg
diff --git a/sound/vox_fem/shameless.ogg b/sound/announcer/vox_fem/shameless.ogg
similarity index 100%
rename from sound/vox_fem/shameless.ogg
rename to sound/announcer/vox_fem/shameless.ogg
diff --git a/sound/vox_fem/shard.ogg b/sound/announcer/vox_fem/shard.ogg
similarity index 100%
rename from sound/vox_fem/shard.ogg
rename to sound/announcer/vox_fem/shard.ogg
diff --git a/sound/vox_fem/she.ogg b/sound/announcer/vox_fem/she.ogg
similarity index 100%
rename from sound/vox_fem/she.ogg
rename to sound/announcer/vox_fem/she.ogg
diff --git a/sound/vox_fem/shield.ogg b/sound/announcer/vox_fem/shield.ogg
similarity index 100%
rename from sound/vox_fem/shield.ogg
rename to sound/announcer/vox_fem/shield.ogg
diff --git a/sound/vox_fem/shift.ogg b/sound/announcer/vox_fem/shift.ogg
similarity index 100%
rename from sound/vox_fem/shift.ogg
rename to sound/announcer/vox_fem/shift.ogg
diff --git a/sound/vox_fem/shifts.ogg b/sound/announcer/vox_fem/shifts.ogg
similarity index 100%
rename from sound/vox_fem/shifts.ogg
rename to sound/announcer/vox_fem/shifts.ogg
diff --git a/sound/vox_fem/shipment.ogg b/sound/announcer/vox_fem/shipment.ogg
similarity index 100%
rename from sound/vox_fem/shipment.ogg
rename to sound/announcer/vox_fem/shipment.ogg
diff --git a/sound/vox_fem/shirt.ogg b/sound/announcer/vox_fem/shirt.ogg
similarity index 100%
rename from sound/vox_fem/shirt.ogg
rename to sound/announcer/vox_fem/shirt.ogg
diff --git a/sound/vox_fem/shit.ogg b/sound/announcer/vox_fem/shit.ogg
similarity index 100%
rename from sound/vox_fem/shit.ogg
rename to sound/announcer/vox_fem/shit.ogg
diff --git a/sound/vox_fem/shitlord.ogg b/sound/announcer/vox_fem/shitlord.ogg
similarity index 100%
rename from sound/vox_fem/shitlord.ogg
rename to sound/announcer/vox_fem/shitlord.ogg
diff --git a/sound/vox_fem/shits.ogg b/sound/announcer/vox_fem/shits.ogg
similarity index 100%
rename from sound/vox_fem/shits.ogg
rename to sound/announcer/vox_fem/shits.ogg
diff --git a/sound/vox_fem/shitting.ogg b/sound/announcer/vox_fem/shitting.ogg
similarity index 100%
rename from sound/vox_fem/shitting.ogg
rename to sound/announcer/vox_fem/shitting.ogg
diff --git a/sound/vox_fem/shock.ogg b/sound/announcer/vox_fem/shock.ogg
similarity index 100%
rename from sound/vox_fem/shock.ogg
rename to sound/announcer/vox_fem/shock.ogg
diff --git a/sound/vox_fem/shonk.ogg b/sound/announcer/vox_fem/shonk.ogg
similarity index 100%
rename from sound/vox_fem/shonk.ogg
rename to sound/announcer/vox_fem/shonk.ogg
diff --git a/sound/vox_fem/shoot.ogg b/sound/announcer/vox_fem/shoot.ogg
similarity index 100%
rename from sound/vox_fem/shoot.ogg
rename to sound/announcer/vox_fem/shoot.ogg
diff --git a/sound/vox_fem/shower.ogg b/sound/announcer/vox_fem/shower.ogg
similarity index 100%
rename from sound/vox_fem/shower.ogg
rename to sound/announcer/vox_fem/shower.ogg
diff --git a/sound/vox_fem/shut.ogg b/sound/announcer/vox_fem/shut.ogg
similarity index 100%
rename from sound/vox_fem/shut.ogg
rename to sound/announcer/vox_fem/shut.ogg
diff --git a/sound/vox_fem/shuttle.ogg b/sound/announcer/vox_fem/shuttle.ogg
similarity index 100%
rename from sound/vox_fem/shuttle.ogg
rename to sound/announcer/vox_fem/shuttle.ogg
diff --git a/sound/vox_fem/sick.ogg b/sound/announcer/vox_fem/sick.ogg
similarity index 100%
rename from sound/vox_fem/sick.ogg
rename to sound/announcer/vox_fem/sick.ogg
diff --git a/sound/vox_fem/side.ogg b/sound/announcer/vox_fem/side.ogg
similarity index 100%
rename from sound/vox_fem/side.ogg
rename to sound/announcer/vox_fem/side.ogg
diff --git a/sound/vox_fem/sides.ogg b/sound/announcer/vox_fem/sides.ogg
similarity index 100%
rename from sound/vox_fem/sides.ogg
rename to sound/announcer/vox_fem/sides.ogg
diff --git a/sound/vox_fem/sierra.ogg b/sound/announcer/vox_fem/sierra.ogg
similarity index 100%
rename from sound/vox_fem/sierra.ogg
rename to sound/announcer/vox_fem/sierra.ogg
diff --git a/sound/vox_fem/sight.ogg b/sound/announcer/vox_fem/sight.ogg
similarity index 100%
rename from sound/vox_fem/sight.ogg
rename to sound/announcer/vox_fem/sight.ogg
diff --git a/sound/vox_fem/silicon.ogg b/sound/announcer/vox_fem/silicon.ogg
similarity index 100%
rename from sound/vox_fem/silicon.ogg
rename to sound/announcer/vox_fem/silicon.ogg
diff --git a/sound/vox_fem/silo.ogg b/sound/announcer/vox_fem/silo.ogg
similarity index 100%
rename from sound/vox_fem/silo.ogg
rename to sound/announcer/vox_fem/silo.ogg
diff --git a/sound/vox_fem/single.ogg b/sound/announcer/vox_fem/single.ogg
similarity index 100%
rename from sound/vox_fem/single.ogg
rename to sound/announcer/vox_fem/single.ogg
diff --git a/sound/vox_fem/singularity.ogg b/sound/announcer/vox_fem/singularity.ogg
similarity index 100%
rename from sound/vox_fem/singularity.ogg
rename to sound/announcer/vox_fem/singularity.ogg
diff --git a/sound/vox_fem/siphon.ogg b/sound/announcer/vox_fem/siphon.ogg
similarity index 100%
rename from sound/vox_fem/siphon.ogg
rename to sound/announcer/vox_fem/siphon.ogg
diff --git a/sound/vox_fem/siphoning.ogg b/sound/announcer/vox_fem/siphoning.ogg
similarity index 100%
rename from sound/vox_fem/siphoning.ogg
rename to sound/announcer/vox_fem/siphoning.ogg
diff --git a/sound/vox_fem/six.ogg b/sound/announcer/vox_fem/six.ogg
similarity index 100%
rename from sound/vox_fem/six.ogg
rename to sound/announcer/vox_fem/six.ogg
diff --git a/sound/vox_fem/sixteen.ogg b/sound/announcer/vox_fem/sixteen.ogg
similarity index 100%
rename from sound/vox_fem/sixteen.ogg
rename to sound/announcer/vox_fem/sixteen.ogg
diff --git a/sound/vox_fem/sixty.ogg b/sound/announcer/vox_fem/sixty.ogg
similarity index 100%
rename from sound/vox_fem/sixty.ogg
rename to sound/announcer/vox_fem/sixty.ogg
diff --git a/sound/vox_fem/skeleton.ogg b/sound/announcer/vox_fem/skeleton.ogg
similarity index 100%
rename from sound/vox_fem/skeleton.ogg
rename to sound/announcer/vox_fem/skeleton.ogg
diff --git a/sound/vox_fem/slaughter.ogg b/sound/announcer/vox_fem/slaughter.ogg
similarity index 100%
rename from sound/vox_fem/slaughter.ogg
rename to sound/announcer/vox_fem/slaughter.ogg
diff --git a/sound/vox_fem/slime.ogg b/sound/announcer/vox_fem/slime.ogg
similarity index 100%
rename from sound/vox_fem/slime.ogg
rename to sound/announcer/vox_fem/slime.ogg
diff --git a/sound/vox_fem/slip.ogg b/sound/announcer/vox_fem/slip.ogg
similarity index 100%
rename from sound/vox_fem/slip.ogg
rename to sound/announcer/vox_fem/slip.ogg
diff --git a/sound/vox_fem/slippery.ogg b/sound/announcer/vox_fem/slippery.ogg
similarity index 100%
rename from sound/vox_fem/slippery.ogg
rename to sound/announcer/vox_fem/slippery.ogg
diff --git a/sound/vox_fem/slow.ogg b/sound/announcer/vox_fem/slow.ogg
similarity index 100%
rename from sound/vox_fem/slow.ogg
rename to sound/announcer/vox_fem/slow.ogg
diff --git a/sound/vox_fem/sm.ogg b/sound/announcer/vox_fem/sm.ogg
similarity index 100%
rename from sound/vox_fem/sm.ogg
rename to sound/announcer/vox_fem/sm.ogg
diff --git a/sound/vox_fem/small.ogg b/sound/announcer/vox_fem/small.ogg
similarity index 100%
rename from sound/vox_fem/small.ogg
rename to sound/announcer/vox_fem/small.ogg
diff --git a/sound/vox_fem/sockmuncher.ogg b/sound/announcer/vox_fem/sockmuncher.ogg
similarity index 100%
rename from sound/vox_fem/sockmuncher.ogg
rename to sound/announcer/vox_fem/sockmuncher.ogg
diff --git a/sound/vox_fem/soft.ogg b/sound/announcer/vox_fem/soft.ogg
similarity index 100%
rename from sound/vox_fem/soft.ogg
rename to sound/announcer/vox_fem/soft.ogg
diff --git a/sound/vox_fem/solar.ogg b/sound/announcer/vox_fem/solar.ogg
similarity index 100%
rename from sound/vox_fem/solar.ogg
rename to sound/announcer/vox_fem/solar.ogg
diff --git a/sound/vox_fem/solars.ogg b/sound/announcer/vox_fem/solars.ogg
similarity index 100%
rename from sound/vox_fem/solars.ogg
rename to sound/announcer/vox_fem/solars.ogg
diff --git a/sound/vox_fem/soldier.ogg b/sound/announcer/vox_fem/soldier.ogg
similarity index 100%
rename from sound/vox_fem/soldier.ogg
rename to sound/announcer/vox_fem/soldier.ogg
diff --git a/sound/vox_fem/some.ogg b/sound/announcer/vox_fem/some.ogg
similarity index 100%
rename from sound/vox_fem/some.ogg
rename to sound/announcer/vox_fem/some.ogg
diff --git a/sound/vox_fem/someone.ogg b/sound/announcer/vox_fem/someone.ogg
similarity index 100%
rename from sound/vox_fem/someone.ogg
rename to sound/announcer/vox_fem/someone.ogg
diff --git a/sound/vox_fem/something.ogg b/sound/announcer/vox_fem/something.ogg
similarity index 100%
rename from sound/vox_fem/something.ogg
rename to sound/announcer/vox_fem/something.ogg
diff --git a/sound/vox_fem/son.ogg b/sound/announcer/vox_fem/son.ogg
similarity index 100%
rename from sound/vox_fem/son.ogg
rename to sound/announcer/vox_fem/son.ogg
diff --git a/sound/vox_fem/sorry.ogg b/sound/announcer/vox_fem/sorry.ogg
similarity index 100%
rename from sound/vox_fem/sorry.ogg
rename to sound/announcer/vox_fem/sorry.ogg
diff --git a/sound/vox_fem/source.ogg b/sound/announcer/vox_fem/source.ogg
similarity index 100%
rename from sound/vox_fem/source.ogg
rename to sound/announcer/vox_fem/source.ogg
diff --git a/sound/vox_fem/south.ogg b/sound/announcer/vox_fem/south.ogg
similarity index 100%
rename from sound/vox_fem/south.ogg
rename to sound/announcer/vox_fem/south.ogg
diff --git a/sound/vox_fem/southeast.ogg b/sound/announcer/vox_fem/southeast.ogg
similarity index 100%
rename from sound/vox_fem/southeast.ogg
rename to sound/announcer/vox_fem/southeast.ogg
diff --git a/sound/vox_fem/southwest.ogg b/sound/announcer/vox_fem/southwest.ogg
similarity index 100%
rename from sound/vox_fem/southwest.ogg
rename to sound/announcer/vox_fem/southwest.ogg
diff --git a/sound/vox_fem/space.ogg b/sound/announcer/vox_fem/space.ogg
similarity index 100%
rename from sound/vox_fem/space.ogg
rename to sound/announcer/vox_fem/space.ogg
diff --git a/sound/vox_fem/special.ogg b/sound/announcer/vox_fem/special.ogg
similarity index 100%
rename from sound/vox_fem/special.ogg
rename to sound/announcer/vox_fem/special.ogg
diff --git a/sound/vox_fem/spew.ogg b/sound/announcer/vox_fem/spew.ogg
similarity index 100%
rename from sound/vox_fem/spew.ogg
rename to sound/announcer/vox_fem/spew.ogg
diff --git a/sound/vox_fem/squad.ogg b/sound/announcer/vox_fem/squad.ogg
similarity index 100%
rename from sound/vox_fem/squad.ogg
rename to sound/announcer/vox_fem/squad.ogg
diff --git a/sound/vox_fem/square.ogg b/sound/announcer/vox_fem/square.ogg
similarity index 100%
rename from sound/vox_fem/square.ogg
rename to sound/announcer/vox_fem/square.ogg
diff --git a/sound/vox_fem/ss13.ogg b/sound/announcer/vox_fem/ss13.ogg
similarity index 100%
rename from sound/vox_fem/ss13.ogg
rename to sound/announcer/vox_fem/ss13.ogg
diff --git a/sound/vox_fem/stairway.ogg b/sound/announcer/vox_fem/stairway.ogg
similarity index 100%
rename from sound/vox_fem/stairway.ogg
rename to sound/announcer/vox_fem/stairway.ogg
diff --git a/sound/vox_fem/starboard.ogg b/sound/announcer/vox_fem/starboard.ogg
similarity index 100%
rename from sound/vox_fem/starboard.ogg
rename to sound/announcer/vox_fem/starboard.ogg
diff --git a/sound/vox_fem/start.ogg b/sound/announcer/vox_fem/start.ogg
similarity index 100%
rename from sound/vox_fem/start.ogg
rename to sound/announcer/vox_fem/start.ogg
diff --git a/sound/vox_fem/starts.ogg b/sound/announcer/vox_fem/starts.ogg
similarity index 100%
rename from sound/vox_fem/starts.ogg
rename to sound/announcer/vox_fem/starts.ogg
diff --git a/sound/vox_fem/station.ogg b/sound/announcer/vox_fem/station.ogg
similarity index 100%
rename from sound/vox_fem/station.ogg
rename to sound/announcer/vox_fem/station.ogg
diff --git a/sound/vox_fem/stations.ogg b/sound/announcer/vox_fem/stations.ogg
similarity index 100%
rename from sound/vox_fem/stations.ogg
rename to sound/announcer/vox_fem/stations.ogg
diff --git a/sound/vox_fem/stationwide.ogg b/sound/announcer/vox_fem/stationwide.ogg
similarity index 100%
rename from sound/vox_fem/stationwide.ogg
rename to sound/announcer/vox_fem/stationwide.ogg
diff --git a/sound/vox_fem/status.ogg b/sound/announcer/vox_fem/status.ogg
similarity index 100%
rename from sound/vox_fem/status.ogg
rename to sound/announcer/vox_fem/status.ogg
diff --git a/sound/vox_fem/stay.ogg b/sound/announcer/vox_fem/stay.ogg
similarity index 100%
rename from sound/vox_fem/stay.ogg
rename to sound/announcer/vox_fem/stay.ogg
diff --git a/sound/vox_fem/sterile.ogg b/sound/announcer/vox_fem/sterile.ogg
similarity index 100%
rename from sound/vox_fem/sterile.ogg
rename to sound/announcer/vox_fem/sterile.ogg
diff --git a/sound/vox_fem/sterilization.ogg b/sound/announcer/vox_fem/sterilization.ogg
similarity index 100%
rename from sound/vox_fem/sterilization.ogg
rename to sound/announcer/vox_fem/sterilization.ogg
diff --git a/sound/vox_fem/stop.ogg b/sound/announcer/vox_fem/stop.ogg
similarity index 100%
rename from sound/vox_fem/stop.ogg
rename to sound/announcer/vox_fem/stop.ogg
diff --git a/sound/vox_fem/storage.ogg b/sound/announcer/vox_fem/storage.ogg
similarity index 100%
rename from sound/vox_fem/storage.ogg
rename to sound/announcer/vox_fem/storage.ogg
diff --git a/sound/vox_fem/strong.ogg b/sound/announcer/vox_fem/strong.ogg
similarity index 100%
rename from sound/vox_fem/strong.ogg
rename to sound/announcer/vox_fem/strong.ogg
diff --git a/sound/vox_fem/stuck.ogg b/sound/announcer/vox_fem/stuck.ogg
similarity index 100%
rename from sound/vox_fem/stuck.ogg
rename to sound/announcer/vox_fem/stuck.ogg
diff --git a/sound/vox_fem/sub.ogg b/sound/announcer/vox_fem/sub.ogg
similarity index 100%
rename from sound/vox_fem/sub.ogg
rename to sound/announcer/vox_fem/sub.ogg
diff --git a/sound/vox_fem/subsurface.ogg b/sound/announcer/vox_fem/subsurface.ogg
similarity index 100%
rename from sound/vox_fem/subsurface.ogg
rename to sound/announcer/vox_fem/subsurface.ogg
diff --git a/sound/vox_fem/such.ogg b/sound/announcer/vox_fem/such.ogg
similarity index 100%
rename from sound/vox_fem/such.ogg
rename to sound/announcer/vox_fem/such.ogg
diff --git a/sound/vox_fem/sudden.ogg b/sound/announcer/vox_fem/sudden.ogg
similarity index 100%
rename from sound/vox_fem/sudden.ogg
rename to sound/announcer/vox_fem/sudden.ogg
diff --git a/sound/vox_fem/suffer.ogg b/sound/announcer/vox_fem/suffer.ogg
similarity index 100%
rename from sound/vox_fem/suffer.ogg
rename to sound/announcer/vox_fem/suffer.ogg
diff --git a/sound/vox_fem/suit.ogg b/sound/announcer/vox_fem/suit.ogg
similarity index 100%
rename from sound/vox_fem/suit.ogg
rename to sound/announcer/vox_fem/suit.ogg
diff --git a/sound/vox_fem/suited.ogg b/sound/announcer/vox_fem/suited.ogg
similarity index 100%
rename from sound/vox_fem/suited.ogg
rename to sound/announcer/vox_fem/suited.ogg
diff --git a/sound/vox_fem/super.ogg b/sound/announcer/vox_fem/super.ogg
similarity index 100%
rename from sound/vox_fem/super.ogg
rename to sound/announcer/vox_fem/super.ogg
diff --git a/sound/vox_fem/superconducting.ogg b/sound/announcer/vox_fem/superconducting.ogg
similarity index 100%
rename from sound/vox_fem/superconducting.ogg
rename to sound/announcer/vox_fem/superconducting.ogg
diff --git a/sound/vox_fem/supercooled.ogg b/sound/announcer/vox_fem/supercooled.ogg
similarity index 100%
rename from sound/vox_fem/supercooled.ogg
rename to sound/announcer/vox_fem/supercooled.ogg
diff --git a/sound/vox_fem/supermatter.ogg b/sound/announcer/vox_fem/supermatter.ogg
similarity index 100%
rename from sound/vox_fem/supermatter.ogg
rename to sound/announcer/vox_fem/supermatter.ogg
diff --git a/sound/vox_fem/supply.ogg b/sound/announcer/vox_fem/supply.ogg
similarity index 100%
rename from sound/vox_fem/supply.ogg
rename to sound/announcer/vox_fem/supply.ogg
diff --git a/sound/vox_fem/surface.ogg b/sound/announcer/vox_fem/surface.ogg
similarity index 100%
rename from sound/vox_fem/surface.ogg
rename to sound/announcer/vox_fem/surface.ogg
diff --git a/sound/vox_fem/surrender.ogg b/sound/announcer/vox_fem/surrender.ogg
similarity index 100%
rename from sound/vox_fem/surrender.ogg
rename to sound/announcer/vox_fem/surrender.ogg
diff --git a/sound/vox_fem/surround.ogg b/sound/announcer/vox_fem/surround.ogg
similarity index 100%
rename from sound/vox_fem/surround.ogg
rename to sound/announcer/vox_fem/surround.ogg
diff --git a/sound/vox_fem/surrounded.ogg b/sound/announcer/vox_fem/surrounded.ogg
similarity index 100%
rename from sound/vox_fem/surrounded.ogg
rename to sound/announcer/vox_fem/surrounded.ogg
diff --git a/sound/vox_fem/sweating.ogg b/sound/announcer/vox_fem/sweating.ogg
similarity index 100%
rename from sound/vox_fem/sweating.ogg
rename to sound/announcer/vox_fem/sweating.ogg
diff --git a/sound/vox_fem/swhitenoise.ogg b/sound/announcer/vox_fem/swhitenoise.ogg
similarity index 100%
rename from sound/vox_fem/swhitenoise.ogg
rename to sound/announcer/vox_fem/swhitenoise.ogg
diff --git a/sound/vox_fem/switch.ogg b/sound/announcer/vox_fem/switch.ogg
similarity index 100%
rename from sound/vox_fem/switch.ogg
rename to sound/announcer/vox_fem/switch.ogg
diff --git a/sound/vox_fem/syndicate.ogg b/sound/announcer/vox_fem/syndicate.ogg
similarity index 100%
rename from sound/vox_fem/syndicate.ogg
rename to sound/announcer/vox_fem/syndicate.ogg
diff --git a/sound/vox_fem/system.ogg b/sound/announcer/vox_fem/system.ogg
similarity index 100%
rename from sound/vox_fem/system.ogg
rename to sound/announcer/vox_fem/system.ogg
diff --git a/sound/vox_fem/systems.ogg b/sound/announcer/vox_fem/systems.ogg
similarity index 100%
rename from sound/vox_fem/systems.ogg
rename to sound/announcer/vox_fem/systems.ogg
diff --git a/sound/vox_fem/t.ogg b/sound/announcer/vox_fem/t.ogg
similarity index 100%
rename from sound/vox_fem/t.ogg
rename to sound/announcer/vox_fem/t.ogg
diff --git a/sound/vox_fem/table.ogg b/sound/announcer/vox_fem/table.ogg
similarity index 100%
rename from sound/vox_fem/table.ogg
rename to sound/announcer/vox_fem/table.ogg
diff --git a/sound/vox_fem/tactical.ogg b/sound/announcer/vox_fem/tactical.ogg
similarity index 100%
rename from sound/vox_fem/tactical.ogg
rename to sound/announcer/vox_fem/tactical.ogg
diff --git a/sound/vox_fem/taildragger.ogg b/sound/announcer/vox_fem/taildragger.ogg
similarity index 100%
rename from sound/vox_fem/taildragger.ogg
rename to sound/announcer/vox_fem/taildragger.ogg
diff --git a/sound/vox_fem/take.ogg b/sound/announcer/vox_fem/take.ogg
similarity index 100%
rename from sound/vox_fem/take.ogg
rename to sound/announcer/vox_fem/take.ogg
diff --git a/sound/vox_fem/talk.ogg b/sound/announcer/vox_fem/talk.ogg
similarity index 100%
rename from sound/vox_fem/talk.ogg
rename to sound/announcer/vox_fem/talk.ogg
diff --git a/sound/vox_fem/tampered.ogg b/sound/announcer/vox_fem/tampered.ogg
similarity index 100%
rename from sound/vox_fem/tampered.ogg
rename to sound/announcer/vox_fem/tampered.ogg
diff --git a/sound/vox_fem/tango.ogg b/sound/announcer/vox_fem/tango.ogg
similarity index 100%
rename from sound/vox_fem/tango.ogg
rename to sound/announcer/vox_fem/tango.ogg
diff --git a/sound/vox_fem/tank.ogg b/sound/announcer/vox_fem/tank.ogg
similarity index 100%
rename from sound/vox_fem/tank.ogg
rename to sound/announcer/vox_fem/tank.ogg
diff --git a/sound/vox_fem/target.ogg b/sound/announcer/vox_fem/target.ogg
similarity index 100%
rename from sound/vox_fem/target.ogg
rename to sound/announcer/vox_fem/target.ogg
diff --git a/sound/vox_fem/team.ogg b/sound/announcer/vox_fem/team.ogg
similarity index 100%
rename from sound/vox_fem/team.ogg
rename to sound/announcer/vox_fem/team.ogg
diff --git a/sound/vox_fem/tech.ogg b/sound/announcer/vox_fem/tech.ogg
similarity index 100%
rename from sound/vox_fem/tech.ogg
rename to sound/announcer/vox_fem/tech.ogg
diff --git a/sound/vox_fem/technician.ogg b/sound/announcer/vox_fem/technician.ogg
similarity index 100%
rename from sound/vox_fem/technician.ogg
rename to sound/announcer/vox_fem/technician.ogg
diff --git a/sound/vox_fem/technology.ogg b/sound/announcer/vox_fem/technology.ogg
similarity index 100%
rename from sound/vox_fem/technology.ogg
rename to sound/announcer/vox_fem/technology.ogg
diff --git a/sound/vox_fem/teleporter.ogg b/sound/announcer/vox_fem/teleporter.ogg
similarity index 100%
rename from sound/vox_fem/teleporter.ogg
rename to sound/announcer/vox_fem/teleporter.ogg
diff --git a/sound/vox_fem/temperature.ogg b/sound/announcer/vox_fem/temperature.ogg
similarity index 100%
rename from sound/vox_fem/temperature.ogg
rename to sound/announcer/vox_fem/temperature.ogg
diff --git a/sound/vox_fem/temporal.ogg b/sound/announcer/vox_fem/temporal.ogg
similarity index 100%
rename from sound/vox_fem/temporal.ogg
rename to sound/announcer/vox_fem/temporal.ogg
diff --git a/sound/vox_fem/ten.ogg b/sound/announcer/vox_fem/ten.ogg
similarity index 100%
rename from sound/vox_fem/ten.ogg
rename to sound/announcer/vox_fem/ten.ogg
diff --git a/sound/vox_fem/terminal.ogg b/sound/announcer/vox_fem/terminal.ogg
similarity index 100%
rename from sound/vox_fem/terminal.ogg
rename to sound/announcer/vox_fem/terminal.ogg
diff --git a/sound/vox_fem/terminate.ogg b/sound/announcer/vox_fem/terminate.ogg
similarity index 100%
rename from sound/vox_fem/terminate.ogg
rename to sound/announcer/vox_fem/terminate.ogg
diff --git a/sound/vox_fem/terminated.ogg b/sound/announcer/vox_fem/terminated.ogg
similarity index 100%
rename from sound/vox_fem/terminated.ogg
rename to sound/announcer/vox_fem/terminated.ogg
diff --git a/sound/vox_fem/termination.ogg b/sound/announcer/vox_fem/termination.ogg
similarity index 100%
rename from sound/vox_fem/termination.ogg
rename to sound/announcer/vox_fem/termination.ogg
diff --git a/sound/vox_fem/tesla.ogg b/sound/announcer/vox_fem/tesla.ogg
similarity index 100%
rename from sound/vox_fem/tesla.ogg
rename to sound/announcer/vox_fem/tesla.ogg
diff --git a/sound/vox_fem/test.ogg b/sound/announcer/vox_fem/test.ogg
similarity index 100%
rename from sound/vox_fem/test.ogg
rename to sound/announcer/vox_fem/test.ogg
diff --git a/sound/vox_fem/text.ogg b/sound/announcer/vox_fem/text.ogg
similarity index 100%
rename from sound/vox_fem/text.ogg
rename to sound/announcer/vox_fem/text.ogg
diff --git a/sound/vox_fem/thank.ogg b/sound/announcer/vox_fem/thank.ogg
similarity index 100%
rename from sound/vox_fem/thank.ogg
rename to sound/announcer/vox_fem/thank.ogg
diff --git a/sound/vox_fem/thanks.ogg b/sound/announcer/vox_fem/thanks.ogg
similarity index 100%
rename from sound/vox_fem/thanks.ogg
rename to sound/announcer/vox_fem/thanks.ogg
diff --git a/sound/vox_fem/that.ogg b/sound/announcer/vox_fem/that.ogg
similarity index 100%
rename from sound/vox_fem/that.ogg
rename to sound/announcer/vox_fem/that.ogg
diff --git a/sound/vox_fem/the.ogg b/sound/announcer/vox_fem/the.ogg
similarity index 100%
rename from sound/vox_fem/the.ogg
rename to sound/announcer/vox_fem/the.ogg
diff --git a/sound/vox_fem/theater.ogg b/sound/announcer/vox_fem/theater.ogg
similarity index 100%
rename from sound/vox_fem/theater.ogg
rename to sound/announcer/vox_fem/theater.ogg
diff --git a/sound/vox_fem/them.ogg b/sound/announcer/vox_fem/them.ogg
similarity index 100%
rename from sound/vox_fem/them.ogg
rename to sound/announcer/vox_fem/them.ogg
diff --git a/sound/vox_fem/then.ogg b/sound/announcer/vox_fem/then.ogg
similarity index 100%
rename from sound/vox_fem/then.ogg
rename to sound/announcer/vox_fem/then.ogg
diff --git a/sound/vox_fem/there.ogg b/sound/announcer/vox_fem/there.ogg
similarity index 100%
rename from sound/vox_fem/there.ogg
rename to sound/announcer/vox_fem/there.ogg
diff --git a/sound/vox_fem/they.ogg b/sound/announcer/vox_fem/they.ogg
similarity index 100%
rename from sound/vox_fem/they.ogg
rename to sound/announcer/vox_fem/they.ogg
diff --git a/sound/vox_fem/third.ogg b/sound/announcer/vox_fem/third.ogg
similarity index 100%
rename from sound/vox_fem/third.ogg
rename to sound/announcer/vox_fem/third.ogg
diff --git a/sound/vox_fem/thirteen.ogg b/sound/announcer/vox_fem/thirteen.ogg
similarity index 100%
rename from sound/vox_fem/thirteen.ogg
rename to sound/announcer/vox_fem/thirteen.ogg
diff --git a/sound/vox_fem/thirty.ogg b/sound/announcer/vox_fem/thirty.ogg
similarity index 100%
rename from sound/vox_fem/thirty.ogg
rename to sound/announcer/vox_fem/thirty.ogg
diff --git a/sound/vox_fem/this.ogg b/sound/announcer/vox_fem/this.ogg
similarity index 100%
rename from sound/vox_fem/this.ogg
rename to sound/announcer/vox_fem/this.ogg
diff --git a/sound/vox_fem/those.ogg b/sound/announcer/vox_fem/those.ogg
similarity index 100%
rename from sound/vox_fem/those.ogg
rename to sound/announcer/vox_fem/those.ogg
diff --git a/sound/vox_fem/thousand.ogg b/sound/announcer/vox_fem/thousand.ogg
similarity index 100%
rename from sound/vox_fem/thousand.ogg
rename to sound/announcer/vox_fem/thousand.ogg
diff --git a/sound/vox_fem/threat.ogg b/sound/announcer/vox_fem/threat.ogg
similarity index 100%
rename from sound/vox_fem/threat.ogg
rename to sound/announcer/vox_fem/threat.ogg
diff --git a/sound/vox_fem/three.ogg b/sound/announcer/vox_fem/three.ogg
similarity index 100%
rename from sound/vox_fem/three.ogg
rename to sound/announcer/vox_fem/three.ogg
diff --git a/sound/vox_fem/through.ogg b/sound/announcer/vox_fem/through.ogg
similarity index 100%
rename from sound/vox_fem/through.ogg
rename to sound/announcer/vox_fem/through.ogg
diff --git a/sound/vox_fem/tick.ogg b/sound/announcer/vox_fem/tick.ogg
similarity index 100%
rename from sound/vox_fem/tick.ogg
rename to sound/announcer/vox_fem/tick.ogg
diff --git a/sound/vox_fem/tide.ogg b/sound/announcer/vox_fem/tide.ogg
similarity index 100%
rename from sound/vox_fem/tide.ogg
rename to sound/announcer/vox_fem/tide.ogg
diff --git a/sound/vox_fem/tile.ogg b/sound/announcer/vox_fem/tile.ogg
similarity index 100%
rename from sound/vox_fem/tile.ogg
rename to sound/announcer/vox_fem/tile.ogg
diff --git a/sound/vox_fem/time.ogg b/sound/announcer/vox_fem/time.ogg
similarity index 100%
rename from sound/vox_fem/time.ogg
rename to sound/announcer/vox_fem/time.ogg
diff --git a/sound/vox_fem/tiny.ogg b/sound/announcer/vox_fem/tiny.ogg
similarity index 100%
rename from sound/vox_fem/tiny.ogg
rename to sound/announcer/vox_fem/tiny.ogg
diff --git a/sound/vox_fem/to.ogg b/sound/announcer/vox_fem/to.ogg
similarity index 100%
rename from sound/vox_fem/to.ogg
rename to sound/announcer/vox_fem/to.ogg
diff --git a/sound/vox_fem/top.ogg b/sound/announcer/vox_fem/top.ogg
similarity index 100%
rename from sound/vox_fem/top.ogg
rename to sound/announcer/vox_fem/top.ogg
diff --git a/sound/vox_fem/topside.ogg b/sound/announcer/vox_fem/topside.ogg
similarity index 100%
rename from sound/vox_fem/topside.ogg
rename to sound/announcer/vox_fem/topside.ogg
diff --git a/sound/vox_fem/touch.ogg b/sound/announcer/vox_fem/touch.ogg
similarity index 100%
rename from sound/vox_fem/touch.ogg
rename to sound/announcer/vox_fem/touch.ogg
diff --git a/sound/vox_fem/touched.ogg b/sound/announcer/vox_fem/touched.ogg
similarity index 100%
rename from sound/vox_fem/touched.ogg
rename to sound/announcer/vox_fem/touched.ogg
diff --git a/sound/vox_fem/touching.ogg b/sound/announcer/vox_fem/touching.ogg
similarity index 100%
rename from sound/vox_fem/touching.ogg
rename to sound/announcer/vox_fem/touching.ogg
diff --git a/sound/vox_fem/towards.ogg b/sound/announcer/vox_fem/towards.ogg
similarity index 100%
rename from sound/vox_fem/towards.ogg
rename to sound/announcer/vox_fem/towards.ogg
diff --git a/sound/vox_fem/toxins.ogg b/sound/announcer/vox_fem/toxins.ogg
similarity index 100%
rename from sound/vox_fem/toxins.ogg
rename to sound/announcer/vox_fem/toxins.ogg
diff --git a/sound/vox_fem/track.ogg b/sound/announcer/vox_fem/track.ogg
similarity index 100%
rename from sound/vox_fem/track.ogg
rename to sound/announcer/vox_fem/track.ogg
diff --git a/sound/vox_fem/train.ogg b/sound/announcer/vox_fem/train.ogg
similarity index 100%
rename from sound/vox_fem/train.ogg
rename to sound/announcer/vox_fem/train.ogg
diff --git a/sound/vox_fem/traitor.ogg b/sound/announcer/vox_fem/traitor.ogg
similarity index 100%
rename from sound/vox_fem/traitor.ogg
rename to sound/announcer/vox_fem/traitor.ogg
diff --git a/sound/vox_fem/transportation.ogg b/sound/announcer/vox_fem/transportation.ogg
similarity index 100%
rename from sound/vox_fem/transportation.ogg
rename to sound/announcer/vox_fem/transportation.ogg
diff --git a/sound/vox_fem/trigger.ogg b/sound/announcer/vox_fem/trigger.ogg
similarity index 100%
rename from sound/vox_fem/trigger.ogg
rename to sound/announcer/vox_fem/trigger.ogg
diff --git a/sound/vox_fem/triggered.ogg b/sound/announcer/vox_fem/triggered.ogg
similarity index 100%
rename from sound/vox_fem/triggered.ogg
rename to sound/announcer/vox_fem/triggered.ogg
diff --git a/sound/vox_fem/triggering.ogg b/sound/announcer/vox_fem/triggering.ogg
similarity index 100%
rename from sound/vox_fem/triggering.ogg
rename to sound/announcer/vox_fem/triggering.ogg
diff --git a/sound/vox_fem/triple.ogg b/sound/announcer/vox_fem/triple.ogg
similarity index 100%
rename from sound/vox_fem/triple.ogg
rename to sound/announcer/vox_fem/triple.ogg
diff --git a/sound/vox_fem/tritium.ogg b/sound/announcer/vox_fem/tritium.ogg
similarity index 100%
rename from sound/vox_fem/tritium.ogg
rename to sound/announcer/vox_fem/tritium.ogg
diff --git a/sound/vox_fem/truck.ogg b/sound/announcer/vox_fem/truck.ogg
similarity index 100%
rename from sound/vox_fem/truck.ogg
rename to sound/announcer/vox_fem/truck.ogg
diff --git a/sound/vox_fem/true.ogg b/sound/announcer/vox_fem/true.ogg
similarity index 100%
rename from sound/vox_fem/true.ogg
rename to sound/announcer/vox_fem/true.ogg
diff --git a/sound/vox_fem/tunnel.ogg b/sound/announcer/vox_fem/tunnel.ogg
similarity index 100%
rename from sound/vox_fem/tunnel.ogg
rename to sound/announcer/vox_fem/tunnel.ogg
diff --git a/sound/vox_fem/turn.ogg b/sound/announcer/vox_fem/turn.ogg
similarity index 100%
rename from sound/vox_fem/turn.ogg
rename to sound/announcer/vox_fem/turn.ogg
diff --git a/sound/vox_fem/turned.ogg b/sound/announcer/vox_fem/turned.ogg
similarity index 100%
rename from sound/vox_fem/turned.ogg
rename to sound/announcer/vox_fem/turned.ogg
diff --git a/sound/vox_fem/turret.ogg b/sound/announcer/vox_fem/turret.ogg
similarity index 100%
rename from sound/vox_fem/turret.ogg
rename to sound/announcer/vox_fem/turret.ogg
diff --git a/sound/vox_fem/twelve.ogg b/sound/announcer/vox_fem/twelve.ogg
similarity index 100%
rename from sound/vox_fem/twelve.ogg
rename to sound/announcer/vox_fem/twelve.ogg
diff --git a/sound/vox_fem/twenty.ogg b/sound/announcer/vox_fem/twenty.ogg
similarity index 100%
rename from sound/vox_fem/twenty.ogg
rename to sound/announcer/vox_fem/twenty.ogg
diff --git a/sound/vox_fem/two.ogg b/sound/announcer/vox_fem/two.ogg
similarity index 100%
rename from sound/vox_fem/two.ogg
rename to sound/announcer/vox_fem/two.ogg
diff --git a/sound/vox_fem/u.ogg b/sound/announcer/vox_fem/u.ogg
similarity index 100%
rename from sound/vox_fem/u.ogg
rename to sound/announcer/vox_fem/u.ogg
diff --git a/sound/vox_fem/ugh.ogg b/sound/announcer/vox_fem/ugh.ogg
similarity index 100%
rename from sound/vox_fem/ugh.ogg
rename to sound/announcer/vox_fem/ugh.ogg
diff --git a/sound/vox_fem/ughh.ogg b/sound/announcer/vox_fem/ughh.ogg
similarity index 100%
rename from sound/vox_fem/ughh.ogg
rename to sound/announcer/vox_fem/ughh.ogg
diff --git a/sound/vox_fem/unable.ogg b/sound/announcer/vox_fem/unable.ogg
similarity index 100%
rename from sound/vox_fem/unable.ogg
rename to sound/announcer/vox_fem/unable.ogg
diff --git a/sound/vox_fem/unauthorized.ogg b/sound/announcer/vox_fem/unauthorized.ogg
similarity index 100%
rename from sound/vox_fem/unauthorized.ogg
rename to sound/announcer/vox_fem/unauthorized.ogg
diff --git a/sound/vox_fem/under.ogg b/sound/announcer/vox_fem/under.ogg
similarity index 100%
rename from sound/vox_fem/under.ogg
rename to sound/announcer/vox_fem/under.ogg
diff --git a/sound/vox_fem/uniform.ogg b/sound/announcer/vox_fem/uniform.ogg
similarity index 100%
rename from sound/vox_fem/uniform.ogg
rename to sound/announcer/vox_fem/uniform.ogg
diff --git a/sound/vox_fem/unique.ogg b/sound/announcer/vox_fem/unique.ogg
similarity index 100%
rename from sound/vox_fem/unique.ogg
rename to sound/announcer/vox_fem/unique.ogg
diff --git a/sound/vox_fem/unknown.ogg b/sound/announcer/vox_fem/unknown.ogg
similarity index 100%
rename from sound/vox_fem/unknown.ogg
rename to sound/announcer/vox_fem/unknown.ogg
diff --git a/sound/vox_fem/unlocked.ogg b/sound/announcer/vox_fem/unlocked.ogg
similarity index 100%
rename from sound/vox_fem/unlocked.ogg
rename to sound/announcer/vox_fem/unlocked.ogg
diff --git a/sound/vox_fem/unsafe.ogg b/sound/announcer/vox_fem/unsafe.ogg
similarity index 100%
rename from sound/vox_fem/unsafe.ogg
rename to sound/announcer/vox_fem/unsafe.ogg
diff --git a/sound/vox_fem/until.ogg b/sound/announcer/vox_fem/until.ogg
similarity index 100%
rename from sound/vox_fem/until.ogg
rename to sound/announcer/vox_fem/until.ogg
diff --git a/sound/vox_fem/unwrench.ogg b/sound/announcer/vox_fem/unwrench.ogg
similarity index 100%
rename from sound/vox_fem/unwrench.ogg
rename to sound/announcer/vox_fem/unwrench.ogg
diff --git a/sound/vox_fem/unwrenching.ogg b/sound/announcer/vox_fem/unwrenching.ogg
similarity index 100%
rename from sound/vox_fem/unwrenching.ogg
rename to sound/announcer/vox_fem/unwrenching.ogg
diff --git a/sound/vox_fem/up.ogg b/sound/announcer/vox_fem/up.ogg
similarity index 100%
rename from sound/vox_fem/up.ogg
rename to sound/announcer/vox_fem/up.ogg
diff --git a/sound/vox_fem/update.ogg b/sound/announcer/vox_fem/update.ogg
similarity index 100%
rename from sound/vox_fem/update.ogg
rename to sound/announcer/vox_fem/update.ogg
diff --git a/sound/vox_fem/updated.ogg b/sound/announcer/vox_fem/updated.ogg
similarity index 100%
rename from sound/vox_fem/updated.ogg
rename to sound/announcer/vox_fem/updated.ogg
diff --git a/sound/vox_fem/updating.ogg b/sound/announcer/vox_fem/updating.ogg
similarity index 100%
rename from sound/vox_fem/updating.ogg
rename to sound/announcer/vox_fem/updating.ogg
diff --git a/sound/vox_fem/upload.ogg b/sound/announcer/vox_fem/upload.ogg
similarity index 100%
rename from sound/vox_fem/upload.ogg
rename to sound/announcer/vox_fem/upload.ogg
diff --git a/sound/vox_fem/upper.ogg b/sound/announcer/vox_fem/upper.ogg
similarity index 100%
rename from sound/vox_fem/upper.ogg
rename to sound/announcer/vox_fem/upper.ogg
diff --git a/sound/vox_fem/uranium.ogg b/sound/announcer/vox_fem/uranium.ogg
similarity index 100%
rename from sound/vox_fem/uranium.ogg
rename to sound/announcer/vox_fem/uranium.ogg
diff --git a/sound/vox_fem/us.ogg b/sound/announcer/vox_fem/us.ogg
similarity index 100%
rename from sound/vox_fem/us.ogg
rename to sound/announcer/vox_fem/us.ogg
diff --git a/sound/vox_fem/usa.ogg b/sound/announcer/vox_fem/usa.ogg
similarity index 100%
rename from sound/vox_fem/usa.ogg
rename to sound/announcer/vox_fem/usa.ogg
diff --git a/sound/vox_fem/use.ogg b/sound/announcer/vox_fem/use.ogg
similarity index 100%
rename from sound/vox_fem/use.ogg
rename to sound/announcer/vox_fem/use.ogg
diff --git a/sound/vox_fem/used.ogg b/sound/announcer/vox_fem/used.ogg
similarity index 100%
rename from sound/vox_fem/used.ogg
rename to sound/announcer/vox_fem/used.ogg
diff --git a/sound/vox_fem/useful.ogg b/sound/announcer/vox_fem/useful.ogg
similarity index 100%
rename from sound/vox_fem/useful.ogg
rename to sound/announcer/vox_fem/useful.ogg
diff --git a/sound/vox_fem/useless.ogg b/sound/announcer/vox_fem/useless.ogg
similarity index 100%
rename from sound/vox_fem/useless.ogg
rename to sound/announcer/vox_fem/useless.ogg
diff --git a/sound/vox_fem/user.ogg b/sound/announcer/vox_fem/user.ogg
similarity index 100%
rename from sound/vox_fem/user.ogg
rename to sound/announcer/vox_fem/user.ogg
diff --git a/sound/vox_fem/v.ogg b/sound/announcer/vox_fem/v.ogg
similarity index 100%
rename from sound/vox_fem/v.ogg
rename to sound/announcer/vox_fem/v.ogg
diff --git a/sound/vox_fem/vacate.ogg b/sound/announcer/vox_fem/vacate.ogg
similarity index 100%
rename from sound/vox_fem/vacate.ogg
rename to sound/announcer/vox_fem/vacate.ogg
diff --git a/sound/vox_fem/vacuum.ogg b/sound/announcer/vox_fem/vacuum.ogg
similarity index 100%
rename from sound/vox_fem/vacuum.ogg
rename to sound/announcer/vox_fem/vacuum.ogg
diff --git a/sound/vox_fem/valid.ogg b/sound/announcer/vox_fem/valid.ogg
similarity index 100%
rename from sound/vox_fem/valid.ogg
rename to sound/announcer/vox_fem/valid.ogg
diff --git a/sound/vox_fem/validate.ogg b/sound/announcer/vox_fem/validate.ogg
similarity index 100%
rename from sound/vox_fem/validate.ogg
rename to sound/announcer/vox_fem/validate.ogg
diff --git a/sound/vox_fem/vapor.ogg b/sound/announcer/vox_fem/vapor.ogg
similarity index 100%
rename from sound/vox_fem/vapor.ogg
rename to sound/announcer/vox_fem/vapor.ogg
diff --git a/sound/vox_fem/vendor.ogg b/sound/announcer/vox_fem/vendor.ogg
similarity index 100%
rename from sound/vox_fem/vendor.ogg
rename to sound/announcer/vox_fem/vendor.ogg
diff --git a/sound/vox_fem/vent.ogg b/sound/announcer/vox_fem/vent.ogg
similarity index 100%
rename from sound/vox_fem/vent.ogg
rename to sound/announcer/vox_fem/vent.ogg
diff --git a/sound/vox_fem/ventilation.ogg b/sound/announcer/vox_fem/ventilation.ogg
similarity index 100%
rename from sound/vox_fem/ventilation.ogg
rename to sound/announcer/vox_fem/ventilation.ogg
diff --git a/sound/vox_fem/very.ogg b/sound/announcer/vox_fem/very.ogg
similarity index 100%
rename from sound/vox_fem/very.ogg
rename to sound/announcer/vox_fem/very.ogg
diff --git a/sound/vox_fem/victor.ogg b/sound/announcer/vox_fem/victor.ogg
similarity index 100%
rename from sound/vox_fem/victor.ogg
rename to sound/announcer/vox_fem/victor.ogg
diff --git a/sound/vox_fem/violated.ogg b/sound/announcer/vox_fem/violated.ogg
similarity index 100%
rename from sound/vox_fem/violated.ogg
rename to sound/announcer/vox_fem/violated.ogg
diff --git a/sound/vox_fem/violation.ogg b/sound/announcer/vox_fem/violation.ogg
similarity index 100%
rename from sound/vox_fem/violation.ogg
rename to sound/announcer/vox_fem/violation.ogg
diff --git a/sound/vox_fem/virologist.ogg b/sound/announcer/vox_fem/virologist.ogg
similarity index 100%
rename from sound/vox_fem/virologist.ogg
rename to sound/announcer/vox_fem/virologist.ogg
diff --git a/sound/vox_fem/virology.ogg b/sound/announcer/vox_fem/virology.ogg
similarity index 100%
rename from sound/vox_fem/virology.ogg
rename to sound/announcer/vox_fem/virology.ogg
diff --git a/sound/vox_fem/virus.ogg b/sound/announcer/vox_fem/virus.ogg
similarity index 100%
rename from sound/vox_fem/virus.ogg
rename to sound/announcer/vox_fem/virus.ogg
diff --git a/sound/vox_fem/vitals.ogg b/sound/announcer/vox_fem/vitals.ogg
similarity index 100%
rename from sound/vox_fem/vitals.ogg
rename to sound/announcer/vox_fem/vitals.ogg
diff --git a/sound/vox_fem/voltage.ogg b/sound/announcer/vox_fem/voltage.ogg
similarity index 100%
rename from sound/vox_fem/voltage.ogg
rename to sound/announcer/vox_fem/voltage.ogg
diff --git a/sound/vox_fem/vox.ogg b/sound/announcer/vox_fem/vox.ogg
similarity index 100%
rename from sound/vox_fem/vox.ogg
rename to sound/announcer/vox_fem/vox.ogg
diff --git a/sound/vox_fem/vox_login.ogg b/sound/announcer/vox_fem/vox_login.ogg
similarity index 100%
rename from sound/vox_fem/vox_login.ogg
rename to sound/announcer/vox_fem/vox_login.ogg
diff --git a/sound/vox_fem/voxtest.ogg b/sound/announcer/vox_fem/voxtest.ogg
similarity index 100%
rename from sound/vox_fem/voxtest.ogg
rename to sound/announcer/vox_fem/voxtest.ogg
diff --git a/sound/vox_fem/w.ogg b/sound/announcer/vox_fem/w.ogg
similarity index 100%
rename from sound/vox_fem/w.ogg
rename to sound/announcer/vox_fem/w.ogg
diff --git a/sound/vox_fem/walk.ogg b/sound/announcer/vox_fem/walk.ogg
similarity index 100%
rename from sound/vox_fem/walk.ogg
rename to sound/announcer/vox_fem/walk.ogg
diff --git a/sound/vox_fem/wall.ogg b/sound/announcer/vox_fem/wall.ogg
similarity index 100%
rename from sound/vox_fem/wall.ogg
rename to sound/announcer/vox_fem/wall.ogg
diff --git a/sound/vox_fem/wanker.ogg b/sound/announcer/vox_fem/wanker.ogg
similarity index 100%
rename from sound/vox_fem/wanker.ogg
rename to sound/announcer/vox_fem/wanker.ogg
diff --git a/sound/vox_fem/want.ogg b/sound/announcer/vox_fem/want.ogg
similarity index 100%
rename from sound/vox_fem/want.ogg
rename to sound/announcer/vox_fem/want.ogg
diff --git a/sound/vox_fem/wanted.ogg b/sound/announcer/vox_fem/wanted.ogg
similarity index 100%
rename from sound/vox_fem/wanted.ogg
rename to sound/announcer/vox_fem/wanted.ogg
diff --git a/sound/vox_fem/warden.ogg b/sound/announcer/vox_fem/warden.ogg
similarity index 100%
rename from sound/vox_fem/warden.ogg
rename to sound/announcer/vox_fem/warden.ogg
diff --git a/sound/vox_fem/warm.ogg b/sound/announcer/vox_fem/warm.ogg
similarity index 100%
rename from sound/vox_fem/warm.ogg
rename to sound/announcer/vox_fem/warm.ogg
diff --git a/sound/vox_fem/warn.ogg b/sound/announcer/vox_fem/warn.ogg
similarity index 100%
rename from sound/vox_fem/warn.ogg
rename to sound/announcer/vox_fem/warn.ogg
diff --git a/sound/vox_fem/warning.ogg b/sound/announcer/vox_fem/warning.ogg
similarity index 100%
rename from sound/vox_fem/warning.ogg
rename to sound/announcer/vox_fem/warning.ogg
diff --git a/sound/vox_fem/was.ogg b/sound/announcer/vox_fem/was.ogg
similarity index 100%
rename from sound/vox_fem/was.ogg
rename to sound/announcer/vox_fem/was.ogg
diff --git a/sound/vox_fem/waste.ogg b/sound/announcer/vox_fem/waste.ogg
similarity index 100%
rename from sound/vox_fem/waste.ogg
rename to sound/announcer/vox_fem/waste.ogg
diff --git a/sound/vox_fem/water.ogg b/sound/announcer/vox_fem/water.ogg
similarity index 100%
rename from sound/vox_fem/water.ogg
rename to sound/announcer/vox_fem/water.ogg
diff --git a/sound/vox_fem/way.ogg b/sound/announcer/vox_fem/way.ogg
similarity index 100%
rename from sound/vox_fem/way.ogg
rename to sound/announcer/vox_fem/way.ogg
diff --git a/sound/vox_fem/ways.ogg b/sound/announcer/vox_fem/ways.ogg
similarity index 100%
rename from sound/vox_fem/ways.ogg
rename to sound/announcer/vox_fem/ways.ogg
diff --git a/sound/vox_fem/we.ogg b/sound/announcer/vox_fem/we.ogg
similarity index 100%
rename from sound/vox_fem/we.ogg
rename to sound/announcer/vox_fem/we.ogg
diff --git a/sound/vox_fem/weak.ogg b/sound/announcer/vox_fem/weak.ogg
similarity index 100%
rename from sound/vox_fem/weak.ogg
rename to sound/announcer/vox_fem/weak.ogg
diff --git a/sound/vox_fem/weapon.ogg b/sound/announcer/vox_fem/weapon.ogg
similarity index 100%
rename from sound/vox_fem/weapon.ogg
rename to sound/announcer/vox_fem/weapon.ogg
diff --git a/sound/vox_fem/welcome.ogg b/sound/announcer/vox_fem/welcome.ogg
similarity index 100%
rename from sound/vox_fem/welcome.ogg
rename to sound/announcer/vox_fem/welcome.ogg
diff --git a/sound/vox_fem/weld.ogg b/sound/announcer/vox_fem/weld.ogg
similarity index 100%
rename from sound/vox_fem/weld.ogg
rename to sound/announcer/vox_fem/weld.ogg
diff --git a/sound/vox_fem/west.ogg b/sound/announcer/vox_fem/west.ogg
similarity index 100%
rename from sound/vox_fem/west.ogg
rename to sound/announcer/vox_fem/west.ogg
diff --git a/sound/vox_fem/wew.ogg b/sound/announcer/vox_fem/wew.ogg
similarity index 100%
rename from sound/vox_fem/wew.ogg
rename to sound/announcer/vox_fem/wew.ogg
diff --git a/sound/vox_fem/what.ogg b/sound/announcer/vox_fem/what.ogg
similarity index 100%
rename from sound/vox_fem/what.ogg
rename to sound/announcer/vox_fem/what.ogg
diff --git a/sound/vox_fem/when.ogg b/sound/announcer/vox_fem/when.ogg
similarity index 100%
rename from sound/vox_fem/when.ogg
rename to sound/announcer/vox_fem/when.ogg
diff --git a/sound/vox_fem/where.ogg b/sound/announcer/vox_fem/where.ogg
similarity index 100%
rename from sound/vox_fem/where.ogg
rename to sound/announcer/vox_fem/where.ogg
diff --git a/sound/vox_fem/which.ogg b/sound/announcer/vox_fem/which.ogg
similarity index 100%
rename from sound/vox_fem/which.ogg
rename to sound/announcer/vox_fem/which.ogg
diff --git a/sound/vox_fem/while.ogg b/sound/announcer/vox_fem/while.ogg
similarity index 100%
rename from sound/vox_fem/while.ogg
rename to sound/announcer/vox_fem/while.ogg
diff --git a/sound/vox_fem/whiskey.ogg b/sound/announcer/vox_fem/whiskey.ogg
similarity index 100%
rename from sound/vox_fem/whiskey.ogg
rename to sound/announcer/vox_fem/whiskey.ogg
diff --git a/sound/vox_fem/white.ogg b/sound/announcer/vox_fem/white.ogg
similarity index 100%
rename from sound/vox_fem/white.ogg
rename to sound/announcer/vox_fem/white.ogg
diff --git a/sound/vox_fem/why.ogg b/sound/announcer/vox_fem/why.ogg
similarity index 100%
rename from sound/vox_fem/why.ogg
rename to sound/announcer/vox_fem/why.ogg
diff --git a/sound/vox_fem/wilco.ogg b/sound/announcer/vox_fem/wilco.ogg
similarity index 100%
rename from sound/vox_fem/wilco.ogg
rename to sound/announcer/vox_fem/wilco.ogg
diff --git a/sound/vox_fem/will.ogg b/sound/announcer/vox_fem/will.ogg
similarity index 100%
rename from sound/vox_fem/will.ogg
rename to sound/announcer/vox_fem/will.ogg
diff --git a/sound/vox_fem/wing.ogg b/sound/announcer/vox_fem/wing.ogg
similarity index 100%
rename from sound/vox_fem/wing.ogg
rename to sound/announcer/vox_fem/wing.ogg
diff --git a/sound/vox_fem/wire.ogg b/sound/announcer/vox_fem/wire.ogg
similarity index 100%
rename from sound/vox_fem/wire.ogg
rename to sound/announcer/vox_fem/wire.ogg
diff --git a/sound/vox_fem/with.ogg b/sound/announcer/vox_fem/with.ogg
similarity index 100%
rename from sound/vox_fem/with.ogg
rename to sound/announcer/vox_fem/with.ogg
diff --git a/sound/vox_fem/without.ogg b/sound/announcer/vox_fem/without.ogg
similarity index 100%
rename from sound/vox_fem/without.ogg
rename to sound/announcer/vox_fem/without.ogg
diff --git a/sound/vox_fem/wizard.ogg b/sound/announcer/vox_fem/wizard.ogg
similarity index 100%
rename from sound/vox_fem/wizard.ogg
rename to sound/announcer/vox_fem/wizard.ogg
diff --git a/sound/vox_fem/wood.ogg b/sound/announcer/vox_fem/wood.ogg
similarity index 100%
rename from sound/vox_fem/wood.ogg
rename to sound/announcer/vox_fem/wood.ogg
diff --git a/sound/vox_fem/woody.ogg b/sound/announcer/vox_fem/woody.ogg
similarity index 100%
rename from sound/vox_fem/woody.ogg
rename to sound/announcer/vox_fem/woody.ogg
diff --git a/sound/vox_fem/woop.ogg b/sound/announcer/vox_fem/woop.ogg
similarity index 100%
rename from sound/vox_fem/woop.ogg
rename to sound/announcer/vox_fem/woop.ogg
diff --git a/sound/vox_fem/work.ogg b/sound/announcer/vox_fem/work.ogg
similarity index 100%
rename from sound/vox_fem/work.ogg
rename to sound/announcer/vox_fem/work.ogg
diff --git a/sound/vox_fem/worked.ogg b/sound/announcer/vox_fem/worked.ogg
similarity index 100%
rename from sound/vox_fem/worked.ogg
rename to sound/announcer/vox_fem/worked.ogg
diff --git a/sound/vox_fem/working.ogg b/sound/announcer/vox_fem/working.ogg
similarity index 100%
rename from sound/vox_fem/working.ogg
rename to sound/announcer/vox_fem/working.ogg
diff --git a/sound/vox_fem/works.ogg b/sound/announcer/vox_fem/works.ogg
similarity index 100%
rename from sound/vox_fem/works.ogg
rename to sound/announcer/vox_fem/works.ogg
diff --git a/sound/vox_fem/would.ogg b/sound/announcer/vox_fem/would.ogg
similarity index 100%
rename from sound/vox_fem/would.ogg
rename to sound/announcer/vox_fem/would.ogg
diff --git a/sound/vox_fem/wouldnt.ogg b/sound/announcer/vox_fem/wouldnt.ogg
similarity index 100%
rename from sound/vox_fem/wouldnt.ogg
rename to sound/announcer/vox_fem/wouldnt.ogg
diff --git a/sound/vox_fem/wow.ogg b/sound/announcer/vox_fem/wow.ogg
similarity index 100%
rename from sound/vox_fem/wow.ogg
rename to sound/announcer/vox_fem/wow.ogg
diff --git a/sound/vox_fem/wrench.ogg b/sound/announcer/vox_fem/wrench.ogg
similarity index 100%
rename from sound/vox_fem/wrench.ogg
rename to sound/announcer/vox_fem/wrench.ogg
diff --git a/sound/vox_fem/wrenching.ogg b/sound/announcer/vox_fem/wrenching.ogg
similarity index 100%
rename from sound/vox_fem/wrenching.ogg
rename to sound/announcer/vox_fem/wrenching.ogg
diff --git a/sound/vox_fem/x.ogg b/sound/announcer/vox_fem/x.ogg
similarity index 100%
rename from sound/vox_fem/x.ogg
rename to sound/announcer/vox_fem/x.ogg
diff --git a/sound/vox_fem/xeno.ogg b/sound/announcer/vox_fem/xeno.ogg
similarity index 100%
rename from sound/vox_fem/xeno.ogg
rename to sound/announcer/vox_fem/xeno.ogg
diff --git a/sound/vox_fem/xenobiology.ogg b/sound/announcer/vox_fem/xenobiology.ogg
similarity index 100%
rename from sound/vox_fem/xenobiology.ogg
rename to sound/announcer/vox_fem/xenobiology.ogg
diff --git a/sound/vox_fem/xenomorph.ogg b/sound/announcer/vox_fem/xenomorph.ogg
similarity index 100%
rename from sound/vox_fem/xenomorph.ogg
rename to sound/announcer/vox_fem/xenomorph.ogg
diff --git a/sound/vox_fem/xenomorphs.ogg b/sound/announcer/vox_fem/xenomorphs.ogg
similarity index 100%
rename from sound/vox_fem/xenomorphs.ogg
rename to sound/announcer/vox_fem/xenomorphs.ogg
diff --git a/sound/vox_fem/y.ogg b/sound/announcer/vox_fem/y.ogg
similarity index 100%
rename from sound/vox_fem/y.ogg
rename to sound/announcer/vox_fem/y.ogg
diff --git a/sound/vox_fem/yankee.ogg b/sound/announcer/vox_fem/yankee.ogg
similarity index 100%
rename from sound/vox_fem/yankee.ogg
rename to sound/announcer/vox_fem/yankee.ogg
diff --git a/sound/vox_fem/yards.ogg b/sound/announcer/vox_fem/yards.ogg
similarity index 100%
rename from sound/vox_fem/yards.ogg
rename to sound/announcer/vox_fem/yards.ogg
diff --git a/sound/vox_fem/year.ogg b/sound/announcer/vox_fem/year.ogg
similarity index 100%
rename from sound/vox_fem/year.ogg
rename to sound/announcer/vox_fem/year.ogg
diff --git a/sound/vox_fem/yellow.ogg b/sound/announcer/vox_fem/yellow.ogg
similarity index 100%
rename from sound/vox_fem/yellow.ogg
rename to sound/announcer/vox_fem/yellow.ogg
diff --git a/sound/vox_fem/yes.ogg b/sound/announcer/vox_fem/yes.ogg
similarity index 100%
rename from sound/vox_fem/yes.ogg
rename to sound/announcer/vox_fem/yes.ogg
diff --git a/sound/vox_fem/you.ogg b/sound/announcer/vox_fem/you.ogg
similarity index 100%
rename from sound/vox_fem/you.ogg
rename to sound/announcer/vox_fem/you.ogg
diff --git a/sound/vox_fem/your.ogg b/sound/announcer/vox_fem/your.ogg
similarity index 100%
rename from sound/vox_fem/your.ogg
rename to sound/announcer/vox_fem/your.ogg
diff --git a/sound/vox_fem/yourself.ogg b/sound/announcer/vox_fem/yourself.ogg
similarity index 100%
rename from sound/vox_fem/yourself.ogg
rename to sound/announcer/vox_fem/yourself.ogg
diff --git a/sound/vox_fem/z.ogg b/sound/announcer/vox_fem/z.ogg
similarity index 100%
rename from sound/vox_fem/z.ogg
rename to sound/announcer/vox_fem/z.ogg
diff --git a/sound/vox_fem/zap.ogg b/sound/announcer/vox_fem/zap.ogg
similarity index 100%
rename from sound/vox_fem/zap.ogg
rename to sound/announcer/vox_fem/zap.ogg
diff --git a/sound/vox_fem/zauker.ogg b/sound/announcer/vox_fem/zauker.ogg
similarity index 100%
rename from sound/vox_fem/zauker.ogg
rename to sound/announcer/vox_fem/zauker.ogg
diff --git a/sound/vox_fem/zero.ogg b/sound/announcer/vox_fem/zero.ogg
similarity index 100%
rename from sound/vox_fem/zero.ogg
rename to sound/announcer/vox_fem/zero.ogg
diff --git a/sound/vox_fem/zombie.ogg b/sound/announcer/vox_fem/zombie.ogg
similarity index 100%
rename from sound/vox_fem/zombie.ogg
rename to sound/announcer/vox_fem/zombie.ogg
diff --git a/sound/vox_fem/zone.ogg b/sound/announcer/vox_fem/zone.ogg
similarity index 100%
rename from sound/vox_fem/zone.ogg
rename to sound/announcer/vox_fem/zone.ogg
diff --git a/sound/vox_fem/zulu.ogg b/sound/announcer/vox_fem/zulu.ogg
similarity index 100%
rename from sound/vox_fem/zulu.ogg
rename to sound/announcer/vox_fem/zulu.ogg
diff --git a/sound/attributions.txt b/sound/attributions.txt
index aa3cd0bf37fae..dab6cedf7eb62 100644
--- a/sound/attributions.txt
+++ b/sound/attributions.txt
@@ -28,7 +28,7 @@ splatter.ogg adapted from https://freesound.org/people/Rocktopus/sounds/233418/
hohoho.ogg and hehe.ogg are cut from a recording by Nanakisan on freesound: https://freesound.org/people/Nanakisan/sounds/253534/
mbox_full.ogg and mbox_end.ogg make use of The Ragtime Drummer by James Lent, in the public domain
-growl1.ogg and growl2.ogg in /sound/creatures/dog are adapted from Glitchedtones's Freesound shih-tzu uploads https://freesound.org/people/Glitchedtones/
+growl1.ogg and growl2.ogg in /sound/mobs/non-humanoids/dog are adapted from Glitchedtones's Freesound shih-tzu uploads https://freesound.org/people/Glitchedtones/
eject.ogg is by magedu, adapted from https://freesound.org/people/magedu/sounds/267832/
@@ -181,15 +181,7 @@ https://freesound.org/people/shw489/sounds/234389/
soup_boil1.ogg through soup_boil5.ogg and soup_boil_end.ogg are taken from Boiling Soup from Freesoung.org (CC4) and converted to OGG / split apart (but is otherwise unchanged):
https://freesound.org/people/jorickhoofd/sounds/632783/
-compressed_air1.ogg is taken from Freesound and converted to ogg:
-https://freesound.org/people/Geoff-Bremner-Audio/sounds/682952/
-compressed_air2.ogg is taken from Freesound and converted to ogg:
-https://freesound.org/people/Geoff-Bremner-Audio/sounds/682816/
-tank_insert_clunky.ogg was created by mixing compressed_air1 and clunk sound from Freesound:
-https://freesound.org/people/BinaryMonkFlint/sounds/333296/
-tank_remove_thunk.ogg was made by mixing two sound tracks from Freesound:
-https://freesound.org/people/lowdjinn/sounds/533885/ and;
-https://freesound.org/people/BMacZero/sounds/96137/
+
valve_opening.ogg was made by mixing water flowing samples from:
https://freesound.org/people/scriotxstudios/sounds/349111/?attribution=1 and squeaky scrape sound from:
@@ -215,3 +207,5 @@ place glass object.wav by milpower -- https://freesound.org/s/353105/ -- License
glass_reverse.ogg is adapted from a combination of:
https://freesound.org/people/C_Rogers/sounds/203368/ -- glass-shattering-hit_01.ogg by C_Rogers on freesound.org (CC0)
https://freesound.org/people/Czarcazas/sounds/330800/ -- Audio reversal/fading of Shattering Glass (Small) by Czarcazas -- https://freesound.org/s/330800/ -- License: Attribution 3.0
+
+sound/effects/bonk.ogg - recorded by oranges on a coke zero bottle, edited by ninjanomnom, released to public domain
diff --git a/sound/effects/beeps_jingle.ogg b/sound/effects/achievement/beeps_jingle.ogg
similarity index 100%
rename from sound/effects/beeps_jingle.ogg
rename to sound/effects/achievement/beeps_jingle.ogg
diff --git a/sound/effects/glockenspiel_ping.ogg b/sound/effects/achievement/glockenspiel_ping.ogg
similarity index 100%
rename from sound/effects/glockenspiel_ping.ogg
rename to sound/effects/achievement/glockenspiel_ping.ogg
diff --git a/sound/effects/tada_fanfare.ogg b/sound/effects/achievement/tada_fanfare.ogg
similarity index 100%
rename from sound/effects/tada_fanfare.ogg
rename to sound/effects/achievement/tada_fanfare.ogg
diff --git a/sound/effects/bin_close.ogg b/sound/effects/bin/bin_close.ogg
similarity index 100%
rename from sound/effects/bin_close.ogg
rename to sound/effects/bin/bin_close.ogg
diff --git a/sound/effects/bin_open.ogg b/sound/effects/bin/bin_open.ogg
similarity index 100%
rename from sound/effects/bin_open.ogg
rename to sound/effects/bin/bin_open.ogg
diff --git a/sound/effects/attackblob.ogg b/sound/effects/blob/attackblob.ogg
similarity index 100%
rename from sound/effects/attackblob.ogg
rename to sound/effects/blob/attackblob.ogg
diff --git a/sound/effects/blobattack.ogg b/sound/effects/blob/blobattack.ogg
similarity index 100%
rename from sound/effects/blobattack.ogg
rename to sound/effects/blob/blobattack.ogg
diff --git a/sound/effects/bodyfall1.ogg b/sound/effects/bodyfall/bodyfall1.ogg
similarity index 100%
rename from sound/effects/bodyfall1.ogg
rename to sound/effects/bodyfall/bodyfall1.ogg
diff --git a/sound/effects/bodyfall2.ogg b/sound/effects/bodyfall/bodyfall2.ogg
similarity index 100%
rename from sound/effects/bodyfall2.ogg
rename to sound/effects/bodyfall/bodyfall2.ogg
diff --git a/sound/effects/bodyfall3.ogg b/sound/effects/bodyfall/bodyfall3.ogg
similarity index 100%
rename from sound/effects/bodyfall3.ogg
rename to sound/effects/bodyfall/bodyfall3.ogg
diff --git a/sound/effects/bodyfall4.ogg b/sound/effects/bodyfall/bodyfall4.ogg
similarity index 100%
rename from sound/effects/bodyfall4.ogg
rename to sound/effects/bodyfall/bodyfall4.ogg
diff --git a/sound/effects/bonk.ogg b/sound/effects/bonk.ogg
new file mode 100644
index 0000000000000..709078c1efb47
Binary files /dev/null and b/sound/effects/bonk.ogg differ
diff --git a/sound/effects/bubbles.ogg b/sound/effects/bubbles/bubbles.ogg
similarity index 100%
rename from sound/effects/bubbles.ogg
rename to sound/effects/bubbles/bubbles.ogg
diff --git a/sound/effects/bubbles2.ogg b/sound/effects/bubbles/bubbles2.ogg
similarity index 100%
rename from sound/effects/bubbles2.ogg
rename to sound/effects/bubbles/bubbles2.ogg
diff --git a/sound/effects/crunchybushwhack1.ogg b/sound/effects/bush/crunchybushwhack1.ogg
similarity index 100%
rename from sound/effects/crunchybushwhack1.ogg
rename to sound/effects/bush/crunchybushwhack1.ogg
diff --git a/sound/effects/crunchybushwhack2.ogg b/sound/effects/bush/crunchybushwhack2.ogg
similarity index 100%
rename from sound/effects/crunchybushwhack2.ogg
rename to sound/effects/bush/crunchybushwhack2.ogg
diff --git a/sound/effects/crunchybushwhack3.ogg b/sound/effects/bush/crunchybushwhack3.ogg
similarity index 100%
rename from sound/effects/crunchybushwhack3.ogg
rename to sound/effects/bush/crunchybushwhack3.ogg
diff --git a/sound/effects/can_open1.ogg b/sound/effects/can/can_open1.ogg
similarity index 100%
rename from sound/effects/can_open1.ogg
rename to sound/effects/can/can_open1.ogg
diff --git a/sound/effects/can_open2.ogg b/sound/effects/can/can_open2.ogg
similarity index 100%
rename from sound/effects/can_open2.ogg
rename to sound/effects/can/can_open2.ogg
diff --git a/sound/effects/can_open3.ogg b/sound/effects/can/can_open3.ogg
similarity index 100%
rename from sound/effects/can_open3.ogg
rename to sound/effects/can/can_open3.ogg
diff --git a/sound/effects/can_pop.ogg b/sound/effects/can/can_pop.ogg
similarity index 100%
rename from sound/effects/can_pop.ogg
rename to sound/effects/can/can_pop.ogg
diff --git a/sound/effects/can_shake.ogg b/sound/effects/can/can_shake.ogg
similarity index 100%
rename from sound/effects/can_shake.ogg
rename to sound/effects/can/can_shake.ogg
diff --git a/sound/effects/cartoon_pop.ogg b/sound/effects/cartoon_sfx/cartoon_pop.ogg
similarity index 100%
rename from sound/effects/cartoon_pop.ogg
rename to sound/effects/cartoon_sfx/cartoon_pop.ogg
diff --git a/sound/effects/cartoon_splat.ogg b/sound/effects/cartoon_sfx/cartoon_splat.ogg
similarity index 100%
rename from sound/effects/cartoon_splat.ogg
rename to sound/effects/cartoon_sfx/cartoon_splat.ogg
diff --git a/sound/chemistry/SoundSources.txt b/sound/effects/chemistry/SoundSources.txt
similarity index 100%
rename from sound/chemistry/SoundSources.txt
rename to sound/effects/chemistry/SoundSources.txt
diff --git a/sound/chemistry/ahaha.ogg b/sound/effects/chemistry/ahaha.ogg
similarity index 100%
rename from sound/chemistry/ahaha.ogg
rename to sound/effects/chemistry/ahaha.ogg
diff --git a/sound/chemistry/bluespace.ogg b/sound/effects/chemistry/bluespace.ogg
similarity index 100%
rename from sound/chemistry/bluespace.ogg
rename to sound/effects/chemistry/bluespace.ogg
diff --git a/sound/chemistry/bufferadd.ogg b/sound/effects/chemistry/bufferadd.ogg
similarity index 100%
rename from sound/chemistry/bufferadd.ogg
rename to sound/effects/chemistry/bufferadd.ogg
diff --git a/sound/chemistry/catalyst.ogg b/sound/effects/chemistry/catalyst.ogg
similarity index 100%
rename from sound/chemistry/catalyst.ogg
rename to sound/effects/chemistry/catalyst.ogg
diff --git a/sound/chemistry/heatdam.ogg b/sound/effects/chemistry/heatdam.ogg
similarity index 100%
rename from sound/chemistry/heatdam.ogg
rename to sound/effects/chemistry/heatdam.ogg
diff --git a/sound/chemistry/saturnx_fade.ogg b/sound/effects/chemistry/saturnx_fade.ogg
similarity index 100%
rename from sound/chemistry/saturnx_fade.ogg
rename to sound/effects/chemistry/saturnx_fade.ogg
diff --git a/sound/chemistry/shockwave_explosion.ogg b/sound/effects/chemistry/shockwave_explosion.ogg
similarity index 100%
rename from sound/chemistry/shockwave_explosion.ogg
rename to sound/effects/chemistry/shockwave_explosion.ogg
diff --git a/sound/effects/compressed_air/attribution.txt b/sound/effects/compressed_air/attribution.txt
new file mode 100644
index 0000000000000..1eff1ab751225
--- /dev/null
+++ b/sound/effects/compressed_air/attribution.txt
@@ -0,0 +1,9 @@
+compressed_air1.ogg is taken from Freesound and converted to ogg:
+https://freesound.org/people/Geoff-Bremner-Audio/sounds/682952/
+compressed_air2.ogg is taken from Freesound and converted to ogg:
+https://freesound.org/people/Geoff-Bremner-Audio/sounds/682816/
+tank_insert_clunky.ogg was created by mixing compressed_air1 and clunk sound from Freesound:
+https://freesound.org/people/BinaryMonkFlint/sounds/333296/
+tank_remove_thunk.ogg was made by mixing two sound tracks from Freesound:
+https://freesound.org/people/lowdjinn/sounds/533885/ and;
+https://freesound.org/people/BMacZero/sounds/96137/
diff --git a/sound/effects/compressed_air1.ogg b/sound/effects/compressed_air/compressed_air1.ogg
similarity index 100%
rename from sound/effects/compressed_air1.ogg
rename to sound/effects/compressed_air/compressed_air1.ogg
diff --git a/sound/effects/compressed_air2.ogg b/sound/effects/compressed_air/compressed_air2.ogg
similarity index 100%
rename from sound/effects/compressed_air2.ogg
rename to sound/effects/compressed_air/compressed_air2.ogg
diff --git a/sound/effects/tank_insert_clunky.ogg b/sound/effects/compressed_air/tank_insert_clunky.ogg
similarity index 100%
rename from sound/effects/tank_insert_clunky.ogg
rename to sound/effects/compressed_air/tank_insert_clunky.ogg
diff --git a/sound/effects/tank_remove_thunk.ogg b/sound/effects/compressed_air/tank_remove_thunk.ogg
similarity index 100%
rename from sound/effects/tank_remove_thunk.ogg
rename to sound/effects/compressed_air/tank_remove_thunk.ogg
diff --git a/sound/effects/creak1.ogg b/sound/effects/creak/creak1.ogg
similarity index 100%
rename from sound/effects/creak1.ogg
rename to sound/effects/creak/creak1.ogg
diff --git a/sound/effects/creak2.ogg b/sound/effects/creak/creak2.ogg
similarity index 100%
rename from sound/effects/creak2.ogg
rename to sound/effects/creak/creak2.ogg
diff --git a/sound/effects/creak3.ogg b/sound/effects/creak/creak3.ogg
similarity index 100%
rename from sound/effects/creak3.ogg
rename to sound/effects/creak/creak3.ogg
diff --git a/sound/effects/curse1.ogg b/sound/effects/curse/curse1.ogg
similarity index 100%
rename from sound/effects/curse1.ogg
rename to sound/effects/curse/curse1.ogg
diff --git a/sound/effects/curse2.ogg b/sound/effects/curse/curse2.ogg
similarity index 100%
rename from sound/effects/curse2.ogg
rename to sound/effects/curse/curse2.ogg
diff --git a/sound/effects/curse3.ogg b/sound/effects/curse/curse3.ogg
similarity index 100%
rename from sound/effects/curse3.ogg
rename to sound/effects/curse/curse3.ogg
diff --git a/sound/effects/curse4.ogg b/sound/effects/curse/curse4.ogg
similarity index 100%
rename from sound/effects/curse4.ogg
rename to sound/effects/curse/curse4.ogg
diff --git a/sound/effects/curse5.ogg b/sound/effects/curse/curse5.ogg
similarity index 100%
rename from sound/effects/curse5.ogg
rename to sound/effects/curse/curse5.ogg
diff --git a/sound/effects/curse6.ogg b/sound/effects/curse/curse6.ogg
similarity index 100%
rename from sound/effects/curse6.ogg
rename to sound/effects/curse/curse6.ogg
diff --git a/sound/effects/curseattack.ogg b/sound/effects/curse/curseattack.ogg
similarity index 100%
rename from sound/effects/curseattack.ogg
rename to sound/effects/curse/curseattack.ogg
diff --git a/sound/misc/desecration-01.ogg b/sound/effects/desecration/desecration-01.ogg
similarity index 100%
rename from sound/misc/desecration-01.ogg
rename to sound/effects/desecration/desecration-01.ogg
diff --git a/sound/misc/desecration-02.ogg b/sound/effects/desecration/desecration-02.ogg
similarity index 100%
rename from sound/misc/desecration-02.ogg
rename to sound/effects/desecration/desecration-02.ogg
diff --git a/sound/misc/desecration-03.ogg b/sound/effects/desecration/desecration-03.ogg
similarity index 100%
rename from sound/misc/desecration-03.ogg
rename to sound/effects/desecration/desecration-03.ogg
diff --git a/sound/effects/assslap.ogg b/sound/effects/emotes/assslap.ogg
similarity index 100%
rename from sound/effects/assslap.ogg
rename to sound/effects/emotes/assslap.ogg
diff --git a/sound/effects/kiss.ogg b/sound/effects/emotes/kiss.ogg
similarity index 100%
rename from sound/effects/kiss.ogg
rename to sound/effects/emotes/kiss.ogg
diff --git a/sound/effects/explosion1.ogg b/sound/effects/explosion/explosion1.ogg
similarity index 100%
rename from sound/effects/explosion1.ogg
rename to sound/effects/explosion/explosion1.ogg
diff --git a/sound/effects/explosion2.ogg b/sound/effects/explosion/explosion2.ogg
similarity index 100%
rename from sound/effects/explosion2.ogg
rename to sound/effects/explosion/explosion2.ogg
diff --git a/sound/effects/explosion3.ogg b/sound/effects/explosion/explosion3.ogg
similarity index 100%
rename from sound/effects/explosion3.ogg
rename to sound/effects/explosion/explosion3.ogg
diff --git a/sound/effects/explosion_distant.ogg b/sound/effects/explosion/explosion_distant.ogg
similarity index 100%
rename from sound/effects/explosion_distant.ogg
rename to sound/effects/explosion/explosion_distant.ogg
diff --git a/sound/effects/explosioncreak1.ogg b/sound/effects/explosion/explosioncreak1.ogg
similarity index 100%
rename from sound/effects/explosioncreak1.ogg
rename to sound/effects/explosion/explosioncreak1.ogg
diff --git a/sound/effects/explosioncreak2.ogg b/sound/effects/explosion/explosioncreak2.ogg
similarity index 100%
rename from sound/effects/explosioncreak2.ogg
rename to sound/effects/explosion/explosioncreak2.ogg
diff --git a/sound/effects/explosionfar.ogg b/sound/effects/explosion/explosionfar.ogg
similarity index 100%
rename from sound/effects/explosionfar.ogg
rename to sound/effects/explosion/explosionfar.ogg
diff --git a/sound/effects/water1.ogg b/sound/effects/footstep/water/water1.ogg
similarity index 100%
rename from sound/effects/water1.ogg
rename to sound/effects/footstep/water/water1.ogg
diff --git a/sound/effects/water2.ogg b/sound/effects/footstep/water/water2.ogg
similarity index 100%
rename from sound/effects/water2.ogg
rename to sound/effects/footstep/water/water2.ogg
diff --git a/sound/effects/water3.ogg b/sound/effects/footstep/water/water3.ogg
similarity index 100%
rename from sound/effects/water3.ogg
rename to sound/effects/footstep/water/water3.ogg
diff --git a/sound/effects/water4.ogg b/sound/effects/footstep/water/water4.ogg
similarity index 100%
rename from sound/effects/water4.ogg
rename to sound/effects/footstep/water/water4.ogg
diff --git a/sound/effects/glass_reverse.ogg b/sound/effects/glass/glass_reverse.ogg
similarity index 100%
rename from sound/effects/glass_reverse.ogg
rename to sound/effects/glass/glass_reverse.ogg
diff --git a/sound/effects/glassbash.ogg b/sound/effects/glass/glassbash.ogg
similarity index 100%
rename from sound/effects/glassbash.ogg
rename to sound/effects/glass/glassbash.ogg
diff --git a/sound/effects/glassbr1.ogg b/sound/effects/glass/glassbr1.ogg
similarity index 100%
rename from sound/effects/glassbr1.ogg
rename to sound/effects/glass/glassbr1.ogg
diff --git a/sound/effects/glassbr2.ogg b/sound/effects/glass/glassbr2.ogg
similarity index 100%
rename from sound/effects/glassbr2.ogg
rename to sound/effects/glass/glassbr2.ogg
diff --git a/sound/effects/glassbr3.ogg b/sound/effects/glass/glassbr3.ogg
similarity index 100%
rename from sound/effects/glassbr3.ogg
rename to sound/effects/glass/glassbr3.ogg
diff --git a/sound/effects/glasshit.ogg b/sound/effects/glass/glasshit.ogg
similarity index 100%
rename from sound/effects/glasshit.ogg
rename to sound/effects/glass/glasshit.ogg
diff --git a/sound/effects/glassknock.ogg b/sound/effects/glass/glassknock.ogg
similarity index 100%
rename from sound/effects/glassknock.ogg
rename to sound/effects/glass/glassknock.ogg
diff --git a/sound/hallucinations/behind_you1.ogg b/sound/effects/hallucinations/behind_you1.ogg
similarity index 100%
rename from sound/hallucinations/behind_you1.ogg
rename to sound/effects/hallucinations/behind_you1.ogg
diff --git a/sound/hallucinations/behind_you2.ogg b/sound/effects/hallucinations/behind_you2.ogg
similarity index 100%
rename from sound/hallucinations/behind_you2.ogg
rename to sound/effects/hallucinations/behind_you2.ogg
diff --git a/sound/hallucinations/far_noise.ogg b/sound/effects/hallucinations/far_noise.ogg
similarity index 100%
rename from sound/hallucinations/far_noise.ogg
rename to sound/effects/hallucinations/far_noise.ogg
diff --git a/sound/hallucinations/growl1.ogg b/sound/effects/hallucinations/growl1.ogg
similarity index 100%
rename from sound/hallucinations/growl1.ogg
rename to sound/effects/hallucinations/growl1.ogg
diff --git a/sound/hallucinations/growl2.ogg b/sound/effects/hallucinations/growl2.ogg
similarity index 100%
rename from sound/hallucinations/growl2.ogg
rename to sound/effects/hallucinations/growl2.ogg
diff --git a/sound/hallucinations/growl3.ogg b/sound/effects/hallucinations/growl3.ogg
similarity index 100%
rename from sound/hallucinations/growl3.ogg
rename to sound/effects/hallucinations/growl3.ogg
diff --git a/sound/hallucinations/i_see_you1.ogg b/sound/effects/hallucinations/i_see_you1.ogg
similarity index 100%
rename from sound/hallucinations/i_see_you1.ogg
rename to sound/effects/hallucinations/i_see_you1.ogg
diff --git a/sound/hallucinations/i_see_you2.ogg b/sound/effects/hallucinations/i_see_you2.ogg
similarity index 100%
rename from sound/hallucinations/i_see_you2.ogg
rename to sound/effects/hallucinations/i_see_you2.ogg
diff --git a/sound/hallucinations/im_here1.ogg b/sound/effects/hallucinations/im_here1.ogg
similarity index 100%
rename from sound/hallucinations/im_here1.ogg
rename to sound/effects/hallucinations/im_here1.ogg
diff --git a/sound/hallucinations/im_here2.ogg b/sound/effects/hallucinations/im_here2.ogg
similarity index 100%
rename from sound/hallucinations/im_here2.ogg
rename to sound/effects/hallucinations/im_here2.ogg
diff --git a/sound/hallucinations/look_up1.ogg b/sound/effects/hallucinations/look_up1.ogg
similarity index 100%
rename from sound/hallucinations/look_up1.ogg
rename to sound/effects/hallucinations/look_up1.ogg
diff --git a/sound/hallucinations/look_up2.ogg b/sound/effects/hallucinations/look_up2.ogg
similarity index 100%
rename from sound/hallucinations/look_up2.ogg
rename to sound/effects/hallucinations/look_up2.ogg
diff --git a/sound/hallucinations/over_here1.ogg b/sound/effects/hallucinations/over_here1.ogg
similarity index 100%
rename from sound/hallucinations/over_here1.ogg
rename to sound/effects/hallucinations/over_here1.ogg
diff --git a/sound/hallucinations/over_here2.ogg b/sound/effects/hallucinations/over_here2.ogg
similarity index 100%
rename from sound/hallucinations/over_here2.ogg
rename to sound/effects/hallucinations/over_here2.ogg
diff --git a/sound/hallucinations/over_here3.ogg b/sound/effects/hallucinations/over_here3.ogg
similarity index 100%
rename from sound/hallucinations/over_here3.ogg
rename to sound/effects/hallucinations/over_here3.ogg
diff --git a/sound/hallucinations/radio_static.ogg b/sound/effects/hallucinations/radio_static.ogg
similarity index 100%
rename from sound/hallucinations/radio_static.ogg
rename to sound/effects/hallucinations/radio_static.ogg
diff --git a/sound/hallucinations/turn_around1.ogg b/sound/effects/hallucinations/turn_around1.ogg
similarity index 100%
rename from sound/hallucinations/turn_around1.ogg
rename to sound/effects/hallucinations/turn_around1.ogg
diff --git a/sound/hallucinations/turn_around2.ogg b/sound/effects/hallucinations/turn_around2.ogg
similarity index 100%
rename from sound/hallucinations/turn_around2.ogg
rename to sound/effects/hallucinations/turn_around2.ogg
diff --git a/sound/hallucinations/veryfar_noise.ogg b/sound/effects/hallucinations/veryfar_noise.ogg
similarity index 100%
rename from sound/hallucinations/veryfar_noise.ogg
rename to sound/effects/hallucinations/veryfar_noise.ogg
diff --git a/sound/hallucinations/wail.ogg b/sound/effects/hallucinations/wail.ogg
similarity index 100%
rename from sound/hallucinations/wail.ogg
rename to sound/effects/hallucinations/wail.ogg
diff --git a/sound/health/fastbeat.ogg b/sound/effects/health/fastbeat.ogg
similarity index 100%
rename from sound/health/fastbeat.ogg
rename to sound/effects/health/fastbeat.ogg
diff --git a/sound/health/slowbeat.ogg b/sound/effects/health/slowbeat.ogg
similarity index 100%
rename from sound/health/slowbeat.ogg
rename to sound/effects/health/slowbeat.ogg
diff --git a/sound/effects/his_grace_ascend.ogg b/sound/effects/his_grace/his_grace_ascend.ogg
similarity index 100%
rename from sound/effects/his_grace_ascend.ogg
rename to sound/effects/his_grace/his_grace_ascend.ogg
diff --git a/sound/effects/his_grace_awaken.ogg b/sound/effects/his_grace/his_grace_awaken.ogg
similarity index 100%
rename from sound/effects/his_grace_awaken.ogg
rename to sound/effects/his_grace/his_grace_awaken.ogg
diff --git a/sound/effects/liquid_pour1.ogg b/sound/effects/liquid_pour/liquid_pour1.ogg
similarity index 100%
rename from sound/effects/liquid_pour1.ogg
rename to sound/effects/liquid_pour/liquid_pour1.ogg
diff --git a/sound/effects/liquid_pour2.ogg b/sound/effects/liquid_pour/liquid_pour2.ogg
similarity index 100%
rename from sound/effects/liquid_pour2.ogg
rename to sound/effects/liquid_pour/liquid_pour2.ogg
diff --git a/sound/effects/liquid_pour3.ogg b/sound/effects/liquid_pour/liquid_pour3.ogg
similarity index 100%
rename from sound/effects/liquid_pour3.ogg
rename to sound/effects/liquid_pour/liquid_pour3.ogg
diff --git a/sound/magic/RATTLEMEBONES.ogg b/sound/effects/magic/RATTLEMEBONES.ogg
similarity index 100%
rename from sound/magic/RATTLEMEBONES.ogg
rename to sound/effects/magic/RATTLEMEBONES.ogg
diff --git a/sound/magic/RATTLEMEBONES2.ogg b/sound/effects/magic/RATTLEMEBONES2.ogg
similarity index 100%
rename from sound/magic/RATTLEMEBONES2.ogg
rename to sound/effects/magic/RATTLEMEBONES2.ogg
diff --git a/sound/magic/VoidDeflect01.ogg b/sound/effects/magic/VoidDeflect01.ogg
similarity index 100%
rename from sound/magic/VoidDeflect01.ogg
rename to sound/effects/magic/VoidDeflect01.ogg
diff --git a/sound/magic/VoidDeflect02.ogg b/sound/effects/magic/VoidDeflect02.ogg
similarity index 100%
rename from sound/magic/VoidDeflect02.ogg
rename to sound/effects/magic/VoidDeflect02.ogg
diff --git a/sound/magic/VoidDeflect03.ogg b/sound/effects/magic/VoidDeflect03.ogg
similarity index 100%
rename from sound/magic/VoidDeflect03.ogg
rename to sound/effects/magic/VoidDeflect03.ogg
diff --git a/sound/magic/blind.ogg b/sound/effects/magic/blind.ogg
similarity index 100%
rename from sound/magic/blind.ogg
rename to sound/effects/magic/blind.ogg
diff --git a/sound/magic/blink.ogg b/sound/effects/magic/blink.ogg
similarity index 100%
rename from sound/magic/blink.ogg
rename to sound/effects/magic/blink.ogg
diff --git a/sound/magic/castsummon.ogg b/sound/effects/magic/castsummon.ogg
similarity index 100%
rename from sound/magic/castsummon.ogg
rename to sound/effects/magic/castsummon.ogg
diff --git a/sound/magic/charge.ogg b/sound/effects/magic/charge.ogg
similarity index 100%
rename from sound/magic/charge.ogg
rename to sound/effects/magic/charge.ogg
diff --git a/sound/magic/clockwork/anima_fragment_attack.ogg b/sound/effects/magic/clockwork/anima_fragment_attack.ogg
similarity index 100%
rename from sound/magic/clockwork/anima_fragment_attack.ogg
rename to sound/effects/magic/clockwork/anima_fragment_attack.ogg
diff --git a/sound/magic/clockwork/anima_fragment_death.ogg b/sound/effects/magic/clockwork/anima_fragment_death.ogg
similarity index 100%
rename from sound/magic/clockwork/anima_fragment_death.ogg
rename to sound/effects/magic/clockwork/anima_fragment_death.ogg
diff --git a/sound/magic/clockwork/ark_activation.ogg b/sound/effects/magic/clockwork/ark_activation.ogg
similarity index 100%
rename from sound/magic/clockwork/ark_activation.ogg
rename to sound/effects/magic/clockwork/ark_activation.ogg
diff --git a/sound/magic/clockwork/ark_activation_sequence.ogg b/sound/effects/magic/clockwork/ark_activation_sequence.ogg
similarity index 100%
rename from sound/magic/clockwork/ark_activation_sequence.ogg
rename to sound/effects/magic/clockwork/ark_activation_sequence.ogg
diff --git a/sound/magic/clockwork/credit.txt b/sound/effects/magic/clockwork/credit.txt
similarity index 100%
rename from sound/magic/clockwork/credit.txt
rename to sound/effects/magic/clockwork/credit.txt
diff --git a/sound/magic/clockwork/fellowship_armory.ogg b/sound/effects/magic/clockwork/fellowship_armory.ogg
similarity index 100%
rename from sound/magic/clockwork/fellowship_armory.ogg
rename to sound/effects/magic/clockwork/fellowship_armory.ogg
diff --git a/sound/magic/clockwork/invoke_general.ogg b/sound/effects/magic/clockwork/invoke_general.ogg
similarity index 100%
rename from sound/magic/clockwork/invoke_general.ogg
rename to sound/effects/magic/clockwork/invoke_general.ogg
diff --git a/sound/magic/clockwork/narsie_attack.ogg b/sound/effects/magic/clockwork/narsie_attack.ogg
similarity index 100%
rename from sound/magic/clockwork/narsie_attack.ogg
rename to sound/effects/magic/clockwork/narsie_attack.ogg
diff --git a/sound/magic/clockwork/ratvar_attack.ogg b/sound/effects/magic/clockwork/ratvar_attack.ogg
similarity index 100%
rename from sound/magic/clockwork/ratvar_attack.ogg
rename to sound/effects/magic/clockwork/ratvar_attack.ogg
diff --git a/sound/magic/cosmic_energy.ogg b/sound/effects/magic/cosmic_energy.ogg
similarity index 100%
rename from sound/magic/cosmic_energy.ogg
rename to sound/effects/magic/cosmic_energy.ogg
diff --git a/sound/magic/cosmic_expansion.ogg b/sound/effects/magic/cosmic_expansion.ogg
similarity index 100%
rename from sound/magic/cosmic_expansion.ogg
rename to sound/effects/magic/cosmic_expansion.ogg
diff --git a/sound/magic/cowhead_curse.ogg b/sound/effects/magic/cowhead_curse.ogg
similarity index 100%
rename from sound/magic/cowhead_curse.ogg
rename to sound/effects/magic/cowhead_curse.ogg
diff --git a/sound/magic/curse.ogg b/sound/effects/magic/curse.ogg
similarity index 100%
rename from sound/magic/curse.ogg
rename to sound/effects/magic/curse.ogg
diff --git a/sound/magic/demon_attack1.ogg b/sound/effects/magic/demon_attack1.ogg
similarity index 100%
rename from sound/magic/demon_attack1.ogg
rename to sound/effects/magic/demon_attack1.ogg
diff --git a/sound/magic/demon_consume.ogg b/sound/effects/magic/demon_consume.ogg
similarity index 100%
rename from sound/magic/demon_consume.ogg
rename to sound/effects/magic/demon_consume.ogg
diff --git a/sound/magic/demon_dies.ogg b/sound/effects/magic/demon_dies.ogg
similarity index 100%
rename from sound/magic/demon_dies.ogg
rename to sound/effects/magic/demon_dies.ogg
diff --git a/sound/magic/disable_tech.ogg b/sound/effects/magic/disable_tech.ogg
similarity index 100%
rename from sound/magic/disable_tech.ogg
rename to sound/effects/magic/disable_tech.ogg
diff --git a/sound/magic/disintegrate.ogg b/sound/effects/magic/disintegrate.ogg
similarity index 100%
rename from sound/magic/disintegrate.ogg
rename to sound/effects/magic/disintegrate.ogg
diff --git a/sound/magic/enter_blood.ogg b/sound/effects/magic/enter_blood.ogg
similarity index 100%
rename from sound/magic/enter_blood.ogg
rename to sound/effects/magic/enter_blood.ogg
diff --git a/sound/magic/ethereal_enter.ogg b/sound/effects/magic/ethereal_enter.ogg
similarity index 100%
rename from sound/magic/ethereal_enter.ogg
rename to sound/effects/magic/ethereal_enter.ogg
diff --git a/sound/magic/ethereal_exit.ogg b/sound/effects/magic/ethereal_exit.ogg
similarity index 100%
rename from sound/magic/ethereal_exit.ogg
rename to sound/effects/magic/ethereal_exit.ogg
diff --git a/sound/magic/exit_blood.ogg b/sound/effects/magic/exit_blood.ogg
similarity index 100%
rename from sound/magic/exit_blood.ogg
rename to sound/effects/magic/exit_blood.ogg
diff --git a/sound/magic/fireball.ogg b/sound/effects/magic/fireball.ogg
similarity index 100%
rename from sound/magic/fireball.ogg
rename to sound/effects/magic/fireball.ogg
diff --git a/sound/magic/fleshtostone.ogg b/sound/effects/magic/fleshtostone.ogg
similarity index 100%
rename from sound/magic/fleshtostone.ogg
rename to sound/effects/magic/fleshtostone.ogg
diff --git a/sound/magic/forcewall.ogg b/sound/effects/magic/forcewall.ogg
similarity index 100%
rename from sound/magic/forcewall.ogg
rename to sound/effects/magic/forcewall.ogg
diff --git a/sound/magic/hereticknock.ogg b/sound/effects/magic/hereticknock.ogg
similarity index 100%
rename from sound/magic/hereticknock.ogg
rename to sound/effects/magic/hereticknock.ogg
diff --git a/sound/magic/horsehead_curse.ogg b/sound/effects/magic/horsehead_curse.ogg
similarity index 100%
rename from sound/magic/horsehead_curse.ogg
rename to sound/effects/magic/horsehead_curse.ogg
diff --git a/sound/magic/knock.ogg b/sound/effects/magic/knock.ogg
similarity index 100%
rename from sound/magic/knock.ogg
rename to sound/effects/magic/knock.ogg
diff --git a/sound/magic/lightning_chargeup.ogg b/sound/effects/magic/lightning_chargeup.ogg
similarity index 100%
rename from sound/magic/lightning_chargeup.ogg
rename to sound/effects/magic/lightning_chargeup.ogg
diff --git a/sound/magic/lightningbolt.ogg b/sound/effects/magic/lightningbolt.ogg
similarity index 100%
rename from sound/magic/lightningbolt.ogg
rename to sound/effects/magic/lightningbolt.ogg
diff --git a/sound/magic/lightningshock.ogg b/sound/effects/magic/lightningshock.ogg
similarity index 100%
rename from sound/magic/lightningshock.ogg
rename to sound/effects/magic/lightningshock.ogg
diff --git a/sound/magic/magic_block.ogg b/sound/effects/magic/magic_block.ogg
similarity index 100%
rename from sound/magic/magic_block.ogg
rename to sound/effects/magic/magic_block.ogg
diff --git a/sound/magic/magic_block_holy.ogg b/sound/effects/magic/magic_block_holy.ogg
similarity index 100%
rename from sound/magic/magic_block_holy.ogg
rename to sound/effects/magic/magic_block_holy.ogg
diff --git a/sound/magic/magic_block_mind.ogg b/sound/effects/magic/magic_block_mind.ogg
similarity index 100%
rename from sound/magic/magic_block_mind.ogg
rename to sound/effects/magic/magic_block_mind.ogg
diff --git a/sound/magic/magic_missile.ogg b/sound/effects/magic/magic_missile.ogg
similarity index 100%
rename from sound/magic/magic_missile.ogg
rename to sound/effects/magic/magic_missile.ogg
diff --git a/sound/magic/mandswap.ogg b/sound/effects/magic/mandswap.ogg
similarity index 100%
rename from sound/magic/mandswap.ogg
rename to sound/effects/magic/mandswap.ogg
diff --git a/sound/magic/mm_hit.ogg b/sound/effects/magic/mm_hit.ogg
similarity index 100%
rename from sound/magic/mm_hit.ogg
rename to sound/effects/magic/mm_hit.ogg
diff --git a/sound/magic/mutate.ogg b/sound/effects/magic/mutate.ogg
similarity index 100%
rename from sound/magic/mutate.ogg
rename to sound/effects/magic/mutate.ogg
diff --git a/sound/magic/pantsaltar.ogg b/sound/effects/magic/pantsaltar.ogg
similarity index 100%
rename from sound/magic/pantsaltar.ogg
rename to sound/effects/magic/pantsaltar.ogg
diff --git a/sound/magic/pighead_curse.ogg b/sound/effects/magic/pighead_curse.ogg
similarity index 100%
rename from sound/magic/pighead_curse.ogg
rename to sound/effects/magic/pighead_curse.ogg
diff --git a/sound/magic/repulse.ogg b/sound/effects/magic/repulse.ogg
similarity index 100%
rename from sound/magic/repulse.ogg
rename to sound/effects/magic/repulse.ogg
diff --git a/sound/magic/smoke.ogg b/sound/effects/magic/smoke.ogg
similarity index 100%
rename from sound/magic/smoke.ogg
rename to sound/effects/magic/smoke.ogg
diff --git a/sound/magic/staff_animation.ogg b/sound/effects/magic/staff_animation.ogg
similarity index 100%
rename from sound/magic/staff_animation.ogg
rename to sound/effects/magic/staff_animation.ogg
diff --git a/sound/magic/staff_change.ogg b/sound/effects/magic/staff_change.ogg
similarity index 100%
rename from sound/magic/staff_change.ogg
rename to sound/effects/magic/staff_change.ogg
diff --git a/sound/magic/staff_chaos.ogg b/sound/effects/magic/staff_chaos.ogg
similarity index 100%
rename from sound/magic/staff_chaos.ogg
rename to sound/effects/magic/staff_chaos.ogg
diff --git a/sound/magic/staff_door.ogg b/sound/effects/magic/staff_door.ogg
similarity index 100%
rename from sound/magic/staff_door.ogg
rename to sound/effects/magic/staff_door.ogg
diff --git a/sound/magic/staff_healing.ogg b/sound/effects/magic/staff_healing.ogg
similarity index 100%
rename from sound/magic/staff_healing.ogg
rename to sound/effects/magic/staff_healing.ogg
diff --git a/sound/magic/staff_shrink.ogg b/sound/effects/magic/staff_shrink.ogg
similarity index 100%
rename from sound/magic/staff_shrink.ogg
rename to sound/effects/magic/staff_shrink.ogg
diff --git a/sound/magic/summon_guns.ogg b/sound/effects/magic/summon_guns.ogg
similarity index 100%
rename from sound/magic/summon_guns.ogg
rename to sound/effects/magic/summon_guns.ogg
diff --git a/sound/magic/summon_karp.ogg b/sound/effects/magic/summon_karp.ogg
similarity index 100%
rename from sound/magic/summon_karp.ogg
rename to sound/effects/magic/summon_karp.ogg
diff --git a/sound/magic/summon_magic.ogg b/sound/effects/magic/summon_magic.ogg
similarity index 100%
rename from sound/magic/summon_magic.ogg
rename to sound/effects/magic/summon_magic.ogg
diff --git a/sound/magic/summonitems_generic.ogg b/sound/effects/magic/summonitems_generic.ogg
similarity index 100%
rename from sound/magic/summonitems_generic.ogg
rename to sound/effects/magic/summonitems_generic.ogg
diff --git a/sound/magic/swap.ogg b/sound/effects/magic/swap.ogg
similarity index 100%
rename from sound/magic/swap.ogg
rename to sound/effects/magic/swap.ogg
diff --git a/sound/magic/tail_swing.ogg b/sound/effects/magic/tail_swing.ogg
similarity index 100%
rename from sound/magic/tail_swing.ogg
rename to sound/effects/magic/tail_swing.ogg
diff --git a/sound/magic/teleport_app.ogg b/sound/effects/magic/teleport_app.ogg
similarity index 100%
rename from sound/magic/teleport_app.ogg
rename to sound/effects/magic/teleport_app.ogg
diff --git a/sound/magic/teleport_diss.ogg b/sound/effects/magic/teleport_diss.ogg
similarity index 100%
rename from sound/magic/teleport_diss.ogg
rename to sound/effects/magic/teleport_diss.ogg
diff --git a/sound/magic/timeparadox2.ogg b/sound/effects/magic/timeparadox2.ogg
similarity index 100%
rename from sound/magic/timeparadox2.ogg
rename to sound/effects/magic/timeparadox2.ogg
diff --git a/sound/magic/voidblink.ogg b/sound/effects/magic/voidblink.ogg
similarity index 100%
rename from sound/magic/voidblink.ogg
rename to sound/effects/magic/voidblink.ogg
diff --git a/sound/magic/wand_teleport.ogg b/sound/effects/magic/wand_teleport.ogg
similarity index 100%
rename from sound/magic/wand_teleport.ogg
rename to sound/effects/magic/wand_teleport.ogg
diff --git a/sound/magic/wandodeath.ogg b/sound/effects/magic/wandodeath.ogg
similarity index 100%
rename from sound/magic/wandodeath.ogg
rename to sound/effects/magic/wandodeath.ogg
diff --git a/sound/magic/warpwhistle.ogg b/sound/effects/magic/warpwhistle.ogg
similarity index 100%
rename from sound/magic/warpwhistle.ogg
rename to sound/effects/magic/warpwhistle.ogg
diff --git a/sound/effects/pageturn1.ogg b/sound/effects/page_turn/pageturn1.ogg
similarity index 100%
rename from sound/effects/pageturn1.ogg
rename to sound/effects/page_turn/pageturn1.ogg
diff --git a/sound/effects/pageturn2.ogg b/sound/effects/page_turn/pageturn2.ogg
similarity index 100%
rename from sound/effects/pageturn2.ogg
rename to sound/effects/page_turn/pageturn2.ogg
diff --git a/sound/effects/pageturn3.ogg b/sound/effects/page_turn/pageturn3.ogg
similarity index 100%
rename from sound/effects/pageturn3.ogg
rename to sound/effects/page_turn/pageturn3.ogg
diff --git a/sound/effects/picaxe1.ogg b/sound/effects/pickaxe/picaxe1.ogg
similarity index 100%
rename from sound/effects/picaxe1.ogg
rename to sound/effects/pickaxe/picaxe1.ogg
diff --git a/sound/effects/picaxe2.ogg b/sound/effects/pickaxe/picaxe2.ogg
similarity index 100%
rename from sound/effects/picaxe2.ogg
rename to sound/effects/pickaxe/picaxe2.ogg
diff --git a/sound/effects/picaxe3.ogg b/sound/effects/pickaxe/picaxe3.ogg
similarity index 100%
rename from sound/effects/picaxe3.ogg
rename to sound/effects/pickaxe/picaxe3.ogg
diff --git a/sound/effects/portal_close.ogg b/sound/effects/portal/portal_close.ogg
similarity index 100%
rename from sound/effects/portal_close.ogg
rename to sound/effects/portal/portal_close.ogg
diff --git a/sound/effects/portal_open_1.ogg b/sound/effects/portal/portal_open_1.ogg
similarity index 100%
rename from sound/effects/portal_open_1.ogg
rename to sound/effects/portal/portal_open_1.ogg
diff --git a/sound/effects/portal_open_2.ogg b/sound/effects/portal/portal_open_2.ogg
similarity index 100%
rename from sound/effects/portal_open_2.ogg
rename to sound/effects/portal/portal_open_2.ogg
diff --git a/sound/effects/portal_open_3.ogg b/sound/effects/portal/portal_open_3.ogg
similarity index 100%
rename from sound/effects/portal_open_3.ogg
rename to sound/effects/portal/portal_open_3.ogg
diff --git a/sound/effects/portal_travel.ogg b/sound/effects/portal/portal_travel.ogg
similarity index 100%
rename from sound/effects/portal_travel.ogg
rename to sound/effects/portal/portal_travel.ogg
diff --git a/sound/effects/rock_break.ogg b/sound/effects/rock/rock_break.ogg
similarity index 100%
rename from sound/effects/rock_break.ogg
rename to sound/effects/rock/rock_break.ogg
diff --git a/sound/effects/rocktap1.ogg b/sound/effects/rock/rocktap1.ogg
similarity index 100%
rename from sound/effects/rocktap1.ogg
rename to sound/effects/rock/rocktap1.ogg
diff --git a/sound/effects/rocktap2.ogg b/sound/effects/rock/rocktap2.ogg
similarity index 100%
rename from sound/effects/rocktap2.ogg
rename to sound/effects/rock/rocktap2.ogg
diff --git a/sound/effects/rocktap3.ogg b/sound/effects/rock/rocktap3.ogg
similarity index 100%
rename from sound/effects/rocktap3.ogg
rename to sound/effects/rock/rocktap3.ogg
diff --git a/sound/effects/rustle1.ogg b/sound/effects/rustle/rustle1.ogg
similarity index 100%
rename from sound/effects/rustle1.ogg
rename to sound/effects/rustle/rustle1.ogg
diff --git a/sound/effects/rustle2.ogg b/sound/effects/rustle/rustle2.ogg
similarity index 100%
rename from sound/effects/rustle2.ogg
rename to sound/effects/rustle/rustle2.ogg
diff --git a/sound/effects/rustle3.ogg b/sound/effects/rustle/rustle3.ogg
similarity index 100%
rename from sound/effects/rustle3.ogg
rename to sound/effects/rustle/rustle3.ogg
diff --git a/sound/effects/rustle4.ogg b/sound/effects/rustle/rustle4.ogg
similarity index 100%
rename from sound/effects/rustle4.ogg
rename to sound/effects/rustle/rustle4.ogg
diff --git a/sound/effects/rustle5.ogg b/sound/effects/rustle/rustle5.ogg
similarity index 100%
rename from sound/effects/rustle5.ogg
rename to sound/effects/rustle/rustle5.ogg
diff --git a/sound/effects/screech.ogg b/sound/effects/screech.ogg
index b90f612621e7b..f4adab5e01fd9 100644
Binary files a/sound/effects/screech.ogg and b/sound/effects/screech.ogg differ
diff --git a/sound/effects/soup_boil1.ogg b/sound/effects/soup_boil/soup_boil1.ogg
similarity index 100%
rename from sound/effects/soup_boil1.ogg
rename to sound/effects/soup_boil/soup_boil1.ogg
diff --git a/sound/effects/soup_boil2.ogg b/sound/effects/soup_boil/soup_boil2.ogg
similarity index 100%
rename from sound/effects/soup_boil2.ogg
rename to sound/effects/soup_boil/soup_boil2.ogg
diff --git a/sound/effects/soup_boil3.ogg b/sound/effects/soup_boil/soup_boil3.ogg
similarity index 100%
rename from sound/effects/soup_boil3.ogg
rename to sound/effects/soup_boil/soup_boil3.ogg
diff --git a/sound/effects/soup_boil4.ogg b/sound/effects/soup_boil/soup_boil4.ogg
similarity index 100%
rename from sound/effects/soup_boil4.ogg
rename to sound/effects/soup_boil/soup_boil4.ogg
diff --git a/sound/effects/soup_boil5.ogg b/sound/effects/soup_boil/soup_boil5.ogg
similarity index 100%
rename from sound/effects/soup_boil5.ogg
rename to sound/effects/soup_boil/soup_boil5.ogg
diff --git a/sound/effects/soup_boil_end.ogg b/sound/effects/soup_boil/soup_boil_end.ogg
similarity index 100%
rename from sound/effects/soup_boil_end.ogg
rename to sound/effects/soup_boil/soup_boil_end.ogg
diff --git a/sound/effects/sparks1.ogg b/sound/effects/sparks/sparks1.ogg
similarity index 100%
rename from sound/effects/sparks1.ogg
rename to sound/effects/sparks/sparks1.ogg
diff --git a/sound/effects/sparks2.ogg b/sound/effects/sparks/sparks2.ogg
similarity index 100%
rename from sound/effects/sparks2.ogg
rename to sound/effects/sparks/sparks2.ogg
diff --git a/sound/effects/sparks3.ogg b/sound/effects/sparks/sparks3.ogg
similarity index 100%
rename from sound/effects/sparks3.ogg
rename to sound/effects/sparks/sparks3.ogg
diff --git a/sound/effects/sparks4.ogg b/sound/effects/sparks/sparks4.ogg
similarity index 100%
rename from sound/effects/sparks4.ogg
rename to sound/effects/sparks/sparks4.ogg
diff --git a/sound/effects/treechop1.ogg b/sound/effects/treechop/treechop1.ogg
similarity index 100%
rename from sound/effects/treechop1.ogg
rename to sound/effects/treechop/treechop1.ogg
diff --git a/sound/effects/treechop2.ogg b/sound/effects/treechop/treechop2.ogg
similarity index 100%
rename from sound/effects/treechop2.ogg
rename to sound/effects/treechop/treechop2.ogg
diff --git a/sound/effects/treechop3.ogg b/sound/effects/treechop/treechop3.ogg
similarity index 100%
rename from sound/effects/treechop3.ogg
rename to sound/effects/treechop/treechop3.ogg
diff --git a/sound/items/airhorn.ogg b/sound/items/airhorn/airhorn.ogg
similarity index 100%
rename from sound/items/airhorn.ogg
rename to sound/items/airhorn/airhorn.ogg
diff --git a/sound/items/airhorn2.ogg b/sound/items/airhorn/airhorn2.ogg
similarity index 100%
rename from sound/items/airhorn2.ogg
rename to sound/items/airhorn/airhorn2.ogg
diff --git a/sound/items/attributions.txt b/sound/items/attributions.txt
index a9fa969808060..7f1dcaabcc467 100644
--- a/sound/items/attributions.txt
+++ b/sound/items/attributions.txt
@@ -1,13 +1,3 @@
-
-{
-cig_light.ogg
-cig_snuff.ogg
-lighter_on.ogg
-lighter_off.ogg
-zippo_onn.ogg
-zippo_off.ogg
-} - Taken from https://github.com/BeeStation/BeeStation-Hornet/pull/29
-
pen_click.ogg from https://freesound.org/people/LexzachGames/sounds/431492/ , license: CC0
night_vision_on.ogg by Syna-Max -- https://freesound.org/s/60345/ -- License: Attribution NonCommercial 4.0
diff --git a/sound/items/cardflip.ogg b/sound/items/cards/cardflip.ogg
similarity index 100%
rename from sound/items/cardflip.ogg
rename to sound/items/cards/cardflip.ogg
diff --git a/sound/items/cardshuffle.ogg b/sound/items/cards/cardshuffle.ogg
similarity index 100%
rename from sound/items/cardshuffle.ogg
rename to sound/items/cards/cardshuffle.ogg
diff --git a/sound/items/duct_tape_rip.ogg b/sound/items/duct_tape/duct_tape_rip.ogg
similarity index 100%
rename from sound/items/duct_tape_rip.ogg
rename to sound/items/duct_tape/duct_tape_rip.ogg
diff --git a/sound/items/duct_tape_snap.ogg b/sound/items/duct_tape/duct_tape_snap.ogg
similarity index 100%
rename from sound/items/duct_tape_snap.ogg
rename to sound/items/duct_tape/duct_tape_snap.ogg
diff --git a/sound/items/fultext_deploy.ogg b/sound/items/fulton/fultext_deploy.ogg
similarity index 100%
rename from sound/items/fultext_deploy.ogg
rename to sound/items/fulton/fultext_deploy.ogg
diff --git a/sound/items/fultext_launch.ogg b/sound/items/fulton/fultext_launch.ogg
similarity index 100%
rename from sound/items/fultext_launch.ogg
rename to sound/items/fulton/fultext_launch.ogg
diff --git a/sound/items/cardboard_box_open.ogg b/sound/items/handling/cardboard_box/cardboard_box_open.ogg
similarity index 100%
rename from sound/items/cardboard_box_open.ogg
rename to sound/items/handling/cardboard_box/cardboard_box_open.ogg
diff --git a/sound/items/cardboard_box_rustle.ogg b/sound/items/handling/cardboard_box/cardboard_box_rustle.ogg
similarity index 100%
rename from sound/items/cardboard_box_rustle.ogg
rename to sound/items/handling/cardboard_box/cardboard_box_rustle.ogg
diff --git a/sound/items/handling/cardboardbox_drop.ogg b/sound/items/handling/cardboard_box/cardboardbox_drop.ogg
similarity index 100%
rename from sound/items/handling/cardboardbox_drop.ogg
rename to sound/items/handling/cardboard_box/cardboardbox_drop.ogg
diff --git a/sound/items/handling/cardboardbox_pickup.ogg b/sound/items/handling/cardboard_box/cardboardbox_pickup.ogg
similarity index 100%
rename from sound/items/handling/cardboardbox_pickup.ogg
rename to sound/items/handling/cardboard_box/cardboardbox_pickup.ogg
diff --git a/sound/items/gas_tank_drop.ogg b/sound/items/handling/gas_tank/gas_tank_drop.ogg
similarity index 100%
rename from sound/items/gas_tank_drop.ogg
rename to sound/items/handling/gas_tank/gas_tank_drop.ogg
diff --git a/sound/items/gas_tank_pick_up.ogg b/sound/items/handling/gas_tank/gas_tank_pick_up.ogg
similarity index 100%
rename from sound/items/gas_tank_pick_up.ogg
rename to sound/items/handling/gas_tank/gas_tank_pick_up.ogg
diff --git a/sound/items/grenade_drop.ogg b/sound/items/handling/grenade/grenade_drop.ogg
similarity index 100%
rename from sound/items/grenade_drop.ogg
rename to sound/items/handling/grenade/grenade_drop.ogg
diff --git a/sound/items/grenade_pick_up.ogg b/sound/items/handling/grenade/grenade_pick_up.ogg
similarity index 100%
rename from sound/items/grenade_pick_up.ogg
rename to sound/items/handling/grenade/grenade_pick_up.ogg
diff --git a/sound/items/gun_drop.ogg b/sound/items/handling/gun/gun_drop.ogg
similarity index 100%
rename from sound/items/gun_drop.ogg
rename to sound/items/handling/gun/gun_drop.ogg
diff --git a/sound/items/gun_pick_up.ogg b/sound/items/handling/gun/gun_pick_up.ogg
similarity index 100%
rename from sound/items/gun_pick_up.ogg
rename to sound/items/handling/gun/gun_pick_up.ogg
diff --git a/sound/items/handcuffs_drop.ogg b/sound/items/handling/handcuffs/handcuffs_drop.ogg
similarity index 100%
rename from sound/items/handcuffs_drop.ogg
rename to sound/items/handling/handcuffs/handcuffs_drop.ogg
diff --git a/sound/items/handcuffs_pick_up.ogg b/sound/items/handling/handcuffs/handcuffs_pick_up.ogg
similarity index 100%
rename from sound/items/handcuffs_pick_up.ogg
rename to sound/items/handling/handcuffs/handcuffs_pick_up.ogg
diff --git a/sound/items/holster.ogg b/sound/items/handling/holster_open.ogg
similarity index 100%
rename from sound/items/holster.ogg
rename to sound/items/handling/holster_open.ogg
diff --git a/sound/items/handling/lead_pipe/lead_pipe_drop.ogg b/sound/items/handling/lead_pipe/lead_pipe_drop.ogg
new file mode 100644
index 0000000000000..63561fc2f950c
Binary files /dev/null and b/sound/items/handling/lead_pipe/lead_pipe_drop.ogg differ
diff --git a/sound/items/lead_pipe_pickup.ogg b/sound/items/handling/lead_pipe/lead_pipe_pickup.ogg
similarity index 100%
rename from sound/items/lead_pipe_pickup.ogg
rename to sound/items/handling/lead_pipe/lead_pipe_pickup.ogg
diff --git a/sound/items/cardboard_drop.ogg b/sound/items/handling/materials/cardboard_drop.ogg
similarity index 100%
rename from sound/items/cardboard_drop.ogg
rename to sound/items/handling/materials/cardboard_drop.ogg
diff --git a/sound/items/cardboard_pick_up.ogg b/sound/items/handling/materials/cardboard_pick_up.ogg
similarity index 100%
rename from sound/items/cardboard_pick_up.ogg
rename to sound/items/handling/materials/cardboard_pick_up.ogg
diff --git a/sound/items/glass_drop.ogg b/sound/items/handling/materials/glass_drop.ogg
similarity index 100%
rename from sound/items/glass_drop.ogg
rename to sound/items/handling/materials/glass_drop.ogg
diff --git a/sound/items/glass_pick_up.ogg b/sound/items/handling/materials/glass_pick_up.ogg
similarity index 100%
rename from sound/items/glass_pick_up.ogg
rename to sound/items/handling/materials/glass_pick_up.ogg
diff --git a/sound/items/iron_rod_pick_up.ogg b/sound/items/handling/materials/iron_rod_pick_up.ogg
similarity index 100%
rename from sound/items/iron_rod_pick_up.ogg
rename to sound/items/handling/materials/iron_rod_pick_up.ogg
diff --git a/sound/items/metal_drop.ogg b/sound/items/handling/materials/metal_drop.ogg
similarity index 100%
rename from sound/items/metal_drop.ogg
rename to sound/items/handling/materials/metal_drop.ogg
diff --git a/sound/items/metal_pick_up.ogg b/sound/items/handling/materials/metal_pick_up.ogg
similarity index 100%
rename from sound/items/metal_pick_up.ogg
rename to sound/items/handling/materials/metal_pick_up.ogg
diff --git a/sound/items/plastic_drop.ogg b/sound/items/handling/materials/plastic_drop.ogg
similarity index 100%
rename from sound/items/plastic_drop.ogg
rename to sound/items/handling/materials/plastic_drop.ogg
diff --git a/sound/items/plastic_pick_up.ogg b/sound/items/handling/materials/plastic_pick_up.ogg
similarity index 100%
rename from sound/items/plastic_pick_up.ogg
rename to sound/items/handling/materials/plastic_pick_up.ogg
diff --git a/sound/items/skin_drop.ogg b/sound/items/handling/materials/skin_drop.ogg
similarity index 100%
rename from sound/items/skin_drop.ogg
rename to sound/items/handling/materials/skin_drop.ogg
diff --git a/sound/items/skin_pick_up.ogg b/sound/items/handling/materials/skin_pick_up.ogg
similarity index 100%
rename from sound/items/skin_pick_up.ogg
rename to sound/items/handling/materials/skin_pick_up.ogg
diff --git a/sound/items/wood_drop.ogg b/sound/items/handling/materials/wood_drop.ogg
similarity index 100%
rename from sound/items/wood_drop.ogg
rename to sound/items/handling/materials/wood_drop.ogg
diff --git a/sound/items/wood_pick_up.ogg b/sound/items/handling/materials/wood_pick_up.ogg
similarity index 100%
rename from sound/items/wood_pick_up.ogg
rename to sound/items/handling/materials/wood_pick_up.ogg
diff --git a/sound/items/medkit_drop.ogg b/sound/items/handling/medkit/medkit_drop.ogg
similarity index 100%
rename from sound/items/medkit_drop.ogg
rename to sound/items/handling/medkit/medkit_drop.ogg
diff --git a/sound/items/medkit_open.ogg b/sound/items/handling/medkit/medkit_open.ogg
similarity index 100%
rename from sound/items/medkit_open.ogg
rename to sound/items/handling/medkit/medkit_open.ogg
diff --git a/sound/items/medkit_pick_up.ogg b/sound/items/handling/medkit/medkit_pick_up.ogg
similarity index 100%
rename from sound/items/medkit_pick_up.ogg
rename to sound/items/handling/medkit/medkit_pick_up.ogg
diff --git a/sound/items/medkit_rustle.ogg b/sound/items/handling/medkit/medkit_rustle.ogg
similarity index 100%
rename from sound/items/medkit_rustle.ogg
rename to sound/items/handling/medkit/medkit_rustle.ogg
diff --git a/sound/items/pepper_spray_drop.ogg b/sound/items/handling/pepper_spray/pepper_spray_drop.ogg
similarity index 100%
rename from sound/items/pepper_spray_drop.ogg
rename to sound/items/handling/pepper_spray/pepper_spray_drop.ogg
diff --git a/sound/items/pepper_spray_pick_up.ogg b/sound/items/handling/pepper_spray/pepper_spray_pick_up.ogg
similarity index 100%
rename from sound/items/pepper_spray_pick_up.ogg
rename to sound/items/handling/pepper_spray/pepper_spray_pick_up.ogg
diff --git a/sound/items/handling/readme.txt b/sound/items/handling/readme.txt
new file mode 100644
index 0000000000000..699c3a684bcde
--- /dev/null
+++ b/sound/items/handling/readme.txt
@@ -0,0 +1,7 @@
+handling in this case is:
+- picking up an item
+- dropping an item
+- storage item rustle sounds
+- storage item open sounds
+
+please keep it organised!
diff --git a/sound/items/plastic_shield_drop.ogg b/sound/items/handling/shield/plastic_shield_drop.ogg
similarity index 100%
rename from sound/items/plastic_shield_drop.ogg
rename to sound/items/handling/shield/plastic_shield_drop.ogg
diff --git a/sound/items/plastic_shield_pick_up.ogg b/sound/items/handling/shield/plastic_shield_pick_up.ogg
similarity index 100%
rename from sound/items/plastic_shield_pick_up.ogg
rename to sound/items/handling/shield/plastic_shield_pick_up.ogg
diff --git a/sound/surgery/cautery1.ogg b/sound/items/handling/surgery/cautery1.ogg
similarity index 100%
rename from sound/surgery/cautery1.ogg
rename to sound/items/handling/surgery/cautery1.ogg
diff --git a/sound/surgery/cautery2.ogg b/sound/items/handling/surgery/cautery2.ogg
similarity index 100%
rename from sound/surgery/cautery2.ogg
rename to sound/items/handling/surgery/cautery2.ogg
diff --git a/sound/surgery/hemostat1.ogg b/sound/items/handling/surgery/hemostat1.ogg
similarity index 100%
rename from sound/surgery/hemostat1.ogg
rename to sound/items/handling/surgery/hemostat1.ogg
diff --git a/sound/surgery/organ1.ogg b/sound/items/handling/surgery/organ1.ogg
similarity index 100%
rename from sound/surgery/organ1.ogg
rename to sound/items/handling/surgery/organ1.ogg
diff --git a/sound/surgery/organ2.ogg b/sound/items/handling/surgery/organ2.ogg
similarity index 100%
rename from sound/surgery/organ2.ogg
rename to sound/items/handling/surgery/organ2.ogg
diff --git a/sound/surgery/retractor1.ogg b/sound/items/handling/surgery/retractor1.ogg
similarity index 100%
rename from sound/surgery/retractor1.ogg
rename to sound/items/handling/surgery/retractor1.ogg
diff --git a/sound/surgery/retractor2.ogg b/sound/items/handling/surgery/retractor2.ogg
similarity index 100%
rename from sound/surgery/retractor2.ogg
rename to sound/items/handling/surgery/retractor2.ogg
diff --git a/sound/surgery/saw.ogg b/sound/items/handling/surgery/saw.ogg
similarity index 100%
rename from sound/surgery/saw.ogg
rename to sound/items/handling/surgery/saw.ogg
diff --git a/sound/surgery/scalpel1.ogg b/sound/items/handling/surgery/scalpel1.ogg
similarity index 100%
rename from sound/surgery/scalpel1.ogg
rename to sound/items/handling/surgery/scalpel1.ogg
diff --git a/sound/surgery/scalpel2.ogg b/sound/items/handling/surgery/scalpel2.ogg
similarity index 100%
rename from sound/surgery/scalpel2.ogg
rename to sound/items/handling/surgery/scalpel2.ogg
diff --git a/sound/items/handling/toolbox_drop.ogg b/sound/items/handling/toolbox/toolbox_drop.ogg
similarity index 100%
rename from sound/items/handling/toolbox_drop.ogg
rename to sound/items/handling/toolbox/toolbox_drop.ogg
diff --git a/sound/items/toolbox_open.ogg b/sound/items/handling/toolbox/toolbox_open.ogg
similarity index 100%
rename from sound/items/toolbox_open.ogg
rename to sound/items/handling/toolbox/toolbox_open.ogg
diff --git a/sound/items/handling/toolbox_pickup.ogg b/sound/items/handling/toolbox/toolbox_pickup.ogg
similarity index 100%
rename from sound/items/handling/toolbox_pickup.ogg
rename to sound/items/handling/toolbox/toolbox_pickup.ogg
diff --git a/sound/items/toolbox_rustle.ogg b/sound/items/handling/toolbox/toolbox_rustle.ogg
similarity index 100%
rename from sound/items/toolbox_rustle.ogg
rename to sound/items/handling/toolbox/toolbox_rustle.ogg
diff --git a/sound/items/handling/crowbar_drop.ogg b/sound/items/handling/tools/crowbar_drop.ogg
similarity index 100%
rename from sound/items/handling/crowbar_drop.ogg
rename to sound/items/handling/tools/crowbar_drop.ogg
diff --git a/sound/items/handling/crowbar_pickup.ogg b/sound/items/handling/tools/crowbar_pickup.ogg
similarity index 100%
rename from sound/items/handling/crowbar_pickup.ogg
rename to sound/items/handling/tools/crowbar_pickup.ogg
diff --git a/sound/items/handling/multitool_drop.ogg b/sound/items/handling/tools/multitool_drop.ogg
similarity index 100%
rename from sound/items/handling/multitool_drop.ogg
rename to sound/items/handling/tools/multitool_drop.ogg
diff --git a/sound/items/handling/multitool_pickup.ogg b/sound/items/handling/tools/multitool_pickup.ogg
similarity index 100%
rename from sound/items/handling/multitool_pickup.ogg
rename to sound/items/handling/tools/multitool_pickup.ogg
diff --git a/sound/items/handling/rcd_drop.ogg b/sound/items/handling/tools/rcd_drop.ogg
similarity index 100%
rename from sound/items/handling/rcd_drop.ogg
rename to sound/items/handling/tools/rcd_drop.ogg
diff --git a/sound/items/handling/rcd_pickup.ogg b/sound/items/handling/tools/rcd_pickup.ogg
similarity index 100%
rename from sound/items/handling/rcd_pickup.ogg
rename to sound/items/handling/tools/rcd_pickup.ogg
diff --git a/sound/items/handling/rpd_drop.ogg b/sound/items/handling/tools/rpd_drop.ogg
similarity index 100%
rename from sound/items/handling/rpd_drop.ogg
rename to sound/items/handling/tools/rpd_drop.ogg
diff --git a/sound/items/handling/rpd_pickup.ogg b/sound/items/handling/tools/rpd_pickup.ogg
similarity index 100%
rename from sound/items/handling/rpd_pickup.ogg
rename to sound/items/handling/tools/rpd_pickup.ogg
diff --git a/sound/items/handling/screwdriver_drop.ogg b/sound/items/handling/tools/screwdriver_drop.ogg
similarity index 100%
rename from sound/items/handling/screwdriver_drop.ogg
rename to sound/items/handling/tools/screwdriver_drop.ogg
diff --git a/sound/items/handling/screwdriver_pickup.ogg b/sound/items/handling/tools/screwdriver_pickup.ogg
similarity index 100%
rename from sound/items/handling/screwdriver_pickup.ogg
rename to sound/items/handling/tools/screwdriver_pickup.ogg
diff --git a/sound/items/handling/weldingtool_drop.ogg b/sound/items/handling/tools/weldingtool_drop.ogg
similarity index 100%
rename from sound/items/handling/weldingtool_drop.ogg
rename to sound/items/handling/tools/weldingtool_drop.ogg
diff --git a/sound/items/handling/weldingtool_pickup.ogg b/sound/items/handling/tools/weldingtool_pickup.ogg
similarity index 100%
rename from sound/items/handling/weldingtool_pickup.ogg
rename to sound/items/handling/tools/weldingtool_pickup.ogg
diff --git a/sound/items/handling/wirecutter_drop.ogg b/sound/items/handling/tools/wirecutter_drop.ogg
similarity index 100%
rename from sound/items/handling/wirecutter_drop.ogg
rename to sound/items/handling/tools/wirecutter_drop.ogg
diff --git a/sound/items/handling/wirecutter_pickup.ogg b/sound/items/handling/tools/wirecutter_pickup.ogg
similarity index 100%
rename from sound/items/handling/wirecutter_pickup.ogg
rename to sound/items/handling/tools/wirecutter_pickup.ogg
diff --git a/sound/items/handling/wrench_drop.ogg b/sound/items/handling/tools/wrench_drop.ogg
similarity index 100%
rename from sound/items/handling/wrench_drop.ogg
rename to sound/items/handling/tools/wrench_drop.ogg
diff --git a/sound/items/handling/wrench_pickup.ogg b/sound/items/handling/tools/wrench_pickup.ogg
similarity index 100%
rename from sound/items/handling/wrench_pickup.ogg
rename to sound/items/handling/tools/wrench_pickup.ogg
diff --git a/sound/items/internals_off.ogg b/sound/items/internals/internals_off.ogg
similarity index 100%
rename from sound/items/internals_off.ogg
rename to sound/items/internals/internals_off.ogg
diff --git a/sound/items/internals_on.ogg b/sound/items/internals/internals_on.ogg
similarity index 100%
rename from sound/items/internals_on.ogg
rename to sound/items/internals/internals_on.ogg
diff --git a/sound/items/knell1.ogg b/sound/items/knell/knell1.ogg
similarity index 100%
rename from sound/items/knell1.ogg
rename to sound/items/knell/knell1.ogg
diff --git a/sound/items/knell2.ogg b/sound/items/knell/knell2.ogg
similarity index 100%
rename from sound/items/knell2.ogg
rename to sound/items/knell/knell2.ogg
diff --git a/sound/items/knell3.ogg b/sound/items/knell/knell3.ogg
similarity index 100%
rename from sound/items/knell3.ogg
rename to sound/items/knell/knell3.ogg
diff --git a/sound/items/knell4.ogg b/sound/items/knell/knell4.ogg
similarity index 100%
rename from sound/items/knell4.ogg
rename to sound/items/knell/knell4.ogg
diff --git a/sound/items/lead_pipe_drop.ogg b/sound/items/lead_pipe_drop.ogg
deleted file mode 100644
index 144d24ca94c7a..0000000000000
Binary files a/sound/items/lead_pipe_drop.ogg and /dev/null differ
diff --git a/sound/items/lighter/attribution.txt b/sound/items/lighter/attribution.txt
new file mode 100644
index 0000000000000..7ded54c464141
--- /dev/null
+++ b/sound/items/lighter/attribution.txt
@@ -0,0 +1,8 @@
+{
+cig_light.ogg
+cig_snuff.ogg
+lighter_on.ogg
+lighter_off.ogg
+zippo_onn.ogg
+zippo_off.ogg
+} - Taken from https://github.com/BeeStation/BeeStation-Hornet/pull/29
diff --git a/sound/items/cig_light.ogg b/sound/items/lighter/cig_light.ogg
similarity index 100%
rename from sound/items/cig_light.ogg
rename to sound/items/lighter/cig_light.ogg
diff --git a/sound/items/cig_snuff.ogg b/sound/items/lighter/cig_snuff.ogg
similarity index 100%
rename from sound/items/cig_snuff.ogg
rename to sound/items/lighter/cig_snuff.ogg
diff --git a/sound/items/lighter_off.ogg b/sound/items/lighter/lighter_off.ogg
similarity index 100%
rename from sound/items/lighter_off.ogg
rename to sound/items/lighter/lighter_off.ogg
diff --git a/sound/items/lighter_on.ogg b/sound/items/lighter/lighter_on.ogg
similarity index 100%
rename from sound/items/lighter_on.ogg
rename to sound/items/lighter/lighter_on.ogg
diff --git a/sound/items/zippo_off.ogg b/sound/items/lighter/zippo_off.ogg
similarity index 100%
rename from sound/items/zippo_off.ogg
rename to sound/items/lighter/zippo_off.ogg
diff --git a/sound/items/zippo_on.ogg b/sound/items/lighter/zippo_on.ogg
similarity index 100%
rename from sound/items/zippo_on.ogg
rename to sound/items/lighter/zippo_on.ogg
diff --git a/sound/items/pillow_hit.ogg b/sound/items/pillow/pillow_hit.ogg
similarity index 100%
rename from sound/items/pillow_hit.ogg
rename to sound/items/pillow/pillow_hit.ogg
diff --git a/sound/items/pillow_hit2.ogg b/sound/items/pillow/pillow_hit2.ogg
similarity index 100%
rename from sound/items/pillow_hit2.ogg
rename to sound/items/pillow/pillow_hit2.ogg
diff --git a/sound/items/polaroid1.ogg b/sound/items/polaroid/polaroid1.ogg
similarity index 100%
rename from sound/items/polaroid1.ogg
rename to sound/items/polaroid/polaroid1.ogg
diff --git a/sound/items/polaroid2.ogg b/sound/items/polaroid/polaroid2.ogg
similarity index 100%
rename from sound/items/polaroid2.ogg
rename to sound/items/polaroid/polaroid2.ogg
diff --git a/sound/items/poster_being_created.ogg b/sound/items/poster/poster_being_created.ogg
similarity index 100%
rename from sound/items/poster_being_created.ogg
rename to sound/items/poster/poster_being_created.ogg
diff --git a/sound/items/poster_ripped.ogg b/sound/items/poster/poster_ripped.ogg
similarity index 100%
rename from sound/items/poster_ripped.ogg
rename to sound/items/poster/poster_ripped.ogg
diff --git a/sound/items/pshoom.ogg b/sound/items/pshoom/pshoom.ogg
similarity index 100%
rename from sound/items/pshoom.ogg
rename to sound/items/pshoom/pshoom.ogg
diff --git a/sound/items/pshoom_2.ogg b/sound/items/pshoom/pshoom_2.ogg
similarity index 100%
rename from sound/items/pshoom_2.ogg
rename to sound/items/pshoom/pshoom_2.ogg
diff --git a/sound/items/radio/attribution.txt b/sound/items/radio/attribution.txt
new file mode 100644
index 0000000000000..2f15af96c820b
--- /dev/null
+++ b/sound/items/radio/attribution.txt
@@ -0,0 +1,8 @@
+radio_talk.ogg by cs2975871. Shortened and cut.
+https://freesound.org/people/cs2975871/sounds/514185/
+
+radio_important.ogg by morganpurkis.
+https://freesound.org/people/morganpurkis/sounds/392972/
+
+radio_receive.ogg by JovianSounds. Shortened and cut.
+https://freesound.org/people/JovianSounds/sounds/524205/
diff --git a/sound/misc/radio_important.ogg b/sound/items/radio/radio_important.ogg
similarity index 100%
rename from sound/misc/radio_important.ogg
rename to sound/items/radio/radio_important.ogg
diff --git a/sound/misc/radio_receive.ogg b/sound/items/radio/radio_receive.ogg
similarity index 100%
rename from sound/misc/radio_receive.ogg
rename to sound/items/radio/radio_receive.ogg
diff --git a/sound/misc/radio_talk.ogg b/sound/items/radio/radio_talk.ogg
similarity index 100%
rename from sound/misc/radio_talk.ogg
rename to sound/items/radio/radio_talk.ogg
diff --git a/sound/items/rattle1.ogg b/sound/items/rattle/rattle1.ogg
similarity index 100%
rename from sound/items/rattle1.ogg
rename to sound/items/rattle/rattle1.ogg
diff --git a/sound/items/rattle2.ogg b/sound/items/rattle/rattle2.ogg
similarity index 100%
rename from sound/items/rattle2.ogg
rename to sound/items/rattle/rattle2.ogg
diff --git a/sound/items/rattle3.ogg b/sound/items/rattle/rattle3.ogg
similarity index 100%
rename from sound/items/rattle3.ogg
rename to sound/items/rattle/rattle3.ogg
diff --git a/sound/items/reel/reel1.ogg b/sound/items/reel/reel1.ogg
new file mode 100644
index 0000000000000..2e946f3d5de20
Binary files /dev/null and b/sound/items/reel/reel1.ogg differ
diff --git a/sound/items/reel/reel2.ogg b/sound/items/reel/reel2.ogg
new file mode 100644
index 0000000000000..574ac3c89b01c
Binary files /dev/null and b/sound/items/reel/reel2.ogg differ
diff --git a/sound/items/reel/reel3.ogg b/sound/items/reel/reel3.ogg
new file mode 100644
index 0000000000000..e1bec8e4b5506
Binary files /dev/null and b/sound/items/reel/reel3.ogg differ
diff --git a/sound/items/reel/reel4.ogg b/sound/items/reel/reel4.ogg
new file mode 100644
index 0000000000000..64d69620cd85f
Binary files /dev/null and b/sound/items/reel/reel4.ogg differ
diff --git a/sound/items/reel/reel5.ogg b/sound/items/reel/reel5.ogg
new file mode 100644
index 0000000000000..66635bf28d0a8
Binary files /dev/null and b/sound/items/reel/reel5.ogg differ
diff --git a/sound/items/reel1.ogg b/sound/items/reel1.ogg
deleted file mode 100644
index 0bd2cda89b973..0000000000000
Binary files a/sound/items/reel1.ogg and /dev/null differ
diff --git a/sound/items/reel2.ogg b/sound/items/reel2.ogg
deleted file mode 100644
index 64d2bc1adb494..0000000000000
Binary files a/sound/items/reel2.ogg and /dev/null differ
diff --git a/sound/items/reel3.ogg b/sound/items/reel3.ogg
deleted file mode 100644
index a1d89779ec11f..0000000000000
Binary files a/sound/items/reel3.ogg and /dev/null differ
diff --git a/sound/items/reel4.ogg b/sound/items/reel4.ogg
deleted file mode 100644
index ae9bdb2f5e373..0000000000000
Binary files a/sound/items/reel4.ogg and /dev/null differ
diff --git a/sound/items/reel5.ogg b/sound/items/reel5.ogg
deleted file mode 100644
index 6c979754a5f86..0000000000000
Binary files a/sound/items/reel5.ogg and /dev/null differ
diff --git a/sound/voice/sec_death.ogg b/sound/items/sec_hailer/sec_death.ogg
similarity index 100%
rename from sound/voice/sec_death.ogg
rename to sound/items/sec_hailer/sec_death.ogg
diff --git a/sound/items/SitcomLaugh1.ogg b/sound/items/sitcom_laugh/SitcomLaugh1.ogg
similarity index 100%
rename from sound/items/SitcomLaugh1.ogg
rename to sound/items/sitcom_laugh/SitcomLaugh1.ogg
diff --git a/sound/items/SitcomLaugh2.ogg b/sound/items/sitcom_laugh/SitcomLaugh2.ogg
similarity index 100%
rename from sound/items/SitcomLaugh2.ogg
rename to sound/items/sitcom_laugh/SitcomLaugh2.ogg
diff --git a/sound/items/SitcomLaugh3.ogg b/sound/items/sitcom_laugh/SitcomLaugh3.ogg
similarity index 100%
rename from sound/items/SitcomLaugh3.ogg
rename to sound/items/sitcom_laugh/SitcomLaugh3.ogg
diff --git a/sound/items/change_drill.ogg b/sound/items/tools/change_drill.ogg
similarity index 100%
rename from sound/items/change_drill.ogg
rename to sound/items/tools/change_drill.ogg
diff --git a/sound/items/change_jaws.ogg b/sound/items/tools/change_jaws.ogg
similarity index 100%
rename from sound/items/change_jaws.ogg
rename to sound/items/tools/change_jaws.ogg
diff --git a/sound/items/crowbar.ogg b/sound/items/tools/crowbar.ogg
similarity index 100%
rename from sound/items/crowbar.ogg
rename to sound/items/tools/crowbar.ogg
diff --git a/sound/items/crowbar_prying.ogg b/sound/items/tools/crowbar_prying.ogg
similarity index 100%
rename from sound/items/crowbar_prying.ogg
rename to sound/items/tools/crowbar_prying.ogg
diff --git a/sound/items/drill_hit.ogg b/sound/items/tools/drill_hit.ogg
similarity index 100%
rename from sound/items/drill_hit.ogg
rename to sound/items/tools/drill_hit.ogg
diff --git a/sound/items/drill_use.ogg b/sound/items/tools/drill_use.ogg
similarity index 100%
rename from sound/items/drill_use.ogg
rename to sound/items/tools/drill_use.ogg
diff --git a/sound/items/jaws_cut.ogg b/sound/items/tools/jaws_cut.ogg
similarity index 100%
rename from sound/items/jaws_cut.ogg
rename to sound/items/tools/jaws_cut.ogg
diff --git a/sound/items/jaws_pry.ogg b/sound/items/tools/jaws_pry.ogg
similarity index 100%
rename from sound/items/jaws_pry.ogg
rename to sound/items/tools/jaws_pry.ogg
diff --git a/sound/items/ratchet.ogg b/sound/items/tools/ratchet.ogg
similarity index 100%
rename from sound/items/ratchet.ogg
rename to sound/items/tools/ratchet.ogg
diff --git a/sound/items/ratchet_fast.ogg b/sound/items/tools/ratchet_fast.ogg
similarity index 100%
rename from sound/items/ratchet_fast.ogg
rename to sound/items/tools/ratchet_fast.ogg
diff --git a/sound/items/ratchet_slow.ogg b/sound/items/tools/ratchet_slow.ogg
similarity index 100%
rename from sound/items/ratchet_slow.ogg
rename to sound/items/tools/ratchet_slow.ogg
diff --git a/sound/items/rcdscan.ogg b/sound/items/tools/rcdscan.ogg
similarity index 100%
rename from sound/items/rcdscan.ogg
rename to sound/items/tools/rcdscan.ogg
diff --git a/sound/items/rped.ogg b/sound/items/tools/rped.ogg
similarity index 100%
rename from sound/items/rped.ogg
rename to sound/items/tools/rped.ogg
diff --git a/sound/items/screwdriver.ogg b/sound/items/tools/screwdriver.ogg
similarity index 100%
rename from sound/items/screwdriver.ogg
rename to sound/items/tools/screwdriver.ogg
diff --git a/sound/items/screwdriver2.ogg b/sound/items/tools/screwdriver2.ogg
similarity index 100%
rename from sound/items/screwdriver2.ogg
rename to sound/items/tools/screwdriver2.ogg
diff --git a/sound/items/screwdriver_operating.ogg b/sound/items/tools/screwdriver_operating.ogg
similarity index 100%
rename from sound/items/screwdriver_operating.ogg
rename to sound/items/tools/screwdriver_operating.ogg
diff --git a/sound/items/handling/tool_switch.ogg b/sound/items/tools/tool_switch.ogg
similarity index 100%
rename from sound/items/handling/tool_switch.ogg
rename to sound/items/tools/tool_switch.ogg
diff --git a/sound/items/welder.ogg b/sound/items/tools/welder.ogg
similarity index 100%
rename from sound/items/welder.ogg
rename to sound/items/tools/welder.ogg
diff --git a/sound/items/welder2.ogg b/sound/items/tools/welder2.ogg
similarity index 100%
rename from sound/items/welder2.ogg
rename to sound/items/tools/welder2.ogg
diff --git a/sound/items/welderactivate.ogg b/sound/items/tools/welderactivate.ogg
similarity index 100%
rename from sound/items/welderactivate.ogg
rename to sound/items/tools/welderactivate.ogg
diff --git a/sound/items/welderdeactivate.ogg b/sound/items/tools/welderdeactivate.ogg
similarity index 100%
rename from sound/items/welderdeactivate.ogg
rename to sound/items/tools/welderdeactivate.ogg
diff --git a/sound/items/wirecutter.ogg b/sound/items/tools/wirecutter.ogg
similarity index 100%
rename from sound/items/wirecutter.ogg
rename to sound/items/tools/wirecutter.ogg
diff --git a/sound/items/wirecutter_cut.ogg b/sound/items/tools/wirecutter_cut.ogg
similarity index 100%
rename from sound/items/wirecutter_cut.ogg
rename to sound/items/tools/wirecutter_cut.ogg
diff --git a/sound/items/toysqueak1.ogg b/sound/items/toy_squeak/toysqueak1.ogg
similarity index 100%
rename from sound/items/toysqueak1.ogg
rename to sound/items/toy_squeak/toysqueak1.ogg
diff --git a/sound/items/toysqueak2.ogg b/sound/items/toy_squeak/toysqueak2.ogg
similarity index 100%
rename from sound/items/toysqueak2.ogg
rename to sound/items/toy_squeak/toysqueak2.ogg
diff --git a/sound/items/toysqueak3.ogg b/sound/items/toy_squeak/toysqueak3.ogg
similarity index 100%
rename from sound/items/toysqueak3.ogg
rename to sound/items/toy_squeak/toysqueak3.ogg
diff --git a/sound/items/trayhit1.ogg b/sound/items/trayhit/trayhit1.ogg
similarity index 100%
rename from sound/items/trayhit1.ogg
rename to sound/items/trayhit/trayhit1.ogg
diff --git a/sound/items/trayhit2.ogg b/sound/items/trayhit/trayhit2.ogg
similarity index 100%
rename from sound/items/trayhit2.ogg
rename to sound/items/trayhit/trayhit2.ogg
diff --git a/sound/weapons/armbomb.ogg b/sound/items/weapons/armbomb.ogg
similarity index 100%
rename from sound/weapons/armbomb.ogg
rename to sound/items/weapons/armbomb.ogg
diff --git a/sound/weapons/autoguninsert.ogg b/sound/items/weapons/autoguninsert.ogg
similarity index 100%
rename from sound/weapons/autoguninsert.ogg
rename to sound/items/weapons/autoguninsert.ogg
diff --git a/sound/weapons/banjoslap.ogg b/sound/items/weapons/banjoslap.ogg
similarity index 100%
rename from sound/weapons/banjoslap.ogg
rename to sound/items/weapons/banjoslap.ogg
diff --git a/sound/weapons/barragespellhit.ogg b/sound/items/weapons/barragespellhit.ogg
similarity index 100%
rename from sound/weapons/barragespellhit.ogg
rename to sound/items/weapons/barragespellhit.ogg
diff --git a/sound/weapons/batonextend.ogg b/sound/items/weapons/batonextend.ogg
similarity index 100%
rename from sound/weapons/batonextend.ogg
rename to sound/items/weapons/batonextend.ogg
diff --git a/sound/weapons/beam_sniper.ogg b/sound/items/weapons/beam_sniper.ogg
similarity index 100%
rename from sound/weapons/beam_sniper.ogg
rename to sound/items/weapons/beam_sniper.ogg
diff --git a/sound/weapons/beesmoke.ogg b/sound/items/weapons/beesmoke.ogg
similarity index 100%
rename from sound/weapons/beesmoke.ogg
rename to sound/items/weapons/beesmoke.ogg
diff --git a/sound/weapons/bite.ogg b/sound/items/weapons/bite.ogg
similarity index 100%
rename from sound/weapons/bite.ogg
rename to sound/items/weapons/bite.ogg
diff --git a/sound/weapons/blade1.ogg b/sound/items/weapons/blade1.ogg
similarity index 100%
rename from sound/weapons/blade1.ogg
rename to sound/items/weapons/blade1.ogg
diff --git a/sound/weapons/bladeslice.ogg b/sound/items/weapons/bladeslice.ogg
similarity index 100%
rename from sound/weapons/bladeslice.ogg
rename to sound/items/weapons/bladeslice.ogg
diff --git a/sound/weapons/blastcannon.ogg b/sound/items/weapons/blastcannon.ogg
similarity index 100%
rename from sound/weapons/blastcannon.ogg
rename to sound/items/weapons/blastcannon.ogg
diff --git a/sound/weapons/blaster.ogg b/sound/items/weapons/blaster.ogg
similarity index 100%
rename from sound/weapons/blaster.ogg
rename to sound/items/weapons/blaster.ogg
diff --git a/sound/weapons/block_blade.ogg b/sound/items/weapons/block_blade.ogg
similarity index 100%
rename from sound/weapons/block_blade.ogg
rename to sound/items/weapons/block_blade.ogg
diff --git a/sound/weapons/block_shield.ogg b/sound/items/weapons/block_shield.ogg
similarity index 100%
rename from sound/weapons/block_shield.ogg
rename to sound/items/weapons/block_shield.ogg
diff --git a/sound/weapons/bolathrow.ogg b/sound/items/weapons/bolathrow.ogg
similarity index 100%
rename from sound/weapons/bolathrow.ogg
rename to sound/items/weapons/bolathrow.ogg
diff --git a/sound/weapons/bulletflyby.ogg b/sound/items/weapons/bulletflyby.ogg
similarity index 100%
rename from sound/weapons/bulletflyby.ogg
rename to sound/items/weapons/bulletflyby.ogg
diff --git a/sound/weapons/bulletflyby2.ogg b/sound/items/weapons/bulletflyby2.ogg
similarity index 100%
rename from sound/weapons/bulletflyby2.ogg
rename to sound/items/weapons/bulletflyby2.ogg
diff --git a/sound/weapons/bulletflyby3.ogg b/sound/items/weapons/bulletflyby3.ogg
similarity index 100%
rename from sound/weapons/bulletflyby3.ogg
rename to sound/items/weapons/bulletflyby3.ogg
diff --git a/sound/weapons/cablecuff.ogg b/sound/items/weapons/cablecuff.ogg
similarity index 100%
rename from sound/weapons/cablecuff.ogg
rename to sound/items/weapons/cablecuff.ogg
diff --git a/sound/weapons/chainhit.ogg b/sound/items/weapons/chainhit.ogg
similarity index 100%
rename from sound/weapons/chainhit.ogg
rename to sound/items/weapons/chainhit.ogg
diff --git a/sound/weapons/chainsaw_loop.ogg b/sound/items/weapons/chainsaw_loop.ogg
similarity index 100%
rename from sound/weapons/chainsaw_loop.ogg
rename to sound/items/weapons/chainsaw_loop.ogg
diff --git a/sound/weapons/chainsaw_start.ogg b/sound/items/weapons/chainsaw_start.ogg
similarity index 100%
rename from sound/weapons/chainsaw_start.ogg
rename to sound/items/weapons/chainsaw_start.ogg
diff --git a/sound/weapons/chainsaw_stop.ogg b/sound/items/weapons/chainsaw_stop.ogg
similarity index 100%
rename from sound/weapons/chainsaw_stop.ogg
rename to sound/items/weapons/chainsaw_stop.ogg
diff --git a/sound/weapons/chainsawhit.ogg b/sound/items/weapons/chainsawhit.ogg
similarity index 100%
rename from sound/weapons/chainsawhit.ogg
rename to sound/items/weapons/chainsawhit.ogg
diff --git a/sound/weapons/circsawhit.ogg b/sound/items/weapons/circsawhit.ogg
similarity index 100%
rename from sound/weapons/circsawhit.ogg
rename to sound/items/weapons/circsawhit.ogg
diff --git a/sound/effects/contractorbatonhit.ogg b/sound/items/weapons/contractor_baton/contractorbatonhit.ogg
similarity index 100%
rename from sound/effects/contractorbatonhit.ogg
rename to sound/items/weapons/contractor_baton/contractorbatonhit.ogg
diff --git a/sound/weapons/contractorbatonextend.ogg b/sound/items/weapons/contractorbatonextend.ogg
similarity index 100%
rename from sound/weapons/contractorbatonextend.ogg
rename to sound/items/weapons/contractorbatonextend.ogg
diff --git a/sound/weapons/cqchit1.ogg b/sound/items/weapons/cqchit1.ogg
similarity index 100%
rename from sound/weapons/cqchit1.ogg
rename to sound/items/weapons/cqchit1.ogg
diff --git a/sound/weapons/cqchit2.ogg b/sound/items/weapons/cqchit2.ogg
similarity index 100%
rename from sound/weapons/cqchit2.ogg
rename to sound/items/weapons/cqchit2.ogg
diff --git a/sound/weapons/draw_bow.ogg b/sound/items/weapons/draw_bow.ogg
similarity index 100%
rename from sound/weapons/draw_bow.ogg
rename to sound/items/weapons/draw_bow.ogg
diff --git a/sound/weapons/draw_bow2.ogg b/sound/items/weapons/draw_bow2.ogg
similarity index 100%
rename from sound/weapons/draw_bow2.ogg
rename to sound/items/weapons/draw_bow2.ogg
diff --git a/sound/weapons/drill.ogg b/sound/items/weapons/drill.ogg
similarity index 100%
rename from sound/weapons/drill.ogg
rename to sound/items/weapons/drill.ogg
diff --git a/sound/weapons/effects/batreflect.ogg b/sound/items/weapons/effects/batreflect.ogg
similarity index 100%
rename from sound/weapons/effects/batreflect.ogg
rename to sound/items/weapons/effects/batreflect.ogg
diff --git a/sound/weapons/effects/ric1.ogg b/sound/items/weapons/effects/ric1.ogg
similarity index 100%
rename from sound/weapons/effects/ric1.ogg
rename to sound/items/weapons/effects/ric1.ogg
diff --git a/sound/weapons/effects/ric2.ogg b/sound/items/weapons/effects/ric2.ogg
similarity index 100%
rename from sound/weapons/effects/ric2.ogg
rename to sound/items/weapons/effects/ric2.ogg
diff --git a/sound/weapons/effects/ric3.ogg b/sound/items/weapons/effects/ric3.ogg
similarity index 100%
rename from sound/weapons/effects/ric3.ogg
rename to sound/items/weapons/effects/ric3.ogg
diff --git a/sound/weapons/effects/ric4.ogg b/sound/items/weapons/effects/ric4.ogg
similarity index 100%
rename from sound/weapons/effects/ric4.ogg
rename to sound/items/weapons/effects/ric4.ogg
diff --git a/sound/weapons/effects/ric5.ogg b/sound/items/weapons/effects/ric5.ogg
similarity index 100%
rename from sound/weapons/effects/ric5.ogg
rename to sound/items/weapons/effects/ric5.ogg
diff --git a/sound/weapons/effects/searwall.ogg b/sound/items/weapons/effects/searwall.ogg
similarity index 100%
rename from sound/weapons/effects/searwall.ogg
rename to sound/items/weapons/effects/searwall.ogg
diff --git a/sound/weapons/egloves.ogg b/sound/items/weapons/egloves.ogg
similarity index 100%
rename from sound/weapons/egloves.ogg
rename to sound/items/weapons/egloves.ogg
diff --git a/sound/weapons/emitter.ogg b/sound/items/weapons/emitter.ogg
similarity index 100%
rename from sound/weapons/emitter.ogg
rename to sound/items/weapons/emitter.ogg
diff --git a/sound/weapons/emitter2.ogg b/sound/items/weapons/emitter2.ogg
similarity index 100%
rename from sound/weapons/emitter2.ogg
rename to sound/items/weapons/emitter2.ogg
diff --git a/sound/weapons/empty.ogg b/sound/items/weapons/empty.ogg
similarity index 100%
rename from sound/weapons/empty.ogg
rename to sound/items/weapons/empty.ogg
diff --git a/sound/weapons/etherealhit.ogg b/sound/items/weapons/etherealhit.ogg
similarity index 100%
rename from sound/weapons/etherealhit.ogg
rename to sound/items/weapons/etherealhit.ogg
diff --git a/sound/weapons/etherealmiss.ogg b/sound/items/weapons/etherealmiss.ogg
similarity index 100%
rename from sound/weapons/etherealmiss.ogg
rename to sound/items/weapons/etherealmiss.ogg
diff --git a/sound/weapons/flash.ogg b/sound/items/weapons/flash.ogg
similarity index 100%
rename from sound/weapons/flash.ogg
rename to sound/items/weapons/flash.ogg
diff --git a/sound/weapons/flash_ring.ogg b/sound/items/weapons/flash_ring.ogg
similarity index 100%
rename from sound/weapons/flash_ring.ogg
rename to sound/items/weapons/flash_ring.ogg
diff --git a/sound/weapons/flashbang.ogg b/sound/items/weapons/flashbang.ogg
similarity index 100%
rename from sound/weapons/flashbang.ogg
rename to sound/items/weapons/flashbang.ogg
diff --git a/sound/weapons/fwoosh.ogg b/sound/items/weapons/fwoosh.ogg
similarity index 100%
rename from sound/weapons/fwoosh.ogg
rename to sound/items/weapons/fwoosh.ogg
diff --git a/sound/weapons/genhit.ogg b/sound/items/weapons/genhit.ogg
similarity index 100%
rename from sound/weapons/genhit.ogg
rename to sound/items/weapons/genhit.ogg
diff --git a/sound/weapons/genhit1.ogg b/sound/items/weapons/genhit1.ogg
similarity index 100%
rename from sound/weapons/genhit1.ogg
rename to sound/items/weapons/genhit1.ogg
diff --git a/sound/weapons/genhit2.ogg b/sound/items/weapons/genhit2.ogg
similarity index 100%
rename from sound/weapons/genhit2.ogg
rename to sound/items/weapons/genhit2.ogg
diff --git a/sound/weapons/genhit3.ogg b/sound/items/weapons/genhit3.ogg
similarity index 100%
rename from sound/weapons/genhit3.ogg
rename to sound/items/weapons/genhit3.ogg
diff --git a/sound/weapons/guillotine.ogg b/sound/items/weapons/guillotine.ogg
similarity index 100%
rename from sound/weapons/guillotine.ogg
rename to sound/items/weapons/guillotine.ogg
diff --git a/sound/weapons/gun/bow/attribution.txt b/sound/items/weapons/gun/bow/attribution.txt
similarity index 100%
rename from sound/weapons/gun/bow/attribution.txt
rename to sound/items/weapons/gun/bow/attribution.txt
diff --git a/sound/weapons/gun/bow/bow_draw.ogg b/sound/items/weapons/gun/bow/bow_draw.ogg
similarity index 100%
rename from sound/weapons/gun/bow/bow_draw.ogg
rename to sound/items/weapons/gun/bow/bow_draw.ogg
diff --git a/sound/weapons/gun/bow/bow_fire.ogg b/sound/items/weapons/gun/bow/bow_fire.ogg
similarity index 100%
rename from sound/weapons/gun/bow/bow_fire.ogg
rename to sound/items/weapons/gun/bow/bow_fire.ogg
diff --git a/sound/weapons/gun/general/ballistic_click.ogg b/sound/items/weapons/gun/general/ballistic_click.ogg
similarity index 100%
rename from sound/weapons/gun/general/ballistic_click.ogg
rename to sound/items/weapons/gun/general/ballistic_click.ogg
diff --git a/sound/weapons/gun/general/bolt_drop.ogg b/sound/items/weapons/gun/general/bolt_drop.ogg
similarity index 100%
rename from sound/weapons/gun/general/bolt_drop.ogg
rename to sound/items/weapons/gun/general/bolt_drop.ogg
diff --git a/sound/weapons/gun/general/bolt_rack.ogg b/sound/items/weapons/gun/general/bolt_rack.ogg
similarity index 100%
rename from sound/weapons/gun/general/bolt_rack.ogg
rename to sound/items/weapons/gun/general/bolt_rack.ogg
diff --git a/sound/weapons/gun/general/cannon.ogg b/sound/items/weapons/gun/general/cannon.ogg
similarity index 100%
rename from sound/weapons/gun/general/cannon.ogg
rename to sound/items/weapons/gun/general/cannon.ogg
diff --git a/sound/weapons/gun/general/chunkyrack.ogg b/sound/items/weapons/gun/general/chunkyrack.ogg
similarity index 100%
rename from sound/weapons/gun/general/chunkyrack.ogg
rename to sound/items/weapons/gun/general/chunkyrack.ogg
diff --git a/sound/weapons/gun/general/dry_fire.ogg b/sound/items/weapons/gun/general/dry_fire.ogg
similarity index 100%
rename from sound/weapons/gun/general/dry_fire.ogg
rename to sound/items/weapons/gun/general/dry_fire.ogg
diff --git a/sound/weapons/gun/general/empty_alarm.ogg b/sound/items/weapons/gun/general/empty_alarm.ogg
similarity index 100%
rename from sound/weapons/gun/general/empty_alarm.ogg
rename to sound/items/weapons/gun/general/empty_alarm.ogg
diff --git a/sound/weapons/gun/general/grenade_launch.ogg b/sound/items/weapons/gun/general/grenade_launch.ogg
similarity index 100%
rename from sound/weapons/gun/general/grenade_launch.ogg
rename to sound/items/weapons/gun/general/grenade_launch.ogg
diff --git a/sound/weapons/gun/general/heavy_shot_suppressed.ogg b/sound/items/weapons/gun/general/heavy_shot_suppressed.ogg
similarity index 100%
rename from sound/weapons/gun/general/heavy_shot_suppressed.ogg
rename to sound/items/weapons/gun/general/heavy_shot_suppressed.ogg
diff --git a/sound/weapons/gun/general/mag_bullet_insert.ogg b/sound/items/weapons/gun/general/mag_bullet_insert.ogg
similarity index 100%
rename from sound/weapons/gun/general/mag_bullet_insert.ogg
rename to sound/items/weapons/gun/general/mag_bullet_insert.ogg
diff --git a/sound/weapons/gun/general/mag_bullet_remove.ogg b/sound/items/weapons/gun/general/mag_bullet_remove.ogg
similarity index 100%
rename from sound/weapons/gun/general/mag_bullet_remove.ogg
rename to sound/items/weapons/gun/general/mag_bullet_remove.ogg
diff --git a/sound/weapons/gun/general/magazine_insert_empty.ogg b/sound/items/weapons/gun/general/magazine_insert_empty.ogg
similarity index 100%
rename from sound/weapons/gun/general/magazine_insert_empty.ogg
rename to sound/items/weapons/gun/general/magazine_insert_empty.ogg
diff --git a/sound/weapons/gun/general/magazine_insert_full.ogg b/sound/items/weapons/gun/general/magazine_insert_full.ogg
similarity index 100%
rename from sound/weapons/gun/general/magazine_insert_full.ogg
rename to sound/items/weapons/gun/general/magazine_insert_full.ogg
diff --git a/sound/weapons/gun/general/magazine_remove_empty.ogg b/sound/items/weapons/gun/general/magazine_remove_empty.ogg
similarity index 100%
rename from sound/weapons/gun/general/magazine_remove_empty.ogg
rename to sound/items/weapons/gun/general/magazine_remove_empty.ogg
diff --git a/sound/weapons/gun/general/magazine_remove_full.ogg b/sound/items/weapons/gun/general/magazine_remove_full.ogg
similarity index 100%
rename from sound/weapons/gun/general/magazine_remove_full.ogg
rename to sound/items/weapons/gun/general/magazine_remove_full.ogg
diff --git a/sound/weapons/gun/general/mountedgun.ogg b/sound/items/weapons/gun/general/mountedgun.ogg
similarity index 100%
rename from sound/weapons/gun/general/mountedgun.ogg
rename to sound/items/weapons/gun/general/mountedgun.ogg
diff --git a/sound/weapons/gun/general/mountedgunend.ogg b/sound/items/weapons/gun/general/mountedgunend.ogg
similarity index 100%
rename from sound/weapons/gun/general/mountedgunend.ogg
rename to sound/items/weapons/gun/general/mountedgunend.ogg
diff --git a/sound/weapons/gun/general/rocket_launch.ogg b/sound/items/weapons/gun/general/rocket_launch.ogg
similarity index 100%
rename from sound/weapons/gun/general/rocket_launch.ogg
rename to sound/items/weapons/gun/general/rocket_launch.ogg
diff --git a/sound/weapons/gun/general/slide_lock_1.ogg b/sound/items/weapons/gun/general/slide_lock_1.ogg
similarity index 100%
rename from sound/weapons/gun/general/slide_lock_1.ogg
rename to sound/items/weapons/gun/general/slide_lock_1.ogg
diff --git a/sound/weapons/gun/hmg/hmg.ogg b/sound/items/weapons/gun/hmg/hmg.ogg
similarity index 100%
rename from sound/weapons/gun/hmg/hmg.ogg
rename to sound/items/weapons/gun/hmg/hmg.ogg
diff --git a/sound/weapons/gun/l6/l6_door.ogg b/sound/items/weapons/gun/l6/l6_door.ogg
similarity index 100%
rename from sound/weapons/gun/l6/l6_door.ogg
rename to sound/items/weapons/gun/l6/l6_door.ogg
diff --git a/sound/weapons/gun/l6/l6_rack.ogg b/sound/items/weapons/gun/l6/l6_rack.ogg
similarity index 100%
rename from sound/weapons/gun/l6/l6_rack.ogg
rename to sound/items/weapons/gun/l6/l6_rack.ogg
diff --git a/sound/weapons/gun/l6/shot.ogg b/sound/items/weapons/gun/l6/shot.ogg
similarity index 100%
rename from sound/weapons/gun/l6/shot.ogg
rename to sound/items/weapons/gun/l6/shot.ogg
diff --git a/sound/weapons/gun/pistol/drop_small.ogg b/sound/items/weapons/gun/pistol/drop_small.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/drop_small.ogg
rename to sound/items/weapons/gun/pistol/drop_small.ogg
diff --git a/sound/weapons/gun/pistol/dry_fire.ogg b/sound/items/weapons/gun/pistol/dry_fire.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/dry_fire.ogg
rename to sound/items/weapons/gun/pistol/dry_fire.ogg
diff --git a/sound/weapons/gun/pistol/lock_small.ogg b/sound/items/weapons/gun/pistol/lock_small.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/lock_small.ogg
rename to sound/items/weapons/gun/pistol/lock_small.ogg
diff --git a/sound/weapons/gun/pistol/mag_insert.ogg b/sound/items/weapons/gun/pistol/mag_insert.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/mag_insert.ogg
rename to sound/items/weapons/gun/pistol/mag_insert.ogg
diff --git a/sound/weapons/gun/pistol/mag_release.ogg b/sound/items/weapons/gun/pistol/mag_release.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/mag_release.ogg
rename to sound/items/weapons/gun/pistol/mag_release.ogg
diff --git a/sound/weapons/gun/pistol/rack.ogg b/sound/items/weapons/gun/pistol/rack.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/rack.ogg
rename to sound/items/weapons/gun/pistol/rack.ogg
diff --git a/sound/weapons/gun/pistol/rack_small.ogg b/sound/items/weapons/gun/pistol/rack_small.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/rack_small.ogg
rename to sound/items/weapons/gun/pistol/rack_small.ogg
diff --git a/sound/weapons/gun/pistol/shot.ogg b/sound/items/weapons/gun/pistol/shot.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/shot.ogg
rename to sound/items/weapons/gun/pistol/shot.ogg
diff --git a/sound/weapons/gun/pistol/shot_alt.ogg b/sound/items/weapons/gun/pistol/shot_alt.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/shot_alt.ogg
rename to sound/items/weapons/gun/pistol/shot_alt.ogg
diff --git a/sound/weapons/gun/pistol/shot_suppressed.ogg b/sound/items/weapons/gun/pistol/shot_suppressed.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/shot_suppressed.ogg
rename to sound/items/weapons/gun/pistol/shot_suppressed.ogg
diff --git a/sound/weapons/gun/pistol/slide_drop.ogg b/sound/items/weapons/gun/pistol/slide_drop.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/slide_drop.ogg
rename to sound/items/weapons/gun/pistol/slide_drop.ogg
diff --git a/sound/weapons/gun/pistol/slide_lock.ogg b/sound/items/weapons/gun/pistol/slide_lock.ogg
similarity index 100%
rename from sound/weapons/gun/pistol/slide_lock.ogg
rename to sound/items/weapons/gun/pistol/slide_lock.ogg
diff --git a/sound/weapons/gun/revolver/dry_fire.ogg b/sound/items/weapons/gun/revolver/dry_fire.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/dry_fire.ogg
rename to sound/items/weapons/gun/revolver/dry_fire.ogg
diff --git a/sound/weapons/gun/revolver/empty.ogg b/sound/items/weapons/gun/revolver/empty.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/empty.ogg
rename to sound/items/weapons/gun/revolver/empty.ogg
diff --git a/sound/weapons/gun/revolver/load_bullet.ogg b/sound/items/weapons/gun/revolver/load_bullet.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/load_bullet.ogg
rename to sound/items/weapons/gun/revolver/load_bullet.ogg
diff --git a/sound/weapons/gun/revolver/shot.ogg b/sound/items/weapons/gun/revolver/shot.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/shot.ogg
rename to sound/items/weapons/gun/revolver/shot.ogg
diff --git a/sound/weapons/gun/revolver/shot_alt.ogg b/sound/items/weapons/gun/revolver/shot_alt.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/shot_alt.ogg
rename to sound/items/weapons/gun/revolver/shot_alt.ogg
diff --git a/sound/weapons/gun/revolver/spin1.ogg b/sound/items/weapons/gun/revolver/spin1.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/spin1.ogg
rename to sound/items/weapons/gun/revolver/spin1.ogg
diff --git a/sound/weapons/gun/revolver/spin2.ogg b/sound/items/weapons/gun/revolver/spin2.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/spin2.ogg
rename to sound/items/weapons/gun/revolver/spin2.ogg
diff --git a/sound/weapons/gun/revolver/spin3.ogg b/sound/items/weapons/gun/revolver/spin3.ogg
similarity index 100%
rename from sound/weapons/gun/revolver/spin3.ogg
rename to sound/items/weapons/gun/revolver/spin3.ogg
diff --git a/sound/weapons/gun/rifle/bolt_in.ogg b/sound/items/weapons/gun/rifle/bolt_in.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/bolt_in.ogg
rename to sound/items/weapons/gun/rifle/bolt_in.ogg
diff --git a/sound/weapons/gun/rifle/bolt_out.ogg b/sound/items/weapons/gun/rifle/bolt_out.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/bolt_out.ogg
rename to sound/items/weapons/gun/rifle/bolt_out.ogg
diff --git a/sound/weapons/gun/rifle/shot.ogg b/sound/items/weapons/gun/rifle/shot.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/shot.ogg
rename to sound/items/weapons/gun/rifle/shot.ogg
diff --git a/sound/weapons/gun/rifle/shot_heavy.ogg b/sound/items/weapons/gun/rifle/shot_heavy.ogg
similarity index 100%
rename from sound/weapons/gun/rifle/shot_heavy.ogg
rename to sound/items/weapons/gun/rifle/shot_heavy.ogg
diff --git a/sound/weapons/gun/shotgun/insert_shell.ogg b/sound/items/weapons/gun/shotgun/insert_shell.ogg
similarity index 100%
rename from sound/weapons/gun/shotgun/insert_shell.ogg
rename to sound/items/weapons/gun/shotgun/insert_shell.ogg
diff --git a/sound/weapons/gun/shotgun/rack.ogg b/sound/items/weapons/gun/shotgun/rack.ogg
similarity index 100%
rename from sound/weapons/gun/shotgun/rack.ogg
rename to sound/items/weapons/gun/shotgun/rack.ogg
diff --git a/sound/weapons/gun/shotgun/shot.ogg b/sound/items/weapons/gun/shotgun/shot.ogg
similarity index 100%
rename from sound/weapons/gun/shotgun/shot.ogg
rename to sound/items/weapons/gun/shotgun/shot.ogg
diff --git a/sound/weapons/gun/shotgun/shot_alt.ogg b/sound/items/weapons/gun/shotgun/shot_alt.ogg
similarity index 100%
rename from sound/weapons/gun/shotgun/shot_alt.ogg
rename to sound/items/weapons/gun/shotgun/shot_alt.ogg
diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_1.ogg b/sound/items/weapons/gun/smartgun/smartgun_shoot_1.ogg
similarity index 100%
rename from sound/weapons/gun/smartgun/smartgun_shoot_1.ogg
rename to sound/items/weapons/gun/smartgun/smartgun_shoot_1.ogg
diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_2.ogg b/sound/items/weapons/gun/smartgun/smartgun_shoot_2.ogg
similarity index 100%
rename from sound/weapons/gun/smartgun/smartgun_shoot_2.ogg
rename to sound/items/weapons/gun/smartgun/smartgun_shoot_2.ogg
diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_3.ogg b/sound/items/weapons/gun/smartgun/smartgun_shoot_3.ogg
similarity index 100%
rename from sound/weapons/gun/smartgun/smartgun_shoot_3.ogg
rename to sound/items/weapons/gun/smartgun/smartgun_shoot_3.ogg
diff --git a/sound/weapons/gun/smg/shot.ogg b/sound/items/weapons/gun/smg/shot.ogg
similarity index 100%
rename from sound/weapons/gun/smg/shot.ogg
rename to sound/items/weapons/gun/smg/shot.ogg
diff --git a/sound/weapons/gun/smg/shot_alt.ogg b/sound/items/weapons/gun/smg/shot_alt.ogg
similarity index 100%
rename from sound/weapons/gun/smg/shot_alt.ogg
rename to sound/items/weapons/gun/smg/shot_alt.ogg
diff --git a/sound/weapons/gun/smg/shot_suppressed.ogg b/sound/items/weapons/gun/smg/shot_suppressed.ogg
similarity index 100%
rename from sound/weapons/gun/smg/shot_suppressed.ogg
rename to sound/items/weapons/gun/smg/shot_suppressed.ogg
diff --git a/sound/weapons/gun/smg/smgrack.ogg b/sound/items/weapons/gun/smg/smgrack.ogg
similarity index 100%
rename from sound/weapons/gun/smg/smgrack.ogg
rename to sound/items/weapons/gun/smg/smgrack.ogg
diff --git a/sound/weapons/gun/sniper/mag_insert.ogg b/sound/items/weapons/gun/sniper/mag_insert.ogg
similarity index 100%
rename from sound/weapons/gun/sniper/mag_insert.ogg
rename to sound/items/weapons/gun/sniper/mag_insert.ogg
diff --git a/sound/weapons/gun/sniper/rack.ogg b/sound/items/weapons/gun/sniper/rack.ogg
similarity index 100%
rename from sound/weapons/gun/sniper/rack.ogg
rename to sound/items/weapons/gun/sniper/rack.ogg
diff --git a/sound/weapons/gun/sniper/shot.ogg b/sound/items/weapons/gun/sniper/shot.ogg
similarity index 100%
rename from sound/weapons/gun/sniper/shot.ogg
rename to sound/items/weapons/gun/sniper/shot.ogg
diff --git a/sound/weapons/handcuffs.ogg b/sound/items/weapons/handcuffs.ogg
similarity index 100%
rename from sound/weapons/handcuffs.ogg
rename to sound/items/weapons/handcuffs.ogg
diff --git a/sound/weapons/homerun.ogg b/sound/items/weapons/homerun.ogg
similarity index 100%
rename from sound/weapons/homerun.ogg
rename to sound/items/weapons/homerun.ogg
diff --git a/sound/weapons/ionrifle.ogg b/sound/items/weapons/ionrifle.ogg
similarity index 100%
rename from sound/weapons/ionrifle.ogg
rename to sound/items/weapons/ionrifle.ogg
diff --git a/sound/weapons/jammed.ogg b/sound/items/weapons/jammed.ogg
similarity index 100%
rename from sound/weapons/jammed.ogg
rename to sound/items/weapons/jammed.ogg
diff --git a/sound/weapons/kinetic_accel.ogg b/sound/items/weapons/kinetic_accel.ogg
similarity index 100%
rename from sound/weapons/kinetic_accel.ogg
rename to sound/items/weapons/kinetic_accel.ogg
diff --git a/sound/weapons/kinetic_reload.ogg b/sound/items/weapons/kinetic_reload.ogg
similarity index 100%
rename from sound/weapons/kinetic_reload.ogg
rename to sound/items/weapons/kinetic_reload.ogg
diff --git a/sound/weapons/laser.ogg b/sound/items/weapons/laser.ogg
similarity index 100%
rename from sound/weapons/laser.ogg
rename to sound/items/weapons/laser.ogg
diff --git a/sound/weapons/laser2.ogg b/sound/items/weapons/laser2.ogg
similarity index 100%
rename from sound/weapons/laser2.ogg
rename to sound/items/weapons/laser2.ogg
diff --git a/sound/weapons/laser3.ogg b/sound/items/weapons/laser3.ogg
similarity index 100%
rename from sound/weapons/laser3.ogg
rename to sound/items/weapons/laser3.ogg
diff --git a/sound/weapons/laser_crank.ogg b/sound/items/weapons/laser_crank.ogg
similarity index 100%
rename from sound/weapons/laser_crank.ogg
rename to sound/items/weapons/laser_crank.ogg
diff --git a/sound/weapons/lasercannonfire.ogg b/sound/items/weapons/lasercannonfire.ogg
similarity index 100%
rename from sound/weapons/lasercannonfire.ogg
rename to sound/items/weapons/lasercannonfire.ogg
diff --git a/sound/weapons/magin.ogg b/sound/items/weapons/magin.ogg
similarity index 100%
rename from sound/weapons/magin.ogg
rename to sound/items/weapons/magin.ogg
diff --git a/sound/weapons/magout.ogg b/sound/items/weapons/magout.ogg
similarity index 100%
rename from sound/weapons/magout.ogg
rename to sound/items/weapons/magout.ogg
diff --git a/sound/weapons/marauder.ogg b/sound/items/weapons/marauder.ogg
similarity index 100%
rename from sound/weapons/marauder.ogg
rename to sound/items/weapons/marauder.ogg
diff --git a/sound/weapons/minebot_rocket.ogg b/sound/items/weapons/minebot_rocket.ogg
similarity index 100%
rename from sound/weapons/minebot_rocket.ogg
rename to sound/items/weapons/minebot_rocket.ogg
diff --git a/sound/weapons/mortar_long_whistle.ogg b/sound/items/weapons/mortar_long_whistle.ogg
similarity index 100%
rename from sound/weapons/mortar_long_whistle.ogg
rename to sound/items/weapons/mortar_long_whistle.ogg
diff --git a/sound/weapons/mortar_whistle.ogg b/sound/items/weapons/mortar_whistle.ogg
similarity index 100%
rename from sound/weapons/mortar_whistle.ogg
rename to sound/items/weapons/mortar_whistle.ogg
diff --git a/sound/weapons/parry.ogg b/sound/items/weapons/parry.ogg
similarity index 100%
rename from sound/weapons/parry.ogg
rename to sound/items/weapons/parry.ogg
diff --git a/sound/weapons/pierce.ogg b/sound/items/weapons/pierce.ogg
similarity index 100%
rename from sound/weapons/pierce.ogg
rename to sound/items/weapons/pierce.ogg
diff --git a/sound/weapons/pierce_slow.ogg b/sound/items/weapons/pierce_slow.ogg
similarity index 100%
rename from sound/weapons/pierce_slow.ogg
rename to sound/items/weapons/pierce_slow.ogg
diff --git a/sound/weapons/plasma_cutter.ogg b/sound/items/weapons/plasma_cutter.ogg
similarity index 100%
rename from sound/weapons/plasma_cutter.ogg
rename to sound/items/weapons/plasma_cutter.ogg
diff --git a/sound/weapons/pulse.ogg b/sound/items/weapons/pulse.ogg
similarity index 100%
rename from sound/weapons/pulse.ogg
rename to sound/items/weapons/pulse.ogg
diff --git a/sound/weapons/pulse2.ogg b/sound/items/weapons/pulse2.ogg
similarity index 100%
rename from sound/weapons/pulse2.ogg
rename to sound/items/weapons/pulse2.ogg
diff --git a/sound/weapons/pulse3.ogg b/sound/items/weapons/pulse3.ogg
similarity index 100%
rename from sound/weapons/pulse3.ogg
rename to sound/items/weapons/pulse3.ogg
diff --git a/sound/weapons/punch1.ogg b/sound/items/weapons/punch1.ogg
similarity index 100%
rename from sound/weapons/punch1.ogg
rename to sound/items/weapons/punch1.ogg
diff --git a/sound/weapons/punch2.ogg b/sound/items/weapons/punch2.ogg
similarity index 100%
rename from sound/weapons/punch2.ogg
rename to sound/items/weapons/punch2.ogg
diff --git a/sound/weapons/punch3.ogg b/sound/items/weapons/punch3.ogg
similarity index 100%
rename from sound/weapons/punch3.ogg
rename to sound/items/weapons/punch3.ogg
diff --git a/sound/weapons/punch4.ogg b/sound/items/weapons/punch4.ogg
similarity index 100%
rename from sound/weapons/punch4.ogg
rename to sound/items/weapons/punch4.ogg
diff --git a/sound/weapons/punchmiss.ogg b/sound/items/weapons/punchmiss.ogg
similarity index 100%
rename from sound/weapons/punchmiss.ogg
rename to sound/items/weapons/punchmiss.ogg
diff --git a/sound/weapons/rapierhit.ogg b/sound/items/weapons/rapierhit.ogg
similarity index 100%
rename from sound/weapons/rapierhit.ogg
rename to sound/items/weapons/rapierhit.ogg
diff --git a/sound/weapons/resonator_blast.ogg b/sound/items/weapons/resonator_blast.ogg
similarity index 100%
rename from sound/weapons/resonator_blast.ogg
rename to sound/items/weapons/resonator_blast.ogg
diff --git a/sound/weapons/resonator_fire.ogg b/sound/items/weapons/resonator_fire.ogg
similarity index 100%
rename from sound/weapons/resonator_fire.ogg
rename to sound/items/weapons/resonator_fire.ogg
diff --git a/sound/weapons/ring.ogg b/sound/items/weapons/ring.ogg
similarity index 100%
rename from sound/weapons/ring.ogg
rename to sound/items/weapons/ring.ogg
diff --git a/sound/weapons/saberoff.ogg b/sound/items/weapons/saberoff.ogg
similarity index 100%
rename from sound/weapons/saberoff.ogg
rename to sound/items/weapons/saberoff.ogg
diff --git a/sound/weapons/saberon.ogg b/sound/items/weapons/saberon.ogg
similarity index 100%
rename from sound/weapons/saberon.ogg
rename to sound/items/weapons/saberon.ogg
diff --git a/sound/weapons/scope.ogg b/sound/items/weapons/scope.ogg
similarity index 100%
rename from sound/weapons/scope.ogg
rename to sound/items/weapons/scope.ogg
diff --git a/sound/weapons/sear.ogg b/sound/items/weapons/sear.ogg
similarity index 100%
rename from sound/weapons/sear.ogg
rename to sound/items/weapons/sear.ogg
diff --git a/sound/weapons/sear_disabler.ogg b/sound/items/weapons/sear_disabler.ogg
similarity index 100%
rename from sound/weapons/sear_disabler.ogg
rename to sound/items/weapons/sear_disabler.ogg
diff --git a/sound/weapons/shove.ogg b/sound/items/weapons/shove.ogg
similarity index 100%
rename from sound/weapons/shove.ogg
rename to sound/items/weapons/shove.ogg
diff --git a/sound/weapons/shrink_hit.ogg b/sound/items/weapons/shrink_hit.ogg
similarity index 100%
rename from sound/weapons/shrink_hit.ogg
rename to sound/items/weapons/shrink_hit.ogg
diff --git a/sound/weapons/slam.ogg b/sound/items/weapons/slam.ogg
similarity index 100%
rename from sound/weapons/slam.ogg
rename to sound/items/weapons/slam.ogg
diff --git a/sound/weapons/slap.ogg b/sound/items/weapons/slap.ogg
similarity index 100%
rename from sound/weapons/slap.ogg
rename to sound/items/weapons/slap.ogg
diff --git a/sound/weapons/slash.ogg b/sound/items/weapons/slash.ogg
similarity index 100%
rename from sound/weapons/slash.ogg
rename to sound/items/weapons/slash.ogg
diff --git a/sound/weapons/slashmiss.ogg b/sound/items/weapons/slashmiss.ogg
similarity index 100%
rename from sound/weapons/slashmiss.ogg
rename to sound/items/weapons/slashmiss.ogg
diff --git a/sound/weapons/slice.ogg b/sound/items/weapons/slice.ogg
similarity index 100%
rename from sound/weapons/slice.ogg
rename to sound/items/weapons/slice.ogg
diff --git a/sound/weapons/smash.ogg b/sound/items/weapons/smash.ogg
similarity index 100%
rename from sound/weapons/smash.ogg
rename to sound/items/weapons/smash.ogg
diff --git a/sound/weapons/solarflare.ogg b/sound/items/weapons/solarflare.ogg
similarity index 100%
rename from sound/weapons/solarflare.ogg
rename to sound/items/weapons/solarflare.ogg
diff --git a/sound/weapons/sonic_jackhammer.ogg b/sound/items/weapons/sonic_jackhammer.ogg
similarity index 100%
rename from sound/weapons/sonic_jackhammer.ogg
rename to sound/items/weapons/sonic_jackhammer.ogg
diff --git a/sound/weapons/stringsmash.ogg b/sound/items/weapons/stringsmash.ogg
similarity index 100%
rename from sound/weapons/stringsmash.ogg
rename to sound/items/weapons/stringsmash.ogg
diff --git a/sound/weapons/tap.ogg b/sound/items/weapons/tap.ogg
similarity index 100%
rename from sound/weapons/tap.ogg
rename to sound/items/weapons/tap.ogg
diff --git a/sound/weapons/taser.ogg b/sound/items/weapons/taser.ogg
similarity index 100%
rename from sound/weapons/taser.ogg
rename to sound/items/weapons/taser.ogg
diff --git a/sound/weapons/taser2.ogg b/sound/items/weapons/taser2.ogg
similarity index 100%
rename from sound/weapons/taser2.ogg
rename to sound/items/weapons/taser2.ogg
diff --git a/sound/weapons/taser3.ogg b/sound/items/weapons/taser3.ogg
similarity index 100%
rename from sound/weapons/taser3.ogg
rename to sound/items/weapons/taser3.ogg
diff --git a/sound/weapons/taserhit.ogg b/sound/items/weapons/taserhit.ogg
similarity index 100%
rename from sound/weapons/taserhit.ogg
rename to sound/items/weapons/taserhit.ogg
diff --git a/sound/weapons/thermalpistol.ogg b/sound/items/weapons/thermalpistol.ogg
similarity index 100%
rename from sound/weapons/thermalpistol.ogg
rename to sound/items/weapons/thermalpistol.ogg
diff --git a/sound/weapons/throw.ogg b/sound/items/weapons/throw.ogg
similarity index 100%
rename from sound/weapons/throw.ogg
rename to sound/items/weapons/throw.ogg
diff --git a/sound/weapons/throwhard.ogg b/sound/items/weapons/throwhard.ogg
similarity index 100%
rename from sound/weapons/throwhard.ogg
rename to sound/items/weapons/throwhard.ogg
diff --git a/sound/weapons/throwsoft.ogg b/sound/items/weapons/throwsoft.ogg
similarity index 100%
rename from sound/weapons/throwsoft.ogg
rename to sound/items/weapons/throwsoft.ogg
diff --git a/sound/weapons/throwtap.ogg b/sound/items/weapons/throwtap.ogg
similarity index 100%
rename from sound/weapons/throwtap.ogg
rename to sound/items/weapons/throwtap.ogg
diff --git a/sound/weapons/thudswoosh.ogg b/sound/items/weapons/thudswoosh.ogg
similarity index 100%
rename from sound/weapons/thudswoosh.ogg
rename to sound/items/weapons/thudswoosh.ogg
diff --git a/sound/weapons/wave.ogg b/sound/items/weapons/wave.ogg
similarity index 100%
rename from sound/weapons/wave.ogg
rename to sound/items/weapons/wave.ogg
diff --git a/sound/weapons/whip.ogg b/sound/items/weapons/whip.ogg
similarity index 100%
rename from sound/weapons/whip.ogg
rename to sound/items/weapons/whip.ogg
diff --git a/sound/weapons/whipgrab.ogg b/sound/items/weapons/whipgrab.ogg
similarity index 100%
rename from sound/weapons/whipgrab.ogg
rename to sound/items/weapons/whipgrab.ogg
diff --git a/sound/weapons/zapbang.ogg b/sound/items/weapons/zapbang.ogg
similarity index 100%
rename from sound/weapons/zapbang.ogg
rename to sound/items/weapons/zapbang.ogg
diff --git a/sound/weapons/zipline_fire.ogg b/sound/items/weapons/zipline_fire.ogg
similarity index 100%
rename from sound/weapons/zipline_fire.ogg
rename to sound/items/weapons/zipline_fire.ogg
diff --git a/sound/weapons/zipline_hit.ogg b/sound/items/weapons/zipline_hit.ogg
similarity index 100%
rename from sound/weapons/zipline_hit.ogg
rename to sound/items/weapons/zipline_hit.ogg
diff --git a/sound/weapons/zipline_mid.ogg b/sound/items/weapons/zipline_mid.ogg
similarity index 100%
rename from sound/weapons/zipline_mid.ogg
rename to sound/items/weapons/zipline_mid.ogg
diff --git a/sound/misc/whistle.ogg b/sound/items/whistle/whistle.ogg
similarity index 100%
rename from sound/misc/whistle.ogg
rename to sound/items/whistle/whistle.ogg
diff --git a/sound/items/un_zip.ogg b/sound/items/zip/un_zip.ogg
similarity index 100%
rename from sound/items/un_zip.ogg
rename to sound/items/zip/un_zip.ogg
diff --git a/sound/items/zip.ogg b/sound/items/zip/zip.ogg
similarity index 100%
rename from sound/items/zip.ogg
rename to sound/items/zip/zip.ogg
diff --git a/sound/items/zip_up.ogg b/sound/items/zip/zip_up.ogg
similarity index 100%
rename from sound/items/zip_up.ogg
rename to sound/items/zip/zip_up.ogg
diff --git a/sound/machines/airlock.ogg b/sound/machines/airlock/airlock.ogg
similarity index 100%
rename from sound/machines/airlock.ogg
rename to sound/machines/airlock/airlock.ogg
diff --git a/sound/machines/airlock_alien_prying.ogg b/sound/machines/airlock/airlock_alien_prying.ogg
similarity index 100%
rename from sound/machines/airlock_alien_prying.ogg
rename to sound/machines/airlock/airlock_alien_prying.ogg
diff --git a/sound/machines/airlockclose.ogg b/sound/machines/airlock/airlockclose.ogg
similarity index 100%
rename from sound/machines/airlockclose.ogg
rename to sound/machines/airlock/airlockclose.ogg
diff --git a/sound/machines/airlockforced.ogg b/sound/machines/airlock/airlockforced.ogg
similarity index 100%
rename from sound/machines/airlockforced.ogg
rename to sound/machines/airlock/airlockforced.ogg
diff --git a/sound/machines/airlockopen.ogg b/sound/machines/airlock/airlockopen.ogg
similarity index 100%
rename from sound/machines/airlockopen.ogg
rename to sound/machines/airlock/airlockopen.ogg
diff --git a/sound/machines/boltsdown.ogg b/sound/machines/airlock/boltsdown.ogg
similarity index 100%
rename from sound/machines/boltsdown.ogg
rename to sound/machines/airlock/boltsdown.ogg
diff --git a/sound/machines/boltsup.ogg b/sound/machines/airlock/boltsup.ogg
similarity index 100%
rename from sound/machines/boltsup.ogg
rename to sound/machines/airlock/boltsup.ogg
diff --git a/sound/machines/doorclick.ogg b/sound/machines/airlock/doorclick.ogg
similarity index 100%
rename from sound/machines/doorclick.ogg
rename to sound/machines/airlock/doorclick.ogg
diff --git a/sound/arcade/boom.ogg b/sound/machines/arcade/boom.ogg
similarity index 100%
rename from sound/arcade/boom.ogg
rename to sound/machines/arcade/boom.ogg
diff --git a/sound/arcade/heal.ogg b/sound/machines/arcade/heal.ogg
similarity index 100%
rename from sound/arcade/heal.ogg
rename to sound/machines/arcade/heal.ogg
diff --git a/sound/arcade/hit.ogg b/sound/machines/arcade/hit.ogg
similarity index 100%
rename from sound/arcade/hit.ogg
rename to sound/machines/arcade/hit.ogg
diff --git a/sound/arcade/lose.ogg b/sound/machines/arcade/lose.ogg
similarity index 100%
rename from sound/arcade/lose.ogg
rename to sound/machines/arcade/lose.ogg
diff --git a/sound/arcade/mana.ogg b/sound/machines/arcade/mana.ogg
similarity index 100%
rename from sound/arcade/mana.ogg
rename to sound/machines/arcade/mana.ogg
diff --git a/sound/arcade/steal.ogg b/sound/machines/arcade/steal.ogg
similarity index 100%
rename from sound/arcade/steal.ogg
rename to sound/machines/arcade/steal.ogg
diff --git a/sound/arcade/win.ogg b/sound/machines/arcade/win.ogg
similarity index 100%
rename from sound/arcade/win.ogg
rename to sound/machines/arcade/win.ogg
diff --git a/sound/machines/beep.ogg b/sound/machines/beep/beep.ogg
similarity index 100%
rename from sound/machines/beep.ogg
rename to sound/machines/beep/beep.ogg
diff --git a/sound/machines/deniedbeep.ogg b/sound/machines/beep/deniedbeep.ogg
similarity index 100%
rename from sound/machines/deniedbeep.ogg
rename to sound/machines/beep/deniedbeep.ogg
diff --git a/sound/machines/triple_beep.ogg b/sound/machines/beep/triple_beep.ogg
similarity index 100%
rename from sound/machines/triple_beep.ogg
rename to sound/machines/beep/triple_beep.ogg
diff --git a/sound/machines/twobeep.ogg b/sound/machines/beep/twobeep.ogg
similarity index 100%
rename from sound/machines/twobeep.ogg
rename to sound/machines/beep/twobeep.ogg
diff --git a/sound/machines/twobeep_high.ogg b/sound/machines/beep/twobeep_high.ogg
similarity index 100%
rename from sound/machines/twobeep_high.ogg
rename to sound/machines/beep/twobeep_high.ogg
diff --git a/sound/machines/twobeep_voice1.ogg b/sound/machines/beep/twobeep_voice1.ogg
similarity index 100%
rename from sound/machines/twobeep_voice1.ogg
rename to sound/machines/beep/twobeep_voice1.ogg
diff --git a/sound/machines/twobeep_voice2.ogg b/sound/machines/beep/twobeep_voice2.ogg
similarity index 100%
rename from sound/machines/twobeep_voice2.ogg
rename to sound/machines/beep/twobeep_voice2.ogg
diff --git a/sound/machines/buzz-sigh.ogg b/sound/machines/buzz/buzz-sigh.ogg
similarity index 100%
rename from sound/machines/buzz-sigh.ogg
rename to sound/machines/buzz/buzz-sigh.ogg
diff --git a/sound/machines/buzz-two.ogg b/sound/machines/buzz/buzz-two.ogg
similarity index 100%
rename from sound/machines/buzz-two.ogg
rename to sound/machines/buzz/buzz-two.ogg
diff --git a/sound/machines/click.ogg b/sound/machines/click.ogg
index b3947c86e040a..3b4914a487d37 100644
Binary files a/sound/machines/click.ogg and b/sound/machines/click.ogg differ
diff --git a/sound/machines/closet_close.ogg b/sound/machines/closet/closet_close.ogg
similarity index 100%
rename from sound/machines/closet_close.ogg
rename to sound/machines/closet/closet_close.ogg
diff --git a/sound/machines/closet_open.ogg b/sound/machines/closet/closet_open.ogg
similarity index 100%
rename from sound/machines/closet_open.ogg
rename to sound/machines/closet/closet_open.ogg
diff --git a/sound/machines/wooden_closet_close.ogg b/sound/machines/closet/wooden_closet_close.ogg
similarity index 100%
rename from sound/machines/wooden_closet_close.ogg
rename to sound/machines/closet/wooden_closet_close.ogg
diff --git a/sound/machines/wooden_closet_open.ogg b/sound/machines/closet/wooden_closet_open.ogg
similarity index 100%
rename from sound/machines/wooden_closet_open.ogg
rename to sound/machines/closet/wooden_closet_open.ogg
diff --git a/sound/misc/compiler-failure.ogg b/sound/machines/compiler/compiler-failure.ogg
similarity index 100%
rename from sound/misc/compiler-failure.ogg
rename to sound/machines/compiler/compiler-failure.ogg
diff --git a/sound/misc/compiler-stage1.ogg b/sound/machines/compiler/compiler-stage1.ogg
similarity index 100%
rename from sound/misc/compiler-stage1.ogg
rename to sound/machines/compiler/compiler-stage1.ogg
diff --git a/sound/misc/compiler-stage2.ogg b/sound/machines/compiler/compiler-stage2.ogg
similarity index 100%
rename from sound/misc/compiler-stage2.ogg
rename to sound/machines/compiler/compiler-stage2.ogg
diff --git a/sound/machines/crate/attribution.txt b/sound/machines/crate/attribution.txt
new file mode 100644
index 0000000000000..740d711971d88
--- /dev/null
+++ b/sound/machines/crate/attribution.txt
@@ -0,0 +1,3 @@
+crate_close.ogg and crate_open.ogg are made by lawnjelly
+(https://freesound.org/people/lawnjelly/sounds/156892/)
+They have been licensed under CC-BY 3.0, which can be found at http://creativecommons.org/licenses/by/3.0/
diff --git a/sound/machines/crate_close.ogg b/sound/machines/crate/crate_close.ogg
similarity index 100%
rename from sound/machines/crate_close.ogg
rename to sound/machines/crate/crate_close.ogg
diff --git a/sound/machines/crate_open.ogg b/sound/machines/crate/crate_open.ogg
similarity index 100%
rename from sound/machines/crate_open.ogg
rename to sound/machines/crate/crate_open.ogg
diff --git a/sound/machines/defib_SaftyOn.ogg b/sound/machines/defib/defib_SaftyOn.ogg
similarity index 100%
rename from sound/machines/defib_SaftyOn.ogg
rename to sound/machines/defib/defib_SaftyOn.ogg
diff --git a/sound/machines/defib_charge.ogg b/sound/machines/defib/defib_charge.ogg
similarity index 100%
rename from sound/machines/defib_charge.ogg
rename to sound/machines/defib/defib_charge.ogg
diff --git a/sound/machines/defib_failed.ogg b/sound/machines/defib/defib_failed.ogg
similarity index 100%
rename from sound/machines/defib_failed.ogg
rename to sound/machines/defib/defib_failed.ogg
diff --git a/sound/machines/defib_ready.ogg b/sound/machines/defib/defib_ready.ogg
similarity index 100%
rename from sound/machines/defib_ready.ogg
rename to sound/machines/defib/defib_ready.ogg
diff --git a/sound/machines/defib_saftyOff.ogg b/sound/machines/defib/defib_saftyOff.ogg
similarity index 100%
rename from sound/machines/defib_saftyOff.ogg
rename to sound/machines/defib/defib_saftyOff.ogg
diff --git a/sound/machines/defib_success.ogg b/sound/machines/defib/defib_success.ogg
similarity index 100%
rename from sound/machines/defib_success.ogg
rename to sound/machines/defib/defib_success.ogg
diff --git a/sound/machines/defib_zap.ogg b/sound/machines/defib/defib_zap.ogg
similarity index 100%
rename from sound/machines/defib_zap.ogg
rename to sound/machines/defib/defib_zap.ogg
diff --git a/sound/machines/door_close.ogg b/sound/machines/door/door_close.ogg
similarity index 100%
rename from sound/machines/door_close.ogg
rename to sound/machines/door/door_close.ogg
diff --git a/sound/machines/door_locked.ogg b/sound/machines/door/door_locked.ogg
similarity index 100%
rename from sound/machines/door_locked.ogg
rename to sound/machines/door/door_locked.ogg
diff --git a/sound/machines/door_open.ogg b/sound/machines/door/door_open.ogg
similarity index 100%
rename from sound/machines/door_open.ogg
rename to sound/machines/door/door_open.ogg
diff --git a/sound/machines/engine_alert1.ogg b/sound/machines/engine_alert/engine_alert1.ogg
similarity index 100%
rename from sound/machines/engine_alert1.ogg
rename to sound/machines/engine_alert/engine_alert1.ogg
diff --git a/sound/machines/engine_alert2.ogg b/sound/machines/engine_alert/engine_alert2.ogg
similarity index 100%
rename from sound/machines/engine_alert2.ogg
rename to sound/machines/engine_alert/engine_alert2.ogg
diff --git a/sound/machines/engine_alert3.ogg b/sound/machines/engine_alert/engine_alert3.ogg
similarity index 100%
rename from sound/machines/engine_alert3.ogg
rename to sound/machines/engine_alert/engine_alert3.ogg
diff --git a/sound/machines/fan_break.ogg b/sound/machines/fan/fan_break.ogg
similarity index 100%
rename from sound/machines/fan_break.ogg
rename to sound/machines/fan/fan_break.ogg
diff --git a/sound/machines/fan_loop.ogg b/sound/machines/fan/fan_loop.ogg
similarity index 100%
rename from sound/machines/fan_loop.ogg
rename to sound/machines/fan/fan_loop.ogg
diff --git a/sound/machines/fan_start.ogg b/sound/machines/fan/fan_start.ogg
similarity index 100%
rename from sound/machines/fan_start.ogg
rename to sound/machines/fan/fan_start.ogg
diff --git a/sound/machines/fan_stop.ogg b/sound/machines/fan/fan_stop.ogg
similarity index 100%
rename from sound/machines/fan_stop.ogg
rename to sound/machines/fan/fan_stop.ogg
diff --git a/sound/machines/FireAlarm1.ogg b/sound/machines/fire_alarm/FireAlarm1.ogg
similarity index 100%
rename from sound/machines/FireAlarm1.ogg
rename to sound/machines/fire_alarm/FireAlarm1.ogg
diff --git a/sound/machines/FireAlarm2.ogg b/sound/machines/fire_alarm/FireAlarm2.ogg
similarity index 100%
rename from sound/machines/FireAlarm2.ogg
rename to sound/machines/fire_alarm/FireAlarm2.ogg
diff --git a/sound/machines/FireAlarm3.ogg b/sound/machines/fire_alarm/FireAlarm3.ogg
similarity index 100%
rename from sound/machines/FireAlarm3.ogg
rename to sound/machines/fire_alarm/FireAlarm3.ogg
diff --git a/sound/machines/FireAlarm4.ogg b/sound/machines/fire_alarm/FireAlarm4.ogg
similarity index 100%
rename from sound/machines/FireAlarm4.ogg
rename to sound/machines/fire_alarm/FireAlarm4.ogg
diff --git a/sound/effects/gateway_calibrated.ogg b/sound/machines/gateway/gateway_calibrated.ogg
similarity index 100%
rename from sound/effects/gateway_calibrated.ogg
rename to sound/machines/gateway/gateway_calibrated.ogg
diff --git a/sound/effects/gateway_calibrating.ogg b/sound/machines/gateway/gateway_calibrating.ogg
similarity index 100%
rename from sound/effects/gateway_calibrating.ogg
rename to sound/machines/gateway/gateway_calibrating.ogg
diff --git a/sound/effects/gateway_close.ogg b/sound/machines/gateway/gateway_close.ogg
similarity index 100%
rename from sound/effects/gateway_close.ogg
rename to sound/machines/gateway/gateway_close.ogg
diff --git a/sound/effects/gateway_open.ogg b/sound/machines/gateway/gateway_open.ogg
similarity index 100%
rename from sound/effects/gateway_open.ogg
rename to sound/machines/gateway/gateway_open.ogg
diff --git a/sound/effects/gateway_travel.ogg b/sound/machines/gateway/gateway_travel.ogg
similarity index 100%
rename from sound/effects/gateway_travel.ogg
rename to sound/machines/gateway/gateway_travel.ogg
diff --git a/sound/machines/attributions.txt b/sound/machines/lathe/attributions.txt
similarity index 100%
rename from sound/machines/attributions.txt
rename to sound/machines/lathe/attributions.txt
diff --git a/sound/lavaland/cursed_slot_machine.ogg b/sound/machines/lavaland/cursed_slot_machine.ogg
similarity index 100%
rename from sound/lavaland/cursed_slot_machine.ogg
rename to sound/machines/lavaland/cursed_slot_machine.ogg
diff --git a/sound/lavaland/cursed_slot_machine_jackpot.ogg b/sound/machines/lavaland/cursed_slot_machine_jackpot.ogg
similarity index 100%
rename from sound/lavaland/cursed_slot_machine_jackpot.ogg
rename to sound/machines/lavaland/cursed_slot_machine_jackpot.ogg
diff --git a/sound/machines/lever/attribution.txt b/sound/machines/lever/attribution.txt
new file mode 100644
index 0000000000000..ef86e6ca5c5ac
--- /dev/null
+++ b/sound/machines/lever/attribution.txt
@@ -0,0 +1,3 @@
+lever_start.ogg and lever_stop.ogg are made by A_Kuha on FreeSound
+https://freesound.org/people/A_Kuha/sounds/676412
+This is licensed under CC-0, found at https://creativecommons.org/publicdomain/zero/1.0/
diff --git a/sound/machines/lever_start.ogg b/sound/machines/lever/lever_start.ogg
similarity index 100%
rename from sound/machines/lever_start.ogg
rename to sound/machines/lever/lever_start.ogg
diff --git a/sound/machines/lever_stop.ogg b/sound/machines/lever/lever_stop.ogg
similarity index 100%
rename from sound/machines/lever_stop.ogg
rename to sound/machines/lever/lever_stop.ogg
diff --git a/sound/machines/license.txt b/sound/machines/license.txt
index 0d7de5a5dfa3d..dbccfd7ea096d 100644
--- a/sound/machines/license.txt
+++ b/sound/machines/license.txt
@@ -1,14 +1,6 @@
-crate_close.ogg and crate_open.ogg are made by lawnjelly
-(https://freesound.org/people/lawnjelly/sounds/156892/)
-They have been licensed under CC-BY 3.0, which can be found at http://creativecommons.org/licenses/by/3.0/
-
coffeemaker_brew.ogg originally made by Adriana Lopez (Acekat13X31), edited to reduce length and added fade
(https://freesound.org/people/Acekat13X31/sounds/515685/)
This is licensed under CC-BY 4.0, found at https://creativecommons.org/licenses/by/4.0/
shutter.ogg adapted from Joseph Sardin on BigSoundBank
https://bigsoundbank.com/detail-2475-manual-roller-shutter-closing-out-2.html
-
-lever_start.ogg and lever_stop.ogg are made by A_Kuha on FreeSound
-https://freesound.org/people/A_Kuha/sounds/676412
-This is licensed under CC-0, found at https://creativecommons.org/publicdomain/zero/1.0/
diff --git a/sound/machines/pda_button1.ogg b/sound/machines/pda_button/pda_button1.ogg
similarity index 100%
rename from sound/machines/pda_button1.ogg
rename to sound/machines/pda_button/pda_button1.ogg
diff --git a/sound/machines/pda_button2.ogg b/sound/machines/pda_button/pda_button2.ogg
similarity index 100%
rename from sound/machines/pda_button2.ogg
rename to sound/machines/pda_button/pda_button2.ogg
diff --git a/sound/machines/piston_lower.ogg b/sound/machines/piston/piston_lower.ogg
similarity index 100%
rename from sound/machines/piston_lower.ogg
rename to sound/machines/piston/piston_lower.ogg
diff --git a/sound/machines/piston_raise.ogg b/sound/machines/piston/piston_raise.ogg
similarity index 100%
rename from sound/machines/piston_raise.ogg
rename to sound/machines/piston/piston_raise.ogg
diff --git a/sound/machines/roulettejackpot.ogg b/sound/machines/roulette/roulettejackpot.ogg
similarity index 100%
rename from sound/machines/roulettejackpot.ogg
rename to sound/machines/roulette/roulettejackpot.ogg
diff --git a/sound/machines/roulettewheel.ogg b/sound/machines/roulette/roulettewheel.ogg
similarity index 100%
rename from sound/machines/roulettewheel.ogg
rename to sound/machines/roulette/roulettewheel.ogg
diff --git a/sound/machines/scanbuzz.ogg b/sound/machines/scanner/scanbuzz.ogg
similarity index 100%
rename from sound/machines/scanbuzz.ogg
rename to sound/machines/scanner/scanbuzz.ogg
diff --git a/sound/machines/scanner.ogg b/sound/machines/scanner/scanner.ogg
similarity index 100%
rename from sound/machines/scanner.ogg
rename to sound/machines/scanner/scanner.ogg
diff --git a/sound/machines/synth_no.ogg b/sound/machines/synth/synth_no.ogg
similarity index 100%
rename from sound/machines/synth_no.ogg
rename to sound/machines/synth/synth_no.ogg
diff --git a/sound/machines/synth_yes.ogg b/sound/machines/synth/synth_yes.ogg
similarity index 100%
rename from sound/machines/synth_yes.ogg
rename to sound/machines/synth/synth_yes.ogg
diff --git a/sound/machines/terminal_alert.ogg b/sound/machines/terminal/terminal_alert.ogg
similarity index 100%
rename from sound/machines/terminal_alert.ogg
rename to sound/machines/terminal/terminal_alert.ogg
diff --git a/sound/machines/terminal_button01.ogg b/sound/machines/terminal/terminal_button01.ogg
similarity index 100%
rename from sound/machines/terminal_button01.ogg
rename to sound/machines/terminal/terminal_button01.ogg
diff --git a/sound/machines/terminal_button02.ogg b/sound/machines/terminal/terminal_button02.ogg
similarity index 100%
rename from sound/machines/terminal_button02.ogg
rename to sound/machines/terminal/terminal_button02.ogg
diff --git a/sound/machines/terminal_button03.ogg b/sound/machines/terminal/terminal_button03.ogg
similarity index 100%
rename from sound/machines/terminal_button03.ogg
rename to sound/machines/terminal/terminal_button03.ogg
diff --git a/sound/machines/terminal_button04.ogg b/sound/machines/terminal/terminal_button04.ogg
similarity index 100%
rename from sound/machines/terminal_button04.ogg
rename to sound/machines/terminal/terminal_button04.ogg
diff --git a/sound/machines/terminal_button05.ogg b/sound/machines/terminal/terminal_button05.ogg
similarity index 100%
rename from sound/machines/terminal_button05.ogg
rename to sound/machines/terminal/terminal_button05.ogg
diff --git a/sound/machines/terminal_button06.ogg b/sound/machines/terminal/terminal_button06.ogg
similarity index 100%
rename from sound/machines/terminal_button06.ogg
rename to sound/machines/terminal/terminal_button06.ogg
diff --git a/sound/machines/terminal_button07.ogg b/sound/machines/terminal/terminal_button07.ogg
similarity index 100%
rename from sound/machines/terminal_button07.ogg
rename to sound/machines/terminal/terminal_button07.ogg
diff --git a/sound/machines/terminal_button08.ogg b/sound/machines/terminal/terminal_button08.ogg
similarity index 100%
rename from sound/machines/terminal_button08.ogg
rename to sound/machines/terminal/terminal_button08.ogg
diff --git a/sound/machines/terminal_eject.ogg b/sound/machines/terminal/terminal_eject.ogg
similarity index 100%
rename from sound/machines/terminal_eject.ogg
rename to sound/machines/terminal/terminal_eject.ogg
diff --git a/sound/machines/terminal_error.ogg b/sound/machines/terminal/terminal_error.ogg
similarity index 100%
rename from sound/machines/terminal_error.ogg
rename to sound/machines/terminal/terminal_error.ogg
diff --git a/sound/machines/terminal_insert_disc.ogg b/sound/machines/terminal/terminal_insert_disc.ogg
similarity index 100%
rename from sound/machines/terminal_insert_disc.ogg
rename to sound/machines/terminal/terminal_insert_disc.ogg
diff --git a/sound/machines/terminal_off.ogg b/sound/machines/terminal/terminal_off.ogg
similarity index 100%
rename from sound/machines/terminal_off.ogg
rename to sound/machines/terminal/terminal_off.ogg
diff --git a/sound/machines/terminal_on.ogg b/sound/machines/terminal/terminal_on.ogg
similarity index 100%
rename from sound/machines/terminal_on.ogg
rename to sound/machines/terminal/terminal_on.ogg
diff --git a/sound/machines/terminal_processing.ogg b/sound/machines/terminal/terminal_processing.ogg
similarity index 100%
rename from sound/machines/terminal_processing.ogg
rename to sound/machines/terminal/terminal_processing.ogg
diff --git a/sound/machines/terminal_prompt.ogg b/sound/machines/terminal/terminal_prompt.ogg
similarity index 100%
rename from sound/machines/terminal_prompt.ogg
rename to sound/machines/terminal/terminal_prompt.ogg
diff --git a/sound/machines/terminal_prompt_confirm.ogg b/sound/machines/terminal/terminal_prompt_confirm.ogg
similarity index 100%
rename from sound/machines/terminal_prompt_confirm.ogg
rename to sound/machines/terminal/terminal_prompt_confirm.ogg
diff --git a/sound/machines/terminal_prompt_deny.ogg b/sound/machines/terminal/terminal_prompt_deny.ogg
similarity index 100%
rename from sound/machines/terminal_prompt_deny.ogg
rename to sound/machines/terminal/terminal_prompt_deny.ogg
diff --git a/sound/machines/terminal_select.ogg b/sound/machines/terminal/terminal_select.ogg
similarity index 100%
rename from sound/machines/terminal_select.ogg
rename to sound/machines/terminal/terminal_select.ogg
diff --git a/sound/machines/terminal_success.ogg b/sound/machines/terminal/terminal_success.ogg
similarity index 100%
rename from sound/machines/terminal_success.ogg
rename to sound/machines/terminal/terminal_success.ogg
diff --git a/sound/machines/tramclose.ogg b/sound/machines/tram/tramclose.ogg
similarity index 100%
rename from sound/machines/tramclose.ogg
rename to sound/machines/tram/tramclose.ogg
diff --git a/sound/machines/tramopen.ogg b/sound/machines/tram/tramopen.ogg
similarity index 100%
rename from sound/machines/tramopen.ogg
rename to sound/machines/tram/tramopen.ogg
diff --git a/sound/machines/uplinkerror.ogg b/sound/machines/uplink/uplinkerror.ogg
similarity index 100%
rename from sound/machines/uplinkerror.ogg
rename to sound/machines/uplink/uplinkerror.ogg
diff --git a/sound/machines/uplinkpurchase.ogg b/sound/machines/uplink/uplinkpurchase.ogg
similarity index 100%
rename from sound/machines/uplinkpurchase.ogg
rename to sound/machines/uplink/uplinkpurchase.ogg
diff --git a/sound/misc/Yeehaw.ogg b/sound/misc/Yeehaw.ogg
deleted file mode 100644
index 05bec20b9c120..0000000000000
Binary files a/sound/misc/Yeehaw.ogg and /dev/null differ
diff --git a/sound/voice/insane_low_laugh.ogg b/sound/misc/insane_low_laugh.ogg
similarity index 100%
rename from sound/voice/insane_low_laugh.ogg
rename to sound/misc/insane_low_laugh.ogg
diff --git a/sound/misc/license.txt b/sound/misc/license.txt
index 761a031d19081..2e596a4e128e3 100644
--- a/sound/misc/license.txt
+++ b/sound/misc/license.txt
@@ -1,17 +1,2 @@
-bloop.ogg by my man Tim Khan
+bloop.ogg by my man Tim Khan
(https://freesound.org/people/tim.kahn/sounds/130377/)
-
-knuckles.ogg by CGEffex. Shortened and cut.
-https://freesound.org/people/CGEffex/sounds/93981/
-
-airraid.ogg by Jwade722. Shortened and cut.
-https://freesound.org/people/Jwade722/sounds/534550/
-
-radio_talk.ogg by cs2975871. Shortened and cut.
-https://freesound.org/people/cs2975871/sounds/514185/
-
-radio_important.ogg by morganpurkis.
-https://freesound.org/people/morganpurkis/sounds/392972/
-
-radio_receive.ogg by JovianSounds. Shortened and cut.
-https://freesound.org/people/JovianSounds/sounds/524205/
\ No newline at end of file
diff --git a/sound/misc/null.ogg b/sound/misc/null.ogg
deleted file mode 100644
index 698709398a3c2..0000000000000
Binary files a/sound/misc/null.ogg and /dev/null differ
diff --git a/sound/voice/roleplay.ogg b/sound/misc/roleplay.ogg
similarity index 100%
rename from sound/voice/roleplay.ogg
rename to sound/misc/roleplay.ogg
diff --git a/sound/voice/breathing/attribution.txt b/sound/mobs/humanoids/breathing/attribution.txt
similarity index 100%
rename from sound/voice/breathing/attribution.txt
rename to sound/mobs/humanoids/breathing/attribution.txt
diff --git a/sound/voice/breathing/internals_breathing1.ogg b/sound/mobs/humanoids/breathing/internals_breathing1.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing1.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing1.ogg
diff --git a/sound/voice/breathing/internals_breathing2.ogg b/sound/mobs/humanoids/breathing/internals_breathing2.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing2.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing2.ogg
diff --git a/sound/voice/breathing/internals_breathing3.ogg b/sound/mobs/humanoids/breathing/internals_breathing3.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing3.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing3.ogg
diff --git a/sound/voice/breathing/internals_breathing4.ogg b/sound/mobs/humanoids/breathing/internals_breathing4.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing4.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing4.ogg
diff --git a/sound/voice/breathing/internals_breathing5.ogg b/sound/mobs/humanoids/breathing/internals_breathing5.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing5.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing5.ogg
diff --git a/sound/voice/breathing/internals_breathing6.ogg b/sound/mobs/humanoids/breathing/internals_breathing6.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing6.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing6.ogg
diff --git a/sound/voice/breathing/internals_breathing7.ogg b/sound/mobs/humanoids/breathing/internals_breathing7.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing7.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing7.ogg
diff --git a/sound/voice/breathing/internals_breathing8.ogg b/sound/mobs/humanoids/breathing/internals_breathing8.ogg
similarity index 100%
rename from sound/voice/breathing/internals_breathing8.ogg
rename to sound/mobs/humanoids/breathing/internals_breathing8.ogg
diff --git a/sound/effects/ethereal_crystalization.ogg b/sound/mobs/humanoids/ethereal/ethereal_crystalization.ogg
similarity index 100%
rename from sound/effects/ethereal_crystalization.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_crystalization.ogg
diff --git a/sound/effects/ethereal_revive.ogg b/sound/mobs/humanoids/ethereal/ethereal_revive.ogg
similarity index 100%
rename from sound/effects/ethereal_revive.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_revive.ogg
diff --git a/sound/effects/ethereal_revive_fail.ogg b/sound/mobs/humanoids/ethereal/ethereal_revive_fail.ogg
similarity index 100%
rename from sound/effects/ethereal_revive_fail.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_revive_fail.ogg
diff --git a/sound/voice/ethereal/ethereal_scream_1.ogg b/sound/mobs/humanoids/ethereal/ethereal_scream_1.ogg
similarity index 100%
rename from sound/voice/ethereal/ethereal_scream_1.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_scream_1.ogg
diff --git a/sound/voice/ethereal/ethereal_scream_2.ogg b/sound/mobs/humanoids/ethereal/ethereal_scream_2.ogg
similarity index 100%
rename from sound/voice/ethereal/ethereal_scream_2.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_scream_2.ogg
diff --git a/sound/voice/ethereal/ethereal_scream_3.ogg b/sound/mobs/humanoids/ethereal/ethereal_scream_3.ogg
similarity index 100%
rename from sound/voice/ethereal/ethereal_scream_3.ogg
rename to sound/mobs/humanoids/ethereal/ethereal_scream_3.ogg
diff --git a/sound/voice/ethereal/lustrous_scream_1.ogg b/sound/mobs/humanoids/ethereal/lustrous_scream_1.ogg
similarity index 100%
rename from sound/voice/ethereal/lustrous_scream_1.ogg
rename to sound/mobs/humanoids/ethereal/lustrous_scream_1.ogg
diff --git a/sound/voice/ethereal/lustrous_scream_2.ogg b/sound/mobs/humanoids/ethereal/lustrous_scream_2.ogg
similarity index 100%
rename from sound/voice/ethereal/lustrous_scream_2.ogg
rename to sound/mobs/humanoids/ethereal/lustrous_scream_2.ogg
diff --git a/sound/voice/ethereal/lustrous_scream_3.ogg b/sound/mobs/humanoids/ethereal/lustrous_scream_3.ogg
similarity index 100%
rename from sound/voice/ethereal/lustrous_scream_3.ogg
rename to sound/mobs/humanoids/ethereal/lustrous_scream_3.ogg
diff --git a/sound/mobs/humanoids/human/attribution.txt b/sound/mobs/humanoids/human/attribution.txt
new file mode 100644
index 0000000000000..254e7a7b3aede
--- /dev/null
+++ b/sound/mobs/humanoids/human/attribution.txt
@@ -0,0 +1,8 @@
+The male sharp gasps are from https://freesound.org/people/bacruz666/sounds/341908/ and https://freesound.org/people/nettoi/sounds/677540/, the female sharp gasps are from https://freesound.org/people/drotzruhn/sounds/405203/
+
+{
+male_sniff.ogg - https://freesound.org/people/Fluffayfish/sounds/327799/ , License: CC BY-NC 3.0
+male_sigh.ogg - https://freesound.org/people/giddster/sounds/336540/ , License: CC0
+female_sniff.ogg - https://freesound.org/people/SpliceSound/sounds/218307/ , License: CC0
+female_sigh.ogg - https://freesound.org/people/biawinter/sounds/408090/ , License: CC BY-NC 4.0
+} modified by grungussuss
diff --git a/sound/misc/clap1.ogg b/sound/mobs/humanoids/human/clap/clap1.ogg
similarity index 100%
rename from sound/misc/clap1.ogg
rename to sound/mobs/humanoids/human/clap/clap1.ogg
diff --git a/sound/misc/clap2.ogg b/sound/mobs/humanoids/human/clap/clap2.ogg
similarity index 100%
rename from sound/misc/clap2.ogg
rename to sound/mobs/humanoids/human/clap/clap2.ogg
diff --git a/sound/misc/clap3.ogg b/sound/mobs/humanoids/human/clap/clap3.ogg
similarity index 100%
rename from sound/misc/clap3.ogg
rename to sound/mobs/humanoids/human/clap/clap3.ogg
diff --git a/sound/misc/clap4.ogg b/sound/mobs/humanoids/human/clap/clap4.ogg
similarity index 100%
rename from sound/misc/clap4.ogg
rename to sound/mobs/humanoids/human/clap/clap4.ogg
diff --git a/sound/voice/human/female_cough1.ogg b/sound/mobs/humanoids/human/cough/female_cough1.ogg
similarity index 100%
rename from sound/voice/human/female_cough1.ogg
rename to sound/mobs/humanoids/human/cough/female_cough1.ogg
diff --git a/sound/voice/human/female_cough2.ogg b/sound/mobs/humanoids/human/cough/female_cough2.ogg
similarity index 100%
rename from sound/voice/human/female_cough2.ogg
rename to sound/mobs/humanoids/human/cough/female_cough2.ogg
diff --git a/sound/voice/human/female_cough3.ogg b/sound/mobs/humanoids/human/cough/female_cough3.ogg
similarity index 100%
rename from sound/voice/human/female_cough3.ogg
rename to sound/mobs/humanoids/human/cough/female_cough3.ogg
diff --git a/sound/voice/human/female_cough4.ogg b/sound/mobs/humanoids/human/cough/female_cough4.ogg
similarity index 100%
rename from sound/voice/human/female_cough4.ogg
rename to sound/mobs/humanoids/human/cough/female_cough4.ogg
diff --git a/sound/voice/human/female_cough5.ogg b/sound/mobs/humanoids/human/cough/female_cough5.ogg
similarity index 100%
rename from sound/voice/human/female_cough5.ogg
rename to sound/mobs/humanoids/human/cough/female_cough5.ogg
diff --git a/sound/voice/human/female_cough6.ogg b/sound/mobs/humanoids/human/cough/female_cough6.ogg
similarity index 100%
rename from sound/voice/human/female_cough6.ogg
rename to sound/mobs/humanoids/human/cough/female_cough6.ogg
diff --git a/sound/voice/human/male_cough1.ogg b/sound/mobs/humanoids/human/cough/male_cough1.ogg
similarity index 100%
rename from sound/voice/human/male_cough1.ogg
rename to sound/mobs/humanoids/human/cough/male_cough1.ogg
diff --git a/sound/voice/human/male_cough2.ogg b/sound/mobs/humanoids/human/cough/male_cough2.ogg
similarity index 100%
rename from sound/voice/human/male_cough2.ogg
rename to sound/mobs/humanoids/human/cough/male_cough2.ogg
diff --git a/sound/voice/human/male_cough3.ogg b/sound/mobs/humanoids/human/cough/male_cough3.ogg
similarity index 100%
rename from sound/voice/human/male_cough3.ogg
rename to sound/mobs/humanoids/human/cough/male_cough3.ogg
diff --git a/sound/voice/human/male_cough4.ogg b/sound/mobs/humanoids/human/cough/male_cough4.ogg
similarity index 100%
rename from sound/voice/human/male_cough4.ogg
rename to sound/mobs/humanoids/human/cough/male_cough4.ogg
diff --git a/sound/voice/human/male_cough5.ogg b/sound/mobs/humanoids/human/cough/male_cough5.ogg
similarity index 100%
rename from sound/voice/human/male_cough5.ogg
rename to sound/mobs/humanoids/human/cough/male_cough5.ogg
diff --git a/sound/voice/human/male_cough6.ogg b/sound/mobs/humanoids/human/cough/male_cough6.ogg
similarity index 100%
rename from sound/voice/human/male_cough6.ogg
rename to sound/mobs/humanoids/human/cough/male_cough6.ogg
diff --git a/sound/voice/human/female_cry1.ogg b/sound/mobs/humanoids/human/cry/female_cry1.ogg
similarity index 100%
rename from sound/voice/human/female_cry1.ogg
rename to sound/mobs/humanoids/human/cry/female_cry1.ogg
diff --git a/sound/voice/human/female_cry2.ogg b/sound/mobs/humanoids/human/cry/female_cry2.ogg
similarity index 100%
rename from sound/voice/human/female_cry2.ogg
rename to sound/mobs/humanoids/human/cry/female_cry2.ogg
diff --git a/sound/voice/human/male_cry1.ogg b/sound/mobs/humanoids/human/cry/male_cry1.ogg
similarity index 100%
rename from sound/voice/human/male_cry1.ogg
rename to sound/mobs/humanoids/human/cry/male_cry1.ogg
diff --git a/sound/voice/human/male_cry2.ogg b/sound/mobs/humanoids/human/cry/male_cry2.ogg
similarity index 100%
rename from sound/voice/human/male_cry2.ogg
rename to sound/mobs/humanoids/human/cry/male_cry2.ogg
diff --git a/sound/voice/human/male_cry3.ogg b/sound/mobs/humanoids/human/cry/male_cry3.ogg
similarity index 100%
rename from sound/voice/human/male_cry3.ogg
rename to sound/mobs/humanoids/human/cry/male_cry3.ogg
diff --git a/sound/creatures/crack_vomit.ogg b/sound/mobs/humanoids/human/gag_vomit/crack_vomit.ogg
similarity index 100%
rename from sound/creatures/crack_vomit.ogg
rename to sound/mobs/humanoids/human/gag_vomit/crack_vomit.ogg
diff --git a/sound/creatures/gag1.ogg b/sound/mobs/humanoids/human/gag_vomit/gag1.ogg
similarity index 100%
rename from sound/creatures/gag1.ogg
rename to sound/mobs/humanoids/human/gag_vomit/gag1.ogg
diff --git a/sound/creatures/gag2.ogg b/sound/mobs/humanoids/human/gag_vomit/gag2.ogg
similarity index 100%
rename from sound/creatures/gag2.ogg
rename to sound/mobs/humanoids/human/gag_vomit/gag2.ogg
diff --git a/sound/creatures/gag3.ogg b/sound/mobs/humanoids/human/gag_vomit/gag3.ogg
similarity index 100%
rename from sound/creatures/gag3.ogg
rename to sound/mobs/humanoids/human/gag_vomit/gag3.ogg
diff --git a/sound/creatures/gag4.ogg b/sound/mobs/humanoids/human/gag_vomit/gag4.ogg
similarity index 100%
rename from sound/creatures/gag4.ogg
rename to sound/mobs/humanoids/human/gag_vomit/gag4.ogg
diff --git a/sound/creatures/gag5.ogg b/sound/mobs/humanoids/human/gag_vomit/gag5.ogg
similarity index 100%
rename from sound/creatures/gag5.ogg
rename to sound/mobs/humanoids/human/gag_vomit/gag5.ogg
diff --git a/sound/voice/human/gasp_female1.ogg b/sound/mobs/humanoids/human/gasp/gasp_female1.ogg
similarity index 100%
rename from sound/voice/human/gasp_female1.ogg
rename to sound/mobs/humanoids/human/gasp/gasp_female1.ogg
diff --git a/sound/voice/human/gasp_female2.ogg b/sound/mobs/humanoids/human/gasp/gasp_female2.ogg
similarity index 100%
rename from sound/voice/human/gasp_female2.ogg
rename to sound/mobs/humanoids/human/gasp/gasp_female2.ogg
diff --git a/sound/voice/human/gasp_female3.ogg b/sound/mobs/humanoids/human/gasp/gasp_female3.ogg
similarity index 100%
rename from sound/voice/human/gasp_female3.ogg
rename to sound/mobs/humanoids/human/gasp/gasp_female3.ogg
diff --git a/sound/voice/human/gasp_male1.ogg b/sound/mobs/humanoids/human/gasp/gasp_male1.ogg
similarity index 100%
rename from sound/voice/human/gasp_male1.ogg
rename to sound/mobs/humanoids/human/gasp/gasp_male1.ogg
diff --git a/sound/voice/human/gasp_male2.ogg b/sound/mobs/humanoids/human/gasp/gasp_male2.ogg
similarity index 100%
rename from sound/voice/human/gasp_male2.ogg
rename to sound/mobs/humanoids/human/gasp/gasp_male2.ogg
diff --git a/sound/effects/sf_hiccup_male_01.ogg b/sound/mobs/humanoids/human/hiccup/sf_hiccup_male_01.ogg
similarity index 100%
rename from sound/effects/sf_hiccup_male_01.ogg
rename to sound/mobs/humanoids/human/hiccup/sf_hiccup_male_01.ogg
diff --git a/sound/mobs/humanoids/human/knuckle_crack/attribution.txt b/sound/mobs/humanoids/human/knuckle_crack/attribution.txt
new file mode 100644
index 0000000000000..da2f5afadb414
--- /dev/null
+++ b/sound/mobs/humanoids/human/knuckle_crack/attribution.txt
@@ -0,0 +1,2 @@
+knuckles.ogg by CGEffex. Shortened and cut.
+https://freesound.org/people/CGEffex/sounds/93981/
diff --git a/sound/misc/knuckles.ogg b/sound/mobs/humanoids/human/knuckle_crack/knuckles.ogg
similarity index 100%
rename from sound/misc/knuckles.ogg
rename to sound/mobs/humanoids/human/knuckle_crack/knuckles.ogg
diff --git a/sound/voice/human/manlaugh1.ogg b/sound/mobs/humanoids/human/laugh/manlaugh1.ogg
similarity index 100%
rename from sound/voice/human/manlaugh1.ogg
rename to sound/mobs/humanoids/human/laugh/manlaugh1.ogg
diff --git a/sound/voice/human/manlaugh2.ogg b/sound/mobs/humanoids/human/laugh/manlaugh2.ogg
similarity index 100%
rename from sound/voice/human/manlaugh2.ogg
rename to sound/mobs/humanoids/human/laugh/manlaugh2.ogg
diff --git a/sound/voice/human/womanlaugh.ogg b/sound/mobs/humanoids/human/laugh/womanlaugh.ogg
similarity index 100%
rename from sound/voice/human/womanlaugh.ogg
rename to sound/mobs/humanoids/human/laugh/womanlaugh.ogg
diff --git a/sound/misc/salute.ogg b/sound/mobs/humanoids/human/salute/salute.ogg
similarity index 100%
rename from sound/misc/salute.ogg
rename to sound/mobs/humanoids/human/salute/salute.ogg
diff --git a/sound/voice/human/femalescream_1.ogg b/sound/mobs/humanoids/human/scream/femalescream_1.ogg
similarity index 100%
rename from sound/voice/human/femalescream_1.ogg
rename to sound/mobs/humanoids/human/scream/femalescream_1.ogg
diff --git a/sound/voice/human/femalescream_2.ogg b/sound/mobs/humanoids/human/scream/femalescream_2.ogg
similarity index 100%
rename from sound/voice/human/femalescream_2.ogg
rename to sound/mobs/humanoids/human/scream/femalescream_2.ogg
diff --git a/sound/voice/human/femalescream_3.ogg b/sound/mobs/humanoids/human/scream/femalescream_3.ogg
similarity index 100%
rename from sound/voice/human/femalescream_3.ogg
rename to sound/mobs/humanoids/human/scream/femalescream_3.ogg
diff --git a/sound/voice/human/femalescream_4.ogg b/sound/mobs/humanoids/human/scream/femalescream_4.ogg
similarity index 100%
rename from sound/voice/human/femalescream_4.ogg
rename to sound/mobs/humanoids/human/scream/femalescream_4.ogg
diff --git a/sound/voice/human/femalescream_5.ogg b/sound/mobs/humanoids/human/scream/femalescream_5.ogg
similarity index 100%
rename from sound/voice/human/femalescream_5.ogg
rename to sound/mobs/humanoids/human/scream/femalescream_5.ogg
diff --git a/sound/voice/human/malescream_1.ogg b/sound/mobs/humanoids/human/scream/malescream_1.ogg
similarity index 100%
rename from sound/voice/human/malescream_1.ogg
rename to sound/mobs/humanoids/human/scream/malescream_1.ogg
diff --git a/sound/voice/human/malescream_2.ogg b/sound/mobs/humanoids/human/scream/malescream_2.ogg
similarity index 100%
rename from sound/voice/human/malescream_2.ogg
rename to sound/mobs/humanoids/human/scream/malescream_2.ogg
diff --git a/sound/voice/human/malescream_3.ogg b/sound/mobs/humanoids/human/scream/malescream_3.ogg
similarity index 100%
rename from sound/voice/human/malescream_3.ogg
rename to sound/mobs/humanoids/human/scream/malescream_3.ogg
diff --git a/sound/voice/human/malescream_4.ogg b/sound/mobs/humanoids/human/scream/malescream_4.ogg
similarity index 100%
rename from sound/voice/human/malescream_4.ogg
rename to sound/mobs/humanoids/human/scream/malescream_4.ogg
diff --git a/sound/voice/human/malescream_5.ogg b/sound/mobs/humanoids/human/scream/malescream_5.ogg
similarity index 100%
rename from sound/voice/human/malescream_5.ogg
rename to sound/mobs/humanoids/human/scream/malescream_5.ogg
diff --git a/sound/voice/human/malescream_6.ogg b/sound/mobs/humanoids/human/scream/malescream_6.ogg
similarity index 100%
rename from sound/voice/human/malescream_6.ogg
rename to sound/mobs/humanoids/human/scream/malescream_6.ogg
diff --git a/sound/voice/human/wilhelm_scream.ogg b/sound/mobs/humanoids/human/scream/wilhelm_scream.ogg
similarity index 100%
rename from sound/voice/human/wilhelm_scream.ogg
rename to sound/mobs/humanoids/human/scream/wilhelm_scream.ogg
diff --git a/sound/voice/human/female_sigh.ogg b/sound/mobs/humanoids/human/sigh/female_sigh.ogg
similarity index 100%
rename from sound/voice/human/female_sigh.ogg
rename to sound/mobs/humanoids/human/sigh/female_sigh.ogg
diff --git a/sound/voice/human/male_sigh.ogg b/sound/mobs/humanoids/human/sigh/male_sigh.ogg
similarity index 100%
rename from sound/voice/human/male_sigh.ogg
rename to sound/mobs/humanoids/human/sigh/male_sigh.ogg
diff --git a/sound/misc/fingersnap1.ogg b/sound/mobs/humanoids/human/snap/fingersnap1.ogg
similarity index 100%
rename from sound/misc/fingersnap1.ogg
rename to sound/mobs/humanoids/human/snap/fingersnap1.ogg
diff --git a/sound/misc/fingersnap2.ogg b/sound/mobs/humanoids/human/snap/fingersnap2.ogg
similarity index 100%
rename from sound/misc/fingersnap2.ogg
rename to sound/mobs/humanoids/human/snap/fingersnap2.ogg
diff --git a/sound/voice/human/female_sneeze1.ogg b/sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg
similarity index 100%
rename from sound/voice/human/female_sneeze1.ogg
rename to sound/mobs/humanoids/human/sneeze/female_sneeze1.ogg
diff --git a/sound/voice/human/male_sneeze1.ogg b/sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg
similarity index 100%
rename from sound/voice/human/male_sneeze1.ogg
rename to sound/mobs/humanoids/human/sneeze/male_sneeze1.ogg
diff --git a/sound/voice/human/female_sniff.ogg b/sound/mobs/humanoids/human/sniff/female_sniff.ogg
similarity index 100%
rename from sound/voice/human/female_sniff.ogg
rename to sound/mobs/humanoids/human/sniff/female_sniff.ogg
diff --git a/sound/voice/human/male_sniff.ogg b/sound/mobs/humanoids/human/sniff/male_sniff.ogg
similarity index 100%
rename from sound/voice/human/male_sniff.ogg
rename to sound/mobs/humanoids/human/sniff/male_sniff.ogg
diff --git a/sound/voice/human/whistle1.ogg b/sound/mobs/humanoids/human/whistle/whistle1.ogg
similarity index 100%
rename from sound/voice/human/whistle1.ogg
rename to sound/mobs/humanoids/human/whistle/whistle1.ogg
diff --git a/sound/voice/lizard/credits.txt b/sound/mobs/humanoids/lizard/credits.txt
similarity index 100%
rename from sound/voice/lizard/credits.txt
rename to sound/mobs/humanoids/lizard/credits.txt
diff --git a/sound/voice/lizard/deathsound.ogg b/sound/mobs/humanoids/lizard/deathsound.ogg
similarity index 100%
rename from sound/voice/lizard/deathsound.ogg
rename to sound/mobs/humanoids/lizard/deathsound.ogg
diff --git a/sound/voice/lizard/lizard_laugh1.ogg b/sound/mobs/humanoids/lizard/lizard_laugh1.ogg
similarity index 100%
rename from sound/voice/lizard/lizard_laugh1.ogg
rename to sound/mobs/humanoids/lizard/lizard_laugh1.ogg
diff --git a/sound/voice/lizard/lizard_scream_1.ogg b/sound/mobs/humanoids/lizard/lizard_scream_1.ogg
similarity index 100%
rename from sound/voice/lizard/lizard_scream_1.ogg
rename to sound/mobs/humanoids/lizard/lizard_scream_1.ogg
diff --git a/sound/voice/lizard/lizard_scream_2.ogg b/sound/mobs/humanoids/lizard/lizard_scream_2.ogg
similarity index 100%
rename from sound/voice/lizard/lizard_scream_2.ogg
rename to sound/mobs/humanoids/lizard/lizard_scream_2.ogg
diff --git a/sound/voice/lizard/lizard_scream_3.ogg b/sound/mobs/humanoids/lizard/lizard_scream_3.ogg
similarity index 100%
rename from sound/voice/lizard/lizard_scream_3.ogg
rename to sound/mobs/humanoids/lizard/lizard_scream_3.ogg
diff --git a/sound/voice/moth/credit.txt b/sound/mobs/humanoids/moth/credit.txt
similarity index 100%
rename from sound/voice/moth/credit.txt
rename to sound/mobs/humanoids/moth/credit.txt
diff --git a/sound/voice/moth/moth_death.ogg b/sound/mobs/humanoids/moth/moth_death.ogg
similarity index 100%
rename from sound/voice/moth/moth_death.ogg
rename to sound/mobs/humanoids/moth/moth_death.ogg
diff --git a/sound/voice/moth/moth_flutter.ogg b/sound/mobs/humanoids/moth/moth_flutter.ogg
similarity index 100%
rename from sound/voice/moth/moth_flutter.ogg
rename to sound/mobs/humanoids/moth/moth_flutter.ogg
diff --git a/sound/voice/moth/moth_laugh1.ogg b/sound/mobs/humanoids/moth/moth_laugh1.ogg
similarity index 100%
rename from sound/voice/moth/moth_laugh1.ogg
rename to sound/mobs/humanoids/moth/moth_laugh1.ogg
diff --git a/sound/voice/moth/scream_moth.ogg b/sound/mobs/humanoids/moth/scream_moth.ogg
similarity index 100%
rename from sound/voice/moth/scream_moth.ogg
rename to sound/mobs/humanoids/moth/scream_moth.ogg
diff --git a/sound/voice/plasmaman/plasmeme_scream_1.ogg b/sound/mobs/humanoids/plasmaman/plasmeme_scream_1.ogg
similarity index 100%
rename from sound/voice/plasmaman/plasmeme_scream_1.ogg
rename to sound/mobs/humanoids/plasmaman/plasmeme_scream_1.ogg
diff --git a/sound/voice/plasmaman/plasmeme_scream_2.ogg b/sound/mobs/humanoids/plasmaman/plasmeme_scream_2.ogg
similarity index 100%
rename from sound/voice/plasmaman/plasmeme_scream_2.ogg
rename to sound/mobs/humanoids/plasmaman/plasmeme_scream_2.ogg
diff --git a/sound/voice/plasmaman/plasmeme_scream_3.ogg b/sound/mobs/humanoids/plasmaman/plasmeme_scream_3.ogg
similarity index 100%
rename from sound/voice/plasmaman/plasmeme_scream_3.ogg
rename to sound/mobs/humanoids/plasmaman/plasmeme_scream_3.ogg
diff --git a/sound/creatures/alien_eat.ogg b/sound/mobs/non-humanoids/alien/alien_eat.ogg
similarity index 100%
rename from sound/creatures/alien_eat.ogg
rename to sound/mobs/non-humanoids/alien/alien_eat.ogg
diff --git a/sound/creatures/alien_explode.ogg b/sound/mobs/non-humanoids/alien/alien_explode.ogg
similarity index 100%
rename from sound/creatures/alien_explode.ogg
rename to sound/mobs/non-humanoids/alien/alien_explode.ogg
diff --git a/sound/creatures/alien_organ_cut.ogg b/sound/mobs/non-humanoids/alien/alien_organ_cut.ogg
similarity index 100%
rename from sound/creatures/alien_organ_cut.ogg
rename to sound/mobs/non-humanoids/alien/alien_organ_cut.ogg
diff --git a/sound/creatures/alien_york.ogg b/sound/mobs/non-humanoids/alien/alien_york.ogg
similarity index 100%
rename from sound/creatures/alien_york.ogg
rename to sound/mobs/non-humanoids/alien/alien_york.ogg
diff --git a/sound/creatures/attribution.txt b/sound/mobs/non-humanoids/attribution.txt
similarity index 100%
rename from sound/creatures/attribution.txt
rename to sound/mobs/non-humanoids/attribution.txt
diff --git a/sound/creatures/bee.ogg b/sound/mobs/non-humanoids/bee/bee.ogg
similarity index 100%
rename from sound/creatures/bee.ogg
rename to sound/mobs/non-humanoids/bee/bee.ogg
diff --git a/sound/creatures/bee_swarm.ogg b/sound/mobs/non-humanoids/bee/bee_swarm.ogg
similarity index 100%
rename from sound/creatures/bee_swarm.ogg
rename to sound/mobs/non-humanoids/bee/bee_swarm.ogg
diff --git a/sound/effects/beepskyspinsabre.ogg b/sound/mobs/non-humanoids/beepsky/beepskyspinsabre.ogg
similarity index 100%
rename from sound/effects/beepskyspinsabre.ogg
rename to sound/mobs/non-humanoids/beepsky/beepskyspinsabre.ogg
diff --git a/sound/voice/beepsky/creep.ogg b/sound/mobs/non-humanoids/beepsky/creep.ogg
similarity index 100%
rename from sound/voice/beepsky/creep.ogg
rename to sound/mobs/non-humanoids/beepsky/creep.ogg
diff --git a/sound/voice/beepsky/criminal.ogg b/sound/mobs/non-humanoids/beepsky/criminal.ogg
similarity index 100%
rename from sound/voice/beepsky/criminal.ogg
rename to sound/mobs/non-humanoids/beepsky/criminal.ogg
diff --git a/sound/voice/beepsky/freeze.ogg b/sound/mobs/non-humanoids/beepsky/freeze.ogg
similarity index 100%
rename from sound/voice/beepsky/freeze.ogg
rename to sound/mobs/non-humanoids/beepsky/freeze.ogg
diff --git a/sound/voice/beepsky/god.ogg b/sound/mobs/non-humanoids/beepsky/god.ogg
similarity index 100%
rename from sound/voice/beepsky/god.ogg
rename to sound/mobs/non-humanoids/beepsky/god.ogg
diff --git a/sound/voice/beepsky/iamthelaw.ogg b/sound/mobs/non-humanoids/beepsky/iamthelaw.ogg
similarity index 100%
rename from sound/voice/beepsky/iamthelaw.ogg
rename to sound/mobs/non-humanoids/beepsky/iamthelaw.ogg
diff --git a/sound/voice/beepsky/insult.ogg b/sound/mobs/non-humanoids/beepsky/insult.ogg
similarity index 100%
rename from sound/voice/beepsky/insult.ogg
rename to sound/mobs/non-humanoids/beepsky/insult.ogg
diff --git a/sound/voice/beepsky/justice.ogg b/sound/mobs/non-humanoids/beepsky/justice.ogg
similarity index 100%
rename from sound/voice/beepsky/justice.ogg
rename to sound/mobs/non-humanoids/beepsky/justice.ogg
diff --git a/sound/voice/beepsky/radio.ogg b/sound/mobs/non-humanoids/beepsky/radio.ogg
similarity index 100%
rename from sound/voice/beepsky/radio.ogg
rename to sound/mobs/non-humanoids/beepsky/radio.ogg
diff --git a/sound/voice/beepsky/secureday.ogg b/sound/mobs/non-humanoids/beepsky/secureday.ogg
similarity index 100%
rename from sound/voice/beepsky/secureday.ogg
rename to sound/mobs/non-humanoids/beepsky/secureday.ogg
diff --git a/sound/creatures/bileworm/bileworm_spit.ogg b/sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg
similarity index 100%
rename from sound/creatures/bileworm/bileworm_spit.ogg
rename to sound/mobs/non-humanoids/bileworm/bileworm_spit.ogg
diff --git a/sound/creatures/brimdemon.ogg b/sound/mobs/non-humanoids/brimdemon/brimdemon.ogg
similarity index 100%
rename from sound/creatures/brimdemon.ogg
rename to sound/mobs/non-humanoids/brimdemon/brimdemon.ogg
diff --git a/sound/lavaland/brimdemon_crush.ogg b/sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg
similarity index 100%
rename from sound/lavaland/brimdemon_crush.ogg
rename to sound/mobs/non-humanoids/brimdemon/brimdemon_crush.ogg
diff --git a/sound/creatures/bagawk.ogg b/sound/mobs/non-humanoids/chicken/bagawk.ogg
similarity index 100%
rename from sound/creatures/bagawk.ogg
rename to sound/mobs/non-humanoids/chicken/bagawk.ogg
diff --git a/sound/creatures/chick_peep.ogg b/sound/mobs/non-humanoids/chicken/chick_peep.ogg
similarity index 100%
rename from sound/creatures/chick_peep.ogg
rename to sound/mobs/non-humanoids/chicken/chick_peep.ogg
diff --git a/sound/creatures/clucks.ogg b/sound/mobs/non-humanoids/chicken/clucks.ogg
similarity index 100%
rename from sound/creatures/clucks.ogg
rename to sound/mobs/non-humanoids/chicken/clucks.ogg
diff --git a/sound/creatures/clown/clownana_rustle.ogg b/sound/mobs/non-humanoids/clown/clownana_rustle.ogg
similarity index 100%
rename from sound/creatures/clown/clownana_rustle.ogg
rename to sound/mobs/non-humanoids/clown/clownana_rustle.ogg
diff --git a/sound/creatures/clown/hehe.ogg b/sound/mobs/non-humanoids/clown/hehe.ogg
similarity index 100%
rename from sound/creatures/clown/hehe.ogg
rename to sound/mobs/non-humanoids/clown/hehe.ogg
diff --git a/sound/creatures/clown/hohoho.ogg b/sound/mobs/non-humanoids/clown/hohoho.ogg
similarity index 100%
rename from sound/creatures/clown/hohoho.ogg
rename to sound/mobs/non-humanoids/clown/hohoho.ogg
diff --git a/sound/creatures/cow.ogg b/sound/mobs/non-humanoids/cow/cow.ogg
similarity index 100%
rename from sound/creatures/cow.ogg
rename to sound/mobs/non-humanoids/cow/cow.ogg
diff --git a/sound/creatures/claw_click.ogg b/sound/mobs/non-humanoids/crab/claw_click.ogg
similarity index 100%
rename from sound/creatures/claw_click.ogg
rename to sound/mobs/non-humanoids/crab/claw_click.ogg
diff --git a/sound/mobs/non-humanoids/cyborg/attribution.txt b/sound/mobs/non-humanoids/cyborg/attribution.txt
new file mode 100644
index 0000000000000..f0fc73043589b
--- /dev/null
+++ b/sound/mobs/non-humanoids/cyborg/attribution.txt
@@ -0,0 +1 @@
+borg_deathsound.ogg is spliced from two clips, both of which are under the CC Attribution license. The sound at https://freesound.org/people/simmfoc/sounds/28477/ was pitched down, sped up, and repeated a few times. https://freesound.org/people/nicStage/sounds/1522/ is then attached with a fadeout effect and lowered volume.
diff --git a/sound/voice/borg_deathsound.ogg b/sound/mobs/non-humanoids/cyborg/borg_deathsound.ogg
similarity index 100%
rename from sound/voice/borg_deathsound.ogg
rename to sound/mobs/non-humanoids/cyborg/borg_deathsound.ogg
diff --git a/sound/ai/harmalarm.ogg b/sound/mobs/non-humanoids/cyborg/harmalarm.ogg
similarity index 100%
rename from sound/ai/harmalarm.ogg
rename to sound/mobs/non-humanoids/cyborg/harmalarm.ogg
diff --git a/sound/voice/liveagain.ogg b/sound/mobs/non-humanoids/cyborg/liveagain.ogg
similarity index 100%
rename from sound/voice/liveagain.ogg
rename to sound/mobs/non-humanoids/cyborg/liveagain.ogg
diff --git a/sound/creatures/cyborg/wash1.ogg b/sound/mobs/non-humanoids/cyborg/wash1.ogg
similarity index 100%
rename from sound/creatures/cyborg/wash1.ogg
rename to sound/mobs/non-humanoids/cyborg/wash1.ogg
diff --git a/sound/creatures/cyborg/wash2.ogg b/sound/mobs/non-humanoids/cyborg/wash2.ogg
similarity index 100%
rename from sound/creatures/cyborg/wash2.ogg
rename to sound/mobs/non-humanoids/cyborg/wash2.ogg
diff --git a/sound/creatures/cyborg/wash_end.ogg b/sound/mobs/non-humanoids/cyborg/wash_end.ogg
similarity index 100%
rename from sound/creatures/cyborg/wash_end.ogg
rename to sound/mobs/non-humanoids/cyborg/wash_end.ogg
diff --git a/sound/creatures/cyborg/wash_start.ogg b/sound/mobs/non-humanoids/cyborg/wash_start.ogg
similarity index 100%
rename from sound/creatures/cyborg/wash_start.ogg
rename to sound/mobs/non-humanoids/cyborg/wash_start.ogg
diff --git a/sound/creatures/dog/growl1.ogg b/sound/mobs/non-humanoids/dog/growl1.ogg
similarity index 100%
rename from sound/creatures/dog/growl1.ogg
rename to sound/mobs/non-humanoids/dog/growl1.ogg
diff --git a/sound/creatures/dog/growl2.ogg b/sound/mobs/non-humanoids/dog/growl2.ogg
similarity index 100%
rename from sound/creatures/dog/growl2.ogg
rename to sound/mobs/non-humanoids/dog/growl2.ogg
diff --git a/sound/voice/ed209_20sec.ogg b/sound/mobs/non-humanoids/ed209/ed209_20sec.ogg
similarity index 100%
rename from sound/voice/ed209_20sec.ogg
rename to sound/mobs/non-humanoids/ed209/ed209_20sec.ogg
diff --git a/sound/voice/edplaceholder.ogg b/sound/mobs/non-humanoids/ed209/edplaceholder.ogg
similarity index 100%
rename from sound/voice/edplaceholder.ogg
rename to sound/mobs/non-humanoids/ed209/edplaceholder.ogg
diff --git a/sound/voice/firebot/candle_tip.ogg b/sound/mobs/non-humanoids/firebot/candle_tip.ogg
similarity index 100%
rename from sound/voice/firebot/candle_tip.ogg
rename to sound/mobs/non-humanoids/firebot/candle_tip.ogg
diff --git a/sound/voice/firebot/detected.ogg b/sound/mobs/non-humanoids/firebot/detected.ogg
similarity index 100%
rename from sound/voice/firebot/detected.ogg
rename to sound/mobs/non-humanoids/firebot/detected.ogg
diff --git a/sound/voice/firebot/electric_fire_tip.ogg b/sound/mobs/non-humanoids/firebot/electric_fire_tip.ogg
similarity index 100%
rename from sound/voice/firebot/electric_fire_tip.ogg
rename to sound/mobs/non-humanoids/firebot/electric_fire_tip.ogg
diff --git a/sound/voice/firebot/extinguishing.ogg b/sound/mobs/non-humanoids/firebot/extinguishing.ogg
similarity index 100%
rename from sound/voice/firebot/extinguishing.ogg
rename to sound/mobs/non-humanoids/firebot/extinguishing.ogg
diff --git a/sound/voice/firebot/gasoline_tip.ogg b/sound/mobs/non-humanoids/firebot/gasoline_tip.ogg
similarity index 100%
rename from sound/voice/firebot/gasoline_tip.ogg
rename to sound/mobs/non-humanoids/firebot/gasoline_tip.ogg
diff --git a/sound/voice/firebot/keepitcool.ogg b/sound/mobs/non-humanoids/firebot/keepitcool.ogg
similarity index 100%
rename from sound/voice/firebot/keepitcool.ogg
rename to sound/mobs/non-humanoids/firebot/keepitcool.ogg
diff --git a/sound/voice/firebot/nofires.ogg b/sound/mobs/non-humanoids/firebot/nofires.ogg
similarity index 100%
rename from sound/voice/firebot/nofires.ogg
rename to sound/mobs/non-humanoids/firebot/nofires.ogg
diff --git a/sound/voice/firebot/onlyyou.ogg b/sound/mobs/non-humanoids/firebot/onlyyou.ogg
similarity index 100%
rename from sound/voice/firebot/onlyyou.ogg
rename to sound/mobs/non-humanoids/firebot/onlyyou.ogg
diff --git a/sound/voice/firebot/stopdropnroll.ogg b/sound/mobs/non-humanoids/firebot/stopdropnroll.ogg
similarity index 100%
rename from sound/voice/firebot/stopdropnroll.ogg
rename to sound/mobs/non-humanoids/firebot/stopdropnroll.ogg
diff --git a/sound/voice/firebot/tempnominal.ogg b/sound/mobs/non-humanoids/firebot/tempnominal.ogg
similarity index 100%
rename from sound/voice/firebot/tempnominal.ogg
rename to sound/mobs/non-humanoids/firebot/tempnominal.ogg
diff --git a/sound/creatures/fish/attritbution.txt b/sound/mobs/non-humanoids/fish/attritbution.txt
similarity index 100%
rename from sound/creatures/fish/attritbution.txt
rename to sound/mobs/non-humanoids/fish/attritbution.txt
diff --git a/sound/creatures/fish/fish_drop1.ogg b/sound/mobs/non-humanoids/fish/fish_drop1.ogg
similarity index 100%
rename from sound/creatures/fish/fish_drop1.ogg
rename to sound/mobs/non-humanoids/fish/fish_drop1.ogg
diff --git a/sound/creatures/fish/fish_pickup1.ogg b/sound/mobs/non-humanoids/fish/fish_pickup1.ogg
similarity index 100%
rename from sound/creatures/fish/fish_pickup1.ogg
rename to sound/mobs/non-humanoids/fish/fish_pickup1.ogg
diff --git a/sound/creatures/fish/fish_pickup2.ogg b/sound/mobs/non-humanoids/fish/fish_pickup2.ogg
similarity index 100%
rename from sound/creatures/fish/fish_pickup2.ogg
rename to sound/mobs/non-humanoids/fish/fish_pickup2.ogg
diff --git a/sound/creatures/fish/fish_slap1.ogg b/sound/mobs/non-humanoids/fish/fish_slap1.ogg
similarity index 100%
rename from sound/creatures/fish/fish_slap1.ogg
rename to sound/mobs/non-humanoids/fish/fish_slap1.ogg
diff --git a/sound/creatures/fish/fish_slap2.ogg b/sound/mobs/non-humanoids/fish/fish_slap2.ogg
similarity index 100%
rename from sound/creatures/fish/fish_slap2.ogg
rename to sound/mobs/non-humanoids/fish/fish_slap2.ogg
diff --git a/sound/effects/whistlereset.ogg b/sound/mobs/non-humanoids/floorbot/whistlereset.ogg
similarity index 100%
rename from sound/effects/whistlereset.ogg
rename to sound/mobs/non-humanoids/floorbot/whistlereset.ogg
diff --git a/sound/effects/huuu.ogg b/sound/mobs/non-humanoids/frog/huuu.ogg
similarity index 100%
rename from sound/effects/huuu.ogg
rename to sound/mobs/non-humanoids/frog/huuu.ogg
diff --git a/sound/effects/reee.ogg b/sound/mobs/non-humanoids/frog/reee.ogg
similarity index 100%
rename from sound/effects/reee.ogg
rename to sound/mobs/non-humanoids/frog/reee.ogg
diff --git a/sound/creatures/goose1.ogg b/sound/mobs/non-humanoids/goose/goose1.ogg
similarity index 100%
rename from sound/creatures/goose1.ogg
rename to sound/mobs/non-humanoids/goose/goose1.ogg
diff --git a/sound/creatures/goose2.ogg b/sound/mobs/non-humanoids/goose/goose2.ogg
similarity index 100%
rename from sound/creatures/goose2.ogg
rename to sound/mobs/non-humanoids/goose/goose2.ogg
diff --git a/sound/creatures/goose3.ogg b/sound/mobs/non-humanoids/goose/goose3.ogg
similarity index 100%
rename from sound/creatures/goose3.ogg
rename to sound/mobs/non-humanoids/goose/goose3.ogg
diff --git a/sound/creatures/goose4.ogg b/sound/mobs/non-humanoids/goose/goose4.ogg
similarity index 100%
rename from sound/creatures/goose4.ogg
rename to sound/mobs/non-humanoids/goose/goose4.ogg
diff --git a/sound/creatures/gorilla.ogg b/sound/mobs/non-humanoids/gorilla/gorilla.ogg
similarity index 100%
rename from sound/creatures/gorilla.ogg
rename to sound/mobs/non-humanoids/gorilla/gorilla.ogg
diff --git a/sound/voice/hiss1.ogg b/sound/mobs/non-humanoids/hiss/hiss1.ogg
similarity index 100%
rename from sound/voice/hiss1.ogg
rename to sound/mobs/non-humanoids/hiss/hiss1.ogg
diff --git a/sound/voice/hiss2.ogg b/sound/mobs/non-humanoids/hiss/hiss2.ogg
similarity index 100%
rename from sound/voice/hiss2.ogg
rename to sound/mobs/non-humanoids/hiss/hiss2.ogg
diff --git a/sound/voice/hiss3.ogg b/sound/mobs/non-humanoids/hiss/hiss3.ogg
similarity index 100%
rename from sound/voice/hiss3.ogg
rename to sound/mobs/non-humanoids/hiss/hiss3.ogg
diff --git a/sound/voice/hiss4.ogg b/sound/mobs/non-humanoids/hiss/hiss4.ogg
similarity index 100%
rename from sound/voice/hiss4.ogg
rename to sound/mobs/non-humanoids/hiss/hiss4.ogg
diff --git a/sound/voice/hiss5.ogg b/sound/mobs/non-humanoids/hiss/hiss5.ogg
similarity index 100%
rename from sound/voice/hiss5.ogg
rename to sound/mobs/non-humanoids/hiss/hiss5.ogg
diff --git a/sound/voice/hiss6.ogg b/sound/mobs/non-humanoids/hiss/hiss6.ogg
similarity index 100%
rename from sound/voice/hiss6.ogg
rename to sound/mobs/non-humanoids/hiss/hiss6.ogg
diff --git a/sound/voice/lowHiss1.ogg b/sound/mobs/non-humanoids/hiss/lowHiss1.ogg
similarity index 100%
rename from sound/voice/lowHiss1.ogg
rename to sound/mobs/non-humanoids/hiss/lowHiss1.ogg
diff --git a/sound/voice/lowHiss2.ogg b/sound/mobs/non-humanoids/hiss/lowHiss2.ogg
similarity index 100%
rename from sound/voice/lowHiss2.ogg
rename to sound/mobs/non-humanoids/hiss/lowHiss2.ogg
diff --git a/sound/voice/lowHiss3.ogg b/sound/mobs/non-humanoids/hiss/lowHiss3.ogg
similarity index 100%
rename from sound/voice/lowHiss3.ogg
rename to sound/mobs/non-humanoids/hiss/lowHiss3.ogg
diff --git a/sound/voice/lowHiss4.ogg b/sound/mobs/non-humanoids/hiss/lowHiss4.ogg
similarity index 100%
rename from sound/voice/lowHiss4.ogg
rename to sound/mobs/non-humanoids/hiss/lowHiss4.ogg
diff --git a/sound/machines/honkbot_evil_laugh.ogg b/sound/mobs/non-humanoids/honkbot/honkbot_evil_laugh.ogg
similarity index 100%
rename from sound/machines/honkbot_evil_laugh.ogg
rename to sound/mobs/non-humanoids/honkbot/honkbot_evil_laugh.ogg
diff --git a/sound/voice/hygienebot/cleanandtidy.ogg b/sound/mobs/non-humanoids/hygienebot/cleanandtidy.ogg
similarity index 100%
rename from sound/voice/hygienebot/cleanandtidy.ogg
rename to sound/mobs/non-humanoids/hygienebot/cleanandtidy.ogg
diff --git a/sound/voice/hygienebot/cutarteries.ogg b/sound/mobs/non-humanoids/hygienebot/cutarteries.ogg
similarity index 100%
rename from sound/voice/hygienebot/cutarteries.ogg
rename to sound/mobs/non-humanoids/hygienebot/cutarteries.ogg
diff --git a/sound/voice/hygienebot/degenerate.ogg b/sound/mobs/non-humanoids/hygienebot/degenerate.ogg
similarity index 100%
rename from sound/voice/hygienebot/degenerate.ogg
rename to sound/mobs/non-humanoids/hygienebot/degenerate.ogg
diff --git a/sound/voice/hygienebot/dragyouout.ogg b/sound/mobs/non-humanoids/hygienebot/dragyouout.ogg
similarity index 100%
rename from sound/voice/hygienebot/dragyouout.ogg
rename to sound/mobs/non-humanoids/hygienebot/dragyouout.ogg
diff --git a/sound/voice/hygienebot/finally.ogg b/sound/mobs/non-humanoids/hygienebot/finally.ogg
similarity index 100%
rename from sound/voice/hygienebot/finally.ogg
rename to sound/mobs/non-humanoids/hygienebot/finally.ogg
diff --git a/sound/voice/hygienebot/foulsmelling.ogg b/sound/mobs/non-humanoids/hygienebot/foulsmelling.ogg
similarity index 100%
rename from sound/voice/hygienebot/foulsmelling.ogg
rename to sound/mobs/non-humanoids/hygienebot/foulsmelling.ogg
diff --git a/sound/voice/hygienebot/greencloud.ogg b/sound/mobs/non-humanoids/hygienebot/greencloud.ogg
similarity index 100%
rename from sound/voice/hygienebot/greencloud.ogg
rename to sound/mobs/non-humanoids/hygienebot/greencloud.ogg
diff --git a/sound/voice/hygienebot/letmeclean.ogg b/sound/mobs/non-humanoids/hygienebot/letmeclean.ogg
similarity index 100%
rename from sound/voice/hygienebot/letmeclean.ogg
rename to sound/mobs/non-humanoids/hygienebot/letmeclean.ogg
diff --git a/sound/voice/hygienebot/stoprunning.ogg b/sound/mobs/non-humanoids/hygienebot/stoprunning.ogg
similarity index 100%
rename from sound/voice/hygienebot/stoprunning.ogg
rename to sound/mobs/non-humanoids/hygienebot/stoprunning.ogg
diff --git a/sound/voice/hygienebot/thankgod.ogg b/sound/mobs/non-humanoids/hygienebot/thankgod.ogg
similarity index 100%
rename from sound/voice/hygienebot/thankgod.ogg
rename to sound/mobs/non-humanoids/hygienebot/thankgod.ogg
diff --git a/sound/voice/hygienebot/troglodyte.ogg b/sound/mobs/non-humanoids/hygienebot/troglodyte.ogg
similarity index 100%
rename from sound/voice/hygienebot/troglodyte.ogg
rename to sound/mobs/non-humanoids/hygienebot/troglodyte.ogg
diff --git a/sound/voice/hygienebot/unhygienicclient.ogg b/sound/mobs/non-humanoids/hygienebot/unhygienicclient.ogg
similarity index 100%
rename from sound/voice/hygienebot/unhygienicclient.ogg
rename to sound/mobs/non-humanoids/hygienebot/unhygienicclient.ogg
diff --git a/sound/creatures/chitter.ogg b/sound/mobs/non-humanoids/insect/chitter.ogg
similarity index 100%
rename from sound/creatures/chitter.ogg
rename to sound/mobs/non-humanoids/insect/chitter.ogg
diff --git a/sound/creatures/legion_spawn.ogg b/sound/mobs/non-humanoids/legion/legion_spawn.ogg
similarity index 100%
rename from sound/creatures/legion_spawn.ogg
rename to sound/mobs/non-humanoids/legion/legion_spawn.ogg
diff --git a/sound/voice/medbot/apple.ogg b/sound/mobs/non-humanoids/medbot/apple.ogg
similarity index 100%
rename from sound/voice/medbot/apple.ogg
rename to sound/mobs/non-humanoids/medbot/apple.ogg
diff --git a/sound/voice/medbot/catch.ogg b/sound/mobs/non-humanoids/medbot/catch.ogg
similarity index 100%
rename from sound/voice/medbot/catch.ogg
rename to sound/mobs/non-humanoids/medbot/catch.ogg
diff --git a/sound/voice/medbot/close.ogg b/sound/mobs/non-humanoids/medbot/close.ogg
similarity index 100%
rename from sound/voice/medbot/close.ogg
rename to sound/mobs/non-humanoids/medbot/close.ogg
diff --git a/sound/voice/medbot/coming.ogg b/sound/mobs/non-humanoids/medbot/coming.ogg
similarity index 100%
rename from sound/voice/medbot/coming.ogg
rename to sound/mobs/non-humanoids/medbot/coming.ogg
diff --git a/sound/voice/medbot/delicious.ogg b/sound/mobs/non-humanoids/medbot/delicious.ogg
similarity index 100%
rename from sound/voice/medbot/delicious.ogg
rename to sound/mobs/non-humanoids/medbot/delicious.ogg
diff --git a/sound/voice/medbot/dont_like.ogg b/sound/mobs/non-humanoids/medbot/dont_like.ogg
similarity index 100%
rename from sound/voice/medbot/dont_like.ogg
rename to sound/mobs/non-humanoids/medbot/dont_like.ogg
diff --git a/sound/voice/medbot/feelbetter.ogg b/sound/mobs/non-humanoids/medbot/feelbetter.ogg
similarity index 100%
rename from sound/voice/medbot/feelbetter.ogg
rename to sound/mobs/non-humanoids/medbot/feelbetter.ogg
diff --git a/sound/voice/medbot/flies.ogg b/sound/mobs/non-humanoids/medbot/flies.ogg
similarity index 100%
rename from sound/voice/medbot/flies.ogg
rename to sound/mobs/non-humanoids/medbot/flies.ogg
diff --git a/sound/voice/medbot/forgive.ogg b/sound/mobs/non-humanoids/medbot/forgive.ogg
similarity index 100%
rename from sound/voice/medbot/forgive.ogg
rename to sound/mobs/non-humanoids/medbot/forgive.ogg
diff --git a/sound/voice/medbot/fuck_you.ogg b/sound/mobs/non-humanoids/medbot/fuck_you.ogg
similarity index 100%
rename from sound/voice/medbot/fuck_you.ogg
rename to sound/mobs/non-humanoids/medbot/fuck_you.ogg
diff --git a/sound/voice/medbot/help.ogg b/sound/mobs/non-humanoids/medbot/help.ogg
similarity index 100%
rename from sound/voice/medbot/help.ogg
rename to sound/mobs/non-humanoids/medbot/help.ogg
diff --git a/sound/voice/medbot/hey_wait.ogg b/sound/mobs/non-humanoids/medbot/hey_wait.ogg
similarity index 100%
rename from sound/voice/medbot/hey_wait.ogg
rename to sound/mobs/non-humanoids/medbot/hey_wait.ogg
diff --git a/sound/voice/medbot/i_am_chicken.ogg b/sound/mobs/non-humanoids/medbot/i_am_chicken.ogg
similarity index 100%
rename from sound/voice/medbot/i_am_chicken.ogg
rename to sound/mobs/non-humanoids/medbot/i_am_chicken.ogg
diff --git a/sound/voice/medbot/i_require_asst.ogg b/sound/mobs/non-humanoids/medbot/i_require_asst.ogg
similarity index 100%
rename from sound/voice/medbot/i_require_asst.ogg
rename to sound/mobs/non-humanoids/medbot/i_require_asst.ogg
diff --git a/sound/voice/medbot/i_trusted_you.ogg b/sound/mobs/non-humanoids/medbot/i_trusted_you.ogg
similarity index 100%
rename from sound/voice/medbot/i_trusted_you.ogg
rename to sound/mobs/non-humanoids/medbot/i_trusted_you.ogg
diff --git a/sound/voice/medbot/im_different.ogg b/sound/mobs/non-humanoids/medbot/im_different.ogg
similarity index 100%
rename from sound/voice/medbot/im_different.ogg
rename to sound/mobs/non-humanoids/medbot/im_different.ogg
diff --git a/sound/voice/medbot/injured.ogg b/sound/mobs/non-humanoids/medbot/injured.ogg
similarity index 100%
rename from sound/voice/medbot/injured.ogg
rename to sound/mobs/non-humanoids/medbot/injured.ogg
diff --git a/sound/voice/medbot/insult.ogg b/sound/mobs/non-humanoids/medbot/insult.ogg
similarity index 100%
rename from sound/voice/medbot/insult.ogg
rename to sound/mobs/non-humanoids/medbot/insult.ogg
diff --git a/sound/voice/medbot/is_this_the_end.ogg b/sound/mobs/non-humanoids/medbot/is_this_the_end.ogg
similarity index 100%
rename from sound/voice/medbot/is_this_the_end.ogg
rename to sound/mobs/non-humanoids/medbot/is_this_the_end.ogg
diff --git a/sound/voice/medbot/live.ogg b/sound/mobs/non-humanoids/medbot/live.ogg
similarity index 100%
rename from sound/voice/medbot/live.ogg
rename to sound/mobs/non-humanoids/medbot/live.ogg
diff --git a/sound/voice/medbot/lost.ogg b/sound/mobs/non-humanoids/medbot/lost.ogg
similarity index 100%
rename from sound/voice/medbot/lost.ogg
rename to sound/mobs/non-humanoids/medbot/lost.ogg
diff --git a/sound/voice/medbot/no.ogg b/sound/mobs/non-humanoids/medbot/no.ogg
similarity index 100%
rename from sound/voice/medbot/no.ogg
rename to sound/mobs/non-humanoids/medbot/no.ogg
diff --git a/sound/voice/medbot/nooo.ogg b/sound/mobs/non-humanoids/medbot/nooo.ogg
similarity index 100%
rename from sound/voice/medbot/nooo.ogg
rename to sound/mobs/non-humanoids/medbot/nooo.ogg
diff --git a/sound/voice/medbot/oh_fuck.ogg b/sound/mobs/non-humanoids/medbot/oh_fuck.ogg
similarity index 100%
rename from sound/voice/medbot/oh_fuck.ogg
rename to sound/mobs/non-humanoids/medbot/oh_fuck.ogg
diff --git a/sound/voice/medbot/pain_is_real.ogg b/sound/mobs/non-humanoids/medbot/pain_is_real.ogg
similarity index 100%
rename from sound/voice/medbot/pain_is_real.ogg
rename to sound/mobs/non-humanoids/medbot/pain_is_real.ogg
diff --git a/sound/voice/medbot/patchedup.ogg b/sound/mobs/non-humanoids/medbot/patchedup.ogg
similarity index 100%
rename from sound/voice/medbot/patchedup.ogg
rename to sound/mobs/non-humanoids/medbot/patchedup.ogg
diff --git a/sound/voice/medbot/please_dont.ogg b/sound/mobs/non-humanoids/medbot/please_dont.ogg
similarity index 100%
rename from sound/voice/medbot/please_dont.ogg
rename to sound/mobs/non-humanoids/medbot/please_dont.ogg
diff --git a/sound/voice/medbot/please_im_scared.ogg b/sound/mobs/non-humanoids/medbot/please_im_scared.ogg
similarity index 100%
rename from sound/voice/medbot/please_im_scared.ogg
rename to sound/mobs/non-humanoids/medbot/please_im_scared.ogg
diff --git a/sound/voice/medbot/please_put_me_back.ogg b/sound/mobs/non-humanoids/medbot/please_put_me_back.ogg
similarity index 100%
rename from sound/voice/medbot/please_put_me_back.ogg
rename to sound/mobs/non-humanoids/medbot/please_put_me_back.ogg
diff --git a/sound/voice/medbot/radar.ogg b/sound/mobs/non-humanoids/medbot/radar.ogg
similarity index 100%
rename from sound/voice/medbot/radar.ogg
rename to sound/mobs/non-humanoids/medbot/radar.ogg
diff --git a/sound/voice/medbot/reported.ogg b/sound/mobs/non-humanoids/medbot/reported.ogg
similarity index 100%
rename from sound/voice/medbot/reported.ogg
rename to sound/mobs/non-humanoids/medbot/reported.ogg
diff --git a/sound/voice/medbot/shindemashou.ogg b/sound/mobs/non-humanoids/medbot/shindemashou.ogg
similarity index 100%
rename from sound/voice/medbot/shindemashou.ogg
rename to sound/mobs/non-humanoids/medbot/shindemashou.ogg
diff --git a/sound/voice/medbot/surgeon.ogg b/sound/mobs/non-humanoids/medbot/surgeon.ogg
similarity index 100%
rename from sound/voice/medbot/surgeon.ogg
rename to sound/mobs/non-humanoids/medbot/surgeon.ogg
diff --git a/sound/voice/medbot/thank_you.ogg b/sound/mobs/non-humanoids/medbot/thank_you.ogg
similarity index 100%
rename from sound/voice/medbot/thank_you.ogg
rename to sound/mobs/non-humanoids/medbot/thank_you.ogg
diff --git a/sound/voice/medbot/turn_off.ogg b/sound/mobs/non-humanoids/medbot/turn_off.ogg
similarity index 100%
rename from sound/voice/medbot/turn_off.ogg
rename to sound/mobs/non-humanoids/medbot/turn_off.ogg
diff --git a/sound/voice/medbot/why.ogg b/sound/mobs/non-humanoids/medbot/why.ogg
similarity index 100%
rename from sound/voice/medbot/why.ogg
rename to sound/mobs/non-humanoids/medbot/why.ogg
diff --git a/sound/voice/medbot/youre_good.ogg b/sound/mobs/non-humanoids/medbot/youre_good.ogg
similarity index 100%
rename from sound/voice/medbot/youre_good.ogg
rename to sound/mobs/non-humanoids/medbot/youre_good.ogg
diff --git a/sound/creatures/monkey/monkey_screech_1.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_1.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_1.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_1.ogg
diff --git a/sound/creatures/monkey/monkey_screech_2.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_2.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_2.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_2.ogg
diff --git a/sound/creatures/monkey/monkey_screech_3.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_3.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_3.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_3.ogg
diff --git a/sound/creatures/monkey/monkey_screech_4.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_4.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_4.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_4.ogg
diff --git a/sound/creatures/monkey/monkey_screech_5.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_5.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_5.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_5.ogg
diff --git a/sound/creatures/monkey/monkey_screech_6.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_6.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_6.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_6.ogg
diff --git a/sound/creatures/monkey/monkey_screech_7.ogg b/sound/mobs/non-humanoids/monkey/monkey_screech_7.ogg
similarity index 100%
rename from sound/creatures/monkey/monkey_screech_7.ogg
rename to sound/mobs/non-humanoids/monkey/monkey_screech_7.ogg
diff --git a/sound/voice/mook_death.ogg b/sound/mobs/non-humanoids/mook/mook_death.ogg
similarity index 100%
rename from sound/voice/mook_death.ogg
rename to sound/mobs/non-humanoids/mook/mook_death.ogg
diff --git a/sound/voice/mook_leap_yell.ogg b/sound/mobs/non-humanoids/mook/mook_leap_yell.ogg
similarity index 100%
rename from sound/voice/mook_leap_yell.ogg
rename to sound/mobs/non-humanoids/mook/mook_leap_yell.ogg
diff --git a/sound/creatures/mousesqueek.ogg b/sound/mobs/non-humanoids/mouse/mousesqueek.ogg
similarity index 100%
rename from sound/creatures/mousesqueek.ogg
rename to sound/mobs/non-humanoids/mouse/mousesqueek.ogg
diff --git a/sound/items/orbie_level_up.ogg b/sound/mobs/non-humanoids/orbie/orbie_level_up.ogg
similarity index 100%
rename from sound/items/orbie_level_up.ogg
rename to sound/mobs/non-humanoids/orbie/orbie_level_up.ogg
diff --git a/sound/items/orbie_notification_sound.ogg b/sound/mobs/non-humanoids/orbie/orbie_notification_sound.ogg
similarity index 100%
rename from sound/items/orbie_notification_sound.ogg
rename to sound/mobs/non-humanoids/orbie/orbie_notification_sound.ogg
diff --git a/sound/items/orbie_send_out.ogg b/sound/mobs/non-humanoids/orbie/orbie_send_out.ogg
similarity index 100%
rename from sound/items/orbie_send_out.ogg
rename to sound/mobs/non-humanoids/orbie/orbie_send_out.ogg
diff --git a/sound/items/orbie_trick_learned.ogg b/sound/mobs/non-humanoids/orbie/orbie_trick_learned.ogg
similarity index 100%
rename from sound/items/orbie_trick_learned.ogg
rename to sound/mobs/non-humanoids/orbie/orbie_trick_learned.ogg
diff --git a/sound/creatures/pig1.ogg b/sound/mobs/non-humanoids/pig/pig1.ogg
similarity index 100%
rename from sound/creatures/pig1.ogg
rename to sound/mobs/non-humanoids/pig/pig1.ogg
diff --git a/sound/creatures/pig2.ogg b/sound/mobs/non-humanoids/pig/pig2.ogg
similarity index 100%
rename from sound/creatures/pig2.ogg
rename to sound/mobs/non-humanoids/pig/pig2.ogg
diff --git a/sound/creatures/pony/clown_gallup.ogg b/sound/mobs/non-humanoids/pony/clown_gallup.ogg
similarity index 100%
rename from sound/creatures/pony/clown_gallup.ogg
rename to sound/mobs/non-humanoids/pony/clown_gallup.ogg
diff --git a/sound/creatures/pony/snort.ogg b/sound/mobs/non-humanoids/pony/snort.ogg
similarity index 100%
rename from sound/creatures/pony/snort.ogg
rename to sound/mobs/non-humanoids/pony/snort.ogg
diff --git a/sound/creatures/pony/whinny01.ogg b/sound/mobs/non-humanoids/pony/whinny01.ogg
similarity index 100%
rename from sound/creatures/pony/whinny01.ogg
rename to sound/mobs/non-humanoids/pony/whinny01.ogg
diff --git a/sound/creatures/pony/whinny02.ogg b/sound/mobs/non-humanoids/pony/whinny02.ogg
similarity index 100%
rename from sound/creatures/pony/whinny02.ogg
rename to sound/mobs/non-humanoids/pony/whinny02.ogg
diff --git a/sound/creatures/pony/whinny03.ogg b/sound/mobs/non-humanoids/pony/whinny03.ogg
similarity index 100%
rename from sound/creatures/pony/whinny03.ogg
rename to sound/mobs/non-humanoids/pony/whinny03.ogg
diff --git a/sound/creatures/raptor_1.ogg b/sound/mobs/non-humanoids/raptor/raptor_1.ogg
similarity index 100%
rename from sound/creatures/raptor_1.ogg
rename to sound/mobs/non-humanoids/raptor/raptor_1.ogg
diff --git a/sound/creatures/raptor_2.ogg b/sound/mobs/non-humanoids/raptor/raptor_2.ogg
similarity index 100%
rename from sound/creatures/raptor_2.ogg
rename to sound/mobs/non-humanoids/raptor/raptor_2.ogg
diff --git a/sound/creatures/raptor_3.ogg b/sound/mobs/non-humanoids/raptor/raptor_3.ogg
similarity index 100%
rename from sound/creatures/raptor_3.ogg
rename to sound/mobs/non-humanoids/raptor/raptor_3.ogg
diff --git a/sound/creatures/raptor_4.ogg b/sound/mobs/non-humanoids/raptor/raptor_4.ogg
similarity index 100%
rename from sound/creatures/raptor_4.ogg
rename to sound/mobs/non-humanoids/raptor/raptor_4.ogg
diff --git a/sound/creatures/raptor_5.ogg b/sound/mobs/non-humanoids/raptor/raptor_5.ogg
similarity index 100%
rename from sound/creatures/raptor_5.ogg
rename to sound/mobs/non-humanoids/raptor/raptor_5.ogg
diff --git a/sound/creatures/sheep1.ogg b/sound/mobs/non-humanoids/sheep/sheep1.ogg
similarity index 100%
rename from sound/creatures/sheep1.ogg
rename to sound/mobs/non-humanoids/sheep/sheep1.ogg
diff --git a/sound/creatures/sheep2.ogg b/sound/mobs/non-humanoids/sheep/sheep2.ogg
similarity index 100%
rename from sound/creatures/sheep2.ogg
rename to sound/mobs/non-humanoids/sheep/sheep2.ogg
diff --git a/sound/creatures/sheep3.ogg b/sound/mobs/non-humanoids/sheep/sheep3.ogg
similarity index 100%
rename from sound/creatures/sheep3.ogg
rename to sound/mobs/non-humanoids/sheep/sheep3.ogg
diff --git a/sound/creatures/snake_hissing1.ogg b/sound/mobs/non-humanoids/snake/snake_hissing1.ogg
similarity index 100%
rename from sound/creatures/snake_hissing1.ogg
rename to sound/mobs/non-humanoids/snake/snake_hissing1.ogg
diff --git a/sound/creatures/snake_hissing2.ogg b/sound/mobs/non-humanoids/snake/snake_hissing2.ogg
similarity index 100%
rename from sound/creatures/snake_hissing2.ogg
rename to sound/mobs/non-humanoids/snake/snake_hissing2.ogg
diff --git a/sound/creatures/space_dragon_roar.ogg b/sound/mobs/non-humanoids/space_dragon/space_dragon_roar.ogg
similarity index 100%
rename from sound/creatures/space_dragon_roar.ogg
rename to sound/mobs/non-humanoids/space_dragon/space_dragon_roar.ogg
diff --git a/sound/creatures/tourist/tourist_talk.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk.ogg
diff --git a/sound/creatures/tourist/tourist_talk_british.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_british.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_british.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_british.ogg
diff --git a/sound/creatures/tourist/tourist_talk_french.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_french.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_french.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_french.ogg
diff --git a/sound/creatures/tourist/tourist_talk_japanese1.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_japanese1.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_japanese1.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_japanese1.ogg
diff --git a/sound/creatures/tourist/tourist_talk_japanese2.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_japanese2.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_japanese2.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_japanese2.ogg
diff --git a/sound/creatures/tourist/tourist_talk_mexican.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_mexican.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_mexican.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_mexican.ogg
diff --git a/sound/creatures/tourist/tourist_talk_moth.ogg b/sound/mobs/non-humanoids/tourist/tourist_talk_moth.ogg
similarity index 100%
rename from sound/creatures/tourist/tourist_talk_moth.ogg
rename to sound/mobs/non-humanoids/tourist/tourist_talk_moth.ogg
diff --git a/sound/creatures/venus_trap_death.ogg b/sound/mobs/non-humanoids/venus_trap/venus_trap_death.ogg
similarity index 100%
rename from sound/creatures/venus_trap_death.ogg
rename to sound/mobs/non-humanoids/venus_trap/venus_trap_death.ogg
diff --git a/sound/creatures/venus_trap_hit.ogg b/sound/mobs/non-humanoids/venus_trap/venus_trap_hit.ogg
similarity index 100%
rename from sound/creatures/venus_trap_hit.ogg
rename to sound/mobs/non-humanoids/venus_trap/venus_trap_hit.ogg
diff --git a/sound/creatures/venus_trap_hurt.ogg b/sound/mobs/non-humanoids/venus_trap/venus_trap_hurt.ogg
similarity index 100%
rename from sound/creatures/venus_trap_hurt.ogg
rename to sound/mobs/non-humanoids/venus_trap/venus_trap_hurt.ogg
diff --git a/sound/ambience/antag/abductee.ogg b/sound/music/antag/abductee.ogg
similarity index 100%
rename from sound/ambience/antag/abductee.ogg
rename to sound/music/antag/abductee.ogg
diff --git a/sound/music/antag/attribution.txt b/sound/music/antag/attribution.txt
new file mode 100644
index 0000000000000..6ae7cecc51970
--- /dev/null
+++ b/sound/music/antag/attribution.txt
@@ -0,0 +1,11 @@
+sound/instrumental/antag/abductee.ogg is from "Warp SFX" https://freesound.org/people/Breviceps/sounds/453391 (CC0)
+sound/instrumental/antag/brainwash.ogg is from "nog.wav" https://freesound.org/people/_NOMINAL_/sounds/124602 (CC-BY 3.0)
+sound/instrumental/antag/hypnosis.ogg is from "Flashback.wav" https://freesound.org/people/Sclolex/sounds/342103 (CC0)
+
+{
+ambimaint8.ogg
+ambimaint9.ogg
+ambimaint10.ogg
+ambimaint11.ogg
+ambimaint12.ogg
+} made by Kayozz , license: CC-by-SA
diff --git a/sound/ambience/antag/ayylien.ogg b/sound/music/antag/ayylien.ogg
similarity index 100%
rename from sound/ambience/antag/ayylien.ogg
rename to sound/music/antag/ayylien.ogg
diff --git a/sound/ambience/antag/blobalert.ogg b/sound/music/antag/blobalert.ogg
similarity index 100%
rename from sound/ambience/antag/blobalert.ogg
rename to sound/music/antag/blobalert.ogg
diff --git a/sound/ambience/antag/bloodcult/bloodcult_eyes.ogg b/sound/music/antag/bloodcult/bloodcult_eyes.ogg
similarity index 100%
rename from sound/ambience/antag/bloodcult/bloodcult_eyes.ogg
rename to sound/music/antag/bloodcult/bloodcult_eyes.ogg
diff --git a/sound/ambience/antag/bloodcult/bloodcult_gain.ogg b/sound/music/antag/bloodcult/bloodcult_gain.ogg
similarity index 100%
rename from sound/ambience/antag/bloodcult/bloodcult_gain.ogg
rename to sound/music/antag/bloodcult/bloodcult_gain.ogg
diff --git a/sound/ambience/antag/bloodcult/bloodcult_halos.ogg b/sound/music/antag/bloodcult/bloodcult_halos.ogg
similarity index 100%
rename from sound/ambience/antag/bloodcult/bloodcult_halos.ogg
rename to sound/music/antag/bloodcult/bloodcult_halos.ogg
diff --git a/sound/ambience/antag/bloodcult/bloodcult_scribe.ogg b/sound/music/antag/bloodcult/bloodcult_scribe.ogg
similarity index 100%
rename from sound/ambience/antag/bloodcult/bloodcult_scribe.ogg
rename to sound/music/antag/bloodcult/bloodcult_scribe.ogg
diff --git a/sound/voice/ghost_whisper.ogg b/sound/music/antag/bloodcult/ghost_whisper.ogg
similarity index 100%
rename from sound/voice/ghost_whisper.ogg
rename to sound/music/antag/bloodcult/ghost_whisper.ogg
diff --git a/sound/misc/ghosty_wind.ogg b/sound/music/antag/bloodcult/ghosty_wind.ogg
similarity index 100%
rename from sound/misc/ghosty_wind.ogg
rename to sound/music/antag/bloodcult/ghosty_wind.ogg
diff --git a/sound/creatures/narsie_rises.ogg b/sound/music/antag/bloodcult/narsie_rises.ogg
similarity index 100%
rename from sound/creatures/narsie_rises.ogg
rename to sound/music/antag/bloodcult/narsie_rises.ogg
diff --git a/sound/ambience/antag/brainwashed.ogg b/sound/music/antag/brainwashed.ogg
similarity index 100%
rename from sound/ambience/antag/brainwashed.ogg
rename to sound/music/antag/brainwashed.ogg
diff --git a/sound/ambience/antag/clockcultalr.ogg b/sound/music/antag/clockcultalr.ogg
similarity index 100%
rename from sound/ambience/antag/clockcultalr.ogg
rename to sound/music/antag/clockcultalr.ogg
diff --git a/sound/effects/contractstartup.ogg b/sound/music/antag/contractstartup.ogg
similarity index 100%
rename from sound/effects/contractstartup.ogg
rename to sound/music/antag/contractstartup.ogg
diff --git a/sound/ambience/antag/creepalert.ogg b/sound/music/antag/creepalert.ogg
similarity index 100%
rename from sound/ambience/antag/creepalert.ogg
rename to sound/music/antag/creepalert.ogg
diff --git a/sound/ambience/VoidsEmbrace.ogg b/sound/music/antag/heretic/VoidsEmbrace.ogg
similarity index 100%
rename from sound/ambience/VoidsEmbrace.ogg
rename to sound/music/antag/heretic/VoidsEmbrace.ogg
diff --git a/sound/ambience/antag/heretic/ascend_ash.ogg b/sound/music/antag/heretic/ascend_ash.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_ash.ogg
rename to sound/music/antag/heretic/ascend_ash.ogg
diff --git a/sound/ambience/antag/heretic/ascend_blade.ogg b/sound/music/antag/heretic/ascend_blade.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_blade.ogg
rename to sound/music/antag/heretic/ascend_blade.ogg
diff --git a/sound/ambience/antag/heretic/ascend_cosmic.ogg b/sound/music/antag/heretic/ascend_cosmic.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_cosmic.ogg
rename to sound/music/antag/heretic/ascend_cosmic.ogg
diff --git a/sound/ambience/antag/heretic/ascend_flesh.ogg b/sound/music/antag/heretic/ascend_flesh.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_flesh.ogg
rename to sound/music/antag/heretic/ascend_flesh.ogg
diff --git a/sound/ambience/antag/heretic/ascend_knock.ogg b/sound/music/antag/heretic/ascend_knock.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_knock.ogg
rename to sound/music/antag/heretic/ascend_knock.ogg
diff --git a/sound/ambience/antag/heretic/ascend_moon.ogg b/sound/music/antag/heretic/ascend_moon.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_moon.ogg
rename to sound/music/antag/heretic/ascend_moon.ogg
diff --git a/sound/ambience/antag/heretic/ascend_rust.ogg b/sound/music/antag/heretic/ascend_rust.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_rust.ogg
rename to sound/music/antag/heretic/ascend_rust.ogg
diff --git a/sound/ambience/antag/heretic/ascend_void.ogg b/sound/music/antag/heretic/ascend_void.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/ascend_void.ogg
rename to sound/music/antag/heretic/ascend_void.ogg
diff --git a/sound/music/antag/heretic/attribution.txt b/sound/music/antag/heretic/attribution.txt
new file mode 100644
index 0000000000000..eb17caca63e6a
--- /dev/null
+++ b/sound/music/antag/heretic/attribution.txt
@@ -0,0 +1,3 @@
+heretic_sacrifice.ogg - made by sadboysusss, License: CC-by-SA
+
+VoidsEmbrace.ogg is Chopin - Waltz in C Sharp Minor (Op. 64 No. 2). It is in public domain.
diff --git a/sound/ambience/antag/heretic/heretic_gain.ogg b/sound/music/antag/heretic/heretic_gain.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/heretic_gain.ogg
rename to sound/music/antag/heretic/heretic_gain.ogg
diff --git a/sound/ambience/antag/heretic/heretic_gain_intense.ogg b/sound/music/antag/heretic/heretic_gain_intense.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/heretic_gain_intense.ogg
rename to sound/music/antag/heretic/heretic_gain_intense.ogg
diff --git a/sound/ambience/antag/heretic/heretic_sacrifice.ogg b/sound/music/antag/heretic/heretic_sacrifice.ogg
similarity index 100%
rename from sound/ambience/antag/heretic/heretic_sacrifice.ogg
rename to sound/music/antag/heretic/heretic_sacrifice.ogg
diff --git a/sound/ambience/antag/hypnotized.ogg b/sound/music/antag/hypnotized.ogg
similarity index 100%
rename from sound/ambience/antag/hypnotized.ogg
rename to sound/music/antag/hypnotized.ogg
diff --git a/sound/ambience/antag/ling_alert.ogg b/sound/music/antag/ling_alert.ogg
similarity index 100%
rename from sound/ambience/antag/ling_alert.ogg
rename to sound/music/antag/ling_alert.ogg
diff --git a/sound/ambience/antag/malf.ogg b/sound/music/antag/malf.ogg
similarity index 100%
rename from sound/ambience/antag/malf.ogg
rename to sound/music/antag/malf.ogg
diff --git a/sound/ambience/antag/monkey.ogg b/sound/music/antag/monkey.ogg
similarity index 100%
rename from sound/ambience/antag/monkey.ogg
rename to sound/music/antag/monkey.ogg
diff --git a/sound/effects/ninja_greeting.ogg b/sound/music/antag/ninja_greeting.ogg
similarity index 100%
rename from sound/effects/ninja_greeting.ogg
rename to sound/music/antag/ninja_greeting.ogg
diff --git a/sound/ambience/antag/ops.ogg b/sound/music/antag/ops.ogg
similarity index 100%
rename from sound/ambience/antag/ops.ogg
rename to sound/music/antag/ops.ogg
diff --git a/sound/ambience/antag/ragesmages.ogg b/sound/music/antag/ragesmages.ogg
similarity index 100%
rename from sound/ambience/antag/ragesmages.ogg
rename to sound/music/antag/ragesmages.ogg
diff --git a/sound/ambience/antag/revolutionary_tide.ogg b/sound/music/antag/revolutionary_tide.ogg
similarity index 100%
rename from sound/ambience/antag/revolutionary_tide.ogg
rename to sound/music/antag/revolutionary_tide.ogg
diff --git a/sound/ambience/antag/spy.ogg b/sound/music/antag/spy.ogg
similarity index 100%
rename from sound/ambience/antag/spy.ogg
rename to sound/music/antag/spy.ogg
diff --git a/sound/ambience/antag/thatshowfamiliesworks.ogg b/sound/music/antag/thatshowfamiliesworks.ogg
similarity index 100%
rename from sound/ambience/antag/thatshowfamiliesworks.ogg
rename to sound/music/antag/thatshowfamiliesworks.ogg
diff --git a/sound/traitor/final_objective.ogg b/sound/music/antag/traitor/final_objective.ogg
similarity index 100%
rename from sound/traitor/final_objective.ogg
rename to sound/music/antag/traitor/final_objective.ogg
diff --git a/sound/traitor/objective_failed.ogg b/sound/music/antag/traitor/objective_failed.ogg
similarity index 100%
rename from sound/traitor/objective_failed.ogg
rename to sound/music/antag/traitor/objective_failed.ogg
diff --git a/sound/traitor/objective_success.ogg b/sound/music/antag/traitor/objective_success.ogg
similarity index 100%
rename from sound/traitor/objective_success.ogg
rename to sound/music/antag/traitor/objective_success.ogg
diff --git a/sound/traitor/objective_taken.ogg b/sound/music/antag/traitor/objective_taken.ogg
similarity index 100%
rename from sound/traitor/objective_taken.ogg
rename to sound/music/antag/traitor/objective_taken.ogg
diff --git a/sound/ambience/antag/tatoralert.ogg b/sound/music/antag/traitor/tatoralert.ogg
similarity index 100%
rename from sound/ambience/antag/tatoralert.ogg
rename to sound/music/antag/traitor/tatoralert.ogg
diff --git a/sound/lavaland/bdm_boss.ogg b/sound/music/boss/bdm_boss.ogg
similarity index 100%
rename from sound/lavaland/bdm_boss.ogg
rename to sound/music/boss/bdm_boss.ogg
diff --git a/sound/lavaland/hiero_boss.ogg b/sound/music/boss/hiero_boss.ogg
similarity index 100%
rename from sound/lavaland/hiero_boss.ogg
rename to sound/music/boss/hiero_boss.ogg
diff --git a/sound/ambience/music/elevator/robocop-short.ogg b/sound/music/elevator/robocop-short.ogg
similarity index 100%
rename from sound/ambience/music/elevator/robocop-short.ogg
rename to sound/music/elevator/robocop-short.ogg
diff --git a/sound/ambience/clown.ogg b/sound/music/lobby_music/clown.ogg
similarity index 100%
rename from sound/ambience/clown.ogg
rename to sound/music/lobby_music/clown.ogg
diff --git a/sound/music/lobby_music/license.txt b/sound/music/lobby_music/license.txt
new file mode 100644
index 0000000000000..be7e890e52789
--- /dev/null
+++ b/sound/music/lobby_music/license.txt
@@ -0,0 +1,4 @@
+title0.ogg is Endless Space by Solus. It has been licensed under CC-BY 3.0 license. Source file downloaded from https://www.newgrounds.com/audio/listen/74946
+title1.mod is Flip-Flap created by Jakub "AceMan" SzelÄ…g and taken from http://aminet.net/package/mods/xceed/Flipflap
+title2.ogg is Robocop Theme (gameboy) remixed by Eric Schumacker
+title3.ogg is Tintin On The Moon remixed by Cuboos https://tgstation13.org/phpBB/viewtopic.php?f=10&t=2157 (assumed CC under allowing it to be submitted to the github, see thread)
diff --git a/sound/ambience/title0.ogg b/sound/music/lobby_music/title0.ogg
similarity index 100%
rename from sound/ambience/title0.ogg
rename to sound/music/lobby_music/title0.ogg
diff --git a/sound/ambience/title1.mod b/sound/music/lobby_music/title1.mod
similarity index 100%
rename from sound/ambience/title1.mod
rename to sound/music/lobby_music/title1.mod
diff --git a/sound/ambience/title2.ogg b/sound/music/lobby_music/title2.ogg
similarity index 100%
rename from sound/ambience/title2.ogg
rename to sound/music/lobby_music/title2.ogg
diff --git a/sound/ambience/title3.ogg b/sound/music/lobby_music/title3.ogg
similarity index 100%
rename from sound/ambience/title3.ogg
rename to sound/music/lobby_music/title3.ogg
diff --git a/sound/ambience/music/sisyphus/sisyphus.ogg b/sound/music/sisyphus/sisyphus.ogg
similarity index 100%
rename from sound/ambience/music/sisyphus/sisyphus.ogg
rename to sound/music/sisyphus/sisyphus.ogg
diff --git a/sound/runtime/complionator/attribution.txt b/sound/runtime/complionator/attribution.txt
new file mode 100644
index 0000000000000..c9229ef22b52a
--- /dev/null
+++ b/sound/runtime/complionator/attribution.txt
@@ -0,0 +1 @@
+all complianator sounds are licensed under CC-BY-SA by Michael Haugh (supermichael)
diff --git a/sound/mecha/critdestr.ogg b/sound/vehicles/mecha/critdestr.ogg
similarity index 100%
rename from sound/mecha/critdestr.ogg
rename to sound/vehicles/mecha/critdestr.ogg
diff --git a/sound/mecha/hydraulic.ogg b/sound/vehicles/mecha/hydraulic.ogg
similarity index 100%
rename from sound/mecha/hydraulic.ogg
rename to sound/vehicles/mecha/hydraulic.ogg
diff --git a/sound/mecha/imag_enh.ogg b/sound/vehicles/mecha/imag_enh.ogg
similarity index 100%
rename from sound/mecha/imag_enh.ogg
rename to sound/vehicles/mecha/imag_enh.ogg
diff --git a/sound/mecha/mech_blade_attack.ogg b/sound/vehicles/mecha/mech_blade_attack.ogg
similarity index 100%
rename from sound/mecha/mech_blade_attack.ogg
rename to sound/vehicles/mecha/mech_blade_attack.ogg
diff --git a/sound/mecha/mech_blade_break_wall.ogg b/sound/vehicles/mecha/mech_blade_break_wall.ogg
similarity index 100%
rename from sound/mecha/mech_blade_break_wall.ogg
rename to sound/vehicles/mecha/mech_blade_break_wall.ogg
diff --git a/sound/mecha/mech_blade_safty.ogg b/sound/vehicles/mecha/mech_blade_safty.ogg
similarity index 100%
rename from sound/mecha/mech_blade_safty.ogg
rename to sound/vehicles/mecha/mech_blade_safty.ogg
diff --git a/sound/mecha/mech_charge_attack.ogg b/sound/vehicles/mecha/mech_charge_attack.ogg
similarity index 100%
rename from sound/mecha/mech_charge_attack.ogg
rename to sound/vehicles/mecha/mech_charge_attack.ogg
diff --git a/sound/mecha/mech_shield_deflect.ogg b/sound/vehicles/mecha/mech_shield_deflect.ogg
similarity index 100%
rename from sound/mecha/mech_shield_deflect.ogg
rename to sound/vehicles/mecha/mech_shield_deflect.ogg
diff --git a/sound/mecha/mech_shield_drop.ogg b/sound/vehicles/mecha/mech_shield_drop.ogg
similarity index 100%
rename from sound/mecha/mech_shield_drop.ogg
rename to sound/vehicles/mecha/mech_shield_drop.ogg
diff --git a/sound/mecha/mech_shield_raise.ogg b/sound/vehicles/mecha/mech_shield_raise.ogg
similarity index 100%
rename from sound/mecha/mech_shield_raise.ogg
rename to sound/vehicles/mecha/mech_shield_raise.ogg
diff --git a/sound/mecha/mech_stealth_attack.ogg b/sound/vehicles/mecha/mech_stealth_attack.ogg
similarity index 100%
rename from sound/mecha/mech_stealth_attack.ogg
rename to sound/vehicles/mecha/mech_stealth_attack.ogg
diff --git a/sound/mecha/mech_stealth_effect.ogg b/sound/vehicles/mecha/mech_stealth_effect.ogg
similarity index 100%
rename from sound/mecha/mech_stealth_effect.ogg
rename to sound/vehicles/mecha/mech_stealth_effect.ogg
diff --git a/sound/mecha/mech_stealth_pre_attack.ogg b/sound/vehicles/mecha/mech_stealth_pre_attack.ogg
similarity index 100%
rename from sound/mecha/mech_stealth_pre_attack.ogg
rename to sound/vehicles/mecha/mech_stealth_pre_attack.ogg
diff --git a/sound/mecha/mechmove01.ogg b/sound/vehicles/mecha/mechmove01.ogg
similarity index 100%
rename from sound/mecha/mechmove01.ogg
rename to sound/vehicles/mecha/mechmove01.ogg
diff --git a/sound/mecha/mechmove03.ogg b/sound/vehicles/mecha/mechmove03.ogg
similarity index 100%
rename from sound/mecha/mechmove03.ogg
rename to sound/vehicles/mecha/mechmove03.ogg
diff --git a/sound/mecha/mechmove04.ogg b/sound/vehicles/mecha/mechmove04.ogg
similarity index 100%
rename from sound/mecha/mechmove04.ogg
rename to sound/vehicles/mecha/mechmove04.ogg
diff --git a/sound/mecha/mechstep.ogg b/sound/vehicles/mecha/mechstep.ogg
similarity index 100%
rename from sound/mecha/mechstep.ogg
rename to sound/vehicles/mecha/mechstep.ogg
diff --git a/sound/mecha/mechturn.ogg b/sound/vehicles/mecha/mechturn.ogg
similarity index 100%
rename from sound/mecha/mechturn.ogg
rename to sound/vehicles/mecha/mechturn.ogg
diff --git a/sound/mecha/nominal.ogg b/sound/vehicles/mecha/nominal.ogg
similarity index 100%
rename from sound/mecha/nominal.ogg
rename to sound/vehicles/mecha/nominal.ogg
diff --git a/sound/mecha/powerloader_step.ogg b/sound/vehicles/mecha/powerloader_step.ogg
similarity index 100%
rename from sound/mecha/powerloader_step.ogg
rename to sound/vehicles/mecha/powerloader_step.ogg
diff --git a/sound/mecha/powerloader_turn2.ogg b/sound/vehicles/mecha/powerloader_turn2.ogg
similarity index 100%
rename from sound/mecha/powerloader_turn2.ogg
rename to sound/vehicles/mecha/powerloader_turn2.ogg
diff --git a/sound/mecha/skyfall_power_up.ogg b/sound/vehicles/mecha/skyfall_power_up.ogg
similarity index 100%
rename from sound/mecha/skyfall_power_up.ogg
rename to sound/vehicles/mecha/skyfall_power_up.ogg
diff --git a/sound/mecha/weapdestr.ogg b/sound/vehicles/mecha/weapdestr.ogg
similarity index 100%
rename from sound/mecha/weapdestr.ogg
rename to sound/vehicles/mecha/weapdestr.ogg
diff --git a/sound/voice/attribution.txt b/sound/voice/attribution.txt
deleted file mode 100644
index 7bfe5c4a9ce14..0000000000000
--- a/sound/voice/attribution.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-borg_deathsound.ogg is spliced from two clips, both of which are under the CC Attribution license. The sound at https://freesound.org/people/simmfoc/sounds/28477/ was pitched down, sped up, and repeated a few times. https://freesound.org/people/nicStage/sounds/1522/ is then attached with a fadeout effect and lowered volume.
-
-all complianator sounds are licensed under CC-BY-SA by Michael Haugh (supermichael)
-
-The male sharp gasps in /sound/voice/human/ are from https://freesound.org/people/bacruz666/sounds/341908/ and https://freesound.org/people/nettoi/sounds/677540/, the female sharp gasps are from https://freesound.org/people/drotzruhn/sounds/405203/
-
-{
-human/male_sniff.ogg - https://freesound.org/people/Fluffayfish/sounds/327799/ , License: CC BY-NC 3.0
-human/male_sigh.ogg - https://freesound.org/people/giddster/sounds/336540/ , License: CC0
-human/female_sniff.ogg - https://freesound.org/people/SpliceSound/sounds/218307/ , License: CC0
-human/female_sigh.ogg - https://freesound.org/people/biawinter/sounds/408090/ , License: CC BY-NC 4.0
-} modified by grungussuss
\ No newline at end of file
diff --git a/strings/round_start_sounds.txt b/strings/round_start_sounds.txt
index c4428dc8c5def..9981097c30850 100644
--- a/strings/round_start_sounds.txt
+++ b/strings/round_start_sounds.txt
@@ -1,4 +1,4 @@
-sound/ambience/title1.mod
-sound/ambience/title2.ogg
-sound/ambience/title3.ogg
-sound/ambience/clown.ogg
+sound/music/lobby_music/title1.mod
+sound/music/lobby_music/title2.ogg
+sound/music/lobby_music/title3.ogg
+sound/music/lobby_music/clown.ogg
diff --git a/tgstation.dme b/tgstation.dme
index ebe0449eb715d..221a28d96d74d 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -487,6 +487,7 @@
#include "code\__HELPERS\memory_helpers.dm"
#include "code\__HELPERS\mobs.dm"
#include "code\__HELPERS\mouse_control.dm"
+#include "code\__HELPERS\movement.dm"
#include "code\__HELPERS\nameof.dm"
#include "code\__HELPERS\names.dm"
#include "code\__HELPERS\piping_colors_lists.dm"
@@ -781,7 +782,7 @@
#include "code\controllers\subsystem\movement\hyperspace_drift.dm"
#include "code\controllers\subsystem\movement\movement.dm"
#include "code\controllers\subsystem\movement\movement_types.dm"
-#include "code\controllers\subsystem\movement\spacedrift.dm"
+#include "code\controllers\subsystem\movement\newtonian_movement.dm"
#include "code\controllers\subsystem\persistence\_persistence.dm"
#include "code\controllers\subsystem\persistence\counter_delamination.dm"
#include "code\controllers\subsystem\persistence\counter_tram_hits.dm"
@@ -832,6 +833,7 @@
#include "code\datums\datumvars.dm"
#include "code\datums\dna.dm"
#include "code\datums\dog_fashion.dm"
+#include "code\datums\drift_handler.dm"
#include "code\datums\ductnet.dm"
#include "code\datums\eigenstate.dm"
#include "code\datums\embed_data.dm"
@@ -1143,7 +1145,6 @@
#include "code\datums\components\dejavu.dm"
#include "code\datums\components\deployable.dm"
#include "code\datums\components\direct_explosive_trap.dm"
-#include "code\datums\components\drift.dm"
#include "code\datums\components\earprotection.dm"
#include "code\datums\components\echolocation.dm"
#include "code\datums\components\edit_complainer.dm"
diff --git a/tgui/packages/tgui/interfaces/Aquarium.tsx b/tgui/packages/tgui/interfaces/Aquarium.tsx
index 90030afbfb42f..f527bee09ea0b 100644
--- a/tgui/packages/tgui/interfaces/Aquarium.tsx
+++ b/tgui/packages/tgui/interfaces/Aquarium.tsx
@@ -319,7 +319,7 @@ const Settings = (props) => {
-
+