Devilution
Diablo devolved - magic behind the 1996 computer game
effects.cpp
Go to the documentation of this file.
1 
6 #include "all.h"
7 #include "../3rdParty/Storm/Source/storm.h"
8 #include <SDL_mixer.h>
9 
11 
13 int sfxdnum;
15 HANDLE sghStream;
18 
26 const char MonstSndChar[] = { 'a', 'h', 'd', 's' };
27 
28 /* data */
30 TSFX sgSFX[] = {
31  // clang-format off
32  // bFlags, pszName, pSnd
33  { SFX_MISC, "Sfx\\Misc\\Walk1.wav", NULL },
34  { SFX_MISC, "Sfx\\Misc\\Walk2.wav", NULL },
35  { SFX_MISC, "Sfx\\Misc\\Walk3.wav", NULL },
36  { SFX_MISC, "Sfx\\Misc\\Walk4.wav", NULL },
37  { SFX_MISC, "Sfx\\Misc\\BFire.wav", NULL },
38  { SFX_MISC, "Sfx\\Misc\\Fmag.wav", NULL },
39  { SFX_MISC, "Sfx\\Misc\\Tmag.wav", NULL },
40  { SFX_MISC, "Sfx\\Misc\\Lghit.wav", NULL },
41  { SFX_MISC, "Sfx\\Misc\\Lghit1.wav", NULL },
42  { SFX_MISC, "Sfx\\Misc\\Swing.wav", NULL },
43  { SFX_MISC, "Sfx\\Misc\\Swing2.wav", NULL },
44  { SFX_MISC, "Sfx\\Misc\\Dead.wav", NULL },
45  { SFX_STREAM, "Sfx\\Misc\\Questdon.wav", NULL },
46  { SFX_MISC, "Sfx\\Items\\Armrfkd.wav", NULL },
47  { SFX_MISC, "Sfx\\Items\\Barlfire.wav", NULL },
48  { SFX_MISC, "Sfx\\Items\\Barrel.wav", NULL },
49  { SFX_MISC, "Sfx\\Items\\Bhit.wav", NULL },
50  { SFX_MISC, "Sfx\\Items\\Bhit1.wav", NULL },
51  { SFX_MISC, "Sfx\\Items\\Chest.wav", NULL },
52  { SFX_MISC, "Sfx\\Items\\Doorclos.wav", NULL },
53  { SFX_MISC, "Sfx\\Items\\Dooropen.wav", NULL },
54  { SFX_MISC, "Sfx\\Items\\Flipanvl.wav", NULL },
55  { SFX_MISC, "Sfx\\Items\\Flipaxe.wav", NULL },
56  { SFX_MISC, "Sfx\\Items\\Flipblst.wav", NULL },
57  { SFX_MISC, "Sfx\\Items\\Flipbody.wav", NULL },
58  { SFX_MISC, "Sfx\\Items\\Flipbook.wav", NULL },
59  { SFX_MISC, "Sfx\\Items\\Flipbow.wav", NULL },
60  { SFX_MISC, "Sfx\\Items\\Flipcap.wav", NULL },
61  { SFX_MISC, "Sfx\\Items\\Flipharm.wav", NULL },
62  { SFX_MISC, "Sfx\\Items\\Fliplarm.wav", NULL },
63  { SFX_MISC, "Sfx\\Items\\Flipmag.wav", NULL },
64  { SFX_MISC, "Sfx\\Items\\Flipmag1.wav", NULL },
65  { SFX_MISC, "Sfx\\Items\\Flipmush.wav", NULL },
66  { SFX_MISC, "Sfx\\Items\\Flippot.wav", NULL },
67  { SFX_MISC, "Sfx\\Items\\Flipring.wav", NULL },
68  { SFX_MISC, "Sfx\\Items\\Fliprock.wav", NULL },
69  { SFX_MISC, "Sfx\\Items\\Flipscrl.wav", NULL },
70  { SFX_MISC, "Sfx\\Items\\Flipshld.wav", NULL },
71  { SFX_MISC, "Sfx\\Items\\Flipsign.wav", NULL },
72  { SFX_MISC, "Sfx\\Items\\Flipstaf.wav", NULL },
73  { SFX_MISC, "Sfx\\Items\\Flipswor.wav", NULL },
74  { SFX_MISC, "Sfx\\Items\\Gold.wav", NULL },
75  { SFX_MISC, "Sfx\\Items\\Hlmtfkd.wav", NULL },
76  { SFX_MISC, "Sfx\\Items\\Invanvl.wav", NULL },
77  { SFX_MISC, "Sfx\\Items\\Invaxe.wav", NULL },
78  { SFX_MISC, "Sfx\\Items\\Invblst.wav", NULL },
79  { SFX_MISC, "Sfx\\Items\\Invbody.wav", NULL },
80  { SFX_MISC, "Sfx\\Items\\Invbook.wav", NULL },
81  { SFX_MISC, "Sfx\\Items\\Invbow.wav", NULL },
82  { SFX_MISC, "Sfx\\Items\\Invcap.wav", NULL },
83  { SFX_MISC, "Sfx\\Items\\Invgrab.wav", NULL },
84  { SFX_MISC, "Sfx\\Items\\Invharm.wav", NULL },
85  { SFX_MISC, "Sfx\\Items\\Invlarm.wav", NULL },
86  { SFX_MISC, "Sfx\\Items\\Invmush.wav", NULL },
87  { SFX_MISC, "Sfx\\Items\\Invpot.wav", NULL },
88  { SFX_MISC, "Sfx\\Items\\Invring.wav", NULL },
89  { SFX_MISC, "Sfx\\Items\\Invrock.wav", NULL },
90  { SFX_MISC, "Sfx\\Items\\Invscrol.wav", NULL },
91  { SFX_MISC, "Sfx\\Items\\Invshiel.wav", NULL },
92  { SFX_MISC, "Sfx\\Items\\Invsign.wav", NULL },
93  { SFX_MISC, "Sfx\\Items\\Invstaf.wav", NULL },
94  { SFX_MISC, "Sfx\\Items\\Invsword.wav", NULL },
95  { SFX_MISC, "Sfx\\Items\\Lever.wav", NULL },
96  { SFX_MISC, "Sfx\\Items\\Magic.wav", NULL },
97  { SFX_MISC, "Sfx\\Items\\Magic1.wav", NULL },
98  { SFX_MISC, "Sfx\\Items\\Readbook.wav", NULL },
99  { SFX_MISC, "Sfx\\Items\\Sarc.wav", NULL },
100  { SFX_MISC, "Sfx\\Items\\Shielfkd.wav", NULL },
101  { SFX_MISC, "Sfx\\Items\\Swrdfkd.wav", NULL },
102  { SFX_UI, "Sfx\\Items\\Titlemov.wav", NULL },
103  { SFX_UI, "Sfx\\Items\\Titlslct.wav", NULL },
104  { SFX_UI, "Sfx\\Misc\\blank.wav", NULL },
105  { SFX_MISC, "Sfx\\Items\\Trap.wav", NULL },
106  { SFX_MISC, "Sfx\\Misc\\Cast1.wav", NULL },
107  { SFX_MISC, "Sfx\\Misc\\Cast10.wav", NULL },
108  { SFX_MISC, "Sfx\\Misc\\Cast12.wav", NULL },
109  { SFX_MISC, "Sfx\\Misc\\Cast2.wav", NULL },
110  { SFX_MISC, "Sfx\\Misc\\Cast3.wav", NULL },
111  { SFX_MISC, "Sfx\\Misc\\Cast4.wav", NULL },
112  { SFX_MISC, "Sfx\\Misc\\Cast5.wav", NULL },
113  { SFX_MISC, "Sfx\\Misc\\Cast6.wav", NULL },
114  { SFX_MISC, "Sfx\\Misc\\Cast7.wav", NULL },
115  { SFX_MISC, "Sfx\\Misc\\Cast8.wav", NULL },
116  { SFX_MISC, "Sfx\\Misc\\Cast9.wav", NULL },
117  { SFX_MISC, "Sfx\\Misc\\Healing.wav", NULL },
118  { SFX_MISC, "Sfx\\Misc\\Repair.wav", NULL },
119  { SFX_MISC, "Sfx\\Misc\\Acids1.wav", NULL },
120  { SFX_MISC, "Sfx\\Misc\\Acids2.wav", NULL },
121  { SFX_MISC, "Sfx\\Misc\\Apoc.wav", NULL },
122  { SFX_MISC, "Sfx\\Misc\\Arrowall.wav", NULL },
123  { SFX_MISC, "Sfx\\Misc\\Bldboil.wav", NULL },
124  { SFX_MISC, "Sfx\\Misc\\Blodstar.wav", NULL },
125  { SFX_MISC, "Sfx\\Misc\\Blsimpt.wav", NULL },
126  { SFX_MISC, "Sfx\\Misc\\Bonesp.wav", NULL },
127  { SFX_MISC, "Sfx\\Misc\\Bsimpct.wav", NULL },
128  { SFX_MISC, "Sfx\\Misc\\Caldron.wav", NULL },
129  { SFX_MISC, "Sfx\\Misc\\Cbolt.wav", NULL },
130  { SFX_MISC, "Sfx\\Misc\\Chltning.wav", NULL },
131  { SFX_MISC, "Sfx\\Misc\\DSerp.wav", NULL },
132  { SFX_MISC, "Sfx\\Misc\\Elecimp1.wav", NULL },
133  { SFX_MISC, "Sfx\\Misc\\Elementl.wav", NULL },
134  { SFX_MISC, "Sfx\\Misc\\Ethereal.wav", NULL },
135  { SFX_MISC, "Sfx\\Misc\\Fball.wav", NULL },
136  { SFX_MISC, "Sfx\\Misc\\Fbolt1.wav", NULL },
137  { SFX_MISC, "Sfx\\Misc\\Fbolt2.wav", NULL },
138  { SFX_MISC, "Sfx\\Misc\\Firimp1.wav", NULL },
139  { SFX_MISC, "Sfx\\Misc\\Firimp2.wav", NULL },
140  { SFX_MISC, "Sfx\\Misc\\Flamwave.wav", NULL },
141  { SFX_MISC, "Sfx\\Misc\\Flash.wav", NULL },
142  { SFX_MISC, "Sfx\\Misc\\Fountain.wav", NULL },
143  { SFX_MISC, "Sfx\\Misc\\Golum.wav", NULL },
144  { SFX_MISC, "Sfx\\Misc\\Golumded.wav", NULL },
145  { SFX_MISC, "Sfx\\Misc\\Gshrine.wav", NULL },
146  { SFX_MISC, "Sfx\\Misc\\Guard.wav", NULL },
147  { SFX_MISC, "Sfx\\Misc\\Grdlanch.wav", NULL },
148  { SFX_MISC, "Sfx\\Misc\\Holybolt.wav", NULL },
149  { SFX_MISC, "Sfx\\Misc\\Hyper.wav", NULL },
150  { SFX_MISC, "Sfx\\Misc\\Infravis.wav", NULL },
151  { SFX_MISC, "Sfx\\Misc\\Invisibl.wav", NULL },
152  { SFX_MISC, "Sfx\\Misc\\Invpot.wav", NULL },
153  { SFX_MISC, "Sfx\\Misc\\Lning1.wav", NULL },
154  { SFX_MISC, "Sfx\\Misc\\Ltning.wav", NULL },
155  { SFX_MISC, "Sfx\\Misc\\Mshield.wav", NULL },
156  { SFX_MISC, "Sfx\\Misc\\Nova.wav", NULL },
157  { SFX_MISC, "Sfx\\Misc\\Portal.wav", NULL },
158  { SFX_MISC, "Sfx\\Misc\\Puddle.wav", NULL },
159  { SFX_MISC, "Sfx\\Misc\\Resur.wav", NULL },
160  { SFX_MISC, "Sfx\\Misc\\Scurse.wav", NULL },
161  { SFX_MISC, "Sfx\\Misc\\Scurimp.wav", NULL },
162  { SFX_MISC, "Sfx\\Misc\\Sentinel.wav", NULL },
163  { SFX_MISC, "Sfx\\Misc\\Shatter.wav", NULL },
164  { SFX_MISC, "Sfx\\Misc\\Soulfire.wav", NULL },
165  { SFX_MISC, "Sfx\\Misc\\Spoutlop.wav", NULL },
166  { SFX_MISC, "Sfx\\Misc\\Spoutstr.wav", NULL },
167  { SFX_MISC, "Sfx\\Misc\\Storm.wav", NULL },
168  { SFX_MISC, "Sfx\\Misc\\Trapdis.wav", NULL },
169  { SFX_MISC, "Sfx\\Misc\\Teleport.wav", NULL },
170  { SFX_MISC, "Sfx\\Misc\\Vtheft.wav", NULL },
171  { SFX_MISC, "Sfx\\Misc\\Wallloop.wav", NULL },
172  { SFX_MISC, "Sfx\\Misc\\Wallstrt.wav", NULL },
173 #ifndef SPAWN
174  { SFX_STREAM, "Sfx\\Towners\\Bmaid01.wav", NULL },
175  { SFX_STREAM, "Sfx\\Towners\\Bmaid02.wav", NULL },
176  { SFX_STREAM, "Sfx\\Towners\\Bmaid03.wav", NULL },
177  { SFX_STREAM, "Sfx\\Towners\\Bmaid04.wav", NULL },
178  { SFX_STREAM, "Sfx\\Towners\\Bmaid05.wav", NULL },
179  { SFX_STREAM, "Sfx\\Towners\\Bmaid06.wav", NULL },
180  { SFX_STREAM, "Sfx\\Towners\\Bmaid07.wav", NULL },
181  { SFX_STREAM, "Sfx\\Towners\\Bmaid08.wav", NULL },
182  { SFX_STREAM, "Sfx\\Towners\\Bmaid09.wav", NULL },
183  { SFX_STREAM, "Sfx\\Towners\\Bmaid10.wav", NULL },
184  { SFX_STREAM, "Sfx\\Towners\\Bmaid11.wav", NULL },
185  { SFX_STREAM, "Sfx\\Towners\\Bmaid12.wav", NULL },
186  { SFX_STREAM, "Sfx\\Towners\\Bmaid13.wav", NULL },
187  { SFX_STREAM, "Sfx\\Towners\\Bmaid14.wav", NULL },
188  { SFX_STREAM, "Sfx\\Towners\\Bmaid15.wav", NULL },
189  { SFX_STREAM, "Sfx\\Towners\\Bmaid16.wav", NULL },
190  { SFX_STREAM, "Sfx\\Towners\\Bmaid17.wav", NULL },
191  { SFX_STREAM, "Sfx\\Towners\\Bmaid18.wav", NULL },
192  { SFX_STREAM, "Sfx\\Towners\\Bmaid19.wav", NULL },
193  { SFX_STREAM, "Sfx\\Towners\\Bmaid20.wav", NULL },
194  { SFX_STREAM, "Sfx\\Towners\\Bmaid21.wav", NULL },
195  { SFX_STREAM, "Sfx\\Towners\\Bmaid22.wav", NULL },
196  { SFX_STREAM, "Sfx\\Towners\\Bmaid23.wav", NULL },
197  { SFX_STREAM, "Sfx\\Towners\\Bmaid24.wav", NULL },
198  { SFX_STREAM, "Sfx\\Towners\\Bmaid25.wav", NULL },
199  { SFX_STREAM, "Sfx\\Towners\\Bmaid26.wav", NULL },
200  { SFX_STREAM, "Sfx\\Towners\\Bmaid27.wav", NULL },
201  { SFX_STREAM, "Sfx\\Towners\\Bmaid28.wav", NULL },
202  { SFX_STREAM, "Sfx\\Towners\\Bmaid29.wav", NULL },
203  { SFX_STREAM, "Sfx\\Towners\\Bmaid30.wav", NULL },
204 #endif
205  { SFX_STREAM, "Sfx\\Towners\\Bmaid31.wav", NULL },
206 #ifndef SPAWN
207  { SFX_STREAM, "Sfx\\Towners\\Bmaid32.wav", NULL },
208  { SFX_STREAM, "Sfx\\Towners\\Bmaid33.wav", NULL },
209  { SFX_STREAM, "Sfx\\Towners\\Bmaid34.wav", NULL },
210  { SFX_STREAM, "Sfx\\Towners\\Bmaid35.wav", NULL },
211  { SFX_STREAM, "Sfx\\Towners\\Bmaid36.wav", NULL },
212  { SFX_STREAM, "Sfx\\Towners\\Bmaid37.wav", NULL },
213  { SFX_STREAM, "Sfx\\Towners\\Bmaid38.wav", NULL },
214  { SFX_STREAM, "Sfx\\Towners\\Bmaid39.wav", NULL },
215  { SFX_STREAM, "Sfx\\Towners\\Bmaid40.wav", NULL },
216  { SFX_STREAM, "Sfx\\Towners\\Bsmith01.wav", NULL },
217  { SFX_STREAM, "Sfx\\Towners\\Bsmith02.wav", NULL },
218  { SFX_STREAM, "Sfx\\Towners\\Bsmith03.wav", NULL },
219  { SFX_STREAM, "Sfx\\Towners\\Bsmith04.wav", NULL },
220  { SFX_STREAM, "Sfx\\Towners\\Bsmith05.wav", NULL },
221  { SFX_STREAM, "Sfx\\Towners\\Bsmith06.wav", NULL },
222  { SFX_STREAM, "Sfx\\Towners\\Bsmith07.wav", NULL },
223  { SFX_STREAM, "Sfx\\Towners\\Bsmith08.wav", NULL },
224  { SFX_STREAM, "Sfx\\Towners\\Bsmith09.wav", NULL },
225  { SFX_STREAM, "Sfx\\Towners\\Bsmith10.wav", NULL },
226  { SFX_STREAM, "Sfx\\Towners\\Bsmith11.wav", NULL },
227  { SFX_STREAM, "Sfx\\Towners\\Bsmith12.wav", NULL },
228  { SFX_STREAM, "Sfx\\Towners\\Bsmith13.wav", NULL },
229  { SFX_STREAM, "Sfx\\Towners\\Bsmith14.wav", NULL },
230  { SFX_STREAM, "Sfx\\Towners\\Bsmith15.wav", NULL },
231  { SFX_STREAM, "Sfx\\Towners\\Bsmith16.wav", NULL },
232  { SFX_STREAM, "Sfx\\Towners\\Bsmith17.wav", NULL },
233  { SFX_STREAM, "Sfx\\Towners\\Bsmith18.wav", NULL },
234  { SFX_STREAM, "Sfx\\Towners\\Bsmith19.wav", NULL },
235  { SFX_STREAM, "Sfx\\Towners\\Bsmith20.wav", NULL },
236  { SFX_STREAM, "Sfx\\Towners\\Bsmith21.wav", NULL },
237  { SFX_STREAM, "Sfx\\Towners\\Bsmith22.wav", NULL },
238  { SFX_STREAM, "Sfx\\Towners\\Bsmith23.wav", NULL },
239  { SFX_STREAM, "Sfx\\Towners\\Bsmith24.wav", NULL },
240  { SFX_STREAM, "Sfx\\Towners\\Bsmith25.wav", NULL },
241  { SFX_STREAM, "Sfx\\Towners\\Bsmith26.wav", NULL },
242  { SFX_STREAM, "Sfx\\Towners\\Bsmith27.wav", NULL },
243  { SFX_STREAM, "Sfx\\Towners\\Bsmith28.wav", NULL },
244  { SFX_STREAM, "Sfx\\Towners\\Bsmith29.wav", NULL },
245  { SFX_STREAM, "Sfx\\Towners\\Bsmith30.wav", NULL },
246  { SFX_STREAM, "Sfx\\Towners\\Bsmith31.wav", NULL },
247  { SFX_STREAM, "Sfx\\Towners\\Bsmith32.wav", NULL },
248  { SFX_STREAM, "Sfx\\Towners\\Bsmith33.wav", NULL },
249  { SFX_STREAM, "Sfx\\Towners\\Bsmith34.wav", NULL },
250  { SFX_STREAM, "Sfx\\Towners\\Bsmith35.wav", NULL },
251  { SFX_STREAM, "Sfx\\Towners\\Bsmith36.wav", NULL },
252  { SFX_STREAM, "Sfx\\Towners\\Bsmith37.wav", NULL },
253  { SFX_STREAM, "Sfx\\Towners\\Bsmith38.wav", NULL },
254  { SFX_STREAM, "Sfx\\Towners\\Bsmith39.wav", NULL },
255  { SFX_STREAM, "Sfx\\Towners\\Bsmith40.wav", NULL },
256  { SFX_STREAM, "Sfx\\Towners\\Bsmith41.wav", NULL },
257  { SFX_STREAM, "Sfx\\Towners\\Bsmith42.wav", NULL },
258  { SFX_STREAM, "Sfx\\Towners\\Bsmith43.wav", NULL },
259 #endif
260  { SFX_STREAM, "Sfx\\Towners\\Bsmith44.wav", NULL },
261 #ifndef SPAWN
262  { SFX_STREAM, "Sfx\\Towners\\Bsmith45.wav", NULL },
263  { SFX_STREAM, "Sfx\\Towners\\Bsmith46.wav", NULL },
264  { SFX_STREAM, "Sfx\\Towners\\Bsmith47.wav", NULL },
265  { SFX_STREAM, "Sfx\\Towners\\Bsmith48.wav", NULL },
266  { SFX_STREAM, "Sfx\\Towners\\Bsmith49.wav", NULL },
267  { SFX_STREAM, "Sfx\\Towners\\Bsmith50.wav", NULL },
268  { SFX_STREAM, "Sfx\\Towners\\Bsmith51.wav", NULL },
269  { SFX_STREAM, "Sfx\\Towners\\Bsmith52.wav", NULL },
270  { SFX_STREAM, "Sfx\\Towners\\Bsmith53.wav", NULL },
271  { SFX_STREAM, "Sfx\\Towners\\Bsmith54.wav", NULL },
272  { SFX_STREAM, "Sfx\\Towners\\Bsmith55.wav", NULL },
273  { SFX_STREAM, "Sfx\\Towners\\Bsmith56.wav", NULL },
274 #endif
275  { 0, "Sfx\\Towners\\Cow1.wav", NULL },
276  { 0, "Sfx\\Towners\\Cow2.wav", NULL },
277 #ifndef SPAWN
278  { SFX_STREAM, "Sfx\\Towners\\Deadguy2.wav", NULL },
279  { SFX_STREAM, "Sfx\\Towners\\Drunk01.wav", NULL },
280  { SFX_STREAM, "Sfx\\Towners\\Drunk02.wav", NULL },
281  { SFX_STREAM, "Sfx\\Towners\\Drunk03.wav", NULL },
282  { SFX_STREAM, "Sfx\\Towners\\Drunk04.wav", NULL },
283  { SFX_STREAM, "Sfx\\Towners\\Drunk05.wav", NULL },
284  { SFX_STREAM, "Sfx\\Towners\\Drunk06.wav", NULL },
285  { SFX_STREAM, "Sfx\\Towners\\Drunk07.wav", NULL },
286  { SFX_STREAM, "Sfx\\Towners\\Drunk08.wav", NULL },
287  { SFX_STREAM, "Sfx\\Towners\\Drunk09.wav", NULL },
288  { SFX_STREAM, "Sfx\\Towners\\Drunk10.wav", NULL },
289  { SFX_STREAM, "Sfx\\Towners\\Drunk11.wav", NULL },
290  { SFX_STREAM, "Sfx\\Towners\\Drunk12.wav", NULL },
291  { SFX_STREAM, "Sfx\\Towners\\Drunk13.wav", NULL },
292  { SFX_STREAM, "Sfx\\Towners\\Drunk14.wav", NULL },
293  { SFX_STREAM, "Sfx\\Towners\\Drunk15.wav", NULL },
294  { SFX_STREAM, "Sfx\\Towners\\Drunk16.wav", NULL },
295  { SFX_STREAM, "Sfx\\Towners\\Drunk17.wav", NULL },
296  { SFX_STREAM, "Sfx\\Towners\\Drunk18.wav", NULL },
297  { SFX_STREAM, "Sfx\\Towners\\Drunk19.wav", NULL },
298  { SFX_STREAM, "Sfx\\Towners\\Drunk20.wav", NULL },
299  { SFX_STREAM, "Sfx\\Towners\\Drunk21.wav", NULL },
300  { SFX_STREAM, "Sfx\\Towners\\Drunk22.wav", NULL },
301  { SFX_STREAM, "Sfx\\Towners\\Drunk23.wav", NULL },
302  { SFX_STREAM, "Sfx\\Towners\\Drunk24.wav", NULL },
303  { SFX_STREAM, "Sfx\\Towners\\Drunk25.wav", NULL },
304  { SFX_STREAM, "Sfx\\Towners\\Drunk26.wav", NULL },
305 #endif
306  { SFX_STREAM, "Sfx\\Towners\\Drunk27.wav", NULL },
307 #ifndef SPAWN
308  { SFX_STREAM, "Sfx\\Towners\\Drunk28.wav", NULL },
309  { SFX_STREAM, "Sfx\\Towners\\Drunk29.wav", NULL },
310  { SFX_STREAM, "Sfx\\Towners\\Drunk30.wav", NULL },
311  { SFX_STREAM, "Sfx\\Towners\\Drunk31.wav", NULL },
312  { SFX_STREAM, "Sfx\\Towners\\Drunk32.wav", NULL },
313  { SFX_STREAM, "Sfx\\Towners\\Drunk33.wav", NULL },
314  { SFX_STREAM, "Sfx\\Towners\\Drunk34.wav", NULL },
315  { SFX_STREAM, "Sfx\\Towners\\Drunk35.wav", NULL },
316  { SFX_STREAM, "Sfx\\Towners\\Healer01.wav", NULL },
317  { SFX_STREAM, "Sfx\\Towners\\Healer02.wav", NULL },
318  { SFX_STREAM, "Sfx\\Towners\\Healer03.wav", NULL },
319  { SFX_STREAM, "Sfx\\Towners\\Healer04.wav", NULL },
320  { SFX_STREAM, "Sfx\\Towners\\Healer05.wav", NULL },
321  { SFX_STREAM, "Sfx\\Towners\\Healer06.wav", NULL },
322  { SFX_STREAM, "Sfx\\Towners\\Healer07.wav", NULL },
323  { SFX_STREAM, "Sfx\\Towners\\Healer08.wav", NULL },
324  { SFX_STREAM, "Sfx\\Towners\\Healer09.wav", NULL },
325  { SFX_STREAM, "Sfx\\Towners\\Healer10.wav", NULL },
326  { SFX_STREAM, "Sfx\\Towners\\Healer11.wav", NULL },
327  { SFX_STREAM, "Sfx\\Towners\\Healer12.wav", NULL },
328  { SFX_STREAM, "Sfx\\Towners\\Healer13.wav", NULL },
329  { SFX_STREAM, "Sfx\\Towners\\Healer14.wav", NULL },
330  { SFX_STREAM, "Sfx\\Towners\\Healer15.wav", NULL },
331  { SFX_STREAM, "Sfx\\Towners\\Healer16.wav", NULL },
332  { SFX_STREAM, "Sfx\\Towners\\Healer17.wav", NULL },
333  { SFX_STREAM, "Sfx\\Towners\\Healer18.wav", NULL },
334  { SFX_STREAM, "Sfx\\Towners\\Healer19.wav", NULL },
335  { SFX_STREAM, "Sfx\\Towners\\Healer20.wav", NULL },
336  { SFX_STREAM, "Sfx\\Towners\\Healer21.wav", NULL },
337  { SFX_STREAM, "Sfx\\Towners\\Healer22.wav", NULL },
338  { SFX_STREAM, "Sfx\\Towners\\Healer23.wav", NULL },
339  { SFX_STREAM, "Sfx\\Towners\\Healer24.wav", NULL },
340  { SFX_STREAM, "Sfx\\Towners\\Healer25.wav", NULL },
341  { SFX_STREAM, "Sfx\\Towners\\Healer26.wav", NULL },
342  { SFX_STREAM, "Sfx\\Towners\\Healer27.wav", NULL },
343  { SFX_STREAM, "Sfx\\Towners\\Healer28.wav", NULL },
344  { SFX_STREAM, "Sfx\\Towners\\Healer29.wav", NULL },
345  { SFX_STREAM, "Sfx\\Towners\\Healer30.wav", NULL },
346  { SFX_STREAM, "Sfx\\Towners\\Healer31.wav", NULL },
347  { SFX_STREAM, "Sfx\\Towners\\Healer32.wav", NULL },
348  { SFX_STREAM, "Sfx\\Towners\\Healer33.wav", NULL },
349  { SFX_STREAM, "Sfx\\Towners\\Healer34.wav", NULL },
350  { SFX_STREAM, "Sfx\\Towners\\Healer35.wav", NULL },
351  { SFX_STREAM, "Sfx\\Towners\\Healer36.wav", NULL },
352 #endif
353  { SFX_STREAM, "Sfx\\Towners\\Healer37.wav", NULL },
354 #ifndef SPAWN
355  { SFX_STREAM, "Sfx\\Towners\\Healer38.wav", NULL },
356  { SFX_STREAM, "Sfx\\Towners\\Healer39.wav", NULL },
357  { SFX_STREAM, "Sfx\\Towners\\Healer40.wav", NULL },
358  { SFX_STREAM, "Sfx\\Towners\\Healer41.wav", NULL },
359  { SFX_STREAM, "Sfx\\Towners\\Healer42.wav", NULL },
360  { SFX_STREAM, "Sfx\\Towners\\Healer43.wav", NULL },
361  { SFX_STREAM, "Sfx\\Towners\\Healer44.wav", NULL },
362  { SFX_STREAM, "Sfx\\Towners\\Healer45.wav", NULL },
363  { SFX_STREAM, "Sfx\\Towners\\Healer46.wav", NULL },
364  { SFX_STREAM, "Sfx\\Towners\\Healer47.wav", NULL },
365  { SFX_STREAM, "Sfx\\Towners\\Pegboy01.wav", NULL },
366  { SFX_STREAM, "Sfx\\Towners\\Pegboy02.wav", NULL },
367  { SFX_STREAM, "Sfx\\Towners\\Pegboy03.wav", NULL },
368  { SFX_STREAM, "Sfx\\Towners\\Pegboy04.wav", NULL },
369  { SFX_STREAM, "Sfx\\Towners\\Pegboy05.wav", NULL },
370  { SFX_STREAM, "Sfx\\Towners\\Pegboy06.wav", NULL },
371  { SFX_STREAM, "Sfx\\Towners\\Pegboy07.wav", NULL },
372  { SFX_STREAM, "Sfx\\Towners\\Pegboy08.wav", NULL },
373  { SFX_STREAM, "Sfx\\Towners\\Pegboy09.wav", NULL },
374  { SFX_STREAM, "Sfx\\Towners\\Pegboy10.wav", NULL },
375  { SFX_STREAM, "Sfx\\Towners\\Pegboy11.wav", NULL },
376  { SFX_STREAM, "Sfx\\Towners\\Pegboy12.wav", NULL },
377  { SFX_STREAM, "Sfx\\Towners\\Pegboy13.wav", NULL },
378  { SFX_STREAM, "Sfx\\Towners\\Pegboy14.wav", NULL },
379  { SFX_STREAM, "Sfx\\Towners\\Pegboy15.wav", NULL },
380  { SFX_STREAM, "Sfx\\Towners\\Pegboy16.wav", NULL },
381  { SFX_STREAM, "Sfx\\Towners\\Pegboy17.wav", NULL },
382  { SFX_STREAM, "Sfx\\Towners\\Pegboy18.wav", NULL },
383  { SFX_STREAM, "Sfx\\Towners\\Pegboy19.wav", NULL },
384  { SFX_STREAM, "Sfx\\Towners\\Pegboy20.wav", NULL },
385  { SFX_STREAM, "Sfx\\Towners\\Pegboy21.wav", NULL },
386  { SFX_STREAM, "Sfx\\Towners\\Pegboy22.wav", NULL },
387  { SFX_STREAM, "Sfx\\Towners\\Pegboy23.wav", NULL },
388  { SFX_STREAM, "Sfx\\Towners\\Pegboy24.wav", NULL },
389  { SFX_STREAM, "Sfx\\Towners\\Pegboy25.wav", NULL },
390  { SFX_STREAM, "Sfx\\Towners\\Pegboy26.wav", NULL },
391  { SFX_STREAM, "Sfx\\Towners\\Pegboy27.wav", NULL },
392  { SFX_STREAM, "Sfx\\Towners\\Pegboy28.wav", NULL },
393  { SFX_STREAM, "Sfx\\Towners\\Pegboy29.wav", NULL },
394  { SFX_STREAM, "Sfx\\Towners\\Pegboy30.wav", NULL },
395  { SFX_STREAM, "Sfx\\Towners\\Pegboy31.wav", NULL },
396 #endif
397  { SFX_STREAM, "Sfx\\Towners\\Pegboy32.wav", NULL },
398 #ifndef SPAWN
399  { SFX_STREAM, "Sfx\\Towners\\Pegboy33.wav", NULL },
400  { SFX_STREAM, "Sfx\\Towners\\Pegboy34.wav", NULL },
401  { SFX_STREAM, "Sfx\\Towners\\Pegboy35.wav", NULL },
402  { SFX_STREAM, "Sfx\\Towners\\Pegboy36.wav", NULL },
403  { SFX_STREAM, "Sfx\\Towners\\Pegboy37.wav", NULL },
404  { SFX_STREAM, "Sfx\\Towners\\Pegboy38.wav", NULL },
405  { SFX_STREAM, "Sfx\\Towners\\Pegboy39.wav", NULL },
406  { SFX_STREAM, "Sfx\\Towners\\Pegboy40.wav", NULL },
407  { SFX_STREAM, "Sfx\\Towners\\Pegboy41.wav", NULL },
408  { SFX_STREAM, "Sfx\\Towners\\Pegboy42.wav", NULL },
409  { SFX_STREAM, "Sfx\\Towners\\Pegboy43.wav", NULL },
410  { SFX_STREAM, "Sfx\\Towners\\Priest00.wav", NULL },
411  { SFX_STREAM, "Sfx\\Towners\\Priest01.wav", NULL },
412  { SFX_STREAM, "Sfx\\Towners\\Priest02.wav", NULL },
413  { SFX_STREAM, "Sfx\\Towners\\Priest03.wav", NULL },
414  { SFX_STREAM, "Sfx\\Towners\\Priest04.wav", NULL },
415  { SFX_STREAM, "Sfx\\Towners\\Priest05.wav", NULL },
416  { SFX_STREAM, "Sfx\\Towners\\Priest06.wav", NULL },
417  { SFX_STREAM, "Sfx\\Towners\\Priest07.wav", NULL },
418  { SFX_STREAM, "Sfx\\Towners\\Storyt00.wav", NULL },
419  { SFX_STREAM, "Sfx\\Towners\\Storyt01.wav", NULL },
420  { SFX_STREAM, "Sfx\\Towners\\Storyt02.wav", NULL },
421  { SFX_STREAM, "Sfx\\Towners\\Storyt03.wav", NULL },
422  { SFX_STREAM, "Sfx\\Towners\\Storyt04.wav", NULL },
423  { SFX_STREAM, "Sfx\\Towners\\Storyt05.wav", NULL },
424  { SFX_STREAM, "Sfx\\Towners\\Storyt06.wav", NULL },
425  { SFX_STREAM, "Sfx\\Towners\\Storyt07.wav", NULL },
426  { SFX_STREAM, "Sfx\\Towners\\Storyt08.wav", NULL },
427  { SFX_STREAM, "Sfx\\Towners\\Storyt09.wav", NULL },
428  { SFX_STREAM, "Sfx\\Towners\\Storyt10.wav", NULL },
429  { SFX_STREAM, "Sfx\\Towners\\Storyt11.wav", NULL },
430  { SFX_STREAM, "Sfx\\Towners\\Storyt12.wav", NULL },
431  { SFX_STREAM, "Sfx\\Towners\\Storyt13.wav", NULL },
432  { SFX_STREAM, "Sfx\\Towners\\Storyt14.wav", NULL },
433  { SFX_STREAM, "Sfx\\Towners\\Storyt15.wav", NULL },
434  { SFX_STREAM, "Sfx\\Towners\\Storyt16.wav", NULL },
435  { SFX_STREAM, "Sfx\\Towners\\Storyt17.wav", NULL },
436  { SFX_STREAM, "Sfx\\Towners\\Storyt18.wav", NULL },
437  { SFX_STREAM, "Sfx\\Towners\\Storyt19.wav", NULL },
438  { SFX_STREAM, "Sfx\\Towners\\Storyt20.wav", NULL },
439  { SFX_STREAM, "Sfx\\Towners\\Storyt21.wav", NULL },
440  { SFX_STREAM, "Sfx\\Towners\\Storyt22.wav", NULL },
441  { SFX_STREAM, "Sfx\\Towners\\Storyt23.wav", NULL },
442  { SFX_STREAM, "Sfx\\Towners\\Storyt24.wav", NULL },
443 #endif
444  { SFX_STREAM, "Sfx\\Towners\\Storyt25.wav", NULL },
445 #ifndef SPAWN
446  { SFX_STREAM, "Sfx\\Towners\\Storyt26.wav", NULL },
447  { SFX_STREAM, "Sfx\\Towners\\Storyt27.wav", NULL },
448  { SFX_STREAM, "Sfx\\Towners\\Storyt28.wav", NULL },
449  { SFX_STREAM, "Sfx\\Towners\\Storyt29.wav", NULL },
450  { SFX_STREAM, "Sfx\\Towners\\Storyt30.wav", NULL },
451  { SFX_STREAM, "Sfx\\Towners\\Storyt31.wav", NULL },
452  { SFX_STREAM, "Sfx\\Towners\\Storyt32.wav", NULL },
453  { SFX_STREAM, "Sfx\\Towners\\Storyt33.wav", NULL },
454  { SFX_STREAM, "Sfx\\Towners\\Storyt34.wav", NULL },
455  { SFX_STREAM, "Sfx\\Towners\\Storyt35.wav", NULL },
456  { SFX_STREAM, "Sfx\\Towners\\Storyt36.wav", NULL },
457  { SFX_STREAM, "Sfx\\Towners\\Storyt37.wav", NULL },
458  { SFX_STREAM, "Sfx\\Towners\\Storyt38.wav", NULL },
459 #endif
460  { SFX_STREAM, "Sfx\\Towners\\Tavown00.wav", NULL },
461 #ifndef SPAWN
462  { SFX_STREAM, "Sfx\\Towners\\Tavown01.wav", NULL },
463  { SFX_STREAM, "Sfx\\Towners\\Tavown02.wav", NULL },
464  { SFX_STREAM, "Sfx\\Towners\\Tavown03.wav", NULL },
465  { SFX_STREAM, "Sfx\\Towners\\Tavown04.wav", NULL },
466  { SFX_STREAM, "Sfx\\Towners\\Tavown05.wav", NULL },
467  { SFX_STREAM, "Sfx\\Towners\\Tavown06.wav", NULL },
468  { SFX_STREAM, "Sfx\\Towners\\Tavown07.wav", NULL },
469  { SFX_STREAM, "Sfx\\Towners\\Tavown08.wav", NULL },
470  { SFX_STREAM, "Sfx\\Towners\\Tavown09.wav", NULL },
471  { SFX_STREAM, "Sfx\\Towners\\Tavown10.wav", NULL },
472  { SFX_STREAM, "Sfx\\Towners\\Tavown11.wav", NULL },
473  { SFX_STREAM, "Sfx\\Towners\\Tavown12.wav", NULL },
474  { SFX_STREAM, "Sfx\\Towners\\Tavown13.wav", NULL },
475  { SFX_STREAM, "Sfx\\Towners\\Tavown14.wav", NULL },
476  { SFX_STREAM, "Sfx\\Towners\\Tavown15.wav", NULL },
477  { SFX_STREAM, "Sfx\\Towners\\Tavown16.wav", NULL },
478  { SFX_STREAM, "Sfx\\Towners\\Tavown17.wav", NULL },
479  { SFX_STREAM, "Sfx\\Towners\\Tavown18.wav", NULL },
480  { SFX_STREAM, "Sfx\\Towners\\Tavown19.wav", NULL },
481  { SFX_STREAM, "Sfx\\Towners\\Tavown20.wav", NULL },
482  { SFX_STREAM, "Sfx\\Towners\\Tavown21.wav", NULL },
483  { SFX_STREAM, "Sfx\\Towners\\Tavown22.wav", NULL },
484  { SFX_STREAM, "Sfx\\Towners\\Tavown23.wav", NULL },
485  { SFX_STREAM, "Sfx\\Towners\\Tavown24.wav", NULL },
486  { SFX_STREAM, "Sfx\\Towners\\Tavown25.wav", NULL },
487  { SFX_STREAM, "Sfx\\Towners\\Tavown26.wav", NULL },
488  { SFX_STREAM, "Sfx\\Towners\\Tavown27.wav", NULL },
489  { SFX_STREAM, "Sfx\\Towners\\Tavown28.wav", NULL },
490  { SFX_STREAM, "Sfx\\Towners\\Tavown29.wav", NULL },
491  { SFX_STREAM, "Sfx\\Towners\\Tavown30.wav", NULL },
492  { SFX_STREAM, "Sfx\\Towners\\Tavown31.wav", NULL },
493  { SFX_STREAM, "Sfx\\Towners\\Tavown32.wav", NULL },
494  { SFX_STREAM, "Sfx\\Towners\\Tavown33.wav", NULL },
495  { SFX_STREAM, "Sfx\\Towners\\Tavown34.wav", NULL },
496  { SFX_STREAM, "Sfx\\Towners\\Tavown35.wav", NULL },
497 #endif
498  { SFX_STREAM, "Sfx\\Towners\\Tavown36.wav", NULL },
499 #ifndef SPAWN
500  { SFX_STREAM, "Sfx\\Towners\\Tavown37.wav", NULL },
501  { SFX_STREAM, "Sfx\\Towners\\Tavown38.wav", NULL },
502  { SFX_STREAM, "Sfx\\Towners\\Tavown39.wav", NULL },
503  { SFX_STREAM, "Sfx\\Towners\\Tavown40.wav", NULL },
504  { SFX_STREAM, "Sfx\\Towners\\Tavown41.wav", NULL },
505  { SFX_STREAM, "Sfx\\Towners\\Tavown42.wav", NULL },
506  { SFX_STREAM, "Sfx\\Towners\\Tavown43.wav", NULL },
507  { SFX_STREAM, "Sfx\\Towners\\Tavown44.wav", NULL },
508  { SFX_STREAM, "Sfx\\Towners\\Tavown45.wav", NULL },
509  { SFX_STREAM, "Sfx\\Towners\\Witch01.wav", NULL },
510  { SFX_STREAM, "Sfx\\Towners\\Witch02.wav", NULL },
511  { SFX_STREAM, "Sfx\\Towners\\Witch03.wav", NULL },
512  { SFX_STREAM, "Sfx\\Towners\\Witch04.wav", NULL },
513  { SFX_STREAM, "Sfx\\Towners\\Witch05.wav", NULL },
514  { SFX_STREAM, "Sfx\\Towners\\Witch06.wav", NULL },
515  { SFX_STREAM, "Sfx\\Towners\\Witch07.wav", NULL },
516  { SFX_STREAM, "Sfx\\Towners\\Witch08.wav", NULL },
517  { SFX_STREAM, "Sfx\\Towners\\Witch09.wav", NULL },
518  { SFX_STREAM, "Sfx\\Towners\\Witch10.wav", NULL },
519  { SFX_STREAM, "Sfx\\Towners\\Witch11.wav", NULL },
520  { SFX_STREAM, "Sfx\\Towners\\Witch12.wav", NULL },
521  { SFX_STREAM, "Sfx\\Towners\\Witch13.wav", NULL },
522  { SFX_STREAM, "Sfx\\Towners\\Witch14.wav", NULL },
523  { SFX_STREAM, "Sfx\\Towners\\Witch15.wav", NULL },
524  { SFX_STREAM, "Sfx\\Towners\\Witch16.wav", NULL },
525  { SFX_STREAM, "Sfx\\Towners\\Witch17.wav", NULL },
526  { SFX_STREAM, "Sfx\\Towners\\Witch18.wav", NULL },
527  { SFX_STREAM, "Sfx\\Towners\\Witch19.wav", NULL },
528  { SFX_STREAM, "Sfx\\Towners\\Witch20.wav", NULL },
529  { SFX_STREAM, "Sfx\\Towners\\Witch21.wav", NULL },
530  { SFX_STREAM, "Sfx\\Towners\\Witch22.wav", NULL },
531  { SFX_STREAM, "Sfx\\Towners\\Witch23.wav", NULL },
532  { SFX_STREAM, "Sfx\\Towners\\Witch24.wav", NULL },
533  { SFX_STREAM, "Sfx\\Towners\\Witch25.wav", NULL },
534  { SFX_STREAM, "Sfx\\Towners\\Witch26.wav", NULL },
535  { SFX_STREAM, "Sfx\\Towners\\Witch27.wav", NULL },
536  { SFX_STREAM, "Sfx\\Towners\\Witch28.wav", NULL },
537  { SFX_STREAM, "Sfx\\Towners\\Witch29.wav", NULL },
538  { SFX_STREAM, "Sfx\\Towners\\Witch30.wav", NULL },
539  { SFX_STREAM, "Sfx\\Towners\\Witch31.wav", NULL },
540  { SFX_STREAM, "Sfx\\Towners\\Witch32.wav", NULL },
541  { SFX_STREAM, "Sfx\\Towners\\Witch33.wav", NULL },
542  { SFX_STREAM, "Sfx\\Towners\\Witch34.wav", NULL },
543  { SFX_STREAM, "Sfx\\Towners\\Witch35.wav", NULL },
544  { SFX_STREAM, "Sfx\\Towners\\Witch36.wav", NULL },
545  { SFX_STREAM, "Sfx\\Towners\\Witch37.wav", NULL },
546 #endif
547  { SFX_STREAM, "Sfx\\Towners\\Witch38.wav", NULL },
548 #ifndef SPAWN
549  { SFX_STREAM, "Sfx\\Towners\\Witch39.wav", NULL },
550  { SFX_STREAM, "Sfx\\Towners\\Witch40.wav", NULL },
551  { SFX_STREAM, "Sfx\\Towners\\Witch41.wav", NULL },
552  { SFX_STREAM, "Sfx\\Towners\\Witch42.wav", NULL },
553  { SFX_STREAM, "Sfx\\Towners\\Witch43.wav", NULL },
554  { SFX_STREAM, "Sfx\\Towners\\Witch44.wav", NULL },
555  { SFX_STREAM, "Sfx\\Towners\\Witch45.wav", NULL },
556  { SFX_STREAM, "Sfx\\Towners\\Witch46.wav", NULL },
557  { SFX_STREAM, "Sfx\\Towners\\Witch47.wav", NULL },
558  { SFX_STREAM, "Sfx\\Towners\\Witch48.wav", NULL },
559  { SFX_STREAM, "Sfx\\Towners\\Witch49.wav", NULL },
560  { SFX_STREAM, "Sfx\\Towners\\Witch50.wav", NULL },
561  { SFX_STREAM, "Sfx\\Towners\\Wound01.wav", NULL },
562  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage01.wav", NULL },
563  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage02.wav", NULL },
564  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage03.wav", NULL },
565  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage04.wav", NULL },
566  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage05.wav", NULL },
567  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage06.wav", NULL },
568  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage07.wav", NULL },
569  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage08.wav", NULL },
570  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage09.wav", NULL },
571  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage10.wav", NULL },
572  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage11.wav", NULL },
573  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage12.wav", NULL },
574  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage13.wav", NULL },
575  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage14.wav", NULL },
576  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage15.wav", NULL },
577  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage16.wav", NULL },
578  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage17.wav", NULL },
579  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage18.wav", NULL },
580  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage19.wav", NULL },
581  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage20.wav", NULL },
582  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage21.wav", NULL },
583  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage22.wav", NULL },
584  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage23.wav", NULL },
585  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage24.wav", NULL },
586  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage25.wav", NULL },
587  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage26.wav", NULL },
588  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage27.wav", NULL },
589  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage28.wav", NULL },
590  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage29.wav", NULL },
591  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage30.wav", NULL },
592  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage31.wav", NULL },
593  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage32.wav", NULL },
594  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage33.wav", NULL },
595  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage34.wav", NULL },
596  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage35.wav", NULL },
597  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage36.wav", NULL },
598  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage37.wav", NULL },
599  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage38.wav", NULL },
600  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage39.wav", NULL },
601  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage40.wav", NULL },
602  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage41.wav", NULL },
603  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage42.wav", NULL },
604  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage43.wav", NULL },
605  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage44.wav", NULL },
606  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage45.wav", NULL },
607  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage46.wav", NULL },
608  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage47.wav", NULL },
609  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage48.wav", NULL },
610  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage49.wav", NULL },
611  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage50.wav", NULL },
612  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage51.wav", NULL },
613  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage52.wav", NULL },
614  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage53.wav", NULL },
615  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage54.wav", NULL },
616  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage55.wav", NULL },
617  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage56.wav", NULL },
618  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage57.wav", NULL },
619  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage58.wav", NULL },
620  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage59.wav", NULL },
621  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage60.wav", NULL },
622  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage61.wav", NULL },
623  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage62.wav", NULL },
624  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage63.wav", NULL },
625  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage64.wav", NULL },
626  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage65.wav", NULL },
627  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage66.wav", NULL },
628  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage67.wav", NULL },
629  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage68.wav", NULL },
630  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage69.wav", NULL },
631  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage69b.wav", NULL },
632  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage70.wav", NULL },
633  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage71.wav", NULL },
634  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage72.wav", NULL },
635  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage73.wav", NULL },
636  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage74.wav", NULL },
637  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage75.wav", NULL },
638  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage76.wav", NULL },
639  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage77.wav", NULL },
640  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage78.wav", NULL },
641  { SFX_SORCEROR, "Sfx\\Sorceror\\Mage79.wav", NULL },
642  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage80.wav", NULL },
643  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage81.wav", NULL },
644  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage82.wav", NULL },
645  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage83.wav", NULL },
646  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage84.wav", NULL },
647  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage85.wav", NULL },
648  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage86.wav", NULL },
649  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage87.wav", NULL },
650  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage88.wav", NULL },
651  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage89.wav", NULL },
652  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage90.wav", NULL },
653  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage91.wav", NULL },
654  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage92.wav", NULL },
655  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage93.wav", NULL },
656  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage94.wav", NULL },
657  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage95.wav", NULL },
658  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage96.wav", NULL },
659  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage97.wav", NULL },
660  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage98.wav", NULL },
661  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage99.wav", NULL },
662  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage100.wav", NULL },
663  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage101.wav", NULL },
664  { SFX_STREAM | SFX_SORCEROR, "Sfx\\Sorceror\\Mage102.wav", NULL },
665  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue01.wav", NULL },
666  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue02.wav", NULL },
667  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue03.wav", NULL },
668  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue04.wav", NULL },
669  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue05.wav", NULL },
670  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue06.wav", NULL },
671  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue07.wav", NULL },
672  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue08.wav", NULL },
673  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue09.wav", NULL },
674  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue10.wav", NULL },
675  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue11.wav", NULL },
676  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue12.wav", NULL },
677  { SFX_ROGUE, "Sfx\\Rogue\\Rogue13.wav", NULL },
678  { SFX_ROGUE, "Sfx\\Rogue\\Rogue14.wav", NULL },
679  { SFX_ROGUE, "Sfx\\Rogue\\Rogue15.wav", NULL },
680  { SFX_ROGUE, "Sfx\\Rogue\\Rogue16.wav", NULL },
681  { SFX_ROGUE, "Sfx\\Rogue\\Rogue17.wav", NULL },
682  { SFX_ROGUE, "Sfx\\Rogue\\Rogue18.wav", NULL },
683  { SFX_ROGUE, "Sfx\\Rogue\\Rogue19.wav", NULL },
684  { SFX_ROGUE, "Sfx\\Rogue\\Rogue20.wav", NULL },
685  { SFX_ROGUE, "Sfx\\Rogue\\Rogue21.wav", NULL },
686  { SFX_ROGUE, "Sfx\\Rogue\\Rogue22.wav", NULL },
687  { SFX_ROGUE, "Sfx\\Rogue\\Rogue23.wav", NULL },
688  { SFX_ROGUE, "Sfx\\Rogue\\Rogue24.wav", NULL },
689  { SFX_ROGUE, "Sfx\\Rogue\\Rogue25.wav", NULL },
690  { SFX_ROGUE, "Sfx\\Rogue\\Rogue26.wav", NULL },
691  { SFX_ROGUE, "Sfx\\Rogue\\Rogue27.wav", NULL },
692  { SFX_ROGUE, "Sfx\\Rogue\\Rogue28.wav", NULL },
693  { SFX_ROGUE, "Sfx\\Rogue\\Rogue29.wav", NULL },
694  { SFX_ROGUE, "Sfx\\Rogue\\Rogue30.wav", NULL },
695  { SFX_ROGUE, "Sfx\\Rogue\\Rogue31.wav", NULL },
696  { SFX_ROGUE, "Sfx\\Rogue\\Rogue32.wav", NULL },
697  { SFX_ROGUE, "Sfx\\Rogue\\Rogue33.wav", NULL },
698  { SFX_ROGUE, "Sfx\\Rogue\\Rogue34.wav", NULL },
699  { SFX_ROGUE, "Sfx\\Rogue\\Rogue35.wav", NULL },
700  { SFX_ROGUE, "Sfx\\Rogue\\Rogue36.wav", NULL },
701  { SFX_ROGUE, "Sfx\\Rogue\\Rogue37.wav", NULL },
702  { SFX_ROGUE, "Sfx\\Rogue\\Rogue38.wav", NULL },
703  { SFX_ROGUE, "Sfx\\Rogue\\Rogue39.wav", NULL },
704  { SFX_ROGUE, "Sfx\\Rogue\\Rogue40.wav", NULL },
705  { SFX_ROGUE, "Sfx\\Rogue\\Rogue41.wav", NULL },
706  { SFX_ROGUE, "Sfx\\Rogue\\Rogue42.wav", NULL },
707  { SFX_ROGUE, "Sfx\\Rogue\\Rogue43.wav", NULL },
708  { SFX_ROGUE, "Sfx\\Rogue\\Rogue44.wav", NULL },
709  { SFX_ROGUE, "Sfx\\Rogue\\Rogue45.wav", NULL },
710  { SFX_ROGUE, "Sfx\\Rogue\\Rogue46.wav", NULL },
711  { SFX_ROGUE, "Sfx\\Rogue\\Rogue47.wav", NULL },
712  { SFX_ROGUE, "Sfx\\Rogue\\Rogue48.wav", NULL },
713  { SFX_ROGUE, "Sfx\\Rogue\\Rogue49.wav", NULL },
714  { SFX_ROGUE, "Sfx\\Rogue\\Rogue50.wav", NULL },
715  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue51.wav", NULL },
716  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue52.wav", NULL },
717  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue53.wav", NULL },
718  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue54.wav", NULL },
719  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue55.wav", NULL },
720  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue56.wav", NULL },
721  { SFX_ROGUE, "Sfx\\Rogue\\Rogue57.wav", NULL },
722  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue58.wav", NULL },
723  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue59.wav", NULL },
724  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue60.wav", NULL },
725  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue61.wav", NULL },
726  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue62.wav", NULL },
727  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue63.wav", NULL },
728  { SFX_ROGUE, "Sfx\\Rogue\\Rogue64.wav", NULL },
729  { SFX_ROGUE, "Sfx\\Rogue\\Rogue65.wav", NULL },
730  { SFX_ROGUE, "Sfx\\Rogue\\Rogue66.wav", NULL },
731  { SFX_ROGUE, "Sfx\\Rogue\\Rogue67.wav", NULL },
732  { SFX_ROGUE, "Sfx\\Rogue\\Rogue68.wav", NULL },
733  { SFX_ROGUE, "Sfx\\Rogue\\Rogue69.wav", NULL },
734  { SFX_ROGUE, "Sfx\\Rogue\\Rogue69b.wav", NULL },
735  { SFX_ROGUE, "Sfx\\Rogue\\Rogue70.wav", NULL },
736  { SFX_ROGUE, "Sfx\\Rogue\\Rogue71.wav", NULL },
737  { SFX_ROGUE, "Sfx\\Rogue\\Rogue72.wav", NULL },
738  { SFX_ROGUE, "Sfx\\Rogue\\Rogue73.wav", NULL },
739  { SFX_ROGUE, "Sfx\\Rogue\\Rogue74.wav", NULL },
740  { SFX_ROGUE, "Sfx\\Rogue\\Rogue75.wav", NULL },
741  { SFX_ROGUE, "Sfx\\Rogue\\Rogue76.wav", NULL },
742  { SFX_ROGUE, "Sfx\\Rogue\\Rogue77.wav", NULL },
743  { SFX_ROGUE, "Sfx\\Rogue\\Rogue78.wav", NULL },
744  { SFX_ROGUE, "Sfx\\Rogue\\Rogue79.wav", NULL },
745  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue80.wav", NULL },
746  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue81.wav", NULL },
747  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue82.wav", NULL },
748  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue83.wav", NULL },
749  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue84.wav", NULL },
750  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue85.wav", NULL },
751  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue86.wav", NULL },
752  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue87.wav", NULL },
753  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue88.wav", NULL },
754  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue89.wav", NULL },
755  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue90.wav", NULL },
756  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue91.wav", NULL },
757  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue92.wav", NULL },
758  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue93.wav", NULL },
759  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue94.wav", NULL },
760  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue95.wav", NULL },
761  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue96.wav", NULL },
762  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue97.wav", NULL },
763  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue98.wav", NULL },
764  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue99.wav", NULL },
765  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue100.wav", NULL },
766  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue101.wav", NULL },
767  { SFX_STREAM | SFX_ROGUE, "Sfx\\Rogue\\Rogue102.wav", NULL },
768  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior01.wav", NULL },
769  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior02.wav", NULL },
770  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior03.wav", NULL },
771  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior04.wav", NULL },
772  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior05.wav", NULL },
773  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior06.wav", NULL },
774  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior07.wav", NULL },
775  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior08.wav", NULL },
776  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior09.wav", NULL },
777  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior10.wav", NULL },
778  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior11.wav", NULL },
779  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior12.wav", NULL },
780 #endif
781  { SFX_WARRIOR, "Sfx\\Warrior\\Warior13.wav", NULL },
782  { SFX_WARRIOR, "Sfx\\Warrior\\Warior14.wav", NULL },
783  { SFX_WARRIOR, "Sfx\\Warrior\\Wario14b.wav", NULL },
784  { SFX_WARRIOR, "Sfx\\Warrior\\Wario14c.wav", NULL },
785  { SFX_WARRIOR, "Sfx\\Warrior\\Warior15.wav", NULL },
786  { SFX_WARRIOR, "Sfx\\Warrior\\Wario15b.wav", NULL },
787  { SFX_WARRIOR, "Sfx\\Warrior\\Wario15c.wav", NULL },
788  { SFX_WARRIOR, "Sfx\\Warrior\\Warior16.wav", NULL },
789  { SFX_WARRIOR, "Sfx\\Warrior\\Wario16b.wav", NULL },
790  { SFX_WARRIOR, "Sfx\\Warrior\\Wario16c.wav", NULL },
791  { SFX_WARRIOR, "Sfx\\Warrior\\Warior17.wav", NULL },
792  { SFX_WARRIOR, "Sfx\\Warrior\\Warior18.wav", NULL },
793  { SFX_WARRIOR, "Sfx\\Warrior\\Warior19.wav", NULL },
794  { SFX_WARRIOR, "Sfx\\Warrior\\Warior20.wav", NULL },
795  { SFX_WARRIOR, "Sfx\\Warrior\\Warior21.wav", NULL },
796  { SFX_WARRIOR, "Sfx\\Warrior\\Warior22.wav", NULL },
797  { SFX_WARRIOR, "Sfx\\Warrior\\Warior23.wav", NULL },
798  { SFX_WARRIOR, "Sfx\\Warrior\\Warior24.wav", NULL },
799  { SFX_WARRIOR, "Sfx\\Warrior\\Warior25.wav", NULL },
800  { SFX_WARRIOR, "Sfx\\Warrior\\Warior26.wav", NULL },
801  { SFX_WARRIOR, "Sfx\\Warrior\\Warior27.wav", NULL },
802  { SFX_WARRIOR, "Sfx\\Warrior\\Warior28.wav", NULL },
803  { SFX_WARRIOR, "Sfx\\Warrior\\Warior29.wav", NULL },
804  { SFX_WARRIOR, "Sfx\\Warrior\\Warior30.wav", NULL },
805  { SFX_WARRIOR, "Sfx\\Warrior\\Warior31.wav", NULL },
806  { SFX_WARRIOR, "Sfx\\Warrior\\Warior32.wav", NULL },
807  { SFX_WARRIOR, "Sfx\\Warrior\\Warior33.wav", NULL },
808  { SFX_WARRIOR, "Sfx\\Warrior\\Warior34.wav", NULL },
809  { SFX_WARRIOR, "Sfx\\Warrior\\Warior35.wav", NULL },
810  { SFX_WARRIOR, "Sfx\\Warrior\\Warior36.wav", NULL },
811  { SFX_WARRIOR, "Sfx\\Warrior\\Warior37.wav", NULL },
812  { SFX_WARRIOR, "Sfx\\Warrior\\Warior38.wav", NULL },
813  { SFX_WARRIOR, "Sfx\\Warrior\\Warior39.wav", NULL },
814  { SFX_WARRIOR, "Sfx\\Warrior\\Warior40.wav", NULL },
815  { SFX_WARRIOR, "Sfx\\Warrior\\Warior41.wav", NULL },
816  { SFX_WARRIOR, "Sfx\\Warrior\\Warior42.wav", NULL },
817  { SFX_WARRIOR, "Sfx\\Warrior\\Warior43.wav", NULL },
818  { SFX_WARRIOR, "Sfx\\Warrior\\Warior44.wav", NULL },
819  { SFX_WARRIOR, "Sfx\\Warrior\\Warior45.wav", NULL },
820  { SFX_WARRIOR, "Sfx\\Warrior\\Warior46.wav", NULL },
821  { SFX_WARRIOR, "Sfx\\Warrior\\Warior47.wav", NULL },
822  { SFX_WARRIOR, "Sfx\\Warrior\\Warior48.wav", NULL },
823  { SFX_WARRIOR, "Sfx\\Warrior\\Warior49.wav", NULL },
824  { SFX_WARRIOR, "Sfx\\Warrior\\Warior50.wav", NULL },
825  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior51.wav", NULL },
826  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior52.wav", NULL },
827  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior53.wav", NULL },
828  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior54.wav", NULL },
829  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior55.wav", NULL },
830  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior56.wav", NULL },
831  { SFX_WARRIOR, "Sfx\\Warrior\\Warior57.wav", NULL },
832  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior58.wav", NULL },
833  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior59.wav", NULL },
834  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior60.wav", NULL },
835  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior61.wav", NULL },
836  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior62.wav", NULL },
837  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior63.wav", NULL },
838  { SFX_WARRIOR, "Sfx\\Warrior\\Warior64.wav", NULL },
839  { SFX_WARRIOR, "Sfx\\Warrior\\Warior65.wav", NULL },
840  { SFX_WARRIOR, "Sfx\\Warrior\\Warior66.wav", NULL },
841  { SFX_WARRIOR, "Sfx\\Warrior\\Warior67.wav", NULL },
842  { SFX_WARRIOR, "Sfx\\Warrior\\Warior68.wav", NULL },
843  { SFX_WARRIOR, "Sfx\\Warrior\\Warior69.wav", NULL },
844  { SFX_WARRIOR, "Sfx\\Warrior\\Wario69b.wav", NULL },
845  { SFX_WARRIOR, "Sfx\\Warrior\\Warior70.wav", NULL },
846  { SFX_WARRIOR, "Sfx\\Warrior\\Warior71.wav", NULL },
847  { SFX_WARRIOR, "Sfx\\Warrior\\Warior72.wav", NULL },
848  { SFX_WARRIOR, "Sfx\\Warrior\\Warior73.wav", NULL },
849  { SFX_WARRIOR, "Sfx\\Warrior\\Warior74.wav", NULL },
850  { SFX_WARRIOR, "Sfx\\Warrior\\Warior75.wav", NULL },
851  { SFX_WARRIOR, "Sfx\\Warrior\\Warior76.wav", NULL },
852  { SFX_WARRIOR, "Sfx\\Warrior\\Warior77.wav", NULL },
853  { SFX_WARRIOR, "Sfx\\Warrior\\Warior78.wav", NULL },
854  { SFX_WARRIOR, "Sfx\\Warrior\\Warior79.wav", NULL },
855 #ifndef SPAWN
856  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior80.wav", NULL },
857  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior81.wav", NULL },
858  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior82.wav", NULL },
859  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior83.wav", NULL },
860  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior84.wav", NULL },
861  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior85.wav", NULL },
862  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior86.wav", NULL },
863  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior87.wav", NULL },
864  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior88.wav", NULL },
865  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior89.wav", NULL },
866  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior90.wav", NULL },
867  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior91.wav", NULL },
868  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior92.wav", NULL },
869  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior93.wav", NULL },
870  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior94.wav", NULL },
871  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior95.wav", NULL },
872  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario95b.wav", NULL },
873  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario95c.wav", NULL },
874  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario95d.wav", NULL },
875  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario95e.wav", NULL },
876  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario95f.wav", NULL },
877 #endif
878  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario96b.wav", NULL },
879  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario97.wav", NULL },
880  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario98.wav", NULL },
881  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Warior99.wav", NULL },
882 #ifndef SPAWN
883  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario100.wav", NULL },
884  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario101.wav", NULL },
885  { SFX_STREAM | SFX_WARRIOR, "Sfx\\Warrior\\Wario102.wav", NULL },
886  { SFX_STREAM, "Sfx\\Narrator\\Nar01.wav", NULL },
887  { SFX_STREAM, "Sfx\\Narrator\\Nar02.wav", NULL },
888  { SFX_STREAM, "Sfx\\Narrator\\Nar03.wav", NULL },
889  { SFX_STREAM, "Sfx\\Narrator\\Nar04.wav", NULL },
890  { SFX_STREAM, "Sfx\\Narrator\\Nar05.wav", NULL },
891  { SFX_STREAM, "Sfx\\Narrator\\Nar06.wav", NULL },
892  { SFX_STREAM, "Sfx\\Narrator\\Nar07.wav", NULL },
893  { SFX_STREAM, "Sfx\\Narrator\\Nar08.wav", NULL },
894  { SFX_STREAM, "Sfx\\Narrator\\Nar09.wav", NULL },
895  { SFX_STREAM, "Sfx\\Misc\\Lvl16int.wav", NULL },
896  { SFX_STREAM, "Sfx\\Monsters\\Butcher.wav", NULL },
897  { SFX_STREAM, "Sfx\\Monsters\\Garbud01.wav", NULL },
898  { SFX_STREAM, "Sfx\\Monsters\\Garbud02.wav", NULL },
899  { SFX_STREAM, "Sfx\\Monsters\\Garbud03.wav", NULL },
900  { SFX_STREAM, "Sfx\\Monsters\\Garbud04.wav", NULL },
901  { SFX_STREAM, "Sfx\\Monsters\\Izual01.wav", NULL },
902  { SFX_STREAM, "Sfx\\Monsters\\Lach01.wav", NULL },
903  { SFX_STREAM, "Sfx\\Monsters\\Lach02.wav", NULL },
904  { SFX_STREAM, "Sfx\\Monsters\\Lach03.wav", NULL },
905  { SFX_STREAM, "Sfx\\Monsters\\Laz01.wav", NULL },
906  { SFX_STREAM, "Sfx\\Monsters\\Laz02.wav", NULL },
907  { SFX_STREAM, "Sfx\\Monsters\\Sking01.wav", NULL },
908  { SFX_STREAM, "Sfx\\Monsters\\Snot01.wav", NULL },
909  { SFX_STREAM, "Sfx\\Monsters\\Snot02.wav", NULL },
910  { SFX_STREAM, "Sfx\\Monsters\\Snot03.wav", NULL },
911  { SFX_STREAM, "Sfx\\Monsters\\Warlrd01.wav", NULL },
912  { SFX_STREAM, "Sfx\\Monsters\\Wlock01.wav", NULL },
913  { SFX_STREAM, "Sfx\\Monsters\\Zhar01.wav", NULL },
914  { SFX_STREAM, "Sfx\\Monsters\\Zhar02.wav", NULL },
915  { SFX_STREAM, "Sfx\\Monsters\\DiabloD.wav", NULL },
916 #endif
917  // clang-format on
918 };
919 
920 BOOL effect_is_playing(int nSFX)
921 {
922  TSFX *sfx = &sgSFX[nSFX];
923  if (sfx->pSnd)
924  return snd_playing(sfx->pSnd);
925 
926  if (sfx->bFlags & SFX_STREAM)
927  return sfx == sgpStreamSFX;
928 
929  return FALSE;
930 }
931 
933 {
934  if (sghStream) {
935  SFileDdaEnd(sghStream);
936  SFileCloseFile(sghStream);
937  sghStream = NULL;
938  sgpStreamSFX = NULL;
939  }
940 }
941 
942 void InitMonsterSND(int monst)
943 {
944  TSnd *pSnd;
945  char name[MAX_PATH];
946  char *path;
947  int mtype, i, j;
948 
949  if (!gbSndInited) {
950  return;
951  }
952 
953  mtype = Monsters[monst].mtype;
954  for (i = 0; i < 4; i++) {
955  if (MonstSndChar[i] != 's' || monsterdata[mtype].snd_special) {
956  for (j = 0; j < 2; j++) {
957  sprintf(name, monsterdata[mtype].sndfile, MonstSndChar[i], j + 1);
958  path = (char *)DiabloAllocPtr(strlen(name) + 1);
959  strcpy(path, name);
960  pSnd = sound_file_load(path);
961  Monsters[monst].Snds[i][j] = pSnd;
962  if (!pSnd)
963  mem_free_dbg(path);
964  }
965  }
966  }
967 }
968 
970 {
971  int mtype, i, j, k;
972  char *file;
973  TSnd *pSnd;
974 
975  for (i = 0; i < nummtypes; i++) {
976  mtype = Monsters[i].mtype;
977  for (j = 0; j < 4; ++j) {
978  for (k = 0; k < 2; ++k) {
979  pSnd = Monsters[i].Snds[j][k];
980  if (pSnd) {
981  Monsters[i].Snds[j][k] = NULL;
982  file = pSnd->sound_path;
983  pSnd->sound_path = NULL;
984  sound_file_cleanup(pSnd);
985  mem_free_dbg(file);
986  }
987  }
988  }
989  }
990 }
991 
992 void PlayEffect(int i, int mode)
993 {
994  int sndIdx, mi, lVolume, lPan;
995  TSnd *snd;
996 
997  if (plr[myplr].pLvlLoad) {
998  return;
999  }
1000 
1001  sndIdx = random_(164, 2);
1002  if (!gbSndInited || !gbSoundOn || gbBufferMsgs) {
1003  return;
1004  }
1005 
1006  mi = monster[i]._mMTidx;
1007  snd = Monsters[mi].Snds[mode][sndIdx];
1008  if (!snd || snd_playing(snd)) {
1009  return;
1010  }
1011 
1012  if (!calc_snd_position(monster[i]._mx, monster[i]._my, &lVolume, &lPan))
1013  return;
1014 
1015  snd_play_snd(snd, lVolume, lPan);
1016 }
1017 
1018 BOOL calc_snd_position(int x, int y, int *plVolume, int *plPan)
1019 {
1020  int pan, volume;
1021 
1022  x -= plr[myplr].WorldX;
1023  y -= plr[myplr].WorldY;
1024 
1025  pan = (x - y) * 256;
1026  *plPan = pan;
1027 
1028  if (abs(pan) > 6400)
1029  return FALSE;
1030 
1031  volume = abs(x) > abs(y) ? abs(x) : abs(y);
1032  volume <<= 6;
1033  *plVolume = volume;
1034 
1035  if (volume >= 6400)
1036  return FALSE;
1037 
1038  *plVolume = -volume;
1039 
1040  return TRUE;
1041 }
1042 
1043 void PlaySFX(int psfx)
1044 {
1045  psfx = RndSFX(psfx);
1046  PlaySFX_priv(&sgSFX[psfx], FALSE, 0, 0);
1047 }
1048 
1049 void PlaySFX_priv(TSFX *pSFX, BOOL loc, int x, int y)
1050 {
1051  int lPan, lVolume;
1052 
1053  if (plr[myplr].pLvlLoad && gbMaxPlayers != 1) {
1054  return;
1055  }
1056  if (!gbSndInited || !gbSoundOn || gbBufferMsgs) {
1057  return;
1058  }
1059 
1060  if (!(pSFX->bFlags & (SFX_STREAM | SFX_MISC)) && pSFX->pSnd != 0 && snd_playing(pSFX->pSnd)) {
1061  return;
1062  }
1063 
1064  lPan = 0;
1065  lVolume = 0;
1066  if (loc && !calc_snd_position(x, y, &lVolume, &lPan)) {
1067  return;
1068  }
1069 
1070  if (pSFX->bFlags & SFX_STREAM) {
1071  stream_play(pSFX, lVolume, lPan);
1072  return;
1073  }
1074 
1075  if (!pSFX->pSnd)
1076  pSFX->pSnd = sound_file_load(pSFX->pszName);
1077 
1078  if (pSFX->pSnd)
1079  snd_play_snd(pSFX->pSnd, lVolume, lPan);
1080 }
1081 
1082 void stream_play(TSFX *pSFX, int lVolume, int lPan)
1083 {
1084  BOOL success;
1085 
1088  stream_stop();
1089  lVolume += sound_get_or_set_sound_volume(1);
1090  if (lVolume >= VOLUME_MIN) {
1091  if (lVolume > VOLUME_MAX)
1092  lVolume = VOLUME_MAX;
1093  success = SFileOpenFile(pSFX->pszName, &sghStream);
1094  if (!success) {
1095  sghStream = 0;
1096  } else {
1097  if (!SFileDdaBeginEx(sghStream, 0x40000, 0, 0, lVolume, lPan, 0))
1098  stream_stop();
1099  else
1100  sgpStreamSFX = pSFX;
1101  }
1102  }
1103 }
1104 
1105 int RndSFX(int psfx)
1106 {
1107  int nRand;
1108 
1109  if (psfx == PS_WARR69)
1110  nRand = 2;
1111  else if (psfx == PS_WARR14)
1112  nRand = 3;
1113  else if (psfx == PS_WARR15)
1114  nRand = 3;
1115  else if (psfx == PS_WARR16)
1116  nRand = 3;
1117 #ifndef SPAWN
1118  else if (psfx == PS_MAGE69)
1119  nRand = 2;
1120  else if (psfx == PS_ROGUE69)
1121  nRand = 2;
1122 #endif
1123  else if (psfx == PS_SWING)
1124  nRand = 2;
1125  else if (psfx == LS_ACID)
1126  nRand = 2;
1127  else if (psfx == IS_FMAG)
1128  nRand = 2;
1129  else if (psfx == IS_MAGIC)
1130  nRand = 2;
1131  else if (psfx == IS_BHIT)
1132  nRand = 2;
1133 #ifndef SPAWN
1134  else if (psfx == PS_WARR2)
1135  nRand = 3;
1136 #endif
1137  else
1138  return psfx;
1139  return psfx + random_(165, nRand);
1140 }
1141 
1142 void PlaySfxLoc(int psfx, int x, int y)
1143 {
1144  TSnd *pSnd;
1145 
1146  psfx = RndSFX(psfx);
1147 
1148  if (psfx >= 0 && psfx <= 3) {
1149  pSnd = sgSFX[psfx].pSnd;
1150  if (pSnd)
1151  pSnd->start_tc = 0;
1152  }
1153 
1154  PlaySFX_priv(&sgSFX[psfx], TRUE, x, y);
1155 }
1156 
1158 {
1159  Mix_HaltChannel(-1);
1160 }
1161 
1163 {
1164  if (!gbSndInited) {
1165  return;
1166  }
1167 
1168  stream_update();
1169 }
1170 
1172 {
1173  DWORD current, end;
1174 
1175  if (sghStream != NULL && SFileDdaGetPos(sghStream, &current, &end) && current >= end) {
1176  stream_stop();
1177  }
1178 }
1179 
1181 {
1182  DWORD i;
1183 
1184  sound_stop();
1185 
1186  for (i = 0; i < sizeof(sgSFX) / sizeof(TSFX); i++) {
1187  if (sgSFX[i].pSnd) {
1188  sound_file_cleanup(sgSFX[i].pSnd);
1189  sgSFX[i].pSnd = NULL;
1190  }
1191  }
1192 }
1193 
1195 {
1196  BYTE mask = 0;
1197  if (gbMaxPlayers > 1) {
1198  mask = SFX_WARRIOR | SFX_ROGUE | SFX_SORCEROR;
1199  } else if (plr[myplr]._pClass == PC_WARRIOR) {
1200  mask = SFX_WARRIOR;
1201  } else if (plr[myplr]._pClass == PC_ROGUE) {
1202  mask = SFX_ROGUE;
1203  } else if (plr[myplr]._pClass == PC_SORCERER) {
1204  mask = SFX_SORCEROR;
1205  } else {
1206  app_fatal("effects:1");
1207  }
1208 
1209  priv_sound_init(mask);
1210 }
1211 
1212 void priv_sound_init(BYTE bLoadMask)
1213 {
1214  BYTE pc;
1215  DWORD i;
1216 
1217  if (!gbSndInited) {
1218  return;
1219  }
1220 
1221  pc = bLoadMask & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR);
1222  bLoadMask ^= pc;
1223 
1224  for (i = 0; i < sizeof(sgSFX) / sizeof(TSFX); i++) {
1225  if (sgSFX[i].pSnd) {
1226  continue;
1227  }
1228 
1229  if (sgSFX[i].bFlags & SFX_STREAM) {
1230  continue;
1231  }
1232 
1233  if (bLoadMask && !(sgSFX[i].bFlags & bLoadMask)) {
1234  continue;
1235  }
1236 
1237  if (sgSFX[i].bFlags & (SFX_ROGUE | SFX_WARRIOR | SFX_SORCEROR) && !(sgSFX[i].bFlags & pc)) {
1238  continue;
1239  }
1240 
1241  sgSFX[i].pSnd = sound_file_load(sgSFX[i].pszName);
1242  }
1243 }
1244 
1246 {
1248 }
1249 
1250 void effects_play_sound(char *snd_file)
1251 {
1252  DWORD i;
1253 
1254  if (!gbSndInited || !gbSoundOn) {
1255  return;
1256  }
1257 
1258  for (i = 0; i < sizeof(sgSFX) / sizeof(TSFX); i++) {
1259  if (!strcasecmp(sgSFX[i].pszName, snd_file) && sgSFX[i].pSnd) {
1260  if (!snd_playing(sgSFX[i].pSnd))
1261  snd_play_snd(sgSFX[i].pSnd, 0, 0);
1262 
1263  return;
1264  }
1265  }
1266 }
1267 
VOLUME_MAX
#define VOLUME_MAX
Definition: defs.h:53
Monsters
CMonster Monsters[MAX_LVLMTYPES]
Definition: monster.cpp:21
SFX_MISC
@ SFX_MISC
Definition: enums.h:1171
effect_is_playing
BOOL effect_is_playing(int nSFX)
Definition: effects.cpp:920
effects_cleanup_sfx
void effects_cleanup_sfx()
Definition: effects.cpp:1180
stream_update
void stream_update()
Definition: effects.cpp:1171
gbBufferMsgs
BYTE gbBufferMsgs
Definition: msg.cpp:26
PlayEffect
void PlayEffect(int i, int mode)
Definition: effects.cpp:992
PlayerStruct::WorldX
int WorldX
Definition: structs.h:188
stream_stop
void stream_stop()
Definition: effects.cpp:932
PS_WARR16
@ PS_WARR16
Definition: enums.h:1038
RndSFX
int RndSFX(int psfx)
Definition: effects.cpp:1105
PS_WARR69
@ PS_WARR69
Definition: enums.h:1093
IS_BHIT
@ IS_BHIT
Definition: enums.h:299
MonsterStruct::_mMTidx
int _mMTidx
Definition: structs.h:540
PlaySFX_priv
void PlaySFX_priv(TSFX *pSFX, BOOL loc, int x, int y)
Definition: effects.cpp:1049
all.h
PS_ROGUE69
@ PS_ROGUE69
Definition: enums.h:983
nummtypes
int nummtypes
Definition: monster.cpp:24
IS_FMAG
@ IS_FMAG
Definition: enums.h:313
TSFX::pSnd
TSnd * pSnd
Definition: structs.h:468
gbMaxPlayers
BYTE gbMaxPlayers
Specifies the maximum number of players in a game, where 1 represents a single player game and 4 repr...
Definition: multi.cpp:34
TSFX
Definition: structs.h:465
sound_update
void sound_update()
Definition: effects.cpp:1162
PS_SWING
@ PS_SWING
Definition: enums.h:292
stream_play
void stream_play(TSFX *pSFX, int lVolume, int lPan)
Definition: effects.cpp:1082
sgpStreamSFX
TSFX * sgpStreamSFX
Specifies the sound file and the playback state of the current sound effect.
Definition: effects.cpp:17
TSnd::start_tc
int start_tc
Definition: structs.h:461
SFX_WARRIOR
@ SFX_WARRIOR
Definition: enums.h:1175
PS_WARR2
@ PS_WARR2
Definition: enums.h:1019
SFX_UI
@ SFX_UI
Definition: enums.h:1172
ui_sound_init
void ui_sound_init()
Definition: effects.cpp:1245
app_fatal
void app_fatal(const char *pszFmt,...)
Definition: appfat.cpp:18
snd_play_snd
void snd_play_snd(TSnd *pSnd, int lVolume, int lPan)
DEVILUTION_END_NAMESPACE
#define DEVILUTION_END_NAMESPACE
Definition: types.h:10
sgSFX
TSFX sgSFX[]
List of all sounds, except monsters and music.
Definition: effects.cpp:30
MonstSndChar
const char MonstSndChar[]
Monster sound type prefix a: Attack h: Hit d: Death s: Special.
Definition: effects.cpp:26
monster
MonsterStruct monster[MAXMONSTERS]
Definition: monster.cpp:19
sghStream
HANDLE sghStream
A handle to the current sound effect playing.
Definition: effects.cpp:15
sfxdnum
int sfxdnum
Definition: effects.cpp:13
TSFX::pszName
char * pszName
Definition: structs.h:467
sound_stop
void sound_stop()
Definition: effects.cpp:1157
PS_WARR15
@ PS_WARR15
Definition: enums.h:1035
calc_snd_position
BOOL calc_snd_position(int x, int y, int *plVolume, int *plPan)
Definition: effects.cpp:1018
TSnd::sound_path
char * sound_path
Definition: structs.h:459
sound_get_or_set_sound_volume
int sound_get_or_set_sound_volume(int volume)
sfxdelay
DEVILUTION_BEGIN_NAMESPACE int sfxdelay
Definition: effects.cpp:12
PlaySFX
void PlaySFX(int psfx)
Definition: effects.cpp:1043
FreeMonsterSnd
void FreeMonsterSnd()
Definition: effects.cpp:969
SFX_SORCEROR
@ SFX_SORCEROR
Definition: enums.h:1176
DiabloAllocPtr
BYTE * DiabloAllocPtr(DWORD dwBytes)
Multithreaded safe malloc.
Definition: engine.cpp:765
effects_play_sound
void effects_play_sound(char *snd_file)
Definition: effects.cpp:1250
priv_sound_init
void priv_sound_init(BYTE bLoadMask)
Definition: effects.cpp:1212
VOLUME_MIN
#define VOLUME_MIN
Definition: defs.h:52
myplr
int myplr
Definition: player.cpp:9
random_
int random_(BYTE idx, int v)
Main RNG function.
Definition: engine.cpp:752
mem_free_dbg
void mem_free_dbg(void *p)
Multithreaded safe memfree.
Definition: engine.cpp:786
PC_WARRIOR
@ PC_WARRIOR
Definition: enums.h:2706
TSnd
Definition: structs.h:458
PS_MAGE69
@ PS_MAGE69
Definition: enums.h:880
PC_ROGUE
@ PC_ROGUE
Definition: enums.h:2707
PlaySfxLoc
void PlaySfxLoc(int psfx, int x, int y)
Definition: effects.cpp:1142
DEVILUTION_BEGIN_NAMESPACE
Definition: sha.cpp:10
gbSndInited
BOOLEAN gbSndInited
LS_ACID
@ LS_ACID
Definition: enums.h:369
gbSoundOn
BOOLEAN gbSoundOn
snd_playing
BOOL snd_playing(TSnd *pSnd)
CMonster::Snds
TSnd * Snds[4][2]
Definition: structs.h:525
InitMonsterSND
void InitMonsterSND(int monst)
Definition: effects.cpp:942
sound_file_cleanup
void sound_file_cleanup(TSnd *sound_file)
PlayerStruct::WorldY
int WorldY
Definition: structs.h:189
monsterdata
DEVILUTION_BEGIN_NAMESPACE MonsterData monsterdata[]
Definition: monstdat.cpp:10
CMonster::mtype
unsigned char mtype
Definition: structs.h:521
PS_WARR14
@ PS_WARR14
Definition: enums.h:1032
plr
PlayerStruct plr[MAX_PLRS]
Definition: player.cpp:10
SFX_ROGUE
@ SFX_ROGUE
Definition: enums.h:1174
PC_SORCERER
@ PC_SORCERER
Definition: enums.h:2708
sound_file_load
TSnd * sound_file_load(char *path)
IS_MAGIC
@ IS_MAGIC
Definition: enums.h:346
SFX_STREAM
@ SFX_STREAM
Definition: enums.h:1170
TSFX::bFlags
unsigned char bFlags
Definition: structs.h:466
sound_init
void sound_init()
Definition: effects.cpp:1194