From a0086b51848059fb3aa322e0915790441a6b3e97 Mon Sep 17 00:00:00 2001 From: nmajask Date: Thu, 12 Jan 2023 01:38:39 -0500 Subject: [PATCH] Adds a sound effect to health analyzers (#13425) --- .../Components/HealthAnalyzerComponent.cs | 13 +++++++++++++ Content.Server/Medical/HealthAnalyzerSystem.cs | 8 ++++++++ Resources/Audio/Items/Medical/healthscanner.ogg | Bin 0 -> 4366 bytes Resources/Audio/Items/Medical/license.txt | 9 +++++---- .../Prototypes/Entities/Objects/Devices/pda.yml | 6 ++++++ .../Objects/Specific/Medical/healthanalyzer.yml | 2 ++ 6 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 Resources/Audio/Items/Medical/healthscanner.ogg diff --git a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs index bef0e9122f..237cd4b4ff 100644 --- a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs +++ b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs @@ -3,6 +3,7 @@ using Content.Server.UserInterface; using Content.Shared.Disease; using Content.Shared.MedicalScanner; using Robust.Server.GameObjects; +using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Medical.Components @@ -25,6 +26,18 @@ namespace Content.Server.Medical.Components public CancellationTokenSource? CancelToken; public BoundUserInterface? UserInterface => Owner.GetUIOrNull(HealthAnalyzerUiKey.Key); + /// + /// Sound played on scanning begin + /// + [DataField("scanningBeginSound")] + public SoundSpecifier? ScanningBeginSound = null; + + /// + /// Sound played on scanning end + /// + [DataField("scanningEndSound")] + public SoundSpecifier? ScanningEndSound = null; + /// /// The disease this will give people. /// diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 491b83b607..22f0ac174f 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Damage; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.MobState.Components; +using Content.Shared.Audio; using Robust.Server.GameObjects; using Robust.Shared.Player; using static Content.Shared.MedicalScanner.SharedHealthAnalyzerComponent; @@ -15,6 +16,7 @@ namespace Content.Server.Medical { public sealed class HealthAnalyzerSystem : EntitySystem { + [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly DiseaseSystem _disease = default!; [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; @@ -55,6 +57,9 @@ namespace Content.Server.Medical return; healthAnalyzer.CancelToken = new CancellationTokenSource(); + + _audio.PlayPvs(healthAnalyzer.ScanningBeginSound, uid); + _doAfterSystem.DoAfter(new DoAfterEventArgs(args.User, healthAnalyzer.ScanDelay, healthAnalyzer.CancelToken.Token, target: args.Target) { BroadcastFinishedEvent = new TargetScanSuccessfulEvent(args.User, args.Target, healthAnalyzer), @@ -69,6 +74,9 @@ namespace Content.Server.Medical private void OnTargetScanSuccessful(TargetScanSuccessfulEvent args) { args.Component.CancelToken = null; + + _audio.PlayPvs(args.Component.ScanningEndSound, args.User); + UpdateScannedUser(args.Component.Owner, args.User, args.Target, args.Component); // Below is for the traitor item // Piggybacking off another component's doafter is complete CBT so I gave up diff --git a/Resources/Audio/Items/Medical/healthscanner.ogg b/Resources/Audio/Items/Medical/healthscanner.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ae4a9e9101896b66b9d5c8ef528f0d5cd14880a2 GIT binary patch literal 4366 zcmai1e>~IqAAe6_mE01duWBpRmL)VlCOVe#Bcibww-d864B1BIt8{);a!Z;N81J zfdTk5e91E#>iGR4%u-BxN?I(JkFqd6wKI~PqcgwXV}j8;{~G9>7)YgTs_&Se|Ht3s z?yMOUJ1C6crpDU`r|rfkabtJrvGM+RCkIC-2PcR1cw#UwnVXu%;d7D&B-Esp@Cr@Y zCCG?L<9K?)^U}y+fFj zqdSG_?nJe7aB_EWz!=V0v5dB92Q(7{tk_|sEvM-}1{}5KiygO|jx7#2dOp{Z=2yly z53Ql9OA~9a*5h+=i$g<5hNtNwI@g+Agzj)#{Z|Ui+*g;eaZ&y^`%Wbu^KP)ooiC*a zl5UIX1vIR6Xd$UhOb?(LuN0WNkJyBY0*Kz%w462w7@$;wfYn%T*2k9a2{D6gGbowH|)71Wbn8SzeV>4QAW zD{^XreH+{@e?H>Rv+sqwZYosKFUX>5e(E+9xng1@GMTmr?lxLiXYy$%?{B@C@IZgP ztz7c=RO9{5Rvxn2e1v;-Jeu8<2e=pLasU8kC69i zIYP*{ioHXsF8ylmnwqML0;f*$<$F$D=%TxHx!e7f!)@Fqle#NrTZ8I*BiMCUwWW!s zKSpxv>iYsn=V6vf`uJtT^kA*yioCa=$VUkB(zH&}g>nOZIH3@&W{eL^J171&i~9A*P$obI2v}wk@HsU zdyd-jlOeP}-NeHOwrsa)+hgmSW_!1o?0=H7^|HtP9*>}RKHJTMdcrn`3pNj2+1xJ< zQVW9m1q^0Ai`l^I@8d;Fc!QH!|22h6^e*}V@WM}241S1XOS$E940Z;u)n* zrTBl-USHrv06aWlbN7S|EO39g!RVt4-vtAZYSK{ziyl_|Cm(~~!GN-UF#PWX0N`MI zi%$0CQ~bqYTkFGu>ch5LFoGHXZ#W0_P=a7!VLO@)T4KMx`5aGJx$^lFTr2LR%yAW= z{!7B_6U9#)jVy9xP8B9;PiVuqoTV^m3xE&wydB?xYA*=Hi?ufAMfBaI zwo|e9i6uYLYrp1;=)QH8;#l(9bTR$wns!(%1~%{_=R)&mgY5w1I{J~S%wr3w)uo#X zN!nBVe8&+RzKE(V7tq&eO9k5kZd*aJx|C0MUtPlA7O?sptPfxeuX*Pl7Fl4tNfO>YvDB_6ga)dNAGx_6R+D1e{(WFG|Q_ zO$LTag489P9wARt!eM1_`X`-x1gstgr(eM8Pv?X;vX~QDJ;J=f5>9kDhiR40n#_w* zmpm7+2EsYvt~;PKN}V^bY#OqOsUR0OZzY6sIYKl(%2^NFnCy+W3C@__c9 zYTTq_ylT3$rJGhBmwdq!brQca%MJf>^EJl&)$ROqG=NUqVe zey3}C`?2W~x$@OiYeHA+rN<49KQ|?ln^SGN5_O%9x~A<7!hc5ZoqOx8K*-v+i`6k9 z6b$>i9q5Fq#h|HO*y(kSU}uo+h5^TIk5OnJ>d88<-&q4dg%i~D2=`(^QnjEEo!2vUb2DE-8;>}zDtWp8M zI-D~xU#v6(M_^Ydj45=)eogPD8lT(VN!8-xy1lW4l6zDvL0k-ZVzHAJFD|BI;VyC> zK`f>x8UkSM2K&}e<)rW2&}zYChXIf?90B85k?>f__Lsq^)*uaIeiH4`3NFl46y(Tj z5QR=Bo#E(4VSMx)mC9aPQG*~ll~Mtdf+*~+DPQT}2GMmY$kVNeN?`{>s%yOjZ-*(+ zG^G3tyL;34bnA&aoyz`WtD}i820Wc(3cL(mYDKAZie*InodAHJ1+pEC2st>K5h1sT z9zZxRHiPZ@Dg0aANwX%Ry%#qN5*SnkOMqvjzn8zx1#`ep$5TPkeg{X#yuAF{*?y;+nzbffVxbLj}f^T2fCQa;i*8ZG!&sqQE_D{zW3~-xo3d)WD z$1Mwx?X`sjRZQJ;&Dk(-gj_!YO46_vD7hpTx2D|&B?)nQDUNohG{@8(diT&9D&uIx z^L)LtW&wYCj4J;XfOBFqlnkK}SDM4~wLW0CMzO0mvk&P*kPQI-@X8C~^)W^4hwM#7 zX^#SPaG~1-@>3@t2ez5Vnfk0Q^U044Y53+ItS>wk)*EKF5q549&LGwVc;S|>_o2mD zkR6CQMu+!-H(&u_0kB;~{L$XNybCN6>`@=WeTB=#TN;OW8JKSSe(0#H$B@zL7v?4I z@PGoxEU*^w?Sdm z!wid;FP+TjEww4vG83r}l0BYlPfna7e%N{ZsD!io)oL*N`S|<6pysx{=6>G29{rqa z>D_6+FGv|8Jg$0sXAk$-BR6utXlPEYSs0oeXp-?3aP!M zcxPxk=QS>8dCP5ULx3#;;_lG9-*^rMhv)f)x`Kk}{3R|fFG49yO-E;{3nsTabYOR~ z=N})H$B((2 z++Vn1YS}D*YS$k#7lOspGFeLVABW8&Z(44e^BHJ|sW|b}DCAQfviCOyPk0vw zY)C8IGuc?*_ZkPDj4oZ4(!BHhn=wjMA?pqBVjVV|(!zE#GeT}$JbZ~csCkk(9&qg2 zX9mAx?Z>vxHvYWzOUE`}*EcOcupi!{W;+^@+lnvE1!LA@8}2`-+<3Nex_rx9{uON@ zCH=+d_sJrW>+vtu2cGO@6c6u4|*i8_q6!s&eMfD;>+vu4)F!7O{A4? z84+a9F~^r<=0*TP_MGRKCST9j8NXz1c00!I+E--eYk&`EvDn2Rf}m+hrtZ?XrTK-) z+Rr~v9k@P6}W+8qdDMm29`Udw)jU0OctKSVojy#N3J literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/Medical/license.txt b/Resources/Audio/Items/Medical/license.txt index 2b4b402865..e9385756eb 100644 --- a/Resources/Audio/Items/Medical/license.txt +++ b/Resources/Audio/Items/Medical/license.txt @@ -1,10 +1,11 @@ The following sounds were used from freesound: - + herbertboland - heavyskirtmovement.wav - CC BY 3.0 vinrax - cloth-sounds.mp3 - CC BY-NC 3.0 -lordvanye - skintouching.wav - CC0 1.0 +lordvanye - skintouching.wav - CC0 1.0 +FM Synthesis - healthscanner.ogg - CC BY 4.0 Additional sound effects from https://www.zapsplat.com -foley-cloth-denim-rip-003.mp3 - -zapsplat_food_bottle_golden_syrup_cap_open_then_close.mp3 \ No newline at end of file +foley-cloth-denim-rip-003.mp3 - +zapsplat_food_bottle_golden_syrup_cap_open_then_close.mp3 diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index bebb31ae7e..f6a664ac9a 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -141,6 +141,8 @@ state: pda-internmed - type: HealthAnalyzer scanDelay: 1.4 + scanningEndSound: + path: "/Audio/Items/Medical/healthscanner.ogg" - type: entity parent: BasePDA @@ -493,6 +495,8 @@ state: pda-cmo - type: HealthAnalyzer scanDelay: 1 + scanningEndSound: + path: "/Audio/Items/Medical/healthscanner.ogg" - type: entity parent: BasePDA @@ -513,6 +517,8 @@ state: pda-medical - type: HealthAnalyzer scanDelay: 1.2 + scanningEndSound: + path: "/Audio/Items/Medical/healthscanner.ogg" - type: entity parent: BasePDA diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml index 6032d5d0b2..0ae2385e03 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml @@ -16,6 +16,8 @@ - key: enum.HealthAnalyzerUiKey.Key type: HealthAnalyzerBoundUserInterface - type: HealthAnalyzer + scanningEndSound: + path: "/Audio/Items/Medical/healthscanner.ogg" - type: Tag tags: - DiscreteHealthAnalyzer