From 3dc913fadc5a455bf38fb578b4bbc1db93143f03 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 14 Jun 2020 14:03:28 -0400 Subject: [PATCH] v0.8.1: added in loads of new sound effects, primary for combat --- core/src/main/assets/sounds/atk_crossbow.mp3 | Bin 0 -> 4656 bytes core/src/main/assets/sounds/atk_spiritbow.mp3 | Bin 0 -> 4248 bytes core/src/main/assets/sounds/chains.mp3 | Bin 0 -> 3356 bytes core/src/main/assets/sounds/chargeup.mp3 | Bin 0 -> 7848 bytes core/src/main/assets/sounds/gas.mp3 | Bin 0 -> 10728 bytes .../main/assets/sounds/health_critical.mp3 | Bin 0 -> 8904 bytes core/src/main/assets/sounds/health_warn.mp3 | Bin 0 -> 7464 bytes core/src/main/assets/sounds/hit.mp3 | Bin 8678 -> 3072 bytes core/src/main/assets/sounds/hit_crush.mp3 | Bin 0 -> 3864 bytes core/src/main/assets/sounds/hit_magic.mp3 | Bin 0 -> 4824 bytes core/src/main/assets/sounds/hit_parry.mp3 | Bin 0 -> 3600 bytes core/src/main/assets/sounds/hit_slash.mp3 | Bin 0 -> 3192 bytes core/src/main/assets/sounds/hit_stab.mp3 | Bin 0 -> 3168 bytes core/src/main/assets/sounds/hit_strong.mp3 | Bin 0 -> 5688 bytes .../shatteredpixeldungeon/Assets.java | 34 +++++++++++++----- .../shatteredpixeldungeon/actors/Char.java | 17 +++++++-- .../actors/buffs/Combo.java | 4 ++- .../actors/hero/Hero.java | 30 +++++++++++++++- .../actors/mobs/DM200.java | 3 ++ .../actors/mobs/DM201.java | 3 ++ .../actors/mobs/Goo.java | 2 ++ .../actors/mobs/GreatCrab.java | 4 +++ .../actors/mobs/Guard.java | 4 +++ .../actors/mobs/Mob.java | 4 ++- .../actors/mobs/Monk.java | 3 ++ .../actors/mobs/NewDM300.java | 2 ++ .../actors/mobs/Shaman.java | 3 ++ .../actors/mobs/Warlock.java | 2 +- .../shatteredpixeldungeon/items/Item.java | 6 +++- .../items/KindOfWeapon.java | 9 +++++ .../items/artifacts/EtherealChains.java | 4 +++ .../items/potions/PotionOfLevitation.java | 1 + .../items/potions/PotionOfLiquidFlame.java | 1 + .../items/potions/PotionOfParalyticGas.java | 1 + .../items/potions/PotionOfToxicGas.java | 1 + .../items/potions/brews/BlizzardBrew.java | 1 + .../items/potions/brews/InfernalBrew.java | 1 + .../items/potions/brews/ShockingBrew.java | 2 +- .../potions/exotic/PotionOfCorrosiveGas.java | 1 + .../potions/exotic/PotionOfShroudingFog.java | 1 + .../potions/exotic/PotionOfStormClouds.java | 1 + .../items/scrolls/ScrollOfRecharging.java | 3 +- .../exotic/ScrollOfMysticalEnergy.java | 3 +- .../items/spells/WildEnergy.java | 4 +++ .../items/wands/WandOfCorrosion.java | 4 ++- .../items/wands/WandOfCorruption.java | 1 + .../items/wands/WandOfFrost.java | 1 + .../items/wands/WandOfLivingEarth.java | 3 ++ .../items/wands/WandOfMagicMissile.java | 8 +++++ .../items/weapon/SpiritBow.java | 7 +++- .../items/weapon/melee/AssassinsBlade.java | 3 ++ .../items/weapon/melee/BattleAxe.java | 3 ++ .../items/weapon/melee/Crossbow.java | 3 ++ .../items/weapon/melee/Dagger.java | 3 ++ .../items/weapon/melee/Dirk.java | 3 ++ .../items/weapon/melee/Flail.java | 3 ++ .../items/weapon/melee/Gauntlet.java | 3 ++ .../items/weapon/melee/Glaive.java | 3 ++ .../items/weapon/melee/Gloves.java | 3 ++ .../items/weapon/melee/Greataxe.java | 3 ++ .../items/weapon/melee/Greatsword.java | 3 ++ .../items/weapon/melee/HandAxe.java | 3 ++ .../items/weapon/melee/Longsword.java | 3 ++ .../items/weapon/melee/Mace.java | 3 ++ .../items/weapon/melee/MagesStaff.java | 2 ++ .../items/weapon/melee/Quarterstaff.java | 3 ++ .../items/weapon/melee/RoundShield.java | 3 ++ .../items/weapon/melee/RunicBlade.java | 3 ++ .../items/weapon/melee/Sai.java | 3 ++ .../items/weapon/melee/Scimitar.java | 3 ++ .../items/weapon/melee/Shortsword.java | 3 ++ .../items/weapon/melee/Spear.java | 3 ++ .../items/weapon/melee/Sword.java | 3 ++ .../items/weapon/melee/WarHammer.java | 3 ++ .../items/weapon/melee/Whip.java | 3 ++ .../items/weapon/melee/WornShortsword.java | 3 ++ .../items/weapon/missiles/Bolas.java | 3 ++ .../items/weapon/missiles/FishingSpear.java | 3 ++ .../items/weapon/missiles/ForceCube.java | 7 +++- .../items/weapon/missiles/HeavyBoomerang.java | 3 ++ .../items/weapon/missiles/Javelin.java | 3 ++ .../items/weapon/missiles/Kunai.java | 3 ++ .../items/weapon/missiles/Shuriken.java | 3 ++ .../items/weapon/missiles/ThrowingClub.java | 3 ++ .../items/weapon/missiles/ThrowingHammer.java | 3 ++ .../items/weapon/missiles/ThrowingKnife.java | 3 ++ .../items/weapon/missiles/ThrowingSpear.java | 3 ++ .../items/weapon/missiles/ThrowingStone.java | 3 ++ .../items/weapon/missiles/Tomahawk.java | 3 ++ .../items/weapon/missiles/Trident.java | 3 ++ .../items/weapon/missiles/darts/Dart.java | 14 ++++++++ .../levels/traps/BurningTrap.java | 4 ++- .../levels/traps/ConfusionTrap.java | 3 ++ .../levels/traps/CorrosionTrap.java | 3 ++ .../levels/traps/ToxicTrap.java | 3 ++ .../sprites/EyeSprite.java | 2 ++ .../sprites/NecromancerSprite.java | 12 ++++++- 97 files changed, 319 insertions(+), 24 deletions(-) create mode 100644 core/src/main/assets/sounds/atk_crossbow.mp3 create mode 100644 core/src/main/assets/sounds/atk_spiritbow.mp3 create mode 100644 core/src/main/assets/sounds/chains.mp3 create mode 100644 core/src/main/assets/sounds/chargeup.mp3 create mode 100644 core/src/main/assets/sounds/gas.mp3 create mode 100644 core/src/main/assets/sounds/health_critical.mp3 create mode 100644 core/src/main/assets/sounds/health_warn.mp3 create mode 100644 core/src/main/assets/sounds/hit_crush.mp3 create mode 100644 core/src/main/assets/sounds/hit_magic.mp3 create mode 100644 core/src/main/assets/sounds/hit_parry.mp3 create mode 100644 core/src/main/assets/sounds/hit_slash.mp3 create mode 100644 core/src/main/assets/sounds/hit_stab.mp3 create mode 100644 core/src/main/assets/sounds/hit_strong.mp3 diff --git a/core/src/main/assets/sounds/atk_crossbow.mp3 b/core/src/main/assets/sounds/atk_crossbow.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8f6837d5d2b476e878730fe467779f1b5cda7001 GIT binary patch literal 4656 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/atk_spiritbow.mp3 b/core/src/main/assets/sounds/atk_spiritbow.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3d1a1c17cd1a04f5dbe660f472fc2ea68efea522 GIT binary patch literal 4248 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/chains.mp3 b/core/src/main/assets/sounds/chains.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d2fcf7068783ef53319bd6cf2223bec043350ed7 GIT binary patch literal 3356 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

>`z*y*R2_aJcwWDlO65iL zfYUh|M|AMkPNnCZ8edbi-)yaJ7LL6OJ`O5O+PSw<=w#YzeMOUx2uDE!kOuRJ$3>}i;8j~?UEV3Z2&O-8=6#%`y>mWq*^3w z0T9a`PbHZe&Z!0gM2rf5ORD0;u(S0tilQBZ@(Y5Zi?}3UwV8MgH1AmRI8i6&onEtG z&}w3jWSFj$1c+33+A}pIc!xmSEF7ZNti{#+-u?V9jbd=RH%q|Hy*8sXY@Wzu<-X=4 z`z3jZ;oB+z)A2P}kTVeFN}AjL9*-IP`GDVoV3H)915YEfq?f_4$5pLlO8r#&Vp^ue z5mLY7|Jd>U*Ab0a0D#?W0syoo%f1tLMQ=(hy0B+{m$8Kgk6c!muz~*No;Jg`p8za4 z$6x_vg8I%jrxs3|`7c-Z&qJ-fMv)WqM0cMcM?Wv&hVWmcJp~+IQ(H_|O zf8qc6#F7%mx<7#qn6CN)n=2~!hHD*#f9+3B=HJ7gfP> zy`TzYOMwq1Qc+Nl5`4m)fF-A~@o1o_e}hjTF!WDRn&ntjq8b3KFvXc?Jse8N-n%vq zu(~%u!}5vz4SqK8iw|lBSfz?oQ79Bhd}5u<0swmLJp0~h+J=*Bsl0!K{}27Mpyno4 z&5nj9tO)RllL{~q2xNen++-e~fMetM%UkJBZw5pEG^N>;T@gkk%Ar98i7Zs;f1arU zKp;Tz-_}1vX{NDjcNS@&P?RE-HQ4X`|6J#9y#LdGB1;y?iwJtyC=be2Zx}60Kp?z zg3X5S+q%1TYj^*Bb@#{Zs&lIAbe(>mr=Rzne&6m!UuO;g{_kSs^xWa^vxk2#egJ@L z4?sr7$jHjd$;ra`{o9X{%cD} zU0wq!%r7V)fb|bVyx0H$B?ycI3;|&D-Q&O!)d49}^4G%sD8}1v^r35kX@hzHhvOErY_NdK+ztW@X zun0d)ueI;K|5(-Iq%~^qaVrb|%88ZA}{ibzCu~D&nWw>s2f0 zJ~8wF$n=EGzl;T|u1c6@p#f{~c(G0E@#M#wbNg>pMafTrHF|wpH!Zr>Lqc~}ao1FT zeqE=F+N7_w6NUA9NY1F$t-hy!o32{596#7n>H5UwW$@+o^{0-*hv>H3E@$mK!=gIp z7S%ta+$vjM-aLcXJWV5qUS}JxN`KY;evSV3a#NK4YJs8ngmLubXB*6>TGNRI50`&kTTq@`L6mTF5se4_tTD=i6CPQ z3}{|F^eD5>Szb`h;8EGl7HRf!70hGdWaxNxh?%C(dJ^7Rx3pcmF}CyT%A)wr{1Y7= zztzOEy6VTbU0$7aFMJZTXLBORd3z%*K=a zvJ=Cx^A8)Y7N3YdUp22S$N0GT8f=2t#Pw)OZP>I=`HU*99m88YMbt9eWwIu;l#`hD zDf=5wUdl8plYHoul;TR&wQwQskHueY(9J|5qDQ8ur(wSqCqBvAr4{{(G|b}VE_QH$ zrftU2c^Vu^zr-unC*tPGjDS*EJ$YiS>f;bVH9Ge}Ps00E-rh?EVPgte?d^Rd?nXki z1=^zX_l9?Ll#ipYMU@JrWJC;2fFfx348~ecfWGz{SVVyOILvQR08CitiS*BOe~^iQ zQ@c3IWxrKrK=oV2xody`*NrcZ1P7UUOTMh_yV58Or3fHqI9=w?UPzI5I9+O)KhuTY zd6ly9N0)j-DTg*|TmmEjhgjTCJB09Vg4-VQwn|v&voSLVr~!*UmnRgvlv|s-uy?Am zDSfIr2X5<@9k(2$jPt$0w&ptu>cL|~G0WVRkgZ)I`N)W#9Cv?Do@%Yt);(_((GE$y zaL?1bc@mv-JAJ-|_^~beGT34{N8@V77!MTHJ46s=M-a6Mm=5Zrn~vjz9{n^YcK%!( z{z%d7mRl>Iw4ym9*x~F&LE7WwI;;&||0C2Xh&p`uYGjE%aB8GLrK!$$@(m>#{rdCw zr)c{L4XHUHEI~-(yqm5~rVh=|HER&l0@jRN!Vs7niK;oBi;AEdcnX=DJpxk)689;)vGDeThw&p# zw4e3j=i!M*op|7;w(ssXAnl6Zu*Bhdn;L1lHY~KjeY8)j29pHSY=j{0Dep>8 zO&8SPsKB;BF2Jmb?2}n}QBvKkR@dTyqOOvjWa^`-4koZfX$iOvwwlBpdX0k#P3EPP zB?D1|{Q&9^8dy6#7Rsx=HQHU#hmkAEC-Xiu3`$u@jlLEi_=W&xZTJ>r1{ zvmuq75iMGglv#dCGdYaRCxh-CXXI~a${t`%+5LI-m^in-Jl&>GL~>X`$EB<;m~YVG9}T`r)W!t3yZVIF)NeV~>-qD2yyvwIAUxCa-=yim z$ihGQeG2r;pPF)Vh_(2Xb!rYJvzya=wAA{pZ$7(KaOT{3($o$q7LCP&Nkrp=g|i3Z z5}hXK(rA86!M_{}u}+J|Rx|c&Sw85&Ej@*^Y()s&+$N)1n4N0poZ4Q9g@|d&>j^PE}Xp zz^lAc$wMs>E_6n+N%b*g?6KsJ*cdpT$j*iyQ585+0AO-D7*30Hcw|=4*jNq1O70_d zK}|)Q)=xPVFQfGsLZV(9>Hvu`Egu z&jXh^GvVFqPHcviJdPwE7Fc*Fc@vqA(H4c09gn*;7hqrv_nkuuT~d=5=kz3T;R@bo zbsIP{OVvWC1L-SEqV*R6I&Aw#O6N2kD#~wfxtq|pEv?H07DKAtILt)M$m}9=)EKpz z5f&~1i7>7QTk7X2ny3Vo6{X?>ok$`)gf zUK~Xo)IF~~1YxtqpF(SGHc~`MdN+TomFVU`I@^S5%uPS&4FU} ziAmq_sP21vmDYP+-w=eq<=qOwR=v-&kDD#y3+lAa+223&-Htr<`ACgPP}?&qK~tqK zU4j%nGnp&db(X;paCxaOt3!C^Z9CA^ltl(5F{>u-AneCdpyki!oB&xd^kpfC5&Ooh zcHoUKlgi^Z7*sdr8fiX|!8Bs_$QIbw?+yKEVBV)>=G8^$)=OQ<#;(FikIfnIq2b7% zvUE+~S!qaMUAA&BA}USKm<3y7ewZ*{HJ4w8i(I1#{)6G6?WO zO7LwqT9=ria;w0yG0x7W8J{;iulrfXM#{9-BFGixktkwhI8T1@8Ud(xd9r&>XQa+y zhQI_t$+P2_sq#|mU54q#^D7nQ2m@iVBtS)Q90<8@ir*6kx?!RJ5vJM!-)9v8;84Qb zuXlHH?FB8#d*^aVGvu2v+(P>}((ieF1rXUuz1YU`>Gej{blai?$bs5Z0-LAR!r9dC zaI_0LdXVQOBs7>YFD~2H&I_+|D$G^fYOBXj2_RW=*rMzzvCugycrL<7dW}Hgn9OM- zWySvIX{iV8?5w7G=L?4)`MjoKDKfj*ov0qYhIn$l@+8vUleWD=Hn_2ZQO?l>1jvSQ zx=likEF$TtY2|87BOkV+#NRG=y=>`++?_uS3#prb{V}}>&S*#4Lq(7P?Dn9nE$d=V z6CzS(dt--Q)gYCo$`?Lc?~A=?{O+b#}3;)>|njkuujoV>jNz zFdEVa9|f9u7E?T?2_l~h==!c|JlcqUq`7VMj<#p-NohFmrENoFA<+mdyJFZLztq0$ z@;s2xcNu+Q%Sx(lm^osd8|7}u?ON#mJIJvyled-AnWmg}SURgGqJ|5-s9J%1eYVl4 z_Th}J&C9_?L1c?r>X$YP02I_7jnQvPH^qVB3U-PrJzr-OsO3)#@xG6>HV{N^kKMlg z{l5H(`2PCgl0me4Y|?CGsa;C4b+({VxI${|_*DN-wXBbe```Y|pyg+HXG5|)sulZ^ zaU#~S%g~REhyrBP?nIjC^<8XQipKhRn6tnD!X*%h4Jd#I(2)y`6c8dna_VLmbVoTw zHsH2Q#d>>6!#gVZwfB-rIh65bjl2SE_`?H*@CC?f*&Fp0JJ@=M4I(1V3pS7VCN+~S zQ3TFSal#bYGR@T*iW8}4GQY%pz!1_9qwUqQdhHLhGm$>N`tpBWw&F^?n#td)mK<*4 zwb}o5e#GnWwN}I%BN{jM1iS?d0cH;}e=Lp25IL)RO-}$sxwkL2GhGU!GHY)7Dg87Y z^B>0ZgN@0ei`@9rh{Wa;N7%D8h0tibcTew11q>cva+Na9&UfY|zl9nS^xeHi_ZqvMY;k}a4VJ9RM1E8(e zpuq<~A9JzVhJucsCX479+S)4rir>MsEgGNH&9@t{e(`B6=U&r20I>Md?OUd0?;`j( zNFV`1Pg+twGcQ&_TCZr~Q-R-!$Hf_r2Soz<-zKDjf7+Sx`t6Csla`HF#>*&41`T?I zpIb1ru|DAIl1;sJk!(oH1OxPclL~385WiK7mehna3T8c4^2!)9&jdfJemB)oGCUO% zL-d|X>#~jec!eK&U{^EuQP;lQBW87&$qq{yYw!rCsLY5}%#gcY*km$Kmcq8a;e)xp zH7<07Ww{nwei?U5(AgE8CM=f1ta0>^8FPq&@zI_}YnM@oEPb<5X{2Mtf`NeF5BaQ& z^#2^U5eag^O@jxoggE(5r1w9LPF`WPSv4whL zHp9_RUsog=fLlny3QHrX#V_n=sDVXLD=kb5c~YLV3aLN|KXA5>GM`_?88D&+7<51X*+2rLkcyVc@+v1=dqg z5`gPrpXR7v--XRa>6iwr>Zb{{2olpN4CpkSt%yhqC*@!P2p7D9o#AT1X*q}~Qfapl z`T@Gl}a$9x?1C9?mjHB zt6r-^;m{xftMPw?6Hr^Kn=~Nvuz^dwh25#2fZ``alPFd2AA0@G3qpw8wow|rhEX-r zo-_dT9IRAOAWiNMbGLtTx%W;gY4Y1Wm0f;^hUI4PjBD;k%I4a19tcl;b|L`qV09;k z8hjkrmo)MI@`*jmm*RPeukW+C(9Rm}i|%(m(YgW}|faQf#$} z$aD)zih-x31fQ`q)6K|@_T(DXXS~I9Qzo_klgUy-<5CPA2PKcNaN4;ZqAyQmV&Ar@ zUiS}13^yo@o!7-4lx1WXD#}s(W~a1*zgC=+RK^kYj&In=!90}tV6QJl5f{tW^~bf+ zKq}p(ZfGuZb;qnIZzg@0!gWq1-9xUITLvgm?VuaA#?U^&sSY$%khI7;{xjO@scMyZ zHH)^W3gq2zG5yY=ub_{26JN}Eqyb2klAMyBK73@7QBkT-uAl;Qm%7wj7XXh7d~ZM6T88A=TdpOCLztLTs%`>_o)L!QO|jG-^{y(px3#u>RuhbMmKW5K0i!KDBdHQPW;7TFINm- zQ;6Poqq|L});ziJ|W;9+HD6D_k9Akvs1-)@$z)q!xZ z0~Eq)gTPU$suXZeEq*=n?2}U-t7DrG!Qsn{`Prig2N!)IApn5B6NiG<1CnS4CS3M# z(l}~biKyudmC5{F2_b$XEc9d_NAy_r+m(=4ms+W+J}g4H+cNBnewT=#x&WKwxEN|4 zsDEMa|MF$YuB`?6{!=u1@msz%n@U}V=<(ZAkL-QlBhk3MuEkqQsI8-c5Q`iDw*!XH z&s0-TdHe^Oq#ZCCNR~Qr(K%6KBgh)NN&EBP=gJsTyG^j=<^-#2w-1n4{EQ0XV8sy8 z@!n4RGHgq^V3Sb5ittNdj8#J4oFK|mND#?HF(HD1*N_=$RpD;fhF(~ZgFby|mb2brUswDBLg8ip=qq>{4ie<*cTdviT>Yd1Dl ziFc6#F|Yz?e{H%VdqQuI!x!J{jQE5wJMkD)kk<{^Fsbtc03plG|ad6N zStP-@#8EJ;%kzBk3%tv^a>b$f3nR>>(z?*lG1I_C2%L!dp}MOljwS%ZXJjoM1@&WO zAJu4}YcQks4EL9{ze_yYR~##mI{Ms{r0dT+F5e&yiK#b=foqBXm>N#nnG$0n0<$S{ zMan!{?v`6I)}a$C91@0Nm#;ws=2J^by%bpR06f1L^F_Hshn;)pv>2l$uovTU-caY8 z&gv*LVGVR|>Wa=%x&1~9zx-+(kJnw6`aDlcd=d?TQeXyo zMMMPU7LkOHziZFdNRVhKR2rsStxQUa4%Y(D5A=-2$dx3TJdh9^A|j|Sr&#Xob?Er` z#^j-PJw^%J*r(*A^VfN}IPCFnJVLoHyaVio!K#4n2RlmxI^I+<1^czNqa_${=0|S( z5*4um+ZAzm2@88m{N(7FY0;6qVs0Okx*9`md)050QH{{&3D+D&MvCn?RHz*tH~*Fz z^{C?)Xms1XKYvF6rzvfAv3v@nsH=lgfW=>PVkvOmx2zxd8Z7Ds7MzYtRb`TLhFXx} zVx+&-0j?rY1$=HoP0lOn#=;ISv5+uF4X z)QI_A|A6FiG+AjC`rqRO=|QWne|c#m4{uU{Uuu+<3UJUaOalT!dmiEQM8rqs5Kt;% zx7=_^2q-C(x-NQ!(uqYfC%$~W#^^NQT_xd$%F+h&HdlNOL-mCG=G=I^93-6W3W|{7BmDs!`@c@+;{ zvkhXcNv6SP89&~A(ku9EZ6%~wHvaZI`j5K*`pos3w+VMkxt_N$nF+Qgr((KhGMW88 zOq*PWc87s?q_7fTT&`s{7g|0QO^eBy=;O{Eg}VZ*S{6rq5%@yZU}Yifj5%#AUuO+Z zdvl9MQ5C;wFg=pnTT!~!C%>(G*N9*&bNMkQDP!jetu%D_wgJ2>5v^&2vrJBlS4V*DtPq^ugagfCGYOm<* z7R+pEzVg*!NHCMKVTEajXTOTEn`x-?vz_{?ehMTG+-#eVTZY-T+E;!91}~+DHGHsB zEy1_XfJ23Z@B!R1^dW5Ekh+F?=S5NleceCkYtDgV05A*Jbce>K*8s#5#0nI!WQQ8l zbB6SDGrxHreIje`+^Y83Ki|4Z00D7gBAxwB@We7RG>3lHF?Gq_M&1m1|o_q*@V z&nd5(@0M9k6a>s4Dx;zBb@SD2+sc9#Und6#76n}Zx5OqEtkr|c6j_9Yrzmpa+~-JY z$g&!8y_eJ7yo|XuQ)Zs5=j=0i+xYO1w1{2~8;gWEs;|IbgsT^El~!%`Sqjc-2{VIW80yS4MN*1-Vk1IExJD|vf^<*$9G_o*>TbPqB(=&WD3Iw_-feARj8-l(SMJZ}Z# zbB5M2-Sav|00F0lyFiVQB602;D`XH?p`EEW-4vPZ* z+4Mf`6N&W17?U5jFVtB6gy{^0*+JyqdXuK$LVLht6nG*!{iafxisL4cm*t=7nT($z zM*1B2{YFzwAiB&fs`$?(_P>Kk&KsM{OH*kERD;<(*rYU@^<|l!GB510@+J72!p%iJ z)AFi5>rF0Lj!G}%C*_Mq`skR7vGq;oebo_JY~1mDg`-%sJkQ>myCm947=De{Jw z$X2yooex>)TAk;wrP$vrJ&!!H=~P0D!y;mm{K8ccY3?qZR|;1=z{b;=werHfUCpYd)Y#Q3u9RSA;S6{B_Wh4mV;N~--!pW{ zQOCScchK&ioF57EF`|6y4=ANmA}^lmiB$7c(l$@=V;tRUv5p|ncG3CzH#ZN;+&@bq z20%~tKi(u2nks)X+b9}uyd_N_C$R_Zh~^3W4ziNVn3waf2IF;xt*vsnYkN6g`( zD7r=yZX1FTxQnMGG`5p~URy9S&BGMR8M; zy)jNM>u2E*k0F^&pJ(NhX>wSgdC5^bj@8D!VqU|?oe(7`G!#cayBsC`cYlXw-~@r6 z_E2L`z!HOvX#ajbWp$YBzReps6&wwIBAxV6jq|fUlYPhjaH`(`W7@{mgE2l|R=LAJ z@9uW%dOjLZPLSWZylDMNF{e!m3G1Wyq=z~(vXkT@=DG=w!p~+TNUqRf(6GVLRCOEV z&t1_RKpQVD^cGnZWaT_Qd))>U&TE#RwQwlFb%Uh#R^dYPV?QT%0F3^ zgUv8!ThL?1A{BQRpAAOchH_olLPmt2CHfg!fw*jPNZf0oTaHm-TJ%pebs_1OuPl6y zOKSH67N*-D5c6DVx^8?LFsqQG`}4sYOC&Z9QjWQY|EuHRhhY6aL}qo6Hj^C0)i;^_ zccz$_`VOTye60&juFp8_R86f;% z^8K*aTF_`^XWjU2ufAt@oM7d!y|8)W3|T5lPYs4Ay&x4B`nwjra`u0YK2`ol0RW8r zTKc9z+y@wX{TskY@b;wfggzJ^)Fc1ah;mnW5x@izmXblV2%0{Av==`aw(y`BRU z_hYz@z_avx8j@)OZ~mFRlJ}ctWw^ zZ}~t7D8L87hWGab*uNCS|J?b#UVRUG02p_Faex4Tr#%1w*8lv3gF2LJ#7 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/health_critical.mp3 b/core/src/main/assets/sounds/health_critical.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b23e4c3daee7a14165158c01b86f5351e8dbacc9 GIT binary patch literal 8904 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/health_warn.mp3 b/core/src/main/assets/sounds/health_warn.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cec1f645efd997a8ae0e10518e90c0593e461de2 GIT binary patch literal 7464 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 K0Qi4#{{H~$0@J+! literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit.mp3 b/core/src/main/assets/sounds/hit.mp3 index d122b684b6cad82c1bc710e0d7379e688ccba8db..714f45106e69c962fc670cc54efa3215800296f0 100644 GIT binary patch literal 3072 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 Z6_8eSLxloj34xe5f?WTOcz?C)KL9;&lq>)M diff --git a/core/src/main/assets/sounds/hit_crush.mp3 b/core/src/main/assets/sounds/hit_crush.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4fe3c4ea3020a054916e86b84d7f685066ef2994 GIT binary patch literal 3864 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit_magic.mp3 b/core/src/main/assets/sounds/hit_magic.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c89c5b20800883c8eb10191f1b05e91d0aa0b92d GIT binary patch literal 4824 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 E2VKXu6951J literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit_parry.mp3 b/core/src/main/assets/sounds/hit_parry.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3d84d7a6b00dd8394bfbd990ebd64730e49fa46f GIT binary patch literal 3600 zcmds(dpK0-1IN!?m?104W!&$w%B2_c0?IUonVxMarqxD8%V1WB3RfPgVnzEu}$9;Vcy5i*A%l1yc{oYkD8Rejue+$ z4A;b5%h`+hC|7*$?PY;WtM>}KHKej7e*w(v6K8^LBv zhV1+xYt?N*q37b7-H+7m4?9xG8MEWvs&qSw%VavK^(!5J&17(fAM8EpuQwmwF!H>? zBWm-`(M_<@YOs-N^5Fy6b6fDuN_1KDsG!#K&YSV4Zq8iPR2s=*>zvEeLT zvA3nKXU{ayukxLm9b%c=%*XrhBczxU({cj@h?pJg#)SHi*MwY!{G*BE{k7D-s$Ng& zI_Dm-bI4~E%WiOW&8N&bXMI@1SqIwrg=^`%Z8o7K-`Sry)$d?9f)Svqj-h#AP;zte!&eV>!7*^2Pss-URa zd6=bm(7>*_apPu2pI|k;nVD4{#|X0-%AEQ&E!r40g7MWVC+}*iBf%Y(I5nQPc$|xb zCpQ;vB*AlXAEcC*FfuE0Zpet83uFBjJhe%k0w1)cu}<$<;EYjtOTzJTyC|}Z3g>kX z8Q$z6pA1}+?=-3@PJq@~-8 zB4J|d>C1qR6#2N;Vh>e4%RUz-)o2UW%=u2KJ1gQ(;^lc$h@&*owDc1p#9y{gShsY0 z8n>w>n=AFX3$98^1NPnL69k4j$aVa+^i;%;hQ>K{}*ea>=bF*8CnWiq`)o>e$=YQn^|`cM!X@tlH1= zfa~V$6&hdswV2{0d%Ci4(8j|=A*5FeRVHyA+*0|-mtAD8n5qrfkal=P$@sq^JMaW} z^dxjHXlB{Y+EC+omcFxUG-@n-mGwYy*Rxg8*6bdQdZSm#=ci|Ir#^9afeyGd^K7=% zeOa~M_3Vwg&F*a1`2j?m_PSx)E7 zoW3jNdfu_}=B)=Hl=BmSW~DJEu9m^DfEmcQ1qB18{4Q zCp1Ez#K60WOckcI`)om@%*I5i^MzE2+D=dU$c~Kq@F*v1LOeMqY9dJ z;PQx&^~VCrjFz}BW*hIoQCmXC8@U9WNq9{Ywp+WyCd-)4c-r+g=LubbyFPW$I2u`TC)WEiVVxmDy`Flw&J(TKoD?Z|ZbI3)8OrFMwbz z;5Y!l^f@ZLn-@$U*(x$sohqoux5p@u0r^c>yVTlQz>)GveeV9I3lh+D`RsQ28UWP8 zBF$3wpx;=7m3+HMAa`DA00qe60l@M2)VxHoUjOaEEqn3krsg=_-3#Z0)$V=*Intl~ ze`Wm20rX12FZctuu!X`waDx?$K&nZbsA+*zYrM@z&eM>3VI;OABV@lXj5Z2a3z-fh5w&afAnvuoOY<_;S04!;fjc5 z!99Pwm^%rEL<3;mt=xSslo@YGKLmo3?VtT$Y2crRz;zM!I?a6A@90qFIO|7&iv6lG z|MS0>Pa-+r>|cmB3k+~5;43L`72rhhU`xIX^UeNgIDzGNu;9B&dBddX2$)R9m;P@$ zgZi0_CW!b24I$^{wFIV?fIQ?k8Na;wcR!q<=0_?(&wHv1aC8Cbu`e(ArZdPt9%DN6 zyT3ptX)+!ViTEbtmp4QHH!%;baV7wIA9sP`9s-A_N_ApqOr%H;t-m-g@a{{zYh Bu8jZy literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit_slash.mp3 b/core/src/main/assets/sounds/hit_slash.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..72f89100ff1c53791f6b5e67a626fd5ad248db98 GIT binary patch literal 3192 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit_stab.mp3 b/core/src/main/assets/sounds/hit_stab.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..aaffa51b7627cf416f1cacc9409ee57739457873 GIT binary patch literal 3168 zcmds(dpy(MAICp)+i1Dv-UtyxB1B2KjAo){rX>qwZmo2;`AHXuYvzaD->{6;}0qa?NR^$kuo+ZQDdI68j=tDf3*FK zOkQN+K|-?up<~ZiA}+v0MWjCCX^?J*X29>;qeY)W5^{ap4Swf+)%@Z2T$oBk3b*+1 zqZPemhfymTU$-M&H!K#riMk$95Mo;{fA|4E}Czo`&p=@Ec6c0llwM{iu#pj zn2)J#lyH~W@urL3euFazm-wMhf_v^>rnqdInvQfm^I z?C3FA+1F=}HT*D9r%-cx$KWQT-XseT9_*;3_C17)_$|-e?ymzItre@mRdEv(c3I@J z#Y>~1*ZGxuPYg?sALik4LsvP@1nQrsaofZkK7u4GIw@9k?X4R2sNoNhwsfG(N5@qP zGvA*2(IwjL-0TdImmh9)g~6RH4;Y*O!`IaAS|Z3dj2S~jdf+QB-Vh6h{)*V8*a0+ru3Axw-rWmYO)Rs(C%m)QTMLRVU6rHTy_lFb{_6KEz$e_MFLXh* z;r`$uvwMC%US_;=lk^dxAc^xCP-Vp*TfRsE1s42qo0FmPE;ZX(_o#h+lxEOt&KEZq z3&P{^o4WkR+q3oeP==WiqV{5ZIkCd@>J1{8BNukG-??@ms>e;EJ>Ghl&Fvm!JeV(& z8+c!$o{+#uMt_;1R$wo*7`NC+hd#$_BDpb+oBMCeQ>)9Iz_tk4NSz$lNBSf(&PfZ3 zF3!!_tl_4UKima=@a25K<#!+okwIvor;WSYyWp+G=Xc<(#^f=$Fwv*3&F4(3{gJ2xSYTvVi&$v)}JX7b2W-kSN-(vG@$Lk5S_;`SXS z1~#l@whPata#N*IhniDorSo17mI;9#OOHaEPWEo(#)cjJu78k-sX4+tK#w};6kL;ZC zgrT~c=VCNFRJ6g)2Vp$i_02LPe>^lL-_CM!x4ixFLWSY2w2x&*s?cdhc?Jz~#k)%K zmM;2sd1}Uej^qnz^a>3&bZOAPG(1q^;iX;etTStt@`4Kj>+Z4>HFwCU zw-#{8mO=WZP74JH&I|veT=&{AUFqsgg{MUA}E9j83@Lpuc{oUO_7Ze7Xn7 zS1Q}gjA9~=5TQDQw@K8Dnhnt%;M;+ma97wxK{>i`lK zx5HugSQN41MY32;6rR7>RKsWO9%lt?bpo87AXntLvEWfjrG5J?sGVT1{NeCvZ4(hk zkq;pnCLilK-P*DqR$j^@B&eoeaf@f8lOf419@f)_-h#IA;20KbR@lZZn$#ad;ZB;8 zo-RE)QFK(rms;KtY$b778D`9TY-DWV>hG+vcHa1a(y~wZ;_CfX6+bCtngAiUgTE%} z`8)QXOw(XA)M}xmU*4R+diJ!YHM3B^1r^dBSJ(o;!BNG9ykZ@bz&y2Zb@uO5ZKg+K z)E`~SHaej7Dg#ktT~NlV>JMdmZNA8>+KD-23Y}I>@I^|#W#*%O`sxu4TE;A&J%2V78#2B7uUI_zd&_-8t*`b h4g&iqdhb@R!oRFPA=&|eR#tU20l=IB0Al~5{@-;`;)MVJ literal 0 HcmV?d00001 diff --git a/core/src/main/assets/sounds/hit_strong.mp3 b/core/src/main/assets/sounds/hit_strong.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8f477afa2431a01098a866e69ef648ba7e122d70 GIT binary patch literal 5688 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 0 || !enemy.blockSound(Random.Float(0.96f, 1.05f))) { + hitSound(Random.Float(0.87f, 1.15f)); + } } // If the enemy is already dead, interrupt the attack. @@ -328,7 +338,8 @@ public abstract class Char extends Actor { if (visibleFight) { String defense = enemy.defenseVerb(); enemy.sprite.showStatus( CharSprite.NEUTRAL, defense ); - + + //TODO enemy.defenseSound? currently miss plays for monks/crab even when the parry Sample.INSTANCE.play(Assets.Sounds.MISS); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java index 67b96ebcf..2b41d517c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java @@ -311,7 +311,8 @@ public class Combo extends Buff implements ActionIndicator.Action { if (target.buff(FrostImbue.class) != null) target.buff(FrostImbue.class).proc(enemy); - Sample.INSTANCE.play( Assets.Sounds.HIT, 1, 1, Random.Float( 0.8f, 1.25f ) ); + target.hitSound(Random.Float(0.87f, 1.15f)); + if (type != finisherType.FURY) Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); enemy.sprite.bloodBurstA( target.sprite.center(), dmg ); enemy.sprite.flash(); @@ -348,6 +349,7 @@ public class Combo extends Buff implements ActionIndicator.Action { }); } else { detach(); + Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); ActionIndicator.clearAction(Combo.this); hero.spendAndNext(hero.attackDelay()); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 56d7c7cb2..95f595eb2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -292,7 +292,28 @@ public class Hero extends Char { public String name(){ return className(); } - + + @Override + public void hitSound(float pitch) { + if ( belongings.weapon != null ){ + belongings.weapon.hitSound(pitch); + } else if (RingOfForce.getBuffedBonus(this, RingOfForce.Force.class) > 0) { + //pitch deepens by 2.5% (additive) per point of strength, down to 75% + super.hitSound( pitch * GameMath.gate( 0.75f, 1.25f - 0.025f*STR(), 1f) ); + } else { + super.hitSound(pitch * 1.1f); + } + } + + @Override + public boolean blockSound(float pitch) { + if ( belongings.weapon != null && belongings.weapon.defenseFactor(this) >= 4 ){ + Sample.INSTANCE.play( Assets.Sounds.HIT_PARRY, 1, pitch); + return true; + } + return super.blockSound(pitch); + } + public void live() { Buff.affect( this, Regeneration.class ); Buff.affect( this, Hunger.class ); @@ -1081,6 +1102,13 @@ public class Hero extends Char { if (flashIntensity >= 0.05f){ flashIntensity = Math.min(1/3f, flashIntensity); //cap intensity at 1/3 GameScene.flash( (int)(0xFF*flashIntensity) << 16 ); + if (isAlive()) { + if (flashIntensity >= 1/3f) { + Sample.INSTANCE.play(Assets.Sounds.HEALTH_CRITICAL); + } else { + Sample.INSTANCE.play(Assets.Sounds.HEALTH_WARN, flashIntensity * 3f); + } + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM200.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM200.java index 9dc5200c4..0eb3db5ac 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM200.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM200.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; @@ -32,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.DM200Sprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -128,6 +130,7 @@ public class DM200 extends Mob { } GLog.w(Messages.get(this, "vent")); + Sample.INSTANCE.play(Assets.Sounds.GAS); GameScene.add(Blob.seed(trajectory.collisionPos, 100, ToxicGas.class)); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM201.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM201.java index 6783f61a6..fe93b0057 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM201.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM201.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; @@ -30,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.DM201Sprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -101,6 +103,7 @@ public class DM201 extends DM200 { GameScene.add(Blob.seed(enemy.pos + i, 5, CorrosiveGas.class).setStrength(8)); } } + Sample.INSTANCE.play(Assets.Sounds.GAS); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index 02327fae3..c6808c816 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -158,6 +158,7 @@ public class Goo extends Mob { GameScene.add(Blob.seed(i, 1, GooWarn.class)); } pumpedUp++; + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP ); spend( attackDelay() ); @@ -196,6 +197,7 @@ public class Goo extends Mob { if (Dungeon.level.heroFOV[pos]) { sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "!!!") ); GLog.n( Messages.get(this, "pumpup") ); + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP, 1f, 0.8f ); } spend( attackDelay() ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java index 29921d903..661df0a9f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; @@ -30,6 +31,8 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.GreatCrabSprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Random; public class GreatCrab extends Crab { @@ -71,6 +74,7 @@ public class GreatCrab extends Crab { || (src instanceof Char && enemy == src))){ GLog.n( Messages.get(this, "noticed") ); sprite.showStatus( CharSprite.NEUTRAL, Messages.get(this, "blocked") ); + Sample.INSTANCE.play( Assets.Sounds.HIT_PARRY, 1, Random.Float(0.96f, 1.05f)); } else { super.damage( dmg, src ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java index 074cf8ae6..6141f22ae 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -34,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.GuardSprite; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -90,6 +92,8 @@ public class Guard extends Mob { final int newPosFinal = newPos; this.target = newPos; yell( Messages.get(this, "scorpion") ); + new Item().throwSound(); + Sample.INSTANCE.play( Assets.Sounds.CHAINS ); sprite.parent.add(new Chains(sprite.center(), enemy.sprite.center(), new Callback() { public void call() { Actor.addDelayed(new Pushing(enemy, enemy.pos, newPosFinal, new Callback(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index 69d901193..bbd38f039 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; @@ -57,8 +58,8 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; -import com.watabou.utils.GameMath; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; import com.watabou.utils.Reflection; @@ -546,6 +547,7 @@ public abstract class Mob extends Char { && enemy == Dungeon.hero && Dungeon.hero.canSurpriseAttack()) { Statistics.sneakAttacks++; Badges.validateRogueUnlock(); + Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); if (enemy.buff(Preparation.class) != null) { Wound.hit(this); } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java index 7b8d7eb5a..8ddbd7ece 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Monk.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -31,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.MonkSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -118,6 +120,7 @@ public class Monk extends Mob { return super.defenseVerb(); } else { f.detach(); + Sample.INSTANCE.play( Assets.Sounds.HIT_PARRY, 1, Random.Float(0.96f, 1.05f)); focusCooldown = Random.NormalFloat( 6, 7 ); return Messages.get(this, "parried"); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM300.java index 74dc30875..41f7f1107 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM300.java @@ -354,6 +354,8 @@ public class NewDM300 extends Mob { } + Sample.INSTANCE.play(Assets.Sounds.GAS); + } public void onSlamComplete(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java index 98cd177d9..606ea71f8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -34,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ShamanSprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; //TODO stats on these might be a bit weak @@ -112,6 +114,7 @@ public abstract class Shaman extends Mob { if (enemy == Dungeon.hero && Random.Int( 2 ) == 0) { debuff( enemy ); + Sample.INSTANCE.play( Assets.Sounds.DEBUFF ); } int dmg = Random.NormalIntRange( 6, 15 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Warlock.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Warlock.java index e4a3f2fdf..af9320e0a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Warlock.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Warlock.java @@ -106,7 +106,7 @@ public class Warlock extends Mob implements Callback { //TODO would be nice for this to work on ghost/statues too if (enemy == Dungeon.hero && Random.Int( 2 ) == 0) { if (enemy.buff( Degrade.class ) == null){ - Sample.INSTANCE.play( Assets.Sounds.DEGRADE ); + Sample.INSTANCE.play( Assets.Sounds.DEBUFF ); } Buff.prolong( enemy, Degrade.class, Degrade.DURATION ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java index 7907c8318..b015f2b0e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java @@ -507,6 +507,10 @@ public class Item implements Bundlable { public int throwPos( Hero user, int dst){ return new Ballistica( user.pos, dst, Ballistica.PROJECTILE ).collisionPos; } + + public void throwSound(){ + Sample.INSTANCE.play(Assets.Sounds.MISS, 0.6f, 0.6f, 1.5f); + } public void cast( final Hero user, final int dst ) { @@ -514,7 +518,7 @@ public class Item implements Bundlable { user.sprite.zap( cell ); user.busy(); - Sample.INSTANCE.play( Assets.Sounds.MISS, 0.6f, 0.6f, 1.5f ); + throwSound(); Char enemy = Actor.findChar( cell ); QuickSlotButton.target(enemy); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java index bee6dc01e..d6bde2a0c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -28,12 +29,16 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; abstract public class KindOfWeapon extends EquipableItem { protected static final float TIME_TO_EQUIP = 1f; + + protected String hitSound = Assets.Sounds.HIT; + protected float hitSoundPitch = 1f; @Override public boolean isEquipped( Hero hero ) { @@ -131,5 +136,9 @@ abstract public class KindOfWeapon extends EquipableItem { public int proc( Char attacker, Char defender, int damage ) { return damage; } + + public void hitSound( float pitch ){ + Sample.INSTANCE.play(hitSound, 1, pitch * hitSoundPitch); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/EtherealChains.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/EtherealChains.java index 9fece2a47..49d516193 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/EtherealChains.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/EtherealChains.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -39,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -117,6 +119,8 @@ public class EtherealChains extends Artifact { } else { chainLocation( chain, curUser ); } + throwSound(); + Sample.INSTANCE.play( Assets.Sounds.CHAINS ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLevitation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLevitation.java index f48154b3d..282b61137 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLevitation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLevitation.java @@ -48,6 +48,7 @@ public class PotionOfLevitation extends Potion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, ConfusionGas.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLiquidFlame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLiquidFlame.java index db1209eff..12aa8fce5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLiquidFlame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfLiquidFlame.java @@ -44,6 +44,7 @@ public class PotionOfLiquidFlame extends Potion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.BURNING ); } for (int offset : PathFinder.NEIGHBOURS9){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfParalyticGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfParalyticGas.java index bc3a3b0c1..6bbe0aedf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfParalyticGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfParalyticGas.java @@ -43,6 +43,7 @@ public class PotionOfParalyticGas extends Potion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, ParalyticGas.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfToxicGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfToxicGas.java index 3eb597379..e08084bf5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfToxicGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfToxicGas.java @@ -43,6 +43,7 @@ public class PotionOfToxicGas extends Potion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, ToxicGas.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java index 5c9983a37..2c79e4de9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java @@ -42,6 +42,7 @@ public class BlizzardBrew extends Brew { if (Dungeon.level.heroFOV[cell]) { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, Blizzard.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java index bec30e54c..9e24de0b5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java @@ -45,6 +45,7 @@ public class InfernalBrew extends Brew { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, Inferno.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java index 318953ea4..e0e0015cd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java @@ -44,6 +44,7 @@ public class ShockingBrew extends Brew { if (Dungeon.level.heroFOV[cell]) { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play(Assets.Sounds.LIGHTNING); } PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { @@ -51,7 +52,6 @@ public class ShockingBrew extends Brew { GameScene.add(Blob.seed(i, 20, Electricity.class)); } } - Sample.INSTANCE.play(Assets.Sounds.LIGHTNING); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java index 2e8d6c6d9..a6ca332da 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfCorrosiveGas.java @@ -43,6 +43,7 @@ public class PotionOfCorrosiveGas extends ExoticPotion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 200, CorrosiveGas.class ).setStrength( 1 + Dungeon.depth/5)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfShroudingFog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfShroudingFog.java index b26d4ff98..f68980b84 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfShroudingFog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfShroudingFog.java @@ -43,6 +43,7 @@ public class PotionOfShroudingFog extends ExoticPotion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, SmokeScreen.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfStormClouds.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfStormClouds.java index 5fcbbf6b5..d908a9db3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfStormClouds.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfStormClouds.java @@ -43,6 +43,7 @@ public class PotionOfStormClouds extends ExoticPotion { splash( cell ); Sample.INSTANCE.play( Assets.Sounds.SHATTER ); + Sample.INSTANCE.play( Assets.Sounds.GAS ); } GameScene.add( Blob.seed( cell, 1000, StormCloud.class ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java index d8cd99f10..6ce050da8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java @@ -45,8 +45,9 @@ public class ScrollOfRecharging extends Scroll { Buff.affect(curUser, Recharging.class, Recharging.DURATION); charge(curUser); - + Sample.INSTANCE.play( Assets.Sounds.READ ); + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP ); Invisibility.dispel(); GLog.i( Messages.get(this, "surge") ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java index 19c548a14..a458d57cd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java @@ -41,8 +41,9 @@ public class ScrollOfMysticalEnergy extends ExoticScroll { //append buff Buff.affect(curUser, ArtifactRecharge.class).set( 30 ); - + Sample.INSTANCE.play( Assets.Sounds.READ ); + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP ); Invisibility.dispel(); SpellSprite.show( curUser, SpellSprite.CHARGE ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java index 868f3cbe2..3f6dd203d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.spells; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArtifactRecharge; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging; @@ -32,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfMys import com.shatteredpixel.shatteredpixeldungeon.items.wands.CursedWand; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; public class WildEnergy extends TargetedSpell { @@ -51,6 +53,8 @@ public class WildEnergy extends TargetedSpell { CursedWand.cursedZap(this, hero, bolt, new Callback() { @Override public void call() { + Sample.INSTANCE.play( Assets.Sounds.LIGHTNING ); + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP ); ScrollOfRecharging.charge(hero); hero.belongings.charge(1f); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java index b65dacd5e..26039d3cc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; +import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.CorrosionParticle; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; @@ -53,9 +54,10 @@ public class WandOfCorrosion extends Wand { @Override protected void onZap(Ballistica bolt) { CorrosiveGas gas = Blob.seed(bolt.collisionPos, 50 + 10 * buffedLvl(), CorrosiveGas.class); - CellEmitter.center(bolt.collisionPos).burst( CorrosionParticle.SPLASH, 10 ); + CellEmitter.get(bolt.collisionPos).burst(Speck.factory(Speck.CORROSION), 10 ); gas.setStrength(2 + buffedLvl()); GameScene.add(gas); + Sample.INSTANCE.play(Assets.Sounds.GAS); for (int i : PathFinder.NEIGHBOURS9) { Char ch = Actor.findChar(bolt.collisionPos + i); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index f613d792e..2de6b2a87 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -180,6 +180,7 @@ public class WandOfCorruption extends Wand { } processSoulMark(ch, chargesPerCast()); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, 0.8f * Random.Float(0.87f, 1.15f) ); } else { Dungeon.level.pressCell(bolt.collisionPos); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFrost.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFrost.java index 92a778ea1..a6cbee977 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFrost.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFrost.java @@ -78,6 +78,7 @@ public class WandOfFrost extends DamageWand { processSoulMark(ch, chargesPerCast()); ch.damage(damage, this); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, 1.1f * Random.Float(0.87f, 1.15f) ); if (ch.isAlive()){ if (Dungeon.level.water[ch.pos]) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfLivingEarth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfLivingEarth.java index b23c0b554..cb9f3969c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfLivingEarth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfLivingEarth.java @@ -94,6 +94,7 @@ public class WandOfLivingEarth extends DamageWand { guardian.sprite.centerEmitter().burst(MagicMissile.EarthParticle.ATTRACT, 8 + buffedLvl() / 2); guardian.setInfo(curUser, buffedLvl(), armorToAdd); processSoulMark(guardian, chargesPerCast()); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, 0.9f * Random.Float(0.87f, 1.15f) ); //shooting the guardian at a location } else if ( guardian == null && buff != null && buff.armor >= buff.armorToGuardian()){ @@ -143,6 +144,7 @@ public class WandOfLivingEarth extends DamageWand { guardian.sprite.centerEmitter().burst(MagicMissile.EarthParticle.ATTRACT, 8 + buffedLvl()/2); buff.detach(); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, 0.9f * Random.Float(0.87f, 1.15f) ); //shooting at a location/enemy with no guardian being shot } else { @@ -153,6 +155,7 @@ public class WandOfLivingEarth extends DamageWand { processSoulMark(ch, chargesPerCast()); ch.damage(damage, this); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, 0.8f * Random.Float(0.87f, 1.15f) ); if (guardian == null) { curUser.sprite.centerEmitter().burst(MagicMissile.EarthParticle.ATTRACT, 8 + buffedLvl() / 2); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfMagicMissile.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfMagicMissile.java index ce2993d2b..e8c212a4d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfMagicMissile.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfMagicMissile.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.wands; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -30,7 +31,13 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging; import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; +import com.watabou.noosa.Image; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Random; public class WandOfMagicMissile extends DamageWand { @@ -54,6 +61,7 @@ public class WandOfMagicMissile extends DamageWand { processSoulMark(ch, chargesPerCast()); ch.damage(damageRoll(), this); + Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, Random.Float(0.87f, 1.15f) ); ch.sprite.burst(0xFFFFFFFF, buffedLvl() / 2 + 2); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java index 44fa9f46a..b5e0c5578 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java @@ -274,7 +274,12 @@ public class SpiritBow extends Weapon { if (sniperSpecial && SpiritBow.this.augment != Augment.SPEED) sniperSpecial = false; } } - + + @Override + public void throwSound() { + Sample.INSTANCE.play( Assets.Sounds.ATK_SPIRITBOW ); + } + int flurryCount = -1; @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java index 3770cf1a5..0804839f9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/AssassinsBlade.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; @@ -31,6 +32,8 @@ public class AssassinsBlade extends MeleeWeapon { { image = ItemSpriteSheet.ASSASSINS_BLADE; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 0.9f; tier = 4; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java index b6784c172..aa9bddf62 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class BattleAxe extends MeleeWeapon { { image = ItemSpriteSheet.BATTLE_AXE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 0.9f; tier = 4; ACC = 1.24f; //24% boost to accuracy diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java index 968e4ef19..cb7cfc94c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Crossbow.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Crossbow extends MeleeWeapon { { image = ItemSpriteSheet.CROSSBOW; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1f; //check Dart.class for additional properties diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java index 409a2a537..a32125707 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dagger.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; @@ -31,6 +32,8 @@ public class Dagger extends MeleeWeapon { { image = ItemSpriteSheet.DAGGER; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.1f; tier = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java index db29d9462..f45678641 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Dirk.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; @@ -31,6 +32,8 @@ public class Dirk extends MeleeWeapon { { image = ItemSpriteSheet.DIRK; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1f; tier = 2; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java index 17c72f0d0..0bb6114aa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Flail extends MeleeWeapon { { image = ItemSpriteSheet.FLAIL; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 0.8f; tier = 4; ACC = 0.9f; //0.9x accuracy diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java index a52b3c023..e090b691a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -28,6 +29,8 @@ public class Gauntlet extends MeleeWeapon { { image = ItemSpriteSheet.GAUNTLETS; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1.2f; tier = 5; DLY = 0.5f; //2x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java index 343a3f127..6ebcd503f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Glaive extends MeleeWeapon { { image = ItemSpriteSheet.GLAIVE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 0.8f; tier = 5; DLY = 1.5f; //0.67x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gloves.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gloves.java index d4507a377..e2e938293 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gloves.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gloves.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Gloves extends MeleeWeapon { { image = ItemSpriteSheet.GLOVES; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1.3f; tier = 1; DLY = 0.5f; //2x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java index 477c6e377..e02cfe971 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Greataxe extends MeleeWeapon { { image = ItemSpriteSheet.GREATAXE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier = 5; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java index d5a4135ea..881a30d16 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Greatsword extends MeleeWeapon { { image = ItemSpriteSheet.GREATSWORD; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier=5; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java index c06644f87..7a244223c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class HandAxe extends MeleeWeapon { { image = ItemSpriteSheet.HAND_AXE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier = 2; ACC = 1.32f; //32% boost to accuracy diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java index cf253fb09..b3a4ffaf6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Longsword extends MeleeWeapon { { image = ItemSpriteSheet.LONGSWORD; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier = 4; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java index 46e3171aa..adbf778d6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Mace extends MeleeWeapon { { image = ItemSpriteSheet.MACE; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1f; tier = 3; ACC = 1.28f; //28% boost to accuracy diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java index c9f5612c5..f88f7fe05 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java @@ -64,6 +64,8 @@ public class MagesStaff extends MeleeWeapon { { image = ItemSpriteSheet.MAGES_STAFF; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1.1f; tier = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java index 424a0e585..7197196ae 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Quarterstaff.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -28,6 +29,8 @@ public class Quarterstaff extends MeleeWeapon { { image = ItemSpriteSheet.QUARTERSTAFF; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1f; tier = 2; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java index 371c377e2..21d9ccd56 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RoundShield.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -29,6 +30,8 @@ public class RoundShield extends MeleeWeapon { { image = ItemSpriteSheet.ROUND_SHIELD; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1f; tier = 3; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java index d7e70d0d4..e926b2aac 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class RunicBlade extends MeleeWeapon { { image = ItemSpriteSheet.RUNIC_BLADE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier = 4; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java index ea43bca6e..b5ab6391e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sai.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -28,6 +29,8 @@ public class Sai extends MeleeWeapon { { image = ItemSpriteSheet.SAI; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.3f; tier = 3; DLY = 0.5f; //2x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java index 0348a36f2..b0c87c092 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Scimitar.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Scimitar extends MeleeWeapon { { image = ItemSpriteSheet.SCIMITAR; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1.2f; tier = 3; DLY = 0.8f; //1.25x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java index e360e5768..2a217016a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Shortsword extends MeleeWeapon { { image = ItemSpriteSheet.SHORTSWORD; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1.1f; tier = 2; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java index 8d9d96867..688c2d70c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Spear extends MeleeWeapon { { image = ItemSpriteSheet.SPEAR; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 0.9f; tier = 2; DLY = 1.5f; //0.67x speed diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java index b471fefb9..46600060e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Sword extends MeleeWeapon { { image = ItemSpriteSheet.SWORD; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1f; tier = 3; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java index a9bcf2c94..fb7a06cf9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class WarHammer extends MeleeWeapon { { image = ItemSpriteSheet.WAR_HAMMER; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1f; tier = 5; ACC = 1.20f; //20% boost to accuracy diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java index 15872a73a..8bc7566df 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Whip.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Whip extends MeleeWeapon { { image = ItemSpriteSheet.WHIP; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1.1f; tier = 3; RCH = 3; //lots of extra reach diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java index 75dfc3ae6..16df695c9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class WornShortsword extends MeleeWeapon { { image = ItemSpriteSheet.WORN_SHORTSWORD; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1.1f; tier = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java index a5b749552..0b468c390 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; @@ -30,6 +31,8 @@ public class Bolas extends MissileWeapon { { image = ItemSpriteSheet.BOLAS; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1f; tier = 3; baseUses = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/FishingSpear.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/FishingSpear.java index 86622090d..c5a7aca4f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/FishingSpear.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/FishingSpear.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Piranha; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -29,6 +30,8 @@ public class FishingSpear extends MissileWeapon { { image = ItemSpriteSheet.FISHING_SPEAR; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.1f; tier = 2; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java index 1f0253c58..32ae929a8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ForceCube.java @@ -45,7 +45,12 @@ public class ForceCube extends MissileWeapon { sticky = false; } - + + @Override + public void hitSound(float pitch) { + //no hitsound as it never hits enemies directly + } + @Override protected void onThrow(int cell) { if (Dungeon.level.pit[cell]){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java index 79ba19937..ab5dc5b54 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -36,6 +37,8 @@ public class HeavyBoomerang extends MissileWeapon { { image = ItemSpriteSheet.BOOMERANG; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1f; tier = 4; sticky = false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Javelin.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Javelin.java index 2c4616552..c03572d75 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Javelin.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Javelin.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Javelin extends MissileWeapon { { image = ItemSpriteSheet.JAVELIN; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1f; tier = 4; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java index 7ca9ac616..8580957b2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; @@ -32,6 +33,8 @@ public class Kunai extends MissileWeapon { { image = ItemSpriteSheet.KUNAI; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.1f; tier = 3; baseUses = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java index 61e9c79a0..71245b5c1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -29,6 +30,8 @@ public class Shuriken extends MissileWeapon { { image = ItemSpriteSheet.SHURIKEN; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.2f; tier = 2; baseUses = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java index fcca484bf..7a88ac629 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingClub extends MissileWeapon { { image = ItemSpriteSheet.THROWING_CLUB; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 1.1f; tier = 2; baseUses = 15; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java index 1a0a46091..813176367 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingHammer extends MissileWeapon { { image = ItemSpriteSheet.THROWING_HAMMER; + hitSound = Assets.Sounds.HIT_CRUSH; + hitSoundPitch = 0.8f; tier = 5; baseUses = 15; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingKnife.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingKnife.java index 5895868b8..c10c3c0d8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingKnife.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingKnife.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; @@ -32,6 +33,8 @@ public class ThrowingKnife extends MissileWeapon { { image = ItemSpriteSheet.THROWING_KNIFE; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 1.2f; bones = false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingSpear.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingSpear.java index 5f0508174..abb1fe566 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingSpear.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingSpear.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingSpear extends MissileWeapon { { image = ItemSpriteSheet.THROWING_SPEAR; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1f; tier = 3; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingStone.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingStone.java index 97dfc9db9..fb3d5bdfd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingStone.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingStone.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingStone extends MissileWeapon { { image = ItemSpriteSheet.THROWING_STONE; + hitSound = Assets.Sounds.HIT; + hitSoundPitch = 1.1f; bones = false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Tomahawk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Tomahawk.java index 2ef4e9510..4e307260a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Tomahawk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Tomahawk.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -30,6 +31,8 @@ public class Tomahawk extends MissileWeapon { { image = ItemSpriteSheet.TOMAHAWK; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 0.9f; tier = 4; baseUses = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Trident.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Trident.java index 8063a4845..6a2e58fbb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Trident.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Trident.java @@ -21,12 +21,15 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Trident extends MissileWeapon { { image = ItemSpriteSheet.TRIDENT; + hitSound = Assets.Sounds.HIT_SLASH; + hitSoundPitch = 0.9f; tier = 5; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java index 545b4bab3..00d2ff1d5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune; @@ -34,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; +import com.watabou.noosa.audio.Sample; import java.util.ArrayList; @@ -41,6 +43,8 @@ public class Dart extends MissileWeapon { { image = ItemSpriteSheet.DART; + hitSound = Assets.Sounds.HIT_STAB; + hitSoundPitch = 1.3f; tier = 1; @@ -122,6 +126,16 @@ public class Dart extends MissileWeapon { updateCrossbow(); super.onThrow(cell); } + + @Override + public void throwSound() { + updateCrossbow(); + if (bow != null) { + Sample.INSTANCE.play(Assets.Sounds.ATK_CROSSBOW); + } else { + super.throwSound(); + } + } @Override public String info() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/BurningTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/BurningTrap.java index f9215d9a7..551c3b65e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/BurningTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/BurningTrap.java @@ -21,12 +21,14 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; public class BurningTrap extends Trap { @@ -45,6 +47,6 @@ public class BurningTrap extends Trap { CellEmitter.get( pos+i ).burst( FlameParticle.FACTORY, 5 ); } } - + Sample.INSTANCE.play(Assets.Sounds.BURNING); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java index 0edfdfa80..579097545 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ConfusionTrap.java @@ -21,10 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.audio.Sample; public class ConfusionTrap extends Trap { @@ -37,6 +39,7 @@ public class ConfusionTrap extends Trap { public void activate() { GameScene.add(Blob.seed(pos, 300 + 20 * Dungeon.depth, ConfusionGas.class)); + Sample.INSTANCE.play(Assets.Sounds.GAS); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java index 9296221f3..8bcd1e760 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java @@ -21,10 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.audio.Sample; public class CorrosionTrap extends Trap { @@ -37,6 +39,7 @@ public class CorrosionTrap extends Trap { public void activate() { CorrosiveGas corrosiveGas = Blob.seed(pos, 80 + 5 * Dungeon.depth, CorrosiveGas.class); + Sample.INSTANCE.play(Assets.Sounds.GAS); corrosiveGas.setStrength(1+Dungeon.depth/4); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java index a98bb90dc..e4192a08e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/ToxicTrap.java @@ -21,10 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.audio.Sample; public class ToxicTrap extends Trap{ @@ -37,6 +39,7 @@ public class ToxicTrap extends Trap{ public void activate() { GameScene.add( Blob.seed( pos, 300 + 20 * Dungeon.depth, ToxicGas.class ) ); + Sample.INSTANCE.play(Assets.Sounds.GAS); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/EyeSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/EyeSprite.java index a89d1687d..a4b26a03a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/EyeSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/EyeSprite.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Beam; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; import com.watabou.noosa.particles.Emitter; public class EyeSprite extends MobSprite { @@ -104,6 +105,7 @@ public class EyeSprite extends MobSprite { public void charge( int pos ){ turnTo(ch.pos, pos); play(charging); + if (visible) Sample.INSTANCE.play( Assets.Sounds.CHARGEUP ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/NecromancerSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/NecromancerSprite.java index 87bd58511..41de30e77 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/NecromancerSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/NecromancerSprite.java @@ -24,6 +24,8 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Necromancer; import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; public class NecromancerSprite extends MobSprite { @@ -58,7 +60,15 @@ public class NecromancerSprite extends MobSprite { public void charge(){ play(charging); } - + + @Override + public void zap(int cell) { + super.zap(cell); + if (visible && ch instanceof Necromancer && ((Necromancer) ch).summoning){ + Sample.INSTANCE.play( Assets.Sounds.CHARGEUP, 1f, 0.8f ); + } + } + @Override public void onComplete(Animation anim) { super.onComplete(anim);