diff --git a/CMake/Assets.cmake b/CMake/Assets.cmake index 34f8d86af..0e5e2b556 100644 --- a/CMake/Assets.cmake +++ b/CMake/Assets.cmake @@ -161,6 +161,7 @@ set(devilutionx_assets txtdata/items/unique_itemdat.tsv txtdata/monsters/monstdat.tsv txtdata/monsters/unique_monstdat.tsv + txtdata/sound/effects.tsv ui_art/diablo.pal ui_art/hellfire.pal ui_art/creditsw.clx diff --git a/Packaging/resources/assets/txtdata/sound/effects.tsv b/Packaging/resources/assets/txtdata/sound/effects.tsv new file mode 100644 index 000000000..8a9e5921b --- /dev/null +++ b/Packaging/resources/assets/txtdata/sound/effects.tsv @@ -0,0 +1,924 @@ +id flags path +Walk Misc sfx\misc\walk1.wav +ShootBow Misc sfx\misc\bfire.wav +CastSpell Misc sfx\misc\tmag.wav +Swing Misc sfx\misc\swing.wav +Swing2 Misc sfx\misc\swing2.wav +WarriorDeath Misc sfx\misc\dead.wav +ShootBow2 Misc,Hellfire sfx\misc\sting1.wav +ShootFireballBow Misc,Hellfire sfx\misc\fballbow.wav +QuestDone Stream sfx\misc\questdon.wav +BarrelExpload Misc sfx\items\barlfire.wav +BarrelBreak Misc sfx\items\barrel.wav +PodExpload Misc,Hellfire sfx\items\podpop8.wav +PodPop Misc,Hellfire sfx\items\podpop5.wav +UrnExpload Misc,Hellfire sfx\items\urnpop3.wav +UrnBreak Misc,Hellfire sfx\items\urnpop2.wav +BrutalHit Misc sfx\items\bhit.wav +BrutalHit1 Misc sfx\items\bhit1.wav +ChestOpen Misc sfx\items\chest.wav +DoorClose Misc sfx\items\doorclos.wav +DoorOpen Misc sfx\items\dooropen.wav +ItemAnvilFlip Misc sfx\items\flipanvl.wav +ItemAxeFlip Misc sfx\items\flipaxe.wav +ItemBloodStoneFlip Misc sfx\items\flipblst.wav +ItemBodyPartFlip Misc sfx\items\flipbody.wav +ItemBookFlip Misc sfx\items\flipbook.wav +ItemBowFlip Misc sfx\items\flipbow.wav +ItemCapFlip Misc sfx\items\flipcap.wav +ItemArmorFlip Misc sfx\items\flipharm.wav +ItemLeatherFlip Misc sfx\items\fliplarm.wav +ItemMushroomFlip Misc sfx\items\flipmush.wav +ItemPotionFlip Misc sfx\items\flippot.wav +ItemRingFlip Misc sfx\items\flipring.wav +ItemRockFlip Misc sfx\items\fliprock.wav +ItemScrollFlip Misc sfx\items\flipscrl.wav +ItemShieldFlip Misc sfx\items\flipshld.wav +ItemSignFlip Misc sfx\items\flipsign.wav +ItemStaffFlip Misc sfx\items\flipstaf.wav +ItemSwordFlip Misc sfx\items\flipswor.wav +ItemGold Misc sfx\items\gold.wav +ItemAnvil Misc sfx\items\invanvl.wav +ItemAxe Misc sfx\items\invaxe.wav +ItemBloodStone Misc sfx\items\invblst.wav +ItemBodyPart Misc sfx\items\invbody.wav +ItemBook Misc sfx\items\invbook.wav +ItemBow Misc sfx\items\invbow.wav +ItemCap Misc sfx\items\invcap.wav +GrabItem Misc sfx\items\invgrab.wav +ItemArmor Misc sfx\items\invharm.wav +ItemLeather Misc sfx\items\invlarm.wav +ItemMushroom Misc sfx\items\invmush.wav +ItemPotion Misc sfx\items\invpot.wav +ItemRing Misc sfx\items\invring.wav +ItemRock Misc sfx\items\invrock.wav +ItemScroll Misc sfx\items\invscrol.wav +ItemShield Misc sfx\items\invshiel.wav +ItemSign Misc sfx\items\invsign.wav +ItemStaff Misc sfx\items\invstaf.wav +ItemSword Misc sfx\items\invsword.wav +OperateLever Misc sfx\items\lever.wav +OperateShrine Misc sfx\items\magic.wav +OperateShrine1 Misc sfx\items\magic1.wav +ReadBook Misc sfx\items\readbook.wav +Sarcophagus Misc sfx\items\sarc.wav +MenuMove Ui sfx\items\titlemov.wav +MenuSelect Ui sfx\items\titlslct.wav +TriggerTrap Misc sfx\items\trap.wav +CastFire Misc sfx\misc\cast2.wav +CastLightning Misc sfx\misc\cast4.wav +CastSkill Misc sfx\misc\cast6.wav +SpellEnd Misc sfx\misc\cast7.wav +CastHealing Misc sfx\misc\cast8.wav +SpellRepair Misc sfx\misc\repair.wav +SpellAcid Misc sfx\misc\acids1.wav +SpellAcid1 Misc sfx\misc\acids2.wav +SpellApocalypse Misc sfx\misc\apoc.wav +SpellBloodStar Misc sfx\misc\blodstar.wav +SpellBloodStarHit Misc sfx\misc\blsimpt.wav +SpellBoneSpirit Misc sfx\misc\bonesp.wav +SpellBoneSpiritHit Misc sfx\misc\bsimpct.wav +OperateCaldron Misc sfx\misc\caldron.wav +SpellChargedBolt Misc sfx\misc\cbolt.wav +SpellDoomSerpents Misc sfx\misc\dserp.wav +SpellLightningHit Misc sfx\misc\elecimp1.wav +SpellElemental Misc sfx\misc\elementl.wav +SpellEtherealize Misc sfx\misc\ethereal.wav +SpellFirebolt Misc sfx\misc\fbolt1.wav +SpellFireHit Misc sfx\misc\firimp2.wav +SpellFlameWave Misc sfx\misc\flamwave.wav +OperateFountain Misc sfx\misc\fountain.wav +SpellGolem Misc sfx\misc\golum.wav +OperateGoatShrine Misc sfx\misc\gshrine.wav +SpellGuardian Misc sfx\misc\guard.wav +SpellGuardianHit Misc sfx\misc\grdlanch.wav +SpellHolyBolt Misc sfx\misc\holybolt.wav +SpellInfravision Misc sfx\misc\infravis.wav +SpellInvisibility Misc sfx\misc\invisibl.wav +SpellLightning Misc sfx\misc\lning1.wav +SpellManaShield Misc sfx\misc\mshield.wav +BigExplosion Misc,Hellfire sfx\misc\nestxpld.wav +SpellNova Misc sfx\misc\nova.wav +SpellPuddle Misc sfx\misc\puddle.wav +SpellResurrect Misc sfx\misc\resur.wav +SpellStoneCurse Misc sfx\misc\scurimp.wav +SpellPortal Misc sfx\misc\sentinel.wav +SpellInferno Misc sfx\misc\spoutstr.wav +SpellTrapDisarm Misc sfx\misc\trapdis.wav +SpellTeleport Misc sfx\misc\teleport.wav +SpellFireWall Misc sfx\misc\wallloop.wav +SpellLightningWall Misc,Hellfire sfx\misc\lmag.wav +Gillian1 Stream sfx\towners\bmaid01.wav +Gillian2 Stream sfx\towners\bmaid02.wav +Gillian3 Stream sfx\towners\bmaid03.wav +Gillian4 Stream sfx\towners\bmaid04.wav +Gillian5 Stream sfx\towners\bmaid05.wav +Gillian6 Stream sfx\towners\bmaid06.wav +Gillian7 Stream sfx\towners\bmaid07.wav +Gillian8 Stream sfx\towners\bmaid08.wav +Gillian9 Stream sfx\towners\bmaid09.wav +Gillian10 Stream sfx\towners\bmaid10.wav +Gillian11 Stream sfx\towners\bmaid11.wav +Gillian12 Stream sfx\towners\bmaid12.wav +Gillian13 Stream sfx\towners\bmaid13.wav +Gillian14 Stream sfx\towners\bmaid14.wav +Gillian15 Stream sfx\towners\bmaid15.wav +Gillian16 Stream sfx\towners\bmaid16.wav +Gillian17 Stream sfx\towners\bmaid17.wav +Gillian18 Stream sfx\towners\bmaid18.wav +Gillian19 Stream sfx\towners\bmaid19.wav +Gillian20 Stream sfx\towners\bmaid20.wav +Gillian21 Stream sfx\towners\bmaid21.wav +Gillian22 Stream sfx\towners\bmaid22.wav +Gillian23 Stream sfx\towners\bmaid23.wav +Gillian24 Stream sfx\towners\bmaid24.wav +Gillian25 Stream sfx\towners\bmaid25.wav +Gillian26 Stream sfx\towners\bmaid26.wav +Gillian27 Stream sfx\towners\bmaid27.wav +Gillian28 Stream sfx\towners\bmaid28.wav +Gillian29 Stream sfx\towners\bmaid29.wav +Gillian30 Stream sfx\towners\bmaid30.wav +Gillian31 Stream sfx\towners\bmaid31.wav +Gillian32 Stream sfx\towners\bmaid32.wav +Gillian33 Stream sfx\towners\bmaid33.wav +Gillian34 Stream sfx\towners\bmaid34.wav +Gillian35 Stream sfx\towners\bmaid35.wav +Gillian36 Stream sfx\towners\bmaid36.wav +Gillian37 Stream sfx\towners\bmaid37.wav +Gillian38 Stream sfx\towners\bmaid38.wav +Gillian39 Stream sfx\towners\bmaid39.wav +Gillian40 Stream sfx\towners\bmaid40.wav +Griswold1 Stream sfx\towners\bsmith01.wav +Griswold2 Stream sfx\towners\bsmith02.wav +Griswold3 Stream sfx\towners\bsmith03.wav +Griswold4 Stream sfx\towners\bsmith04.wav +Griswold5 Stream sfx\towners\bsmith05.wav +Griswold6 Stream sfx\towners\bsmith06.wav +Griswold7 Stream sfx\towners\bsmith07.wav +Griswold8 Stream sfx\towners\bsmith08.wav +Griswold9 Stream sfx\towners\bsmith09.wav +Griswold10 Stream sfx\towners\bsmith10.wav +Griswold11 Stream sfx\towners\bsmith11.wav +Griswold12 Stream sfx\towners\bsmith12.wav +Griswold13 Stream sfx\towners\bsmith13.wav +Griswold14 Stream sfx\towners\bsmith14.wav +Griswold15 Stream sfx\towners\bsmith15.wav +Griswold16 Stream sfx\towners\bsmith16.wav +Griswold17 Stream sfx\towners\bsmith17.wav +Griswold18 Stream sfx\towners\bsmith18.wav +Griswold19 Stream sfx\towners\bsmith19.wav +Griswold20 Stream sfx\towners\bsmith20.wav +Griswold21 Stream sfx\towners\bsmith21.wav +Griswold22 Stream sfx\towners\bsmith22.wav +Griswold23 Stream sfx\towners\bsmith23.wav +Griswold24 Stream sfx\towners\bsmith24.wav +Griswold25 Stream sfx\towners\bsmith25.wav +Griswold26 Stream sfx\towners\bsmith26.wav +Griswold27 Stream sfx\towners\bsmith27.wav +Griswold28 Stream sfx\towners\bsmith28.wav +Griswold29 Stream sfx\towners\bsmith29.wav +Griswold30 Stream sfx\towners\bsmith30.wav +Griswold31 Stream sfx\towners\bsmith31.wav +Griswold32 Stream sfx\towners\bsmith32.wav +Griswold33 Stream sfx\towners\bsmith33.wav +Griswold34 Stream sfx\towners\bsmith34.wav +Griswold35 Stream sfx\towners\bsmith35.wav +Griswold36 Stream sfx\towners\bsmith36.wav +Griswold37 Stream sfx\towners\bsmith37.wav +Griswold38 Stream sfx\towners\bsmith38.wav +Griswold39 Stream sfx\towners\bsmith39.wav +Griswold40 Stream sfx\towners\bsmith40.wav +Griswold41 Stream sfx\towners\bsmith41.wav +Griswold42 Stream sfx\towners\bsmith42.wav +Griswold43 Stream sfx\towners\bsmith43.wav +Griswold44 Stream sfx\towners\bsmith44.wav +Griswold45 Stream sfx\towners\bsmith45.wav +Griswold46 Stream sfx\towners\bsmith46.wav +Griswold47 Stream sfx\towners\bsmith47.wav +Griswold48 Stream sfx\towners\bsmith48.wav +Griswold49 Stream sfx\towners\bsmith49.wav +Griswold50 Stream sfx\towners\bsmith50.wav +Griswold51 Stream sfx\towners\bsmith51.wav +Griswold52 Stream sfx\towners\bsmith52.wav +Griswold53 Stream sfx\towners\bsmith53.wav +Griswold54 Stream sfx\towners\bsmith54.wav +Griswold55 Stream sfx\towners\bsmith55.wav +Griswold56 Stream sfx\towners\bsmith56.wav +Cow1 Misc sfx\towners\cow1.wav +Cow2 Misc sfx\towners\cow2.wav +Pig Misc,Hellfire sfx\towners\cow7.wav +Duck Misc,Hellfire sfx\towners\cow8.wav +WoundedTownsmanOld Stream sfx\towners\deadguy2.wav +Farnham1 Stream sfx\towners\drunk01.wav +Farnham2 Stream sfx\towners\drunk02.wav +Farnham3 Stream sfx\towners\drunk03.wav +Farnham4 Stream sfx\towners\drunk04.wav +Farnham5 Stream sfx\towners\drunk05.wav +Farnham6 Stream sfx\towners\drunk06.wav +Farnham7 Stream sfx\towners\drunk07.wav +Farnham8 Stream sfx\towners\drunk08.wav +Farnham9 Stream sfx\towners\drunk09.wav +Farnham10 Stream sfx\towners\drunk10.wav +Farnham11 Stream sfx\towners\drunk11.wav +Farnham12 Stream sfx\towners\drunk12.wav +Farnham13 Stream sfx\towners\drunk13.wav +Farnham14 Stream sfx\towners\drunk14.wav +Farnham15 Stream sfx\towners\drunk15.wav +Farnham16 Stream sfx\towners\drunk16.wav +Farnham17 Stream sfx\towners\drunk17.wav +Farnham18 Stream sfx\towners\drunk18.wav +Farnham19 Stream sfx\towners\drunk19.wav +Farnham20 Stream sfx\towners\drunk20.wav +Farnham21 Stream sfx\towners\drunk21.wav +Farnham22 Stream sfx\towners\drunk22.wav +Farnham23 Stream sfx\towners\drunk23.wav +Farnham24 Stream sfx\towners\drunk24.wav +Farnham25 Stream sfx\towners\drunk25.wav +Farnham26 Stream sfx\towners\drunk26.wav +Farnham27 Stream sfx\towners\drunk27.wav +Farnham28 Stream sfx\towners\drunk28.wav +Farnham29 Stream sfx\towners\drunk29.wav +Farnham30 Stream sfx\towners\drunk30.wav +Farnham31 Stream sfx\towners\drunk31.wav +Farnham32 Stream sfx\towners\drunk32.wav +Farnham33 Stream sfx\towners\drunk33.wav +Farnham34 Stream sfx\towners\drunk34.wav +Farnham35 Stream sfx\towners\drunk35.wav +Pepin1 Stream sfx\towners\healer01.wav +Pepin2 Stream sfx\towners\healer02.wav +Pepin3 Stream sfx\towners\healer03.wav +Pepin4 Stream sfx\towners\healer04.wav +Pepin5 Stream sfx\towners\healer05.wav +Pepin6 Stream sfx\towners\healer06.wav +Pepin7 Stream sfx\towners\healer07.wav +Pepin8 Stream sfx\towners\healer08.wav +Pepin9 Stream sfx\towners\healer09.wav +Pepin10 Stream sfx\towners\healer10.wav +Pepin11 Stream sfx\towners\healer11.wav +Pepin12 Stream sfx\towners\healer12.wav +Pepin13 Stream sfx\towners\healer13.wav +Pepin14 Stream sfx\towners\healer14.wav +Pepin15 Stream sfx\towners\healer15.wav +Pepin16 Stream sfx\towners\healer16.wav +Pepin17 Stream sfx\towners\healer17.wav +Pepin18 Stream sfx\towners\healer18.wav +Pepin19 Stream sfx\towners\healer19.wav +Pepin20 Stream sfx\towners\healer20.wav +Pepin21 Stream sfx\towners\healer21.wav +Pepin22 Stream sfx\towners\healer22.wav +Pepin23 Stream sfx\towners\healer23.wav +Pepin24 Stream sfx\towners\healer24.wav +Pepin25 Stream sfx\towners\healer25.wav +Pepin26 Stream sfx\towners\healer26.wav +Pepin27 Stream sfx\towners\healer27.wav +Pepin28 Stream sfx\towners\healer28.wav +Pepin29 Stream sfx\towners\healer29.wav +Pepin30 Stream sfx\towners\healer30.wav +Pepin31 Stream sfx\towners\healer31.wav +Pepin32 Stream sfx\towners\healer32.wav +Pepin33 Stream sfx\towners\healer33.wav +Pepin34 Stream sfx\towners\healer34.wav +Pepin35 Stream sfx\towners\healer35.wav +Pepin36 Stream sfx\towners\healer36.wav +Pepin37 Stream sfx\towners\healer37.wav +Pepin38 Stream sfx\towners\healer38.wav +Pepin39 Stream sfx\towners\healer39.wav +Pepin40 Stream sfx\towners\healer40.wav +Pepin41 Stream sfx\towners\healer41.wav +Pepin42 Stream sfx\towners\healer42.wav +Pepin43 Stream sfx\towners\healer43.wav +Pepin44 Stream sfx\towners\healer44.wav +Pepin45 Stream sfx\towners\healer45.wav +Pepin46 Stream sfx\towners\healer46.wav +Pepin47 Stream sfx\towners\healer47.wav +Wirt1 Stream sfx\towners\pegboy01.wav +Wirt2 Stream sfx\towners\pegboy02.wav +Wirt3 Stream sfx\towners\pegboy03.wav +Wirt4 Stream sfx\towners\pegboy04.wav +Wirt5 Stream sfx\towners\pegboy05.wav +Wirt6 Stream sfx\towners\pegboy06.wav +Wirt7 Stream sfx\towners\pegboy07.wav +Wirt8 Stream sfx\towners\pegboy08.wav +Wirt9 Stream sfx\towners\pegboy09.wav +Wirt10 Stream sfx\towners\pegboy10.wav +Wirt11 Stream sfx\towners\pegboy11.wav +Wirt12 Stream sfx\towners\pegboy12.wav +Wirt13 Stream sfx\towners\pegboy13.wav +Wirt14 Stream sfx\towners\pegboy14.wav +Wirt15 Stream sfx\towners\pegboy15.wav +Wirt16 Stream sfx\towners\pegboy16.wav +Wirt17 Stream sfx\towners\pegboy17.wav +Wirt18 Stream sfx\towners\pegboy18.wav +Wirt19 Stream sfx\towners\pegboy19.wav +Wirt20 Stream sfx\towners\pegboy20.wav +Wirt21 Stream sfx\towners\pegboy21.wav +Wirt22 Stream sfx\towners\pegboy22.wav +Wirt23 Stream sfx\towners\pegboy23.wav +Wirt24 Stream sfx\towners\pegboy24.wav +Wirt25 Stream sfx\towners\pegboy25.wav +Wirt26 Stream sfx\towners\pegboy26.wav +Wirt27 Stream sfx\towners\pegboy27.wav +Wirt28 Stream sfx\towners\pegboy28.wav +Wirt29 Stream sfx\towners\pegboy29.wav +Wirt30 Stream sfx\towners\pegboy30.wav +Wirt31 Stream sfx\towners\pegboy31.wav +Wirt32 Stream sfx\towners\pegboy32.wav +Wirt33 Stream sfx\towners\pegboy33.wav +Wirt34 Stream sfx\towners\pegboy34.wav +Wirt35 Stream sfx\towners\pegboy35.wav +Wirt36 Stream sfx\towners\pegboy36.wav +Wirt37 Stream sfx\towners\pegboy37.wav +Wirt38 Stream sfx\towners\pegboy38.wav +Wirt39 Stream sfx\towners\pegboy39.wav +Wirt40 Stream sfx\towners\pegboy40.wav +Wirt41 Stream sfx\towners\pegboy41.wav +Wirt42 Stream sfx\towners\pegboy42.wav +Wirt43 Stream sfx\towners\pegboy43.wav +Tremain0 Stream sfx\towners\priest00.wav +Tremain1 Stream sfx\towners\priest01.wav +Tremain2 Stream sfx\towners\priest02.wav +Tremain3 Stream sfx\towners\priest03.wav +Tremain4 Stream sfx\towners\priest04.wav +Tremain5 Stream sfx\towners\priest05.wav +Tremain6 Stream sfx\towners\priest06.wav +Tremain7 Stream sfx\towners\priest07.wav +Cain0 Stream sfx\towners\storyt00.wav +Cain1 Stream sfx\towners\storyt01.wav +Cain2 Stream sfx\towners\storyt02.wav +Cain3 Stream sfx\towners\storyt03.wav +Cain4 Stream sfx\towners\storyt04.wav +Cain5 Stream sfx\towners\storyt05.wav +Cain6 Stream sfx\towners\storyt06.wav +Cain7 Stream sfx\towners\storyt07.wav +Cain8 Stream sfx\towners\storyt08.wav +Cain9 Stream sfx\towners\storyt09.wav +Cain10 Stream sfx\towners\storyt10.wav +Cain11 Stream sfx\towners\storyt11.wav +Cain12 Stream sfx\towners\storyt12.wav +Cain13 Stream sfx\towners\storyt13.wav +Cain14 Stream sfx\towners\storyt14.wav +Cain15 Stream sfx\towners\storyt15.wav +Cain16 Stream sfx\towners\storyt16.wav +Cain17 Stream sfx\towners\storyt17.wav +Cain18 Stream sfx\towners\storyt18.wav +Cain19 Stream sfx\towners\storyt19.wav +Cain20 Stream sfx\towners\storyt20.wav +Cain21 Stream sfx\towners\storyt21.wav +Cain22 Stream sfx\towners\storyt22.wav +Cain23 Stream sfx\towners\storyt23.wav +Cain24 Stream sfx\towners\storyt24.wav +Cain25 Stream sfx\towners\storyt25.wav +Cain26 Stream sfx\towners\storyt26.wav +Cain27 Stream sfx\towners\storyt27.wav +Cain28 Stream sfx\towners\storyt28.wav +Cain29 Stream sfx\towners\storyt29.wav +Cain30 Stream sfx\towners\storyt30.wav +Cain31 Stream sfx\towners\storyt31.wav +Cain32 Stream sfx\towners\storyt32.wav +Cain33 Stream sfx\towners\storyt33.wav +Cain34 Stream sfx\towners\storyt34.wav +Cain35 Stream sfx\towners\storyt35.wav +Cain36 Stream sfx\towners\storyt36.wav +Cain37 Stream sfx\towners\storyt37.wav +Cain38 Stream sfx\towners\storyt38.wav +Ogden0 Stream sfx\towners\tavown00.wav +Ogden1 Stream sfx\towners\tavown01.wav +Ogden2 Stream sfx\towners\tavown02.wav +Ogden3 Stream sfx\towners\tavown03.wav +Ogden4 Stream sfx\towners\tavown04.wav +Ogden5 Stream sfx\towners\tavown05.wav +Ogden6 Stream sfx\towners\tavown06.wav +Ogden7 Stream sfx\towners\tavown07.wav +Ogden8 Stream sfx\towners\tavown08.wav +Ogden9 Stream sfx\towners\tavown09.wav +Ogden10 Stream sfx\towners\tavown10.wav +Ogden11 Stream sfx\towners\tavown11.wav +Ogden12 Stream sfx\towners\tavown12.wav +Ogden13 Stream sfx\towners\tavown13.wav +Ogden14 Stream sfx\towners\tavown14.wav +Ogden15 Stream sfx\towners\tavown15.wav +Ogden16 Stream sfx\towners\tavown16.wav +Ogden17 Stream sfx\towners\tavown17.wav +Ogden18 Stream sfx\towners\tavown18.wav +Ogden19 Stream sfx\towners\tavown19.wav +Ogden20 Stream sfx\towners\tavown20.wav +Ogden21 Stream sfx\towners\tavown21.wav +Ogden22 Stream sfx\towners\tavown22.wav +Ogden23 Stream sfx\towners\tavown23.wav +Ogden24 Stream sfx\towners\tavown24.wav +Ogden25 Stream sfx\towners\tavown25.wav +Ogden26 Stream sfx\towners\tavown26.wav +Ogden27 Stream sfx\towners\tavown27.wav +Ogden28 Stream sfx\towners\tavown28.wav +Ogden29 Stream sfx\towners\tavown29.wav +Ogden30 Stream sfx\towners\tavown30.wav +Ogden31 Stream sfx\towners\tavown31.wav +Ogden32 Stream sfx\towners\tavown32.wav +Ogden33 Stream sfx\towners\tavown33.wav +Ogden34 Stream sfx\towners\tavown34.wav +Ogden35 Stream sfx\towners\tavown35.wav +Ogden36 Stream sfx\towners\tavown36.wav +Ogden37 Stream sfx\towners\tavown37.wav +Ogden38 Stream sfx\towners\tavown38.wav +Ogden39 Stream sfx\towners\tavown39.wav +Ogden40 Stream sfx\towners\tavown40.wav +Ogden41 Stream sfx\towners\tavown41.wav +Ogden42 Stream sfx\towners\tavown42.wav +Ogden43 Stream sfx\towners\tavown43.wav +Ogden44 Stream sfx\towners\tavown44.wav +Ogden45 Stream sfx\towners\tavown45.wav +Adria1 Stream sfx\towners\witch01.wav +Adria2 Stream sfx\towners\witch02.wav +Adria3 Stream sfx\towners\witch03.wav +Adria4 Stream sfx\towners\witch04.wav +Adria5 Stream sfx\towners\witch05.wav +Adria6 Stream sfx\towners\witch06.wav +Adria7 Stream sfx\towners\witch07.wav +Adria8 Stream sfx\towners\witch08.wav +Adria9 Stream sfx\towners\witch09.wav +Adria10 Stream sfx\towners\witch10.wav +Adria11 Stream sfx\towners\witch11.wav +Adria12 Stream sfx\towners\witch12.wav +Adria13 Stream sfx\towners\witch13.wav +Adria14 Stream sfx\towners\witch14.wav +Adria15 Stream sfx\towners\witch15.wav +Adria16 Stream sfx\towners\witch16.wav +Adria17 Stream sfx\towners\witch17.wav +Adria18 Stream sfx\towners\witch18.wav +Adria19 Stream sfx\towners\witch19.wav +Adria20 Stream sfx\towners\witch20.wav +Adria21 Stream sfx\towners\witch21.wav +Adria22 Stream sfx\towners\witch22.wav +Adria23 Stream sfx\towners\witch23.wav +Adria24 Stream sfx\towners\witch24.wav +Adria25 Stream sfx\towners\witch25.wav +Adria26 Stream sfx\towners\witch26.wav +Adria27 Stream sfx\towners\witch27.wav +Adria28 Stream sfx\towners\witch28.wav +Adria29 Stream sfx\towners\witch29.wav +Adria30 Stream sfx\towners\witch30.wav +Adria31 Stream sfx\towners\witch31.wav +Adria32 Stream sfx\towners\witch32.wav +Adria33 Stream sfx\towners\witch33.wav +Adria34 Stream sfx\towners\witch34.wav +Adria35 Stream sfx\towners\witch35.wav +Adria36 Stream sfx\towners\witch36.wav +Adria37 Stream sfx\towners\witch37.wav +Adria38 Stream sfx\towners\witch38.wav +Adria39 Stream sfx\towners\witch39.wav +Adria40 Stream sfx\towners\witch40.wav +Adria41 Stream sfx\towners\witch41.wav +Adria42 Stream sfx\towners\witch42.wav +Adria43 Stream sfx\towners\witch43.wav +Adria44 Stream sfx\towners\witch44.wav +Adria45 Stream sfx\towners\witch45.wav +Adria46 Stream sfx\towners\witch46.wav +Adria47 Stream sfx\towners\witch47.wav +Adria48 Stream sfx\towners\witch48.wav +Adria49 Stream sfx\towners\witch49.wav +Adria50 Stream sfx\towners\witch50.wav +WoundedTownsman Stream sfx\towners\wound01.wav +Sorceror1 Stream,Sorcerer sfx\sorceror\mage01.wav +Sorceror2 Stream,Sorcerer sfx\sorceror\mage02.wav +Sorceror3 Stream,Sorcerer sfx\sorceror\mage03.wav +Sorceror4 Stream,Sorcerer sfx\sorceror\mage04.wav +Sorceror5 Stream,Sorcerer sfx\sorceror\mage05.wav +Sorceror6 Stream,Sorcerer sfx\sorceror\mage06.wav +Sorceror7 Stream,Sorcerer sfx\sorceror\mage07.wav +Sorceror8 Stream,Sorcerer sfx\sorceror\mage08.wav +Sorceror9 Stream,Sorcerer sfx\sorceror\mage09.wav +Sorceror10 Stream,Sorcerer sfx\sorceror\mage10.wav +Sorceror11 Stream,Sorcerer sfx\sorceror\mage11.wav +Sorceror12 Stream,Sorcerer sfx\sorceror\mage12.wav +Sorceror13 Sorcerer sfx\sorceror\mage13.wav +Sorceror14 Sorcerer sfx\sorceror\mage14.wav +Sorceror15 Sorcerer sfx\sorceror\mage15.wav +Sorceror16 Sorcerer sfx\sorceror\mage16.wav +Sorceror17 Sorcerer sfx\sorceror\mage17.wav +Sorceror18 Sorcerer sfx\sorceror\mage18.wav +Sorceror19 Sorcerer sfx\sorceror\mage19.wav +Sorceror20 Sorcerer sfx\sorceror\mage20.wav +Sorceror21 Sorcerer sfx\sorceror\mage21.wav +Sorceror22 Sorcerer sfx\sorceror\mage22.wav +Sorceror23 Sorcerer sfx\sorceror\mage23.wav +Sorceror24 Sorcerer sfx\sorceror\mage24.wav +Sorceror25 Sorcerer sfx\sorceror\mage25.wav +Sorceror26 Sorcerer sfx\sorceror\mage26.wav +Sorceror27 Sorcerer sfx\sorceror\mage27.wav +Sorceror28 Sorcerer sfx\sorceror\mage28.wav +Sorceror29 Sorcerer sfx\sorceror\mage29.wav +Sorceror30 Sorcerer sfx\sorceror\mage30.wav +Sorceror31 Sorcerer sfx\sorceror\mage31.wav +Sorceror32 Sorcerer sfx\sorceror\mage32.wav +Sorceror33 Sorcerer sfx\sorceror\mage33.wav +Sorceror34 Sorcerer sfx\sorceror\mage34.wav +Sorceror35 Sorcerer sfx\sorceror\mage35.wav +Sorceror36 Sorcerer sfx\sorceror\mage36.wav +Sorceror37 Sorcerer sfx\sorceror\mage37.wav +Sorceror38 Sorcerer sfx\sorceror\mage38.wav +Sorceror39 Sorcerer sfx\sorceror\mage39.wav +Sorceror40 Sorcerer sfx\sorceror\mage40.wav +Sorceror41 Sorcerer sfx\sorceror\mage41.wav +Sorceror42 Sorcerer sfx\sorceror\mage42.wav +Sorceror43 Sorcerer sfx\sorceror\mage43.wav +Sorceror44 Sorcerer sfx\sorceror\mage44.wav +Sorceror45 Sorcerer sfx\sorceror\mage45.wav +Sorceror46 Sorcerer sfx\sorceror\mage46.wav +Sorceror47 Sorcerer sfx\sorceror\mage47.wav +Sorceror48 Sorcerer sfx\sorceror\mage48.wav +Sorceror49 Sorcerer sfx\sorceror\mage49.wav +Sorceror50 Sorcerer sfx\sorceror\mage50.wav +Sorceror51 Stream,Sorcerer sfx\sorceror\mage51.wav +Sorceror52 Stream,Sorcerer sfx\sorceror\mage52.wav +Sorceror53 Stream,Sorcerer sfx\sorceror\mage53.wav +Sorceror54 Stream,Sorcerer sfx\sorceror\mage54.wav +Sorceror55 Stream,Sorcerer sfx\sorceror\mage55.wav +Sorceror56 Stream,Sorcerer sfx\sorceror\mage56.wav +Sorceror57 Sorcerer sfx\sorceror\mage57.wav +Sorceror58 Stream,Sorcerer sfx\sorceror\mage58.wav +Sorceror59 Stream,Sorcerer sfx\sorceror\mage59.wav +Sorceror60 Stream,Sorcerer sfx\sorceror\mage60.wav +Sorceror61 Stream,Sorcerer sfx\sorceror\mage61.wav +Sorceror62 Stream,Sorcerer sfx\sorceror\mage62.wav +Sorceror63 Stream,Sorcerer sfx\sorceror\mage63.wav +Sorceror64 Sorcerer sfx\sorceror\mage64.wav +Sorceror65 Sorcerer sfx\sorceror\mage65.wav +Sorceror66 Sorcerer sfx\sorceror\mage66.wav +Sorceror67 Sorcerer sfx\sorceror\mage67.wav +Sorceror68 Sorcerer sfx\sorceror\mage68.wav +Sorceror69 Sorcerer sfx\sorceror\mage69.wav +Sorceror69b Sorcerer sfx\sorceror\mage69b.wav +Sorceror70 Sorcerer sfx\sorceror\mage70.wav +Sorceror71 Sorcerer sfx\sorceror\mage71.wav +Sorceror72 Sorcerer sfx\sorceror\mage72.wav +Sorceror73 Sorcerer sfx\sorceror\mage73.wav +Sorceror74 Sorcerer sfx\sorceror\mage74.wav +Sorceror75 Sorcerer sfx\sorceror\mage75.wav +Sorceror76 Sorcerer sfx\sorceror\mage76.wav +Sorceror77 Sorcerer sfx\sorceror\mage77.wav +Sorceror78 Sorcerer sfx\sorceror\mage78.wav +Sorceror79 Sorcerer sfx\sorceror\mage79.wav +Sorceror80 Stream,Sorcerer sfx\sorceror\mage80.wav +Sorceror81 Stream,Sorcerer sfx\sorceror\mage81.wav +Sorceror82 Stream,Sorcerer sfx\sorceror\mage82.wav +Sorceror83 Stream,Sorcerer sfx\sorceror\mage83.wav +Sorceror84 Stream,Sorcerer sfx\sorceror\mage84.wav +Sorceror85 Stream,Sorcerer sfx\sorceror\mage85.wav +Sorceror86 Stream,Sorcerer sfx\sorceror\mage86.wav +Sorceror87 Stream,Sorcerer sfx\sorceror\mage87.wav +Sorceror88 Stream,Sorcerer sfx\sorceror\mage88.wav +Sorceror89 Stream,Sorcerer sfx\sorceror\mage89.wav +Sorceror90 Stream,Sorcerer sfx\sorceror\mage90.wav +Sorceror91 Stream,Sorcerer sfx\sorceror\mage91.wav +Sorceror92 Stream,Sorcerer sfx\sorceror\mage92.wav +Sorceror93 Stream,Sorcerer sfx\sorceror\mage93.wav +Sorceror94 Stream,Sorcerer sfx\sorceror\mage94.wav +Sorceror95 Stream,Sorcerer sfx\sorceror\mage95.wav +Sorceror96 Stream,Sorcerer sfx\sorceror\mage96.wav +Sorceror97 Stream,Sorcerer sfx\sorceror\mage97.wav +Sorceror98 Stream,Sorcerer sfx\sorceror\mage98.wav +Sorceror99 Stream,Sorcerer sfx\sorceror\mage99.wav +Sorceror100 Stream,Sorcerer sfx\sorceror\mage100.wav +Sorceror101 Stream,Sorcerer sfx\sorceror\mage101.wav +Sorceror102 Stream,Sorcerer sfx\sorceror\mage102.wav +Rogue1 Stream,Rogue sfx\rogue\rogue01.wav +Rogue2 Stream,Rogue sfx\rogue\rogue02.wav +Rogue3 Stream,Rogue sfx\rogue\rogue03.wav +Rogue4 Stream,Rogue sfx\rogue\rogue04.wav +Rogue5 Stream,Rogue sfx\rogue\rogue05.wav +Rogue6 Stream,Rogue sfx\rogue\rogue06.wav +Rogue7 Stream,Rogue sfx\rogue\rogue07.wav +Rogue8 Stream,Rogue sfx\rogue\rogue08.wav +Rogue9 Stream,Rogue sfx\rogue\rogue09.wav +Rogue10 Stream,Rogue sfx\rogue\rogue10.wav +Rogue11 Stream,Rogue sfx\rogue\rogue11.wav +Rogue12 Stream,Rogue sfx\rogue\rogue12.wav +Rogue13 Rogue sfx\rogue\rogue13.wav +Rogue14 Rogue sfx\rogue\rogue14.wav +Rogue15 Rogue sfx\rogue\rogue15.wav +Rogue16 Rogue sfx\rogue\rogue16.wav +Rogue17 Rogue sfx\rogue\rogue17.wav +Rogue18 Rogue sfx\rogue\rogue18.wav +Rogue19 Rogue sfx\rogue\rogue19.wav +Rogue20 Rogue sfx\rogue\rogue20.wav +Rogue21 Rogue sfx\rogue\rogue21.wav +Rogue22 Rogue sfx\rogue\rogue22.wav +Rogue23 Rogue sfx\rogue\rogue23.wav +Rogue24 Rogue sfx\rogue\rogue24.wav +Rogue25 Rogue sfx\rogue\rogue25.wav +Rogue26 Rogue sfx\rogue\rogue26.wav +Rogue27 Rogue sfx\rogue\rogue27.wav +Rogue28 Rogue sfx\rogue\rogue28.wav +Rogue29 Rogue sfx\rogue\rogue29.wav +Rogue30 Rogue sfx\rogue\rogue30.wav +Rogue31 Rogue sfx\rogue\rogue31.wav +Rogue32 Rogue sfx\rogue\rogue32.wav +Rogue33 Rogue sfx\rogue\rogue33.wav +Rogue34 Rogue sfx\rogue\rogue34.wav +Rogue35 Rogue sfx\rogue\rogue35.wav +Rogue36 Rogue sfx\rogue\rogue36.wav +Rogue37 Rogue sfx\rogue\rogue37.wav +Rogue38 Rogue sfx\rogue\rogue38.wav +Rogue39 Rogue sfx\rogue\rogue39.wav +Rogue40 Rogue sfx\rogue\rogue40.wav +Rogue41 Rogue sfx\rogue\rogue41.wav +Rogue42 Rogue sfx\rogue\rogue42.wav +Rogue43 Rogue sfx\rogue\rogue43.wav +Rogue44 Rogue sfx\rogue\rogue44.wav +Rogue45 Rogue sfx\rogue\rogue45.wav +Rogue46 Rogue sfx\rogue\rogue46.wav +Rogue47 Rogue sfx\rogue\rogue47.wav +Rogue48 Rogue sfx\rogue\rogue48.wav +Rogue49 Rogue sfx\rogue\rogue49.wav +Rogue50 Rogue sfx\rogue\rogue50.wav +Rogue51 Stream,Rogue sfx\rogue\rogue51.wav +Rogue52 Stream,Rogue sfx\rogue\rogue52.wav +Rogue53 Stream,Rogue sfx\rogue\rogue53.wav +Rogue54 Stream,Rogue sfx\rogue\rogue54.wav +Rogue55 Stream,Rogue sfx\rogue\rogue55.wav +Rogue56 Stream,Rogue sfx\rogue\rogue56.wav +Rogue57 Rogue sfx\rogue\rogue57.wav +Rogue58 Stream,Rogue sfx\rogue\rogue58.wav +Rogue59 Stream,Rogue sfx\rogue\rogue59.wav +Rogue60 Stream,Rogue sfx\rogue\rogue60.wav +Rogue61 Stream,Rogue sfx\rogue\rogue61.wav +Rogue62 Stream,Rogue sfx\rogue\rogue62.wav +Rogue63 Stream,Rogue sfx\rogue\rogue63.wav +Rogue64 Rogue sfx\rogue\rogue64.wav +Rogue65 Rogue sfx\rogue\rogue65.wav +Rogue66 Rogue sfx\rogue\rogue66.wav +Rogue67 Rogue sfx\rogue\rogue67.wav +Rogue68 Rogue sfx\rogue\rogue68.wav +Rogue69 Rogue sfx\rogue\rogue69.wav +Rogue69b Rogue sfx\rogue\rogue69b.wav +Rogue70 Rogue sfx\rogue\rogue70.wav +Rogue71 Rogue sfx\rogue\rogue71.wav +Rogue72 Rogue sfx\rogue\rogue72.wav +Rogue73 Rogue sfx\rogue\rogue73.wav +Rogue74 Rogue sfx\rogue\rogue74.wav +Rogue75 Rogue sfx\rogue\rogue75.wav +Rogue76 Rogue sfx\rogue\rogue76.wav +Rogue77 Rogue sfx\rogue\rogue77.wav +Rogue78 Rogue sfx\rogue\rogue78.wav +Rogue79 Rogue sfx\rogue\rogue79.wav +Rogue80 Stream,Rogue sfx\rogue\rogue80.wav +Rogue81 Stream,Rogue sfx\rogue\rogue81.wav +Rogue82 Stream,Rogue sfx\rogue\rogue82.wav +Rogue83 Stream,Rogue sfx\rogue\rogue83.wav +Rogue84 Stream,Rogue sfx\rogue\rogue84.wav +Rogue85 Stream,Rogue sfx\rogue\rogue85.wav +Rogue86 Stream,Rogue sfx\rogue\rogue86.wav +Rogue87 Stream,Rogue sfx\rogue\rogue87.wav +Rogue88 Stream,Rogue sfx\rogue\rogue88.wav +Rogue89 Stream,Rogue sfx\rogue\rogue89.wav +Rogue90 Stream,Rogue sfx\rogue\rogue90.wav +Rogue91 Stream,Rogue sfx\rogue\rogue91.wav +Rogue92 Stream,Rogue sfx\rogue\rogue92.wav +Rogue93 Stream,Rogue sfx\rogue\rogue93.wav +Rogue94 Stream,Rogue sfx\rogue\rogue94.wav +Rogue95 Stream,Rogue sfx\rogue\rogue95.wav +Rogue96 Stream,Rogue sfx\rogue\rogue96.wav +Rogue97 Stream,Rogue sfx\rogue\rogue97.wav +Rogue98 Stream,Rogue sfx\rogue\rogue98.wav +Rogue99 Stream,Rogue sfx\rogue\rogue99.wav +Rogue100 Stream,Rogue sfx\rogue\rogue100.wav +Rogue101 Stream,Rogue sfx\rogue\rogue101.wav +Rogue102 Stream,Rogue sfx\rogue\rogue102.wav +Warrior1 Stream,Warrior sfx\warrior\warior01.wav +Warrior2 Stream,Warrior sfx\warrior\warior02.wav +Warrior3 Stream,Warrior sfx\warrior\warior03.wav +Warrior4 Stream,Warrior sfx\warrior\warior04.wav +Warrior5 Stream,Warrior sfx\warrior\warior05.wav +Warrior6 Stream,Warrior sfx\warrior\warior06.wav +Warrior7 Stream,Warrior sfx\warrior\warior07.wav +Warrior8 Stream,Warrior sfx\warrior\warior08.wav +Warrior9 Stream,Warrior sfx\warrior\warior09.wav +Warrior10 Stream,Warrior sfx\warrior\warior10.wav +Warrior11 Stream,Warrior sfx\warrior\warior11.wav +Warrior12 Stream,Warrior sfx\warrior\warior12.wav +Warrior13 Warrior sfx\warrior\warior13.wav +Warrior14 Warrior sfx\warrior\warior14.wav +Warrior14b Warrior sfx\warrior\wario14b.wav +Warrior14c Warrior sfx\warrior\wario14c.wav +Warrior15 Warrior sfx\warrior\warior15.wav +Warrior15b Warrior sfx\warrior\wario15b.wav +Warrior15c Warrior sfx\warrior\wario15c.wav +Warrior16 Warrior sfx\warrior\warior16.wav +Warrior16b Warrior sfx\warrior\wario16b.wav +Warrior16c Warrior sfx\warrior\wario16c.wav +Warrior17 Warrior sfx\warrior\warior17.wav +Warrior18 Warrior sfx\warrior\warior18.wav +Warrior19 Warrior sfx\warrior\warior19.wav +Warrior20 Warrior sfx\warrior\warior20.wav +Warrior21 Warrior sfx\warrior\warior21.wav +Warrior22 Warrior sfx\warrior\warior22.wav +Warrior23 Warrior sfx\warrior\warior23.wav +Warrior24 Warrior sfx\warrior\warior24.wav +Warrior25 Warrior sfx\warrior\warior25.wav +Warrior26 Warrior sfx\warrior\warior26.wav +Warrior27 Warrior sfx\warrior\warior27.wav +Warrior28 Warrior sfx\warrior\warior28.wav +Warrior29 Warrior sfx\warrior\warior29.wav +Warrior30 Warrior sfx\warrior\warior30.wav +Warrior31 Warrior sfx\warrior\warior31.wav +Warrior32 Warrior sfx\warrior\warior32.wav +Warrior33 Warrior sfx\warrior\warior33.wav +Warrior34 Warrior sfx\warrior\warior34.wav +Warrior35 Warrior sfx\warrior\warior35.wav +Warrior36 Warrior sfx\warrior\warior36.wav +Warrior37 Warrior sfx\warrior\warior37.wav +Warrior38 Warrior sfx\warrior\warior38.wav +Warrior39 Warrior sfx\warrior\warior39.wav +Warrior40 Warrior sfx\warrior\warior40.wav +Warrior41 Warrior sfx\warrior\warior41.wav +Warrior42 Warrior sfx\warrior\warior42.wav +Warrior43 Warrior sfx\warrior\warior43.wav +Warrior44 Warrior sfx\warrior\warior44.wav +Warrior45 Warrior sfx\warrior\warior45.wav +Warrior46 Warrior sfx\warrior\warior46.wav +Warrior47 Warrior sfx\warrior\warior47.wav +Warrior48 Warrior sfx\warrior\warior48.wav +Warrior49 Warrior sfx\warrior\warior49.wav +Warrior50 Warrior sfx\warrior\warior50.wav +Warrior51 Stream,Warrior sfx\warrior\warior51.wav +Warrior52 Stream,Warrior sfx\warrior\warior52.wav +Warrior53 Stream,Warrior sfx\warrior\warior53.wav +Warrior54 Stream,Warrior sfx\warrior\warior54.wav +Warrior55 Stream,Warrior sfx\warrior\warior55.wav +Warrior56 Stream,Warrior sfx\warrior\warior56.wav +Warrior57 Warrior sfx\warrior\warior57.wav +Warrior58 Stream,Warrior sfx\warrior\warior58.wav +Warrior59 Stream,Warrior sfx\warrior\warior59.wav +Warrior60 Stream,Warrior sfx\warrior\warior60.wav +Warrior61 Stream,Warrior sfx\warrior\warior61.wav +Warrior62 Stream,Warrior sfx\warrior\warior62.wav +Warrior63 Stream,Warrior sfx\warrior\warior63.wav +Warrior64 Warrior sfx\warrior\warior64.wav +Warrior65 Warrior sfx\warrior\warior65.wav +Warrior66 Warrior sfx\warrior\warior66.wav +Warrior67 Warrior sfx\warrior\warior67.wav +Warrior68 Warrior sfx\warrior\warior68.wav +Warrior69 Warrior sfx\warrior\warior69.wav +Warrior69b Warrior sfx\warrior\wario69b.wav +Warrior70 Warrior sfx\warrior\warior70.wav +Warrior71 Warrior sfx\warrior\warior71.wav +Warrior72 Warrior sfx\warrior\warior72.wav +Warrior73 Warrior sfx\warrior\warior73.wav +Warrior74 Warrior sfx\warrior\warior74.wav +Warrior75 Warrior sfx\warrior\warior75.wav +Warrior76 Warrior sfx\warrior\warior76.wav +Warrior77 Warrior sfx\warrior\warior77.wav +Warrior78 Warrior sfx\warrior\warior78.wav +Warrior79 Warrior sfx\warrior\warior79.wav +Warrior80 Stream,Warrior sfx\warrior\warior80.wav +Warrior81 Stream,Warrior sfx\warrior\warior81.wav +Warrior82 Stream,Warrior sfx\warrior\warior82.wav +Warrior83 Stream,Warrior sfx\warrior\warior83.wav +Warrior84 Stream,Warrior sfx\warrior\warior84.wav +Warrior85 Stream,Warrior sfx\warrior\warior85.wav +Warrior86 Stream,Warrior sfx\warrior\warior86.wav +Warrior87 Stream,Warrior sfx\warrior\warior87.wav +Warrior88 Stream,Warrior sfx\warrior\warior88.wav +Warrior89 Stream,Warrior sfx\warrior\warior89.wav +Warrior90 Stream,Warrior sfx\warrior\warior90.wav +Warrior91 Stream,Warrior sfx\warrior\warior91.wav +Warrior92 Stream,Warrior sfx\warrior\warior92.wav +Warrior93 Stream,Warrior sfx\warrior\warior93.wav +Warrior94 Stream,Warrior sfx\warrior\warior94.wav +Warrior95 Stream,Warrior sfx\warrior\warior95.wav +Warrior95b Stream,Warrior sfx\warrior\wario95b.wav +Warrior95c Stream,Warrior sfx\warrior\wario95c.wav +Warrior95d Stream,Warrior sfx\warrior\wario95d.wav +Warrior95e Stream,Warrior sfx\warrior\wario95e.wav +Warrior95f Stream,Warrior sfx\warrior\wario95f.wav +Warrior96b Stream,Warrior sfx\warrior\wario96b.wav +Warrior97 Stream,Warrior sfx\warrior\wario97.wav +Warrior98 Stream,Warrior sfx\warrior\wario98.wav +Warrior99 Stream,Warrior sfx\warrior\warior99.wav +Warrior100 Stream,Warrior sfx\warrior\wario100.wav +Warrior101 Stream,Warrior sfx\warrior\wario101.wav +Warrior102 Stream,Warrior sfx\warrior\wario102.wav +Monk1 Stream,Monk sfx\monk\monk01.wav +Monk8 Stream,Monk sfx\monk\monk08.wav +Monk9 Stream,Monk sfx\monk\monk09.wav +Monk10 Stream,Monk sfx\monk\monk10.wav +Monk11 Stream,Monk sfx\monk\monk11.wav +Monk12 Stream,Monk sfx\monk\monk12.wav +Monk13 Monk sfx\monk\monk13.wav +Monk14 Monk sfx\monk\monk14.wav +Monk15 Monk sfx\monk\monk15.wav +Monk16 Monk sfx\monk\monk16.wav +Monk24 Monk sfx\monk\monk24.wav +Monk27 Monk sfx\monk\monk27.wav +Monk29 Monk sfx\monk\monk29.wav +Monk34 Monk sfx\monk\monk34.wav +Monk35 Monk sfx\monk\monk35.wav +Monk43 Monk sfx\monk\monk43.wav +Monk46 Monk sfx\monk\monk46.wav +Monk49 Monk sfx\monk\monk49.wav +Monk50 Monk sfx\monk\monk50.wav +Monk52 Stream,Monk sfx\monk\monk52.wav +Monk54 Stream,Monk sfx\monk\monk54.wav +Monk55 Stream,Monk sfx\monk\monk55.wav +Monk56 Stream,Monk sfx\monk\monk56.wav +Monk61 Stream,Monk sfx\monk\monk61.wav +Monk62 Stream,Monk sfx\monk\monk62.wav +Monk68 Monk sfx\monk\monk68.wav +Monk69 Monk sfx\monk\monk69.wav +Monk69b Monk sfx\monk\monk69b.wav +Monk70 Monk sfx\monk\monk70.wav +Monk71 Monk sfx\monk\monk71.wav +Monk79 Monk sfx\monk\monk79.wav +Monk80 Stream,Monk sfx\monk\monk80.wav +Monk82 Stream,Monk sfx\monk\monk82.wav +Monk83 Stream,Monk sfx\monk\monk83.wav +Monk87 Stream,Monk sfx\monk\monk87.wav +Monk88 Stream,Monk sfx\monk\monk88.wav +Monk89 Stream,Monk sfx\monk\monk89.wav +Monk91 Stream,Monk sfx\monk\monk91.wav +Monk92 Stream,Monk sfx\monk\monk92.wav +Monk94 Stream,Monk sfx\monk\monk94.wav +Monk95 Stream,Monk sfx\monk\monk95.wav +Monk96 Stream,Monk sfx\monk\monk96.wav +Monk97 Stream,Monk sfx\monk\monk97.wav +Monk98 Stream,Monk sfx\monk\monk98.wav +Monk99 Stream,Monk sfx\monk\monk99.wav +Narrator1 Stream sfx\narrator\nar01.wav +Narrator2 Stream sfx\narrator\nar02.wav +Narrator3 Stream sfx\narrator\nar03.wav +Narrator4 Stream sfx\narrator\nar04.wav +Narrator5 Stream sfx\narrator\nar05.wav +Narrator6 Stream sfx\narrator\nar06.wav +Narrator7 Stream sfx\narrator\nar07.wav +Narrator8 Stream sfx\narrator\nar08.wav +Narrator9 Stream sfx\narrator\nar09.wav +DiabloGreeting Stream sfx\misc\lvl16int.wav +ButcherGreeting Stream sfx\monsters\butcher.wav +Gharbad1 Stream sfx\monsters\garbud01.wav +Gharbad2 Stream sfx\monsters\garbud02.wav +Gharbad3 Stream sfx\monsters\garbud03.wav +Gharbad4 Stream sfx\monsters\garbud04.wav +Izual Stream sfx\monsters\izual01.wav +Lachdanan1 Stream sfx\monsters\lach01.wav +Lachdanan2 Stream sfx\monsters\lach02.wav +Lachdanan3 Stream sfx\monsters\lach03.wav +LazarusGreeting Stream sfx\monsters\laz01.wav +LazarusGreetingShort Stream sfx\monsters\laz02.wav +LeoricGreeting Stream sfx\monsters\sking01.wav +Snotspill1 Stream sfx\monsters\snot01.wav +Snotspill2 Stream sfx\monsters\snot02.wav +Snotspill3 Stream sfx\monsters\snot03.wav +Warlord Stream sfx\monsters\warlrd01.wav +Warlock Stream sfx\monsters\wlock01.wav +Zhar1 Stream sfx\monsters\zhar01.wav +Zhar2 Stream sfx\monsters\zhar02.wav +DiabloDeath Stream sfx\monsters\diablod.wav +Farmer1 Stream sfx\hellfire\farmer1.wav +Farmer2 Stream sfx\hellfire\farmer2.wav +Farmer2a Stream sfx\hellfire\Farmer2a.wav +Farmer3 Stream sfx\hellfire\farmer3.wav +Farmer4 Stream sfx\hellfire\farmer4.wav +Farmer5 Stream sfx\hellfire\farmer5.wav +Farmer6 Stream sfx\hellfire\farmer6.wav +Farmer7 Stream sfx\hellfire\farmer7.wav +Farmer8 Stream sfx\hellfire\farmer8.wav +Farmer9 Stream sfx\hellfire\farmer9.wav +Celia1 Stream sfx\hellfire\teddybr1.wav +Celia2 Stream sfx\hellfire\teddybr2.wav +Celia3 Stream sfx\hellfire\teddybr3.wav +Celia4 Stream sfx\hellfire\teddybr4.wav +Defiler1 Stream sfx\hellfire\defiler1.wav +Defiler2 Stream sfx\hellfire\defiler2.wav +Defiler3 Stream sfx\hellfire\defiler3.wav +Defiler4 Stream sfx\hellfire\defiler4.wav +Defiler8 Stream sfx\hellfire\defiler8.wav +Defiler6 Stream sfx\hellfire\defiler6.wav +Defiler7 Stream sfx\hellfire\defiler7.wav +NaKrul1 Stream sfx\hellfire\nakrul1.wav +NaKrul2 Stream sfx\hellfire\nakrul2.wav +NaKrul3 Stream sfx\hellfire\nakrul3.wav +NaKrul4 Stream sfx\hellfire\nakrul4.wav +NaKrul5 Stream sfx\hellfire\nakrul5.wav +NaKrul6 Stream sfx\hellfire\nakrul6.wav +NarratorHF3 Stream sfx\hellfire\naratr3.wav +CompleteNut1 Stream sfx\hellfire\cowsut1.wav +CompleteNut2 Stream sfx\hellfire\cowsut2.wav +CompleteNut3 Stream sfx\hellfire\cowsut3.wav +CompleteNut4 Stream sfx\hellfire\cowsut4.wav +CompleteNut4a Stream sfx\hellfire\cowsut4a.wav +CompleteNut5 Stream sfx\hellfire\cowsut5.wav +CompleteNut6 Stream sfx\hellfire\cowsut6.wav +CompleteNut7 Stream sfx\hellfire\cowsut7.wav +CompleteNut8 Stream sfx\hellfire\cowsut8.wav +CompleteNut9 Stream sfx\hellfire\cowsut9.wav +CompleteNut10 Stream sfx\hellfire\cowsut10.wav +CompleteNut11 Stream sfx\hellfire\cowsut11.wav +CompleteNut12 Stream sfx\hellfire\cowsut12.wav +NarratorHF6 Stream sfx\hellfire\naratr6.wav +NarratorHF7 Stream sfx\hellfire\naratr7.wav +NarratorHF8 Stream sfx\hellfire\naratr8.wav +NarratorHF5 Stream sfx\hellfire\naratr5.wav +NarratorHF9 Stream sfx\hellfire\naratr9.wav +NarratorHF4 Stream sfx\hellfire\naratr4.wav +CryptDoorOpen Misc,Hellfire sfx\items\cropen.wav +CryptDoorClose Misc,Hellfire sfx\items\crclos.wav diff --git a/Source/effects.cpp b/Source/effects.cpp index d0db84b11..75df85781 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -5,16 +5,20 @@ */ #include "effects.h" -#include #include +#include +#include + +#include "data/file.hpp" +#include "data/iterators.hpp" +#include "data/record_reader.hpp" #include "engine/random.hpp" #include "engine/sound.h" #include "engine/sound_defs.hpp" #include "engine/sound_position.hpp" #include "init.h" #include "player.h" -#include "utils/str_cat.hpp" namespace devilution { @@ -32,936 +36,8 @@ constexpr bool AllowStreaming = false; /** Specifies the sound file and the playback state of the current sound effect. */ TSFX *sgpStreamSFX = nullptr; -/* data */ /** List of all sounds, except monsters and music */ -TSFX sgSFX[] = { - // clang-format off -// SfxID bFlags pszName pSnd -/*Walk*/ { sfx_MISC, "sfx\\misc\\walk1.wav", nullptr }, -/*ShootBow*/ { sfx_MISC, "sfx\\misc\\bfire.wav", nullptr }, -/*CastSpell*/ { sfx_MISC, "sfx\\misc\\tmag.wav", nullptr }, -/*Swing*/ { sfx_MISC, "sfx\\misc\\swing.wav", nullptr }, -/*Swing2*/ { sfx_MISC, "sfx\\misc\\swing2.wav", nullptr }, -/*WarriorDeath*/ { sfx_MISC, "sfx\\misc\\dead.wav", nullptr }, -/*ShootBow2*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\sting1.wav", nullptr }, -/*ShootFireballBow*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\fballbow.wav", nullptr }, -/*QuestDone*/ { sfx_STREAM, "sfx\\misc\\questdon.wav", nullptr }, -/*BarrelExpload*/ { sfx_MISC, "sfx\\items\\barlfire.wav", nullptr }, -/*BarrelBreak*/ { sfx_MISC, "sfx\\items\\barrel.wav", nullptr }, -/*PodExpload*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\podpop8.wav", nullptr }, -/*PodPop*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\podpop5.wav", nullptr }, -/*UrnExpload*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\urnpop3.wav", nullptr }, -/*UrnBreak*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\urnpop2.wav", nullptr }, -/*BrutalHit*/ { sfx_MISC, "sfx\\items\\bhit.wav", nullptr }, -/*BrutalHit1*/ { sfx_MISC, "sfx\\items\\bhit1.wav", nullptr }, -/*ChestOpen*/ { sfx_MISC, "sfx\\items\\chest.wav", nullptr }, -/*DoorClose*/ { sfx_MISC, "sfx\\items\\doorclos.wav", nullptr }, -/*DoorOpen*/ { sfx_MISC, "sfx\\items\\dooropen.wav", nullptr }, -/*ItemAnvilFlip*/ { sfx_MISC, "sfx\\items\\flipanvl.wav", nullptr }, -/*ItemAxeFlip*/ { sfx_MISC, "sfx\\items\\flipaxe.wav", nullptr }, -/*ItemBloodStoneFlip*/ { sfx_MISC, "sfx\\items\\flipblst.wav", nullptr }, -/*ItemBodyPartFlip*/ { sfx_MISC, "sfx\\items\\flipbody.wav", nullptr }, -/*ItemBookFlip*/ { sfx_MISC, "sfx\\items\\flipbook.wav", nullptr }, -/*ItemBowFlip*/ { sfx_MISC, "sfx\\items\\flipbow.wav", nullptr }, -/*ItemCapFlip*/ { sfx_MISC, "sfx\\items\\flipcap.wav", nullptr }, -/*ItemArmorFlip*/ { sfx_MISC, "sfx\\items\\flipharm.wav", nullptr }, -/*ItemLeatherFlip*/ { sfx_MISC, "sfx\\items\\fliplarm.wav", nullptr }, -/*ItemMushroomFlip*/ { sfx_MISC, "sfx\\items\\flipmush.wav", nullptr }, -/*ItemPotionFlip*/ { sfx_MISC, "sfx\\items\\flippot.wav", nullptr }, -/*ItemRingFlip*/ { sfx_MISC, "sfx\\items\\flipring.wav", nullptr }, -/*ItemRockFlip*/ { sfx_MISC, "sfx\\items\\fliprock.wav", nullptr }, -/*ItemScrollFlip*/ { sfx_MISC, "sfx\\items\\flipscrl.wav", nullptr }, -/*ItemShieldFlip*/ { sfx_MISC, "sfx\\items\\flipshld.wav", nullptr }, -/*ItemSignFlip*/ { sfx_MISC, "sfx\\items\\flipsign.wav", nullptr }, -/*ItemStaffFlip*/ { sfx_MISC, "sfx\\items\\flipstaf.wav", nullptr }, -/*ItemSwordFlip*/ { sfx_MISC, "sfx\\items\\flipswor.wav", nullptr }, -/*ItemGold*/ { sfx_MISC, "sfx\\items\\gold.wav", nullptr }, -/*ItemAnvil*/ { sfx_MISC, "sfx\\items\\invanvl.wav", nullptr }, -/*ItemAxe*/ { sfx_MISC, "sfx\\items\\invaxe.wav", nullptr }, -/*ItemBloodStone*/ { sfx_MISC, "sfx\\items\\invblst.wav", nullptr }, -/*ItemBodyPart*/ { sfx_MISC, "sfx\\items\\invbody.wav", nullptr }, -/*ItemBook*/ { sfx_MISC, "sfx\\items\\invbook.wav", nullptr }, -/*ItemBow*/ { sfx_MISC, "sfx\\items\\invbow.wav", nullptr }, -/*ItemCap*/ { sfx_MISC, "sfx\\items\\invcap.wav", nullptr }, -/*GrabItem*/ { sfx_MISC, "sfx\\items\\invgrab.wav", nullptr }, -/*ItemArmor*/ { sfx_MISC, "sfx\\items\\invharm.wav", nullptr }, -/*ItemLeather*/ { sfx_MISC, "sfx\\items\\invlarm.wav", nullptr }, -/*ItemMushroom*/ { sfx_MISC, "sfx\\items\\invmush.wav", nullptr }, -/*ItemPotion*/ { sfx_MISC, "sfx\\items\\invpot.wav", nullptr }, -/*ItemRing*/ { sfx_MISC, "sfx\\items\\invring.wav", nullptr }, -/*ItemRock*/ { sfx_MISC, "sfx\\items\\invrock.wav", nullptr }, -/*ItemScroll*/ { sfx_MISC, "sfx\\items\\invscrol.wav", nullptr }, -/*ItemShield*/ { sfx_MISC, "sfx\\items\\invshiel.wav", nullptr }, -/*ItemSign*/ { sfx_MISC, "sfx\\items\\invsign.wav", nullptr }, -/*ItemStaff*/ { sfx_MISC, "sfx\\items\\invstaf.wav", nullptr }, -/*ItemSword*/ { sfx_MISC, "sfx\\items\\invsword.wav", nullptr }, -/*OperateLever*/ { sfx_MISC, "sfx\\items\\lever.wav", nullptr }, -/*OperateShrine*/ { sfx_MISC, "sfx\\items\\magic.wav", nullptr }, -/*OperateShrine1*/ { sfx_MISC, "sfx\\items\\magic1.wav", nullptr }, -/*ReadBook*/ { sfx_MISC, "sfx\\items\\readbook.wav", nullptr }, -/*Sarcophagus*/ { sfx_MISC, "sfx\\items\\sarc.wav", nullptr }, -/*MenuMove*/ { sfx_UI, "sfx\\items\\titlemov.wav", nullptr }, -/*MenuSelect*/ { sfx_UI, "sfx\\items\\titlslct.wav", nullptr }, -/*TriggerTrap*/ { sfx_MISC, "sfx\\items\\trap.wav", nullptr }, -/*CastFire*/ { sfx_MISC, "sfx\\misc\\cast2.wav", nullptr }, -/*CastLightning*/ { sfx_MISC, "sfx\\misc\\cast4.wav", nullptr }, -/*CastSkill*/ { sfx_MISC, "sfx\\misc\\cast6.wav", nullptr }, -/*SpellEnd*/ { sfx_MISC, "sfx\\misc\\cast7.wav", nullptr }, -/*CastHealing*/ { sfx_MISC, "sfx\\misc\\cast8.wav", nullptr }, -/*SpellRepair*/ { sfx_MISC, "sfx\\misc\\repair.wav", nullptr }, -/*SpellAcid*/ { sfx_MISC, "sfx\\misc\\acids1.wav", nullptr }, -/*SpellAcid1*/ { sfx_MISC, "sfx\\misc\\acids2.wav", nullptr }, -/*SpellApocalypse*/ { sfx_MISC, "sfx\\misc\\apoc.wav", nullptr }, -/*SpellBloodStar*/ { sfx_MISC, "sfx\\misc\\blodstar.wav", nullptr }, -/*SpellBloodStarHit*/ { sfx_MISC, "sfx\\misc\\blsimpt.wav", nullptr }, -/*SpellBoneSpirit*/ { sfx_MISC, "sfx\\misc\\bonesp.wav", nullptr }, -/*SpellBoneSpiritHit*/ { sfx_MISC, "sfx\\misc\\bsimpct.wav", nullptr }, -/*OperateCaldron*/ { sfx_MISC, "sfx\\misc\\caldron.wav", nullptr }, -/*SpellChargedBolt*/ { sfx_MISC, "sfx\\misc\\cbolt.wav", nullptr }, -/*SpellDoomSerpents*/ { sfx_MISC, "sfx\\misc\\dserp.wav", nullptr }, -/*SpellLightningHit*/ { sfx_MISC, "sfx\\misc\\elecimp1.wav", nullptr }, -/*SpellElemental*/ { sfx_MISC, "sfx\\misc\\elementl.wav", nullptr }, -/*SpellEtherealize*/ { sfx_MISC, "sfx\\misc\\ethereal.wav", nullptr }, -/*SpellFirebolt*/ { sfx_MISC, "sfx\\misc\\fbolt1.wav", nullptr }, -/*SpellFireHit*/ { sfx_MISC, "sfx\\misc\\firimp2.wav", nullptr }, -/*SpellFlameWave*/ { sfx_MISC, "sfx\\misc\\flamwave.wav", nullptr }, -/*OperateFountain*/ { sfx_MISC, "sfx\\misc\\fountain.wav", nullptr }, -/*SpellGolem*/ { sfx_MISC, "sfx\\misc\\golum.wav", nullptr }, -/*OperateGoatShrine*/ { sfx_MISC, "sfx\\misc\\gshrine.wav", nullptr }, -/*SpellGuardian*/ { sfx_MISC, "sfx\\misc\\guard.wav", nullptr }, -/*SpellGuardianHit*/ { sfx_MISC, "sfx\\misc\\grdlanch.wav", nullptr }, -/*SpellHolyBolt*/ { sfx_MISC, "sfx\\misc\\holybolt.wav", nullptr }, -/*SpellInfravision*/ { sfx_MISC, "sfx\\misc\\infravis.wav", nullptr }, -/*SpellInvisibility*/ { sfx_MISC, "sfx\\misc\\invisibl.wav", nullptr }, -/*SpellLightning*/ { sfx_MISC, "sfx\\misc\\lning1.wav", nullptr }, -/*SpellManaShield*/ { sfx_MISC, "sfx\\misc\\mshield.wav", nullptr }, -/*BigExplosion*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\nestxpld.wav", nullptr }, -/*SpellNova*/ { sfx_MISC, "sfx\\misc\\nova.wav", nullptr }, -/*SpellPuddle*/ { sfx_MISC, "sfx\\misc\\puddle.wav", nullptr }, -/*SpellResurrect*/ { sfx_MISC, "sfx\\misc\\resur.wav", nullptr }, -/*SpellStoneCurse*/ { sfx_MISC, "sfx\\misc\\scurimp.wav", nullptr }, -/*SpellPortal*/ { sfx_MISC, "sfx\\misc\\sentinel.wav", nullptr }, -/*SpellInferno*/ { sfx_MISC, "sfx\\misc\\spoutstr.wav", nullptr }, -/*SpellTrapDisarm*/ { sfx_MISC, "sfx\\misc\\trapdis.wav", nullptr }, -/*SpellTeleport*/ { sfx_MISC, "sfx\\misc\\teleport.wav", nullptr }, -/*SpellFireWall*/ { sfx_MISC, "sfx\\misc\\wallloop.wav", nullptr }, -/*SpellLightningWall*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\misc\\lmag.wav", nullptr }, -/*Gillian1*/ { sfx_STREAM, "sfx\\towners\\bmaid01.wav", nullptr }, -/*Gillian2*/ { sfx_STREAM, "sfx\\towners\\bmaid02.wav", nullptr }, -/*Gillian3*/ { sfx_STREAM, "sfx\\towners\\bmaid03.wav", nullptr }, -/*Gillian4*/ { sfx_STREAM, "sfx\\towners\\bmaid04.wav", nullptr }, -/*Gillian5*/ { sfx_STREAM, "sfx\\towners\\bmaid05.wav", nullptr }, -/*Gillian6*/ { sfx_STREAM, "sfx\\towners\\bmaid06.wav", nullptr }, -/*Gillian7*/ { sfx_STREAM, "sfx\\towners\\bmaid07.wav", nullptr }, -/*Gillian8*/ { sfx_STREAM, "sfx\\towners\\bmaid08.wav", nullptr }, -/*Gillian9*/ { sfx_STREAM, "sfx\\towners\\bmaid09.wav", nullptr }, -/*Gillian10*/ { sfx_STREAM, "sfx\\towners\\bmaid10.wav", nullptr }, -/*Gillian11*/ { sfx_STREAM, "sfx\\towners\\bmaid11.wav", nullptr }, -/*Gillian12*/ { sfx_STREAM, "sfx\\towners\\bmaid12.wav", nullptr }, -/*Gillian13*/ { sfx_STREAM, "sfx\\towners\\bmaid13.wav", nullptr }, -/*Gillian14*/ { sfx_STREAM, "sfx\\towners\\bmaid14.wav", nullptr }, -/*Gillian15*/ { sfx_STREAM, "sfx\\towners\\bmaid15.wav", nullptr }, -/*Gillian16*/ { sfx_STREAM, "sfx\\towners\\bmaid16.wav", nullptr }, -/*Gillian17*/ { sfx_STREAM, "sfx\\towners\\bmaid17.wav", nullptr }, -/*Gillian18*/ { sfx_STREAM, "sfx\\towners\\bmaid18.wav", nullptr }, -/*Gillian19*/ { sfx_STREAM, "sfx\\towners\\bmaid19.wav", nullptr }, -/*Gillian20*/ { sfx_STREAM, "sfx\\towners\\bmaid20.wav", nullptr }, -/*Gillian21*/ { sfx_STREAM, "sfx\\towners\\bmaid21.wav", nullptr }, -/*Gillian22*/ { sfx_STREAM, "sfx\\towners\\bmaid22.wav", nullptr }, -/*Gillian23*/ { sfx_STREAM, "sfx\\towners\\bmaid23.wav", nullptr }, -/*Gillian24*/ { sfx_STREAM, "sfx\\towners\\bmaid24.wav", nullptr }, -/*Gillian25*/ { sfx_STREAM, "sfx\\towners\\bmaid25.wav", nullptr }, -/*Gillian26*/ { sfx_STREAM, "sfx\\towners\\bmaid26.wav", nullptr }, -/*Gillian27*/ { sfx_STREAM, "sfx\\towners\\bmaid27.wav", nullptr }, -/*Gillian28*/ { sfx_STREAM, "sfx\\towners\\bmaid28.wav", nullptr }, -/*Gillian29*/ { sfx_STREAM, "sfx\\towners\\bmaid29.wav", nullptr }, -/*Gillian30*/ { sfx_STREAM, "sfx\\towners\\bmaid30.wav", nullptr }, -/*Gillian31*/ { sfx_STREAM, "sfx\\towners\\bmaid31.wav", nullptr }, -/*Gillian32*/ { sfx_STREAM, "sfx\\towners\\bmaid32.wav", nullptr }, -/*Gillian33*/ { sfx_STREAM, "sfx\\towners\\bmaid33.wav", nullptr }, -/*Gillian34*/ { sfx_STREAM, "sfx\\towners\\bmaid34.wav", nullptr }, -/*Gillian35*/ { sfx_STREAM, "sfx\\towners\\bmaid35.wav", nullptr }, -/*Gillian36*/ { sfx_STREAM, "sfx\\towners\\bmaid36.wav", nullptr }, -/*Gillian37*/ { sfx_STREAM, "sfx\\towners\\bmaid37.wav", nullptr }, -/*Gillian38*/ { sfx_STREAM, "sfx\\towners\\bmaid38.wav", nullptr }, -/*Gillian39*/ { sfx_STREAM, "sfx\\towners\\bmaid39.wav", nullptr }, -/*Gillian40*/ { sfx_STREAM, "sfx\\towners\\bmaid40.wav", nullptr }, -/*Griswold1*/ { sfx_STREAM, "sfx\\towners\\bsmith01.wav", nullptr }, -/*Griswold2*/ { sfx_STREAM, "sfx\\towners\\bsmith02.wav", nullptr }, -/*Griswold3*/ { sfx_STREAM, "sfx\\towners\\bsmith03.wav", nullptr }, -/*Griswold4*/ { sfx_STREAM, "sfx\\towners\\bsmith04.wav", nullptr }, -/*Griswold5*/ { sfx_STREAM, "sfx\\towners\\bsmith05.wav", nullptr }, -/*Griswold6*/ { sfx_STREAM, "sfx\\towners\\bsmith06.wav", nullptr }, -/*Griswold7*/ { sfx_STREAM, "sfx\\towners\\bsmith07.wav", nullptr }, -/*Griswold8*/ { sfx_STREAM, "sfx\\towners\\bsmith08.wav", nullptr }, -/*Griswold9*/ { sfx_STREAM, "sfx\\towners\\bsmith09.wav", nullptr }, -/*Griswold10*/ { sfx_STREAM, "sfx\\towners\\bsmith10.wav", nullptr }, -/*Griswold11*/ { sfx_STREAM, "sfx\\towners\\bsmith11.wav", nullptr }, -/*Griswold12*/ { sfx_STREAM, "sfx\\towners\\bsmith12.wav", nullptr }, -/*Griswold13*/ { sfx_STREAM, "sfx\\towners\\bsmith13.wav", nullptr }, -/*Griswold14*/ { sfx_STREAM, "sfx\\towners\\bsmith14.wav", nullptr }, -/*Griswold15*/ { sfx_STREAM, "sfx\\towners\\bsmith15.wav", nullptr }, -/*Griswold16*/ { sfx_STREAM, "sfx\\towners\\bsmith16.wav", nullptr }, -/*Griswold17*/ { sfx_STREAM, "sfx\\towners\\bsmith17.wav", nullptr }, -/*Griswold18*/ { sfx_STREAM, "sfx\\towners\\bsmith18.wav", nullptr }, -/*Griswold19*/ { sfx_STREAM, "sfx\\towners\\bsmith19.wav", nullptr }, -/*Griswold20*/ { sfx_STREAM, "sfx\\towners\\bsmith20.wav", nullptr }, -/*Griswold21*/ { sfx_STREAM, "sfx\\towners\\bsmith21.wav", nullptr }, -/*Griswold22*/ { sfx_STREAM, "sfx\\towners\\bsmith22.wav", nullptr }, -/*Griswold23*/ { sfx_STREAM, "sfx\\towners\\bsmith23.wav", nullptr }, -/*Griswold24*/ { sfx_STREAM, "sfx\\towners\\bsmith24.wav", nullptr }, -/*Griswold25*/ { sfx_STREAM, "sfx\\towners\\bsmith25.wav", nullptr }, -/*Griswold26*/ { sfx_STREAM, "sfx\\towners\\bsmith26.wav", nullptr }, -/*Griswold27*/ { sfx_STREAM, "sfx\\towners\\bsmith27.wav", nullptr }, -/*Griswold28*/ { sfx_STREAM, "sfx\\towners\\bsmith28.wav", nullptr }, -/*Griswold29*/ { sfx_STREAM, "sfx\\towners\\bsmith29.wav", nullptr }, -/*Griswold30*/ { sfx_STREAM, "sfx\\towners\\bsmith30.wav", nullptr }, -/*Griswold31*/ { sfx_STREAM, "sfx\\towners\\bsmith31.wav", nullptr }, -/*Griswold32*/ { sfx_STREAM, "sfx\\towners\\bsmith32.wav", nullptr }, -/*Griswold33*/ { sfx_STREAM, "sfx\\towners\\bsmith33.wav", nullptr }, -/*Griswold34*/ { sfx_STREAM, "sfx\\towners\\bsmith34.wav", nullptr }, -/*Griswold35*/ { sfx_STREAM, "sfx\\towners\\bsmith35.wav", nullptr }, -/*Griswold36*/ { sfx_STREAM, "sfx\\towners\\bsmith36.wav", nullptr }, -/*Griswold37*/ { sfx_STREAM, "sfx\\towners\\bsmith37.wav", nullptr }, -/*Griswold38*/ { sfx_STREAM, "sfx\\towners\\bsmith38.wav", nullptr }, -/*Griswold39*/ { sfx_STREAM, "sfx\\towners\\bsmith39.wav", nullptr }, -/*Griswold40*/ { sfx_STREAM, "sfx\\towners\\bsmith40.wav", nullptr }, -/*Griswold41*/ { sfx_STREAM, "sfx\\towners\\bsmith41.wav", nullptr }, -/*Griswold42*/ { sfx_STREAM, "sfx\\towners\\bsmith42.wav", nullptr }, -/*Griswold43*/ { sfx_STREAM, "sfx\\towners\\bsmith43.wav", nullptr }, -/*Griswold44*/ { sfx_STREAM, "sfx\\towners\\bsmith44.wav", nullptr }, -/*Griswold45*/ { sfx_STREAM, "sfx\\towners\\bsmith45.wav", nullptr }, -/*Griswold46*/ { sfx_STREAM, "sfx\\towners\\bsmith46.wav", nullptr }, -/*Griswold47*/ { sfx_STREAM, "sfx\\towners\\bsmith47.wav", nullptr }, -/*Griswold48*/ { sfx_STREAM, "sfx\\towners\\bsmith48.wav", nullptr }, -/*Griswold49*/ { sfx_STREAM, "sfx\\towners\\bsmith49.wav", nullptr }, -/*Griswold50*/ { sfx_STREAM, "sfx\\towners\\bsmith50.wav", nullptr }, -/*Griswold51*/ { sfx_STREAM, "sfx\\towners\\bsmith51.wav", nullptr }, -/*Griswold52*/ { sfx_STREAM, "sfx\\towners\\bsmith52.wav", nullptr }, -/*Griswold53*/ { sfx_STREAM, "sfx\\towners\\bsmith53.wav", nullptr }, -/*Griswold54*/ { sfx_STREAM, "sfx\\towners\\bsmith54.wav", nullptr }, -/*Griswold55*/ { sfx_STREAM, "sfx\\towners\\bsmith55.wav", nullptr }, -/*Griswold56*/ { sfx_STREAM, "sfx\\towners\\bsmith56.wav", nullptr }, -/*Cow1*/ { sfx_MISC, "sfx\\towners\\cow1.wav", nullptr }, -/*Cow2*/ { sfx_MISC, "sfx\\towners\\cow2.wav", nullptr }, -/*Pig*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\towners\\cow7.wav", nullptr }, -/*Duck*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\towners\\cow8.wav", nullptr }, -/*WoundedTownsmanOld*/ { sfx_STREAM, "sfx\\towners\\deadguy2.wav", nullptr }, -/*Farnham1*/ { sfx_STREAM, "sfx\\towners\\drunk01.wav", nullptr }, -/*Farnham2*/ { sfx_STREAM, "sfx\\towners\\drunk02.wav", nullptr }, -/*Farnham3*/ { sfx_STREAM, "sfx\\towners\\drunk03.wav", nullptr }, -/*Farnham4*/ { sfx_STREAM, "sfx\\towners\\drunk04.wav", nullptr }, -/*Farnham5*/ { sfx_STREAM, "sfx\\towners\\drunk05.wav", nullptr }, -/*Farnham6*/ { sfx_STREAM, "sfx\\towners\\drunk06.wav", nullptr }, -/*Farnham7*/ { sfx_STREAM, "sfx\\towners\\drunk07.wav", nullptr }, -/*Farnham8*/ { sfx_STREAM, "sfx\\towners\\drunk08.wav", nullptr }, -/*Farnham9*/ { sfx_STREAM, "sfx\\towners\\drunk09.wav", nullptr }, -/*Farnham10*/ { sfx_STREAM, "sfx\\towners\\drunk10.wav", nullptr }, -/*Farnham11*/ { sfx_STREAM, "sfx\\towners\\drunk11.wav", nullptr }, -/*Farnham12*/ { sfx_STREAM, "sfx\\towners\\drunk12.wav", nullptr }, -/*Farnham13*/ { sfx_STREAM, "sfx\\towners\\drunk13.wav", nullptr }, -/*Farnham14*/ { sfx_STREAM, "sfx\\towners\\drunk14.wav", nullptr }, -/*Farnham15*/ { sfx_STREAM, "sfx\\towners\\drunk15.wav", nullptr }, -/*Farnham16*/ { sfx_STREAM, "sfx\\towners\\drunk16.wav", nullptr }, -/*Farnham17*/ { sfx_STREAM, "sfx\\towners\\drunk17.wav", nullptr }, -/*Farnham18*/ { sfx_STREAM, "sfx\\towners\\drunk18.wav", nullptr }, -/*Farnham19*/ { sfx_STREAM, "sfx\\towners\\drunk19.wav", nullptr }, -/*Farnham20*/ { sfx_STREAM, "sfx\\towners\\drunk20.wav", nullptr }, -/*Farnham21*/ { sfx_STREAM, "sfx\\towners\\drunk21.wav", nullptr }, -/*Farnham22*/ { sfx_STREAM, "sfx\\towners\\drunk22.wav", nullptr }, -/*Farnham23*/ { sfx_STREAM, "sfx\\towners\\drunk23.wav", nullptr }, -/*Farnham24*/ { sfx_STREAM, "sfx\\towners\\drunk24.wav", nullptr }, -/*Farnham25*/ { sfx_STREAM, "sfx\\towners\\drunk25.wav", nullptr }, -/*Farnham26*/ { sfx_STREAM, "sfx\\towners\\drunk26.wav", nullptr }, -/*Farnham27*/ { sfx_STREAM, "sfx\\towners\\drunk27.wav", nullptr }, -/*Farnham28*/ { sfx_STREAM, "sfx\\towners\\drunk28.wav", nullptr }, -/*Farnham29*/ { sfx_STREAM, "sfx\\towners\\drunk29.wav", nullptr }, -/*Farnham30*/ { sfx_STREAM, "sfx\\towners\\drunk30.wav", nullptr }, -/*Farnham31*/ { sfx_STREAM, "sfx\\towners\\drunk31.wav", nullptr }, -/*Farnham32*/ { sfx_STREAM, "sfx\\towners\\drunk32.wav", nullptr }, -/*Farnham33*/ { sfx_STREAM, "sfx\\towners\\drunk33.wav", nullptr }, -/*Farnham34*/ { sfx_STREAM, "sfx\\towners\\drunk34.wav", nullptr }, -/*Farnham35*/ { sfx_STREAM, "sfx\\towners\\drunk35.wav", nullptr }, -/*Pepin1*/ { sfx_STREAM, "sfx\\towners\\healer01.wav", nullptr }, -/*Pepin2*/ { sfx_STREAM, "sfx\\towners\\healer02.wav", nullptr }, -/*Pepin3*/ { sfx_STREAM, "sfx\\towners\\healer03.wav", nullptr }, -/*Pepin4*/ { sfx_STREAM, "sfx\\towners\\healer04.wav", nullptr }, -/*Pepin5*/ { sfx_STREAM, "sfx\\towners\\healer05.wav", nullptr }, -/*Pepin6*/ { sfx_STREAM, "sfx\\towners\\healer06.wav", nullptr }, -/*Pepin7*/ { sfx_STREAM, "sfx\\towners\\healer07.wav", nullptr }, -/*Pepin8*/ { sfx_STREAM, "sfx\\towners\\healer08.wav", nullptr }, -/*Pepin9*/ { sfx_STREAM, "sfx\\towners\\healer09.wav", nullptr }, -/*Pepin10*/ { sfx_STREAM, "sfx\\towners\\healer10.wav", nullptr }, -/*Pepin11*/ { sfx_STREAM, "sfx\\towners\\healer11.wav", nullptr }, -/*Pepin12*/ { sfx_STREAM, "sfx\\towners\\healer12.wav", nullptr }, -/*Pepin13*/ { sfx_STREAM, "sfx\\towners\\healer13.wav", nullptr }, -/*Pepin14*/ { sfx_STREAM, "sfx\\towners\\healer14.wav", nullptr }, -/*Pepin15*/ { sfx_STREAM, "sfx\\towners\\healer15.wav", nullptr }, -/*Pepin16*/ { sfx_STREAM, "sfx\\towners\\healer16.wav", nullptr }, -/*Pepin17*/ { sfx_STREAM, "sfx\\towners\\healer17.wav", nullptr }, -/*Pepin18*/ { sfx_STREAM, "sfx\\towners\\healer18.wav", nullptr }, -/*Pepin19*/ { sfx_STREAM, "sfx\\towners\\healer19.wav", nullptr }, -/*Pepin20*/ { sfx_STREAM, "sfx\\towners\\healer20.wav", nullptr }, -/*Pepin21*/ { sfx_STREAM, "sfx\\towners\\healer21.wav", nullptr }, -/*Pepin22*/ { sfx_STREAM, "sfx\\towners\\healer22.wav", nullptr }, -/*Pepin23*/ { sfx_STREAM, "sfx\\towners\\healer23.wav", nullptr }, -/*Pepin24*/ { sfx_STREAM, "sfx\\towners\\healer24.wav", nullptr }, -/*Pepin25*/ { sfx_STREAM, "sfx\\towners\\healer25.wav", nullptr }, -/*Pepin26*/ { sfx_STREAM, "sfx\\towners\\healer26.wav", nullptr }, -/*Pepin27*/ { sfx_STREAM, "sfx\\towners\\healer27.wav", nullptr }, -/*Pepin28*/ { sfx_STREAM, "sfx\\towners\\healer28.wav", nullptr }, -/*Pepin29*/ { sfx_STREAM, "sfx\\towners\\healer29.wav", nullptr }, -/*Pepin30*/ { sfx_STREAM, "sfx\\towners\\healer30.wav", nullptr }, -/*Pepin31*/ { sfx_STREAM, "sfx\\towners\\healer31.wav", nullptr }, -/*Pepin32*/ { sfx_STREAM, "sfx\\towners\\healer32.wav", nullptr }, -/*Pepin33*/ { sfx_STREAM, "sfx\\towners\\healer33.wav", nullptr }, -/*Pepin34*/ { sfx_STREAM, "sfx\\towners\\healer34.wav", nullptr }, -/*Pepin35*/ { sfx_STREAM, "sfx\\towners\\healer35.wav", nullptr }, -/*Pepin36*/ { sfx_STREAM, "sfx\\towners\\healer36.wav", nullptr }, -/*Pepin37*/ { sfx_STREAM, "sfx\\towners\\healer37.wav", nullptr }, -/*Pepin38*/ { sfx_STREAM, "sfx\\towners\\healer38.wav", nullptr }, -/*Pepin39*/ { sfx_STREAM, "sfx\\towners\\healer39.wav", nullptr }, -/*Pepin40*/ { sfx_STREAM, "sfx\\towners\\healer40.wav", nullptr }, -/*Pepin41*/ { sfx_STREAM, "sfx\\towners\\healer41.wav", nullptr }, -/*Pepin42*/ { sfx_STREAM, "sfx\\towners\\healer42.wav", nullptr }, -/*Pepin43*/ { sfx_STREAM, "sfx\\towners\\healer43.wav", nullptr }, -/*Pepin44*/ { sfx_STREAM, "sfx\\towners\\healer44.wav", nullptr }, -/*Pepin45*/ { sfx_STREAM, "sfx\\towners\\healer45.wav", nullptr }, -/*Pepin46*/ { sfx_STREAM, "sfx\\towners\\healer46.wav", nullptr }, -/*Pepin47*/ { sfx_STREAM, "sfx\\towners\\healer47.wav", nullptr }, -/*Wirt1*/ { sfx_STREAM, "sfx\\towners\\pegboy01.wav", nullptr }, -/*Wirt2*/ { sfx_STREAM, "sfx\\towners\\pegboy02.wav", nullptr }, -/*Wirt3*/ { sfx_STREAM, "sfx\\towners\\pegboy03.wav", nullptr }, -/*Wirt4*/ { sfx_STREAM, "sfx\\towners\\pegboy04.wav", nullptr }, -/*Wirt5*/ { sfx_STREAM, "sfx\\towners\\pegboy05.wav", nullptr }, -/*Wirt6*/ { sfx_STREAM, "sfx\\towners\\pegboy06.wav", nullptr }, -/*Wirt7*/ { sfx_STREAM, "sfx\\towners\\pegboy07.wav", nullptr }, -/*Wirt8*/ { sfx_STREAM, "sfx\\towners\\pegboy08.wav", nullptr }, -/*Wirt9*/ { sfx_STREAM, "sfx\\towners\\pegboy09.wav", nullptr }, -/*Wirt10*/ { sfx_STREAM, "sfx\\towners\\pegboy10.wav", nullptr }, -/*Wirt11*/ { sfx_STREAM, "sfx\\towners\\pegboy11.wav", nullptr }, -/*Wirt12*/ { sfx_STREAM, "sfx\\towners\\pegboy12.wav", nullptr }, -/*Wirt13*/ { sfx_STREAM, "sfx\\towners\\pegboy13.wav", nullptr }, -/*Wirt14*/ { sfx_STREAM, "sfx\\towners\\pegboy14.wav", nullptr }, -/*Wirt15*/ { sfx_STREAM, "sfx\\towners\\pegboy15.wav", nullptr }, -/*Wirt16*/ { sfx_STREAM, "sfx\\towners\\pegboy16.wav", nullptr }, -/*Wirt17*/ { sfx_STREAM, "sfx\\towners\\pegboy17.wav", nullptr }, -/*Wirt18*/ { sfx_STREAM, "sfx\\towners\\pegboy18.wav", nullptr }, -/*Wirt19*/ { sfx_STREAM, "sfx\\towners\\pegboy19.wav", nullptr }, -/*Wirt20*/ { sfx_STREAM, "sfx\\towners\\pegboy20.wav", nullptr }, -/*Wirt21*/ { sfx_STREAM, "sfx\\towners\\pegboy21.wav", nullptr }, -/*Wirt22*/ { sfx_STREAM, "sfx\\towners\\pegboy22.wav", nullptr }, -/*Wirt23*/ { sfx_STREAM, "sfx\\towners\\pegboy23.wav", nullptr }, -/*Wirt24*/ { sfx_STREAM, "sfx\\towners\\pegboy24.wav", nullptr }, -/*Wirt25*/ { sfx_STREAM, "sfx\\towners\\pegboy25.wav", nullptr }, -/*Wirt26*/ { sfx_STREAM, "sfx\\towners\\pegboy26.wav", nullptr }, -/*Wirt27*/ { sfx_STREAM, "sfx\\towners\\pegboy27.wav", nullptr }, -/*Wirt28*/ { sfx_STREAM, "sfx\\towners\\pegboy28.wav", nullptr }, -/*Wirt29*/ { sfx_STREAM, "sfx\\towners\\pegboy29.wav", nullptr }, -/*Wirt30*/ { sfx_STREAM, "sfx\\towners\\pegboy30.wav", nullptr }, -/*Wirt31*/ { sfx_STREAM, "sfx\\towners\\pegboy31.wav", nullptr }, -/*Wirt32*/ { sfx_STREAM, "sfx\\towners\\pegboy32.wav", nullptr }, -/*Wirt33*/ { sfx_STREAM, "sfx\\towners\\pegboy33.wav", nullptr }, -/*Wirt34*/ { sfx_STREAM, "sfx\\towners\\pegboy34.wav", nullptr }, -/*Wirt35*/ { sfx_STREAM, "sfx\\towners\\pegboy35.wav", nullptr }, -/*Wirt36*/ { sfx_STREAM, "sfx\\towners\\pegboy36.wav", nullptr }, -/*Wirt37*/ { sfx_STREAM, "sfx\\towners\\pegboy37.wav", nullptr }, -/*Wirt38*/ { sfx_STREAM, "sfx\\towners\\pegboy38.wav", nullptr }, -/*Wirt39*/ { sfx_STREAM, "sfx\\towners\\pegboy39.wav", nullptr }, -/*Wirt40*/ { sfx_STREAM, "sfx\\towners\\pegboy40.wav", nullptr }, -/*Wirt41*/ { sfx_STREAM, "sfx\\towners\\pegboy41.wav", nullptr }, -/*Wirt42*/ { sfx_STREAM, "sfx\\towners\\pegboy42.wav", nullptr }, -/*Wirt43*/ { sfx_STREAM, "sfx\\towners\\pegboy43.wav", nullptr }, -/*Tremain0*/ { sfx_STREAM, "sfx\\towners\\priest00.wav", nullptr }, -/*Tremain1*/ { sfx_STREAM, "sfx\\towners\\priest01.wav", nullptr }, -/*Tremain2*/ { sfx_STREAM, "sfx\\towners\\priest02.wav", nullptr }, -/*Tremain3*/ { sfx_STREAM, "sfx\\towners\\priest03.wav", nullptr }, -/*Tremain4*/ { sfx_STREAM, "sfx\\towners\\priest04.wav", nullptr }, -/*Tremain5*/ { sfx_STREAM, "sfx\\towners\\priest05.wav", nullptr }, -/*Tremain6*/ { sfx_STREAM, "sfx\\towners\\priest06.wav", nullptr }, -/*Tremain7*/ { sfx_STREAM, "sfx\\towners\\priest07.wav", nullptr }, -/*Cain0*/ { sfx_STREAM, "sfx\\towners\\storyt00.wav", nullptr }, -/*Cain1*/ { sfx_STREAM, "sfx\\towners\\storyt01.wav", nullptr }, -/*Cain2*/ { sfx_STREAM, "sfx\\towners\\storyt02.wav", nullptr }, -/*Cain3*/ { sfx_STREAM, "sfx\\towners\\storyt03.wav", nullptr }, -/*Cain4*/ { sfx_STREAM, "sfx\\towners\\storyt04.wav", nullptr }, -/*Cain5*/ { sfx_STREAM, "sfx\\towners\\storyt05.wav", nullptr }, -/*Cain6*/ { sfx_STREAM, "sfx\\towners\\storyt06.wav", nullptr }, -/*Cain7*/ { sfx_STREAM, "sfx\\towners\\storyt07.wav", nullptr }, -/*Cain8*/ { sfx_STREAM, "sfx\\towners\\storyt08.wav", nullptr }, -/*Cain9*/ { sfx_STREAM, "sfx\\towners\\storyt09.wav", nullptr }, -/*Cain10*/ { sfx_STREAM, "sfx\\towners\\storyt10.wav", nullptr }, -/*Cain11*/ { sfx_STREAM, "sfx\\towners\\storyt11.wav", nullptr }, -/*Cain12*/ { sfx_STREAM, "sfx\\towners\\storyt12.wav", nullptr }, -/*Cain13*/ { sfx_STREAM, "sfx\\towners\\storyt13.wav", nullptr }, -/*Cain14*/ { sfx_STREAM, "sfx\\towners\\storyt14.wav", nullptr }, -/*Cain15*/ { sfx_STREAM, "sfx\\towners\\storyt15.wav", nullptr }, -/*Cain16*/ { sfx_STREAM, "sfx\\towners\\storyt16.wav", nullptr }, -/*Cain17*/ { sfx_STREAM, "sfx\\towners\\storyt17.wav", nullptr }, -/*Cain18*/ { sfx_STREAM, "sfx\\towners\\storyt18.wav", nullptr }, -/*Cain19*/ { sfx_STREAM, "sfx\\towners\\storyt19.wav", nullptr }, -/*Cain20*/ { sfx_STREAM, "sfx\\towners\\storyt20.wav", nullptr }, -/*Cain21*/ { sfx_STREAM, "sfx\\towners\\storyt21.wav", nullptr }, -/*Cain22*/ { sfx_STREAM, "sfx\\towners\\storyt22.wav", nullptr }, -/*Cain23*/ { sfx_STREAM, "sfx\\towners\\storyt23.wav", nullptr }, -/*Cain24*/ { sfx_STREAM, "sfx\\towners\\storyt24.wav", nullptr }, -/*Cain25*/ { sfx_STREAM, "sfx\\towners\\storyt25.wav", nullptr }, -/*Cain26*/ { sfx_STREAM, "sfx\\towners\\storyt26.wav", nullptr }, -/*Cain27*/ { sfx_STREAM, "sfx\\towners\\storyt27.wav", nullptr }, -/*Cain28*/ { sfx_STREAM, "sfx\\towners\\storyt28.wav", nullptr }, -/*Cain29*/ { sfx_STREAM, "sfx\\towners\\storyt29.wav", nullptr }, -/*Cain30*/ { sfx_STREAM, "sfx\\towners\\storyt30.wav", nullptr }, -/*Cain31*/ { sfx_STREAM, "sfx\\towners\\storyt31.wav", nullptr }, -/*Cain32*/ { sfx_STREAM, "sfx\\towners\\storyt32.wav", nullptr }, -/*Cain33*/ { sfx_STREAM, "sfx\\towners\\storyt33.wav", nullptr }, -/*Cain34*/ { sfx_STREAM, "sfx\\towners\\storyt34.wav", nullptr }, -/*Cain35*/ { sfx_STREAM, "sfx\\towners\\storyt35.wav", nullptr }, -/*Cain36*/ { sfx_STREAM, "sfx\\towners\\storyt36.wav", nullptr }, -/*Cain37*/ { sfx_STREAM, "sfx\\towners\\storyt37.wav", nullptr }, -/*Cain38*/ { sfx_STREAM, "sfx\\towners\\storyt38.wav", nullptr }, -/*Ogden0*/ { sfx_STREAM, "sfx\\towners\\tavown00.wav", nullptr }, -/*Ogden1*/ { sfx_STREAM, "sfx\\towners\\tavown01.wav", nullptr }, -/*Ogden2*/ { sfx_STREAM, "sfx\\towners\\tavown02.wav", nullptr }, -/*Ogden3*/ { sfx_STREAM, "sfx\\towners\\tavown03.wav", nullptr }, -/*Ogden4*/ { sfx_STREAM, "sfx\\towners\\tavown04.wav", nullptr }, -/*Ogden5*/ { sfx_STREAM, "sfx\\towners\\tavown05.wav", nullptr }, -/*Ogden6*/ { sfx_STREAM, "sfx\\towners\\tavown06.wav", nullptr }, -/*Ogden7*/ { sfx_STREAM, "sfx\\towners\\tavown07.wav", nullptr }, -/*Ogden8*/ { sfx_STREAM, "sfx\\towners\\tavown08.wav", nullptr }, -/*Ogden9*/ { sfx_STREAM, "sfx\\towners\\tavown09.wav", nullptr }, -/*Ogden10*/ { sfx_STREAM, "sfx\\towners\\tavown10.wav", nullptr }, -/*Ogden11*/ { sfx_STREAM, "sfx\\towners\\tavown11.wav", nullptr }, -/*Ogden12*/ { sfx_STREAM, "sfx\\towners\\tavown12.wav", nullptr }, -/*Ogden13*/ { sfx_STREAM, "sfx\\towners\\tavown13.wav", nullptr }, -/*Ogden14*/ { sfx_STREAM, "sfx\\towners\\tavown14.wav", nullptr }, -/*Ogden15*/ { sfx_STREAM, "sfx\\towners\\tavown15.wav", nullptr }, -/*Ogden16*/ { sfx_STREAM, "sfx\\towners\\tavown16.wav", nullptr }, -/*Ogden17*/ { sfx_STREAM, "sfx\\towners\\tavown17.wav", nullptr }, -/*Ogden18*/ { sfx_STREAM, "sfx\\towners\\tavown18.wav", nullptr }, -/*Ogden19*/ { sfx_STREAM, "sfx\\towners\\tavown19.wav", nullptr }, -/*Ogden20*/ { sfx_STREAM, "sfx\\towners\\tavown20.wav", nullptr }, -/*Ogden21*/ { sfx_STREAM, "sfx\\towners\\tavown21.wav", nullptr }, -/*Ogden22*/ { sfx_STREAM, "sfx\\towners\\tavown22.wav", nullptr }, -/*Ogden23*/ { sfx_STREAM, "sfx\\towners\\tavown23.wav", nullptr }, -/*Ogden24*/ { sfx_STREAM, "sfx\\towners\\tavown24.wav", nullptr }, -/*Ogden25*/ { sfx_STREAM, "sfx\\towners\\tavown25.wav", nullptr }, -/*Ogden26*/ { sfx_STREAM, "sfx\\towners\\tavown26.wav", nullptr }, -/*Ogden27*/ { sfx_STREAM, "sfx\\towners\\tavown27.wav", nullptr }, -/*Ogden28*/ { sfx_STREAM, "sfx\\towners\\tavown28.wav", nullptr }, -/*Ogden29*/ { sfx_STREAM, "sfx\\towners\\tavown29.wav", nullptr }, -/*Ogden30*/ { sfx_STREAM, "sfx\\towners\\tavown30.wav", nullptr }, -/*Ogden31*/ { sfx_STREAM, "sfx\\towners\\tavown31.wav", nullptr }, -/*Ogden32*/ { sfx_STREAM, "sfx\\towners\\tavown32.wav", nullptr }, -/*Ogden33*/ { sfx_STREAM, "sfx\\towners\\tavown33.wav", nullptr }, -/*Ogden34*/ { sfx_STREAM, "sfx\\towners\\tavown34.wav", nullptr }, -/*Ogden35*/ { sfx_STREAM, "sfx\\towners\\tavown35.wav", nullptr }, -/*Ogden36*/ { sfx_STREAM, "sfx\\towners\\tavown36.wav", nullptr }, -/*Ogden37*/ { sfx_STREAM, "sfx\\towners\\tavown37.wav", nullptr }, -/*Ogden38*/ { sfx_STREAM, "sfx\\towners\\tavown38.wav", nullptr }, -/*Ogden39*/ { sfx_STREAM, "sfx\\towners\\tavown39.wav", nullptr }, -/*Ogden40*/ { sfx_STREAM, "sfx\\towners\\tavown40.wav", nullptr }, -/*Ogden41*/ { sfx_STREAM, "sfx\\towners\\tavown41.wav", nullptr }, -/*Ogden42*/ { sfx_STREAM, "sfx\\towners\\tavown42.wav", nullptr }, -/*Ogden43*/ { sfx_STREAM, "sfx\\towners\\tavown43.wav", nullptr }, -/*Ogden44*/ { sfx_STREAM, "sfx\\towners\\tavown44.wav", nullptr }, -/*Ogden45*/ { sfx_STREAM, "sfx\\towners\\tavown45.wav", nullptr }, -/*Adria1*/ { sfx_STREAM, "sfx\\towners\\witch01.wav", nullptr }, -/*Adria2*/ { sfx_STREAM, "sfx\\towners\\witch02.wav", nullptr }, -/*Adria3*/ { sfx_STREAM, "sfx\\towners\\witch03.wav", nullptr }, -/*Adria4*/ { sfx_STREAM, "sfx\\towners\\witch04.wav", nullptr }, -/*Adria5*/ { sfx_STREAM, "sfx\\towners\\witch05.wav", nullptr }, -/*Adria6*/ { sfx_STREAM, "sfx\\towners\\witch06.wav", nullptr }, -/*Adria7*/ { sfx_STREAM, "sfx\\towners\\witch07.wav", nullptr }, -/*Adria8*/ { sfx_STREAM, "sfx\\towners\\witch08.wav", nullptr }, -/*Adria9*/ { sfx_STREAM, "sfx\\towners\\witch09.wav", nullptr }, -/*Adria10*/ { sfx_STREAM, "sfx\\towners\\witch10.wav", nullptr }, -/*Adria11*/ { sfx_STREAM, "sfx\\towners\\witch11.wav", nullptr }, -/*Adria12*/ { sfx_STREAM, "sfx\\towners\\witch12.wav", nullptr }, -/*Adria13*/ { sfx_STREAM, "sfx\\towners\\witch13.wav", nullptr }, -/*Adria14*/ { sfx_STREAM, "sfx\\towners\\witch14.wav", nullptr }, -/*Adria15*/ { sfx_STREAM, "sfx\\towners\\witch15.wav", nullptr }, -/*Adria16*/ { sfx_STREAM, "sfx\\towners\\witch16.wav", nullptr }, -/*Adria17*/ { sfx_STREAM, "sfx\\towners\\witch17.wav", nullptr }, -/*Adria18*/ { sfx_STREAM, "sfx\\towners\\witch18.wav", nullptr }, -/*Adria19*/ { sfx_STREAM, "sfx\\towners\\witch19.wav", nullptr }, -/*Adria20*/ { sfx_STREAM, "sfx\\towners\\witch20.wav", nullptr }, -/*Adria21*/ { sfx_STREAM, "sfx\\towners\\witch21.wav", nullptr }, -/*Adria22*/ { sfx_STREAM, "sfx\\towners\\witch22.wav", nullptr }, -/*Adria23*/ { sfx_STREAM, "sfx\\towners\\witch23.wav", nullptr }, -/*Adria24*/ { sfx_STREAM, "sfx\\towners\\witch24.wav", nullptr }, -/*Adria25*/ { sfx_STREAM, "sfx\\towners\\witch25.wav", nullptr }, -/*Adria26*/ { sfx_STREAM, "sfx\\towners\\witch26.wav", nullptr }, -/*Adria27*/ { sfx_STREAM, "sfx\\towners\\witch27.wav", nullptr }, -/*Adria28*/ { sfx_STREAM, "sfx\\towners\\witch28.wav", nullptr }, -/*Adria29*/ { sfx_STREAM, "sfx\\towners\\witch29.wav", nullptr }, -/*Adria30*/ { sfx_STREAM, "sfx\\towners\\witch30.wav", nullptr }, -/*Adria31*/ { sfx_STREAM, "sfx\\towners\\witch31.wav", nullptr }, -/*Adria32*/ { sfx_STREAM, "sfx\\towners\\witch32.wav", nullptr }, -/*Adria33*/ { sfx_STREAM, "sfx\\towners\\witch33.wav", nullptr }, -/*Adria34*/ { sfx_STREAM, "sfx\\towners\\witch34.wav", nullptr }, -/*Adria35*/ { sfx_STREAM, "sfx\\towners\\witch35.wav", nullptr }, -/*Adria36*/ { sfx_STREAM, "sfx\\towners\\witch36.wav", nullptr }, -/*Adria37*/ { sfx_STREAM, "sfx\\towners\\witch37.wav", nullptr }, -/*Adria38*/ { sfx_STREAM, "sfx\\towners\\witch38.wav", nullptr }, -/*Adria39*/ { sfx_STREAM, "sfx\\towners\\witch39.wav", nullptr }, -/*Adria40*/ { sfx_STREAM, "sfx\\towners\\witch40.wav", nullptr }, -/*Adria41*/ { sfx_STREAM, "sfx\\towners\\witch41.wav", nullptr }, -/*Adria42*/ { sfx_STREAM, "sfx\\towners\\witch42.wav", nullptr }, -/*Adria43*/ { sfx_STREAM, "sfx\\towners\\witch43.wav", nullptr }, -/*Adria44*/ { sfx_STREAM, "sfx\\towners\\witch44.wav", nullptr }, -/*Adria45*/ { sfx_STREAM, "sfx\\towners\\witch45.wav", nullptr }, -/*Adria46*/ { sfx_STREAM, "sfx\\towners\\witch46.wav", nullptr }, -/*Adria47*/ { sfx_STREAM, "sfx\\towners\\witch47.wav", nullptr }, -/*Adria48*/ { sfx_STREAM, "sfx\\towners\\witch48.wav", nullptr }, -/*Adria49*/ { sfx_STREAM, "sfx\\towners\\witch49.wav", nullptr }, -/*Adria50*/ { sfx_STREAM, "sfx\\towners\\witch50.wav", nullptr }, -/*WoundedTownsman*/ { sfx_STREAM, "sfx\\towners\\wound01.wav", nullptr }, -/*Sorceror1*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage01.wav", nullptr }, -/*Sorceror2*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage02.wav", nullptr }, -/*Sorceror3*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage03.wav", nullptr }, -/*Sorceror4*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage04.wav", nullptr }, -/*Sorceror5*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage05.wav", nullptr }, -/*Sorceror6*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage06.wav", nullptr }, -/*Sorceror7*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage07.wav", nullptr }, -/*Sorceror8*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage08.wav", nullptr }, -/*Sorceror9*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage09.wav", nullptr }, -/*Sorceror10*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage10.wav", nullptr }, -/*Sorceror11*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage11.wav", nullptr }, -/*Sorceror12*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage12.wav", nullptr }, -/*Sorceror13*/ { sfx_SORCERER, "sfx\\sorceror\\mage13.wav", nullptr }, -/*Sorceror14*/ { sfx_SORCERER, "sfx\\sorceror\\mage14.wav", nullptr }, -/*Sorceror15*/ { sfx_SORCERER, "sfx\\sorceror\\mage15.wav", nullptr }, -/*Sorceror16*/ { sfx_SORCERER, "sfx\\sorceror\\mage16.wav", nullptr }, -/*Sorceror17*/ { sfx_SORCERER, "sfx\\sorceror\\mage17.wav", nullptr }, -/*Sorceror18*/ { sfx_SORCERER, "sfx\\sorceror\\mage18.wav", nullptr }, -/*Sorceror19*/ { sfx_SORCERER, "sfx\\sorceror\\mage19.wav", nullptr }, -/*Sorceror20*/ { sfx_SORCERER, "sfx\\sorceror\\mage20.wav", nullptr }, -/*Sorceror21*/ { sfx_SORCERER, "sfx\\sorceror\\mage21.wav", nullptr }, -/*Sorceror22*/ { sfx_SORCERER, "sfx\\sorceror\\mage22.wav", nullptr }, -/*Sorceror23*/ { sfx_SORCERER, "sfx\\sorceror\\mage23.wav", nullptr }, -/*Sorceror24*/ { sfx_SORCERER, "sfx\\sorceror\\mage24.wav", nullptr }, -/*Sorceror25*/ { sfx_SORCERER, "sfx\\sorceror\\mage25.wav", nullptr }, -/*Sorceror26*/ { sfx_SORCERER, "sfx\\sorceror\\mage26.wav", nullptr }, -/*Sorceror27*/ { sfx_SORCERER, "sfx\\sorceror\\mage27.wav", nullptr }, -/*Sorceror28*/ { sfx_SORCERER, "sfx\\sorceror\\mage28.wav", nullptr }, -/*Sorceror29*/ { sfx_SORCERER, "sfx\\sorceror\\mage29.wav", nullptr }, -/*Sorceror30*/ { sfx_SORCERER, "sfx\\sorceror\\mage30.wav", nullptr }, -/*Sorceror31*/ { sfx_SORCERER, "sfx\\sorceror\\mage31.wav", nullptr }, -/*Sorceror32*/ { sfx_SORCERER, "sfx\\sorceror\\mage32.wav", nullptr }, -/*Sorceror33*/ { sfx_SORCERER, "sfx\\sorceror\\mage33.wav", nullptr }, -/*Sorceror34*/ { sfx_SORCERER, "sfx\\sorceror\\mage34.wav", nullptr }, -/*Sorceror35*/ { sfx_SORCERER, "sfx\\sorceror\\mage35.wav", nullptr }, -/*Sorceror36*/ { sfx_SORCERER, "sfx\\sorceror\\mage36.wav", nullptr }, -/*Sorceror37*/ { sfx_SORCERER, "sfx\\sorceror\\mage37.wav", nullptr }, -/*Sorceror38*/ { sfx_SORCERER, "sfx\\sorceror\\mage38.wav", nullptr }, -/*Sorceror39*/ { sfx_SORCERER, "sfx\\sorceror\\mage39.wav", nullptr }, -/*Sorceror40*/ { sfx_SORCERER, "sfx\\sorceror\\mage40.wav", nullptr }, -/*Sorceror41*/ { sfx_SORCERER, "sfx\\sorceror\\mage41.wav", nullptr }, -/*Sorceror42*/ { sfx_SORCERER, "sfx\\sorceror\\mage42.wav", nullptr }, -/*Sorceror43*/ { sfx_SORCERER, "sfx\\sorceror\\mage43.wav", nullptr }, -/*Sorceror44*/ { sfx_SORCERER, "sfx\\sorceror\\mage44.wav", nullptr }, -/*Sorceror45*/ { sfx_SORCERER, "sfx\\sorceror\\mage45.wav", nullptr }, -/*Sorceror46*/ { sfx_SORCERER, "sfx\\sorceror\\mage46.wav", nullptr }, -/*Sorceror47*/ { sfx_SORCERER, "sfx\\sorceror\\mage47.wav", nullptr }, -/*Sorceror48*/ { sfx_SORCERER, "sfx\\sorceror\\mage48.wav", nullptr }, -/*Sorceror49*/ { sfx_SORCERER, "sfx\\sorceror\\mage49.wav", nullptr }, -/*Sorceror50*/ { sfx_SORCERER, "sfx\\sorceror\\mage50.wav", nullptr }, -/*Sorceror51*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage51.wav", nullptr }, -/*Sorceror52*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage52.wav", nullptr }, -/*Sorceror53*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage53.wav", nullptr }, -/*Sorceror54*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage54.wav", nullptr }, -/*Sorceror55*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage55.wav", nullptr }, -/*Sorceror56*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage56.wav", nullptr }, -/*Sorceror57*/ { sfx_SORCERER, "sfx\\sorceror\\mage57.wav", nullptr }, -/*Sorceror58*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage58.wav", nullptr }, -/*Sorceror59*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage59.wav", nullptr }, -/*Sorceror60*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage60.wav", nullptr }, -/*Sorceror61*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage61.wav", nullptr }, -/*Sorceror62*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage62.wav", nullptr }, -/*Sorceror63*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage63.wav", nullptr }, -/*Sorceror64*/ { sfx_SORCERER, "sfx\\sorceror\\mage64.wav", nullptr }, -/*Sorceror65*/ { sfx_SORCERER, "sfx\\sorceror\\mage65.wav", nullptr }, -/*Sorceror66*/ { sfx_SORCERER, "sfx\\sorceror\\mage66.wav", nullptr }, -/*Sorceror67*/ { sfx_SORCERER, "sfx\\sorceror\\mage67.wav", nullptr }, -/*Sorceror68*/ { sfx_SORCERER, "sfx\\sorceror\\mage68.wav", nullptr }, -/*Sorceror69*/ { sfx_SORCERER, "sfx\\sorceror\\mage69.wav", nullptr }, -/*Sorceror69b*/ { sfx_SORCERER, "sfx\\sorceror\\mage69b.wav", nullptr }, -/*Sorceror70*/ { sfx_SORCERER, "sfx\\sorceror\\mage70.wav", nullptr }, -/*Sorceror71*/ { sfx_SORCERER, "sfx\\sorceror\\mage71.wav", nullptr }, -/*Sorceror72*/ { sfx_SORCERER, "sfx\\sorceror\\mage72.wav", nullptr }, -/*Sorceror73*/ { sfx_SORCERER, "sfx\\sorceror\\mage73.wav", nullptr }, -/*Sorceror74*/ { sfx_SORCERER, "sfx\\sorceror\\mage74.wav", nullptr }, -/*Sorceror75*/ { sfx_SORCERER, "sfx\\sorceror\\mage75.wav", nullptr }, -/*Sorceror76*/ { sfx_SORCERER, "sfx\\sorceror\\mage76.wav", nullptr }, -/*Sorceror77*/ { sfx_SORCERER, "sfx\\sorceror\\mage77.wav", nullptr }, -/*Sorceror78*/ { sfx_SORCERER, "sfx\\sorceror\\mage78.wav", nullptr }, -/*Sorceror79*/ { sfx_SORCERER, "sfx\\sorceror\\mage79.wav", nullptr }, -/*Sorceror80*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage80.wav", nullptr }, -/*Sorceror81*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage81.wav", nullptr }, -/*Sorceror82*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage82.wav", nullptr }, -/*Sorceror83*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage83.wav", nullptr }, -/*Sorceror84*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage84.wav", nullptr }, -/*Sorceror85*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage85.wav", nullptr }, -/*Sorceror86*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage86.wav", nullptr }, -/*Sorceror87*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage87.wav", nullptr }, -/*Sorceror88*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage88.wav", nullptr }, -/*Sorceror89*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage89.wav", nullptr }, -/*Sorceror90*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage90.wav", nullptr }, -/*Sorceror91*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage91.wav", nullptr }, -/*Sorceror92*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage92.wav", nullptr }, -/*Sorceror93*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage93.wav", nullptr }, -/*Sorceror94*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage94.wav", nullptr }, -/*Sorceror95*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage95.wav", nullptr }, -/*Sorceror96*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage96.wav", nullptr }, -/*Sorceror97*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage97.wav", nullptr }, -/*Sorceror98*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage98.wav", nullptr }, -/*Sorceror99*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage99.wav", nullptr }, -/*Sorceror100*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage100.wav", nullptr }, -/*Sorceror101*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage101.wav", nullptr }, -/*Sorceror102*/ { sfx_STREAM | sfx_SORCERER, "sfx\\sorceror\\mage102.wav", nullptr }, -/*Rogue1*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue01.wav", nullptr }, -/*Rogue2*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue02.wav", nullptr }, -/*Rogue3*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue03.wav", nullptr }, -/*Rogue4*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue04.wav", nullptr }, -/*Rogue5*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue05.wav", nullptr }, -/*Rogue6*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue06.wav", nullptr }, -/*Rogue7*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue07.wav", nullptr }, -/*Rogue8*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue08.wav", nullptr }, -/*Rogue9*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue09.wav", nullptr }, -/*Rogue10*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue10.wav", nullptr }, -/*Rogue11*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue11.wav", nullptr }, -/*Rogue12*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue12.wav", nullptr }, -/*Rogue13*/ { sfx_ROGUE, "sfx\\rogue\\rogue13.wav", nullptr }, -/*Rogue14*/ { sfx_ROGUE, "sfx\\rogue\\rogue14.wav", nullptr }, -/*Rogue15*/ { sfx_ROGUE, "sfx\\rogue\\rogue15.wav", nullptr }, -/*Rogue16*/ { sfx_ROGUE, "sfx\\rogue\\rogue16.wav", nullptr }, -/*Rogue17*/ { sfx_ROGUE, "sfx\\rogue\\rogue17.wav", nullptr }, -/*Rogue18*/ { sfx_ROGUE, "sfx\\rogue\\rogue18.wav", nullptr }, -/*Rogue19*/ { sfx_ROGUE, "sfx\\rogue\\rogue19.wav", nullptr }, -/*Rogue20*/ { sfx_ROGUE, "sfx\\rogue\\rogue20.wav", nullptr }, -/*Rogue21*/ { sfx_ROGUE, "sfx\\rogue\\rogue21.wav", nullptr }, -/*Rogue22*/ { sfx_ROGUE, "sfx\\rogue\\rogue22.wav", nullptr }, -/*Rogue23*/ { sfx_ROGUE, "sfx\\rogue\\rogue23.wav", nullptr }, -/*Rogue24*/ { sfx_ROGUE, "sfx\\rogue\\rogue24.wav", nullptr }, -/*Rogue25*/ { sfx_ROGUE, "sfx\\rogue\\rogue25.wav", nullptr }, -/*Rogue26*/ { sfx_ROGUE, "sfx\\rogue\\rogue26.wav", nullptr }, -/*Rogue27*/ { sfx_ROGUE, "sfx\\rogue\\rogue27.wav", nullptr }, -/*Rogue28*/ { sfx_ROGUE, "sfx\\rogue\\rogue28.wav", nullptr }, -/*Rogue29*/ { sfx_ROGUE, "sfx\\rogue\\rogue29.wav", nullptr }, -/*Rogue30*/ { sfx_ROGUE, "sfx\\rogue\\rogue30.wav", nullptr }, -/*Rogue31*/ { sfx_ROGUE, "sfx\\rogue\\rogue31.wav", nullptr }, -/*Rogue32*/ { sfx_ROGUE, "sfx\\rogue\\rogue32.wav", nullptr }, -/*Rogue33*/ { sfx_ROGUE, "sfx\\rogue\\rogue33.wav", nullptr }, -/*Rogue34*/ { sfx_ROGUE, "sfx\\rogue\\rogue34.wav", nullptr }, -/*Rogue35*/ { sfx_ROGUE, "sfx\\rogue\\rogue35.wav", nullptr }, -/*Rogue36*/ { sfx_ROGUE, "sfx\\rogue\\rogue36.wav", nullptr }, -/*Rogue37*/ { sfx_ROGUE, "sfx\\rogue\\rogue37.wav", nullptr }, -/*Rogue38*/ { sfx_ROGUE, "sfx\\rogue\\rogue38.wav", nullptr }, -/*Rogue39*/ { sfx_ROGUE, "sfx\\rogue\\rogue39.wav", nullptr }, -/*Rogue40*/ { sfx_ROGUE, "sfx\\rogue\\rogue40.wav", nullptr }, -/*Rogue41*/ { sfx_ROGUE, "sfx\\rogue\\rogue41.wav", nullptr }, -/*Rogue42*/ { sfx_ROGUE, "sfx\\rogue\\rogue42.wav", nullptr }, -/*Rogue43*/ { sfx_ROGUE, "sfx\\rogue\\rogue43.wav", nullptr }, -/*Rogue44*/ { sfx_ROGUE, "sfx\\rogue\\rogue44.wav", nullptr }, -/*Rogue45*/ { sfx_ROGUE, "sfx\\rogue\\rogue45.wav", nullptr }, -/*Rogue46*/ { sfx_ROGUE, "sfx\\rogue\\rogue46.wav", nullptr }, -/*Rogue47*/ { sfx_ROGUE, "sfx\\rogue\\rogue47.wav", nullptr }, -/*Rogue48*/ { sfx_ROGUE, "sfx\\rogue\\rogue48.wav", nullptr }, -/*Rogue49*/ { sfx_ROGUE, "sfx\\rogue\\rogue49.wav", nullptr }, -/*Rogue50*/ { sfx_ROGUE, "sfx\\rogue\\rogue50.wav", nullptr }, -/*Rogue51*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue51.wav", nullptr }, -/*Rogue52*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue52.wav", nullptr }, -/*Rogue53*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue53.wav", nullptr }, -/*Rogue54*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue54.wav", nullptr }, -/*Rogue55*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue55.wav", nullptr }, -/*Rogue56*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue56.wav", nullptr }, -/*Rogue57*/ { sfx_ROGUE, "sfx\\rogue\\rogue57.wav", nullptr }, -/*Rogue58*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue58.wav", nullptr }, -/*Rogue59*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue59.wav", nullptr }, -/*Rogue60*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue60.wav", nullptr }, -/*Rogue61*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue61.wav", nullptr }, -/*Rogue62*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue62.wav", nullptr }, -/*Rogue63*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue63.wav", nullptr }, -/*Rogue64*/ { sfx_ROGUE, "sfx\\rogue\\rogue64.wav", nullptr }, -/*Rogue65*/ { sfx_ROGUE, "sfx\\rogue\\rogue65.wav", nullptr }, -/*Rogue66*/ { sfx_ROGUE, "sfx\\rogue\\rogue66.wav", nullptr }, -/*Rogue67*/ { sfx_ROGUE, "sfx\\rogue\\rogue67.wav", nullptr }, -/*Rogue68*/ { sfx_ROGUE, "sfx\\rogue\\rogue68.wav", nullptr }, -/*Rogue69*/ { sfx_ROGUE, "sfx\\rogue\\rogue69.wav", nullptr }, -/*Rogue69b*/ { sfx_ROGUE, "sfx\\rogue\\rogue69b.wav", nullptr }, -/*Rogue70*/ { sfx_ROGUE, "sfx\\rogue\\rogue70.wav", nullptr }, -/*Rogue71*/ { sfx_ROGUE, "sfx\\rogue\\rogue71.wav", nullptr }, -/*Rogue72*/ { sfx_ROGUE, "sfx\\rogue\\rogue72.wav", nullptr }, -/*Rogue73*/ { sfx_ROGUE, "sfx\\rogue\\rogue73.wav", nullptr }, -/*Rogue74*/ { sfx_ROGUE, "sfx\\rogue\\rogue74.wav", nullptr }, -/*Rogue75*/ { sfx_ROGUE, "sfx\\rogue\\rogue75.wav", nullptr }, -/*Rogue76*/ { sfx_ROGUE, "sfx\\rogue\\rogue76.wav", nullptr }, -/*Rogue77*/ { sfx_ROGUE, "sfx\\rogue\\rogue77.wav", nullptr }, -/*Rogue78*/ { sfx_ROGUE, "sfx\\rogue\\rogue78.wav", nullptr }, -/*Rogue79*/ { sfx_ROGUE, "sfx\\rogue\\rogue79.wav", nullptr }, -/*Rogue80*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue80.wav", nullptr }, -/*Rogue81*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue81.wav", nullptr }, -/*Rogue82*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue82.wav", nullptr }, -/*Rogue83*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue83.wav", nullptr }, -/*Rogue84*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue84.wav", nullptr }, -/*Rogue85*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue85.wav", nullptr }, -/*Rogue86*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue86.wav", nullptr }, -/*Rogue87*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue87.wav", nullptr }, -/*Rogue88*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue88.wav", nullptr }, -/*Rogue89*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue89.wav", nullptr }, -/*Rogue90*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue90.wav", nullptr }, -/*Rogue91*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue91.wav", nullptr }, -/*Rogue92*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue92.wav", nullptr }, -/*Rogue93*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue93.wav", nullptr }, -/*Rogue94*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue94.wav", nullptr }, -/*Rogue95*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue95.wav", nullptr }, -/*Rogue96*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue96.wav", nullptr }, -/*Rogue97*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue97.wav", nullptr }, -/*Rogue98*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue98.wav", nullptr }, -/*Rogue99*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue99.wav", nullptr }, -/*Rogue100*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue100.wav", nullptr }, -/*Rogue101*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue101.wav", nullptr }, -/*Rogue102*/ { sfx_STREAM | sfx_ROGUE, "sfx\\rogue\\rogue102.wav", nullptr }, -/*Warrior1*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior01.wav", nullptr }, -/*Warrior2*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior02.wav", nullptr }, -/*Warrior3*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior03.wav", nullptr }, -/*Warrior4*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior04.wav", nullptr }, -/*Warrior5*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior05.wav", nullptr }, -/*Warrior6*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior06.wav", nullptr }, -/*Warrior7*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior07.wav", nullptr }, -/*Warrior8*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior08.wav", nullptr }, -/*Warrior9*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior09.wav", nullptr }, -/*Warrior10*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior10.wav", nullptr }, -/*Warrior11*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior11.wav", nullptr }, -/*Warrior12*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior12.wav", nullptr }, -/*Warrior13*/ { sfx_WARRIOR, "sfx\\warrior\\warior13.wav", nullptr }, -/*Warrior14*/ { sfx_WARRIOR, "sfx\\warrior\\warior14.wav", nullptr }, -/*Warrior14b*/ { sfx_WARRIOR, "sfx\\warrior\\wario14b.wav", nullptr }, -/*Warrior14c*/ { sfx_WARRIOR, "sfx\\warrior\\wario14c.wav", nullptr }, -/*Warrior15*/ { sfx_WARRIOR, "sfx\\warrior\\warior15.wav", nullptr }, -/*Warrior15b*/ { sfx_WARRIOR, "sfx\\warrior\\wario15b.wav", nullptr }, -/*Warrior15c*/ { sfx_WARRIOR, "sfx\\warrior\\wario15c.wav", nullptr }, -/*Warrior16*/ { sfx_WARRIOR, "sfx\\warrior\\warior16.wav", nullptr }, -/*Warrior16b*/ { sfx_WARRIOR, "sfx\\warrior\\wario16b.wav", nullptr }, -/*Warrior16c*/ { sfx_WARRIOR, "sfx\\warrior\\wario16c.wav", nullptr }, -/*Warrior17*/ { sfx_WARRIOR, "sfx\\warrior\\warior17.wav", nullptr }, -/*Warrior18*/ { sfx_WARRIOR, "sfx\\warrior\\warior18.wav", nullptr }, -/*Warrior19*/ { sfx_WARRIOR, "sfx\\warrior\\warior19.wav", nullptr }, -/*Warrior20*/ { sfx_WARRIOR, "sfx\\warrior\\warior20.wav", nullptr }, -/*Warrior21*/ { sfx_WARRIOR, "sfx\\warrior\\warior21.wav", nullptr }, -/*Warrior22*/ { sfx_WARRIOR, "sfx\\warrior\\warior22.wav", nullptr }, -/*Warrior23*/ { sfx_WARRIOR, "sfx\\warrior\\warior23.wav", nullptr }, -/*Warrior24*/ { sfx_WARRIOR, "sfx\\warrior\\warior24.wav", nullptr }, -/*Warrior25*/ { sfx_WARRIOR, "sfx\\warrior\\warior25.wav", nullptr }, -/*Warrior26*/ { sfx_WARRIOR, "sfx\\warrior\\warior26.wav", nullptr }, -/*Warrior27*/ { sfx_WARRIOR, "sfx\\warrior\\warior27.wav", nullptr }, -/*Warrior28*/ { sfx_WARRIOR, "sfx\\warrior\\warior28.wav", nullptr }, -/*Warrior29*/ { sfx_WARRIOR, "sfx\\warrior\\warior29.wav", nullptr }, -/*Warrior30*/ { sfx_WARRIOR, "sfx\\warrior\\warior30.wav", nullptr }, -/*Warrior31*/ { sfx_WARRIOR, "sfx\\warrior\\warior31.wav", nullptr }, -/*Warrior32*/ { sfx_WARRIOR, "sfx\\warrior\\warior32.wav", nullptr }, -/*Warrior33*/ { sfx_WARRIOR, "sfx\\warrior\\warior33.wav", nullptr }, -/*Warrior34*/ { sfx_WARRIOR, "sfx\\warrior\\warior34.wav", nullptr }, -/*Warrior35*/ { sfx_WARRIOR, "sfx\\warrior\\warior35.wav", nullptr }, -/*Warrior36*/ { sfx_WARRIOR, "sfx\\warrior\\warior36.wav", nullptr }, -/*Warrior37*/ { sfx_WARRIOR, "sfx\\warrior\\warior37.wav", nullptr }, -/*Warrior38*/ { sfx_WARRIOR, "sfx\\warrior\\warior38.wav", nullptr }, -/*Warrior39*/ { sfx_WARRIOR, "sfx\\warrior\\warior39.wav", nullptr }, -/*Warrior40*/ { sfx_WARRIOR, "sfx\\warrior\\warior40.wav", nullptr }, -/*Warrior41*/ { sfx_WARRIOR, "sfx\\warrior\\warior41.wav", nullptr }, -/*Warrior42*/ { sfx_WARRIOR, "sfx\\warrior\\warior42.wav", nullptr }, -/*Warrior43*/ { sfx_WARRIOR, "sfx\\warrior\\warior43.wav", nullptr }, -/*Warrior44*/ { sfx_WARRIOR, "sfx\\warrior\\warior44.wav", nullptr }, -/*Warrior45*/ { sfx_WARRIOR, "sfx\\warrior\\warior45.wav", nullptr }, -/*Warrior46*/ { sfx_WARRIOR, "sfx\\warrior\\warior46.wav", nullptr }, -/*Warrior47*/ { sfx_WARRIOR, "sfx\\warrior\\warior47.wav", nullptr }, -/*Warrior48*/ { sfx_WARRIOR, "sfx\\warrior\\warior48.wav", nullptr }, -/*Warrior49*/ { sfx_WARRIOR, "sfx\\warrior\\warior49.wav", nullptr }, -/*Warrior50*/ { sfx_WARRIOR, "sfx\\warrior\\warior50.wav", nullptr }, -/*Warrior51*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior51.wav", nullptr }, -/*Warrior52*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior52.wav", nullptr }, -/*Warrior53*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior53.wav", nullptr }, -/*Warrior54*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior54.wav", nullptr }, -/*Warrior55*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior55.wav", nullptr }, -/*Warrior56*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior56.wav", nullptr }, -/*Warrior57*/ { sfx_WARRIOR, "sfx\\warrior\\warior57.wav", nullptr }, -/*Warrior58*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior58.wav", nullptr }, -/*Warrior59*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior59.wav", nullptr }, -/*Warrior60*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior60.wav", nullptr }, -/*Warrior61*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior61.wav", nullptr }, -/*Warrior62*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior62.wav", nullptr }, -/*Warrior63*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior63.wav", nullptr }, -/*Warrior64*/ { sfx_WARRIOR, "sfx\\warrior\\warior64.wav", nullptr }, -/*Warrior65*/ { sfx_WARRIOR, "sfx\\warrior\\warior65.wav", nullptr }, -/*Warrior66*/ { sfx_WARRIOR, "sfx\\warrior\\warior66.wav", nullptr }, -/*Warrior67*/ { sfx_WARRIOR, "sfx\\warrior\\warior67.wav", nullptr }, -/*Warrior68*/ { sfx_WARRIOR, "sfx\\warrior\\warior68.wav", nullptr }, -/*Warrior69*/ { sfx_WARRIOR, "sfx\\warrior\\warior69.wav", nullptr }, -/*Warrior69b*/ { sfx_WARRIOR, "sfx\\warrior\\wario69b.wav", nullptr }, -/*Warrior70*/ { sfx_WARRIOR, "sfx\\warrior\\warior70.wav", nullptr }, -/*Warrior71*/ { sfx_WARRIOR, "sfx\\warrior\\warior71.wav", nullptr }, -/*Warrior72*/ { sfx_WARRIOR, "sfx\\warrior\\warior72.wav", nullptr }, -/*Warrior73*/ { sfx_WARRIOR, "sfx\\warrior\\warior73.wav", nullptr }, -/*Warrior74*/ { sfx_WARRIOR, "sfx\\warrior\\warior74.wav", nullptr }, -/*Warrior75*/ { sfx_WARRIOR, "sfx\\warrior\\warior75.wav", nullptr }, -/*Warrior76*/ { sfx_WARRIOR, "sfx\\warrior\\warior76.wav", nullptr }, -/*Warrior77*/ { sfx_WARRIOR, "sfx\\warrior\\warior77.wav", nullptr }, -/*Warrior78*/ { sfx_WARRIOR, "sfx\\warrior\\warior78.wav", nullptr }, -/*Warrior79*/ { sfx_WARRIOR, "sfx\\warrior\\warior79.wav", nullptr }, -/*Warrior80*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior80.wav", nullptr }, -/*Warrior81*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior81.wav", nullptr }, -/*Warrior82*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior82.wav", nullptr }, -/*Warrior83*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior83.wav", nullptr }, -/*Warrior84*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior84.wav", nullptr }, -/*Warrior85*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior85.wav", nullptr }, -/*Warrior86*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior86.wav", nullptr }, -/*Warrior87*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior87.wav", nullptr }, -/*Warrior88*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior88.wav", nullptr }, -/*Warrior89*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior89.wav", nullptr }, -/*Warrior90*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior90.wav", nullptr }, -/*Warrior91*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior91.wav", nullptr }, -/*Warrior92*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior92.wav", nullptr }, -/*Warrior93*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior93.wav", nullptr }, -/*Warrior94*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior94.wav", nullptr }, -/*Warrior95*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior95.wav", nullptr }, -/*Warrior95b*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95b.wav", nullptr }, -/*Warrior95c*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95c.wav", nullptr }, -/*Warrior95d*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95d.wav", nullptr }, -/*Warrior95e*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95e.wav", nullptr }, -/*Warrior95f*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario95f.wav", nullptr }, -/*Warrior96b*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario96b.wav", nullptr }, -/*Warrior97*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario97.wav", nullptr }, -/*Warrior98*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario98.wav", nullptr }, -/*Warrior99*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\warior99.wav", nullptr }, -/*Warrior100*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario100.wav", nullptr }, -/*Warrior101*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario101.wav", nullptr }, -/*Warrior102*/ { sfx_STREAM | sfx_WARRIOR, "sfx\\warrior\\wario102.wav", nullptr }, -/*Monk1*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk01.wav", nullptr }, -/*Monk8*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk08.wav", nullptr }, -/*Monk9*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk09.wav", nullptr }, -/*Monk10*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk10.wav", nullptr }, -/*Monk11*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk11.wav", nullptr }, -/*Monk12*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk12.wav", nullptr }, -/*Monk13*/ { sfx_MONK, "sfx\\monk\\monk13.wav", nullptr }, -/*Monk14*/ { sfx_MONK, "sfx\\monk\\monk14.wav", nullptr }, -/*Monk15*/ { sfx_MONK, "sfx\\monk\\monk15.wav", nullptr }, -/*Monk16*/ { sfx_MONK, "sfx\\monk\\monk16.wav", nullptr }, -/*Monk24*/ { sfx_MONK, "sfx\\monk\\monk24.wav", nullptr }, -/*Monk27*/ { sfx_MONK, "sfx\\monk\\monk27.wav", nullptr }, -/*Monk29*/ { sfx_MONK, "sfx\\monk\\monk29.wav", nullptr }, -/*Monk34*/ { sfx_MONK, "sfx\\monk\\monk34.wav", nullptr }, -/*Monk35*/ { sfx_MONK, "sfx\\monk\\monk35.wav", nullptr }, -/*Monk43*/ { sfx_MONK, "sfx\\monk\\monk43.wav", nullptr }, -/*Monk46*/ { sfx_MONK, "sfx\\monk\\monk46.wav", nullptr }, -/*Monk49*/ { sfx_MONK, "sfx\\monk\\monk49.wav", nullptr }, -/*Monk50*/ { sfx_MONK, "sfx\\monk\\monk50.wav", nullptr }, -/*Monk52*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk52.wav", nullptr }, -/*Monk54*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk54.wav", nullptr }, -/*Monk55*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk55.wav", nullptr }, -/*Monk56*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk56.wav", nullptr }, -/*Monk61*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk61.wav", nullptr }, -/*Monk62*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk62.wav", nullptr }, -/*Monk68*/ { sfx_MONK, "sfx\\monk\\monk68.wav", nullptr }, -/*Monk69*/ { sfx_MONK, "sfx\\monk\\monk69.wav", nullptr }, -/*Monk69b*/ { sfx_MONK, "sfx\\monk\\monk69b.wav", nullptr }, -/*Monk70*/ { sfx_MONK, "sfx\\monk\\monk70.wav", nullptr }, -/*Monk71*/ { sfx_MONK, "sfx\\monk\\monk71.wav", nullptr }, -/*Monk79*/ { sfx_MONK, "sfx\\monk\\monk79.wav", nullptr }, -/*Monk80*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk80.wav", nullptr }, -/*Monk82*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk82.wav", nullptr }, -/*Monk83*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk83.wav", nullptr }, -/*Monk87*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk87.wav", nullptr }, -/*Monk88*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk88.wav", nullptr }, -/*Monk89*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk89.wav", nullptr }, -/*Monk91*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk91.wav", nullptr }, -/*Monk92*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk92.wav", nullptr }, -/*Monk94*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk94.wav", nullptr }, -/*Monk95*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk95.wav", nullptr }, -/*Monk96*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk96.wav", nullptr }, -/*Monk97*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk97.wav", nullptr }, -/*Monk98*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk98.wav", nullptr }, -/*Monk99*/ { sfx_STREAM | sfx_MONK, "sfx\\monk\\monk99.wav", nullptr }, -/*Narrator1*/ { sfx_STREAM, "sfx\\narrator\\nar01.wav", nullptr }, -/*Narrator2*/ { sfx_STREAM, "sfx\\narrator\\nar02.wav", nullptr }, -/*Narrator3*/ { sfx_STREAM, "sfx\\narrator\\nar03.wav", nullptr }, -/*Narrator4*/ { sfx_STREAM, "sfx\\narrator\\nar04.wav", nullptr }, -/*Narrator5*/ { sfx_STREAM, "sfx\\narrator\\nar05.wav", nullptr }, -/*Narrator6*/ { sfx_STREAM, "sfx\\narrator\\nar06.wav", nullptr }, -/*Narrator7*/ { sfx_STREAM, "sfx\\narrator\\nar07.wav", nullptr }, -/*Narrator8*/ { sfx_STREAM, "sfx\\narrator\\nar08.wav", nullptr }, -/*Narrator9*/ { sfx_STREAM, "sfx\\narrator\\nar09.wav", nullptr }, -/*DiabloGreeting*/ { sfx_STREAM, "sfx\\misc\\lvl16int.wav", nullptr }, -/*ButcherGreeting*/ { sfx_STREAM, "sfx\\monsters\\butcher.wav", nullptr }, -/*Gharbad1*/ { sfx_STREAM, "sfx\\monsters\\garbud01.wav", nullptr }, -/*Gharbad2*/ { sfx_STREAM, "sfx\\monsters\\garbud02.wav", nullptr }, -/*Gharbad3*/ { sfx_STREAM, "sfx\\monsters\\garbud03.wav", nullptr }, -/*Gharbad4*/ { sfx_STREAM, "sfx\\monsters\\garbud04.wav", nullptr }, -/*Izual*/ { sfx_STREAM, "sfx\\monsters\\izual01.wav", nullptr }, -/*Lachdanan1*/ { sfx_STREAM, "sfx\\monsters\\lach01.wav", nullptr }, -/*Lachdanan2*/ { sfx_STREAM, "sfx\\monsters\\lach02.wav", nullptr }, -/*Lachdanan3*/ { sfx_STREAM, "sfx\\monsters\\lach03.wav", nullptr }, -/*LazarusGreeting*/ { sfx_STREAM, "sfx\\monsters\\laz01.wav", nullptr }, -/*LazarusGreetingShort*/ { sfx_STREAM, "sfx\\monsters\\laz02.wav", nullptr }, -/*LeoricGreeting*/ { sfx_STREAM, "sfx\\monsters\\sking01.wav", nullptr }, -/*Snotspill1*/ { sfx_STREAM, "sfx\\monsters\\snot01.wav", nullptr }, -/*Snotspill2*/ { sfx_STREAM, "sfx\\monsters\\snot02.wav", nullptr }, -/*Snotspill3*/ { sfx_STREAM, "sfx\\monsters\\snot03.wav", nullptr }, -/*Warlord*/ { sfx_STREAM, "sfx\\monsters\\warlrd01.wav", nullptr }, -/*Warlock*/ { sfx_STREAM, "sfx\\monsters\\wlock01.wav", nullptr }, -/*Zhar1*/ { sfx_STREAM, "sfx\\monsters\\zhar01.wav", nullptr }, -/*Zhar2*/ { sfx_STREAM, "sfx\\monsters\\zhar02.wav", nullptr }, -/*DiabloDeath*/ { sfx_STREAM, "sfx\\monsters\\diablod.wav", nullptr }, -/*Farmer1*/ { sfx_STREAM, "sfx\\hellfire\\farmer1.wav", nullptr }, -/*Farmer2*/ { sfx_STREAM, "sfx\\hellfire\\farmer2.wav", nullptr }, -/*Farmer2a*/ { sfx_STREAM, "sfx\\hellfire\\Farmer2a.wav", nullptr }, -/*Farmer3*/ { sfx_STREAM, "sfx\\hellfire\\farmer3.wav", nullptr }, -/*Farmer4*/ { sfx_STREAM, "sfx\\hellfire\\farmer4.wav", nullptr }, -/*Farmer5*/ { sfx_STREAM, "sfx\\hellfire\\farmer5.wav", nullptr }, -/*Farmer6*/ { sfx_STREAM, "sfx\\hellfire\\farmer6.wav", nullptr }, -/*Farmer7*/ { sfx_STREAM, "sfx\\hellfire\\farmer7.wav", nullptr }, -/*Farmer8*/ { sfx_STREAM, "sfx\\hellfire\\farmer8.wav", nullptr }, -/*Farmer9*/ { sfx_STREAM, "sfx\\hellfire\\farmer9.wav", nullptr }, -/*Celia1*/ { sfx_STREAM, "sfx\\hellfire\\teddybr1.wav", nullptr }, -/*Celia2*/ { sfx_STREAM, "sfx\\hellfire\\teddybr2.wav", nullptr }, -/*Celia3*/ { sfx_STREAM, "sfx\\hellfire\\teddybr3.wav", nullptr }, -/*Celia4*/ { sfx_STREAM, "sfx\\hellfire\\teddybr4.wav", nullptr }, -/*Defiler1*/ { sfx_STREAM, "sfx\\hellfire\\defiler1.wav", nullptr }, -/*Defiler2*/ { sfx_STREAM, "sfx\\hellfire\\defiler2.wav", nullptr }, -/*Defiler3*/ { sfx_STREAM, "sfx\\hellfire\\defiler3.wav", nullptr }, -/*Defiler4*/ { sfx_STREAM, "sfx\\hellfire\\defiler4.wav", nullptr }, -/*Defiler8*/ { sfx_STREAM, "sfx\\hellfire\\defiler8.wav", nullptr }, -/*Defiler6*/ { sfx_STREAM, "sfx\\hellfire\\defiler6.wav", nullptr }, -/*Defiler7*/ { sfx_STREAM, "sfx\\hellfire\\defiler7.wav", nullptr }, -/*NaKrul1*/ { sfx_STREAM, "sfx\\hellfire\\nakrul1.wav", nullptr }, -/*NaKrul2*/ { sfx_STREAM, "sfx\\hellfire\\nakrul2.wav", nullptr }, -/*NaKrul3*/ { sfx_STREAM, "sfx\\hellfire\\nakrul3.wav", nullptr }, -/*NaKrul4*/ { sfx_STREAM, "sfx\\hellfire\\nakrul4.wav", nullptr }, -/*NaKrul5*/ { sfx_STREAM, "sfx\\hellfire\\nakrul5.wav", nullptr }, -/*NaKrul6*/ { sfx_STREAM, "sfx\\hellfire\\nakrul6.wav", nullptr }, -/*NarratorHF3*/ { sfx_STREAM, "sfx\\hellfire\\naratr3.wav", nullptr }, -/*CompleteNut1*/ { sfx_STREAM, "sfx\\hellfire\\cowsut1.wav", nullptr }, -/*CompleteNut2*/ { sfx_STREAM, "sfx\\hellfire\\cowsut2.wav", nullptr }, -/*CompleteNut3*/ { sfx_STREAM, "sfx\\hellfire\\cowsut3.wav", nullptr }, -/*CompleteNut4*/ { sfx_STREAM, "sfx\\hellfire\\cowsut4.wav", nullptr }, -/*CompleteNut4a*/ { sfx_STREAM, "sfx\\hellfire\\cowsut4a.wav", nullptr }, -/*CompleteNut5*/ { sfx_STREAM, "sfx\\hellfire\\cowsut5.wav", nullptr }, -/*CompleteNut6*/ { sfx_STREAM, "sfx\\hellfire\\cowsut6.wav", nullptr }, -/*CompleteNut7*/ { sfx_STREAM, "sfx\\hellfire\\cowsut7.wav", nullptr }, -/*CompleteNut8*/ { sfx_STREAM, "sfx\\hellfire\\cowsut8.wav", nullptr }, -/*CompleteNut9*/ { sfx_STREAM, "sfx\\hellfire\\cowsut9.wav", nullptr }, -/*CompleteNut10*/ { sfx_STREAM, "sfx\\hellfire\\cowsut10.wav", nullptr }, -/*CompleteNut11*/ { sfx_STREAM, "sfx\\hellfire\\cowsut11.wav", nullptr }, -/*CompleteNut12*/ { sfx_STREAM, "sfx\\hellfire\\cowsut12.wav", nullptr }, -/*NarratorHF6*/ { sfx_STREAM, "sfx\\hellfire\\naratr6.wav", nullptr }, -/*NarratorHF7*/ { sfx_STREAM, "sfx\\hellfire\\naratr7.wav", nullptr }, -/*NarratorHF8*/ { sfx_STREAM, "sfx\\hellfire\\naratr8.wav", nullptr }, -/*NarratorHF5*/ { sfx_STREAM, "sfx\\hellfire\\naratr5.wav", nullptr }, -/*NarratorHF9*/ { sfx_STREAM, "sfx\\hellfire\\naratr9.wav", nullptr }, -/*NarratorHF4*/ { sfx_STREAM, "sfx\\hellfire\\naratr4.wav", nullptr }, -/*CryptDoorOpen*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\cropen.wav", nullptr }, -/*CryptDoorClose*/ { sfx_MISC | sfx_HELLFIRE, "sfx\\items\\crclos.wav", nullptr }, - // clang-format on -}; +std::vector sgSFX; void StreamPlay(TSFX *pSFX, int lVolume, int lPan) { @@ -973,7 +49,7 @@ void StreamPlay(TSFX *pSFX, int lVolume, int lPan) if (lVolume > VOLUME_MAX) lVolume = VOLUME_MAX; if (pSFX->pSnd == nullptr) - pSFX->pSnd = sound_file_load(pSFX->pszName, AllowStreaming); + pSFX->pSnd = sound_file_load(pSFX->pszName.c_str(), AllowStreaming); if (pSFX->pSnd->DSB.IsLoaded()) pSFX->pSnd->DSB.PlayWithVolumeAndPan(lVolume, sound_get_or_set_sound_volume(1), lPan); sgpStreamSFX = pSFX; @@ -1012,7 +88,7 @@ void PlaySfxPriv(TSFX *pSFX, bool loc, Point position) } if (pSFX->pSnd == nullptr) - pSFX->pSnd = sound_file_load(pSFX->pszName); + pSFX->pSnd = sound_file_load(pSFX->pszName.c_str()); if (pSFX->pSnd != nullptr && pSFX->pSnd->DSB.IsLoaded()) snd_play_snd(pSFX->pSnd.get(), lVolume, lPan); @@ -1042,12 +118,53 @@ SfxID RndSFX(SfxID psfx) } } +tl::expected ParseSfxFlag(std::string_view value) +{ + if (value == "Stream") return sfx_STREAM; + if (value == "Misc") return sfx_MISC; + if (value == "Ui") return sfx_UI; + if (value == "Monk") return sfx_MONK; + if (value == "Rogue") return sfx_ROGUE; + if (value == "Warrior") return sfx_WARRIOR; + if (value == "Sorcerer") return sfx_SORCERER; + if (value == "Hellfire") return sfx_HELLFIRE; + return tl::make_unexpected("Unknown enum value"); +} + +void LoadEffectsData() +{ + const std::string_view filename = "txtdata\\sound\\effects.tsv"; + tl::expected dataFileResult = DataFile::load(filename); + if (!dataFileResult.has_value()) { + DataFile::reportFatalError(dataFileResult.error(), filename); + } + + DataFile &dataFile = dataFileResult.value(); + if (tl::expected result = dataFile.skipHeader(); + !result.has_value()) { + DataFile::reportFatalError(result.error(), filename); + } + + sgSFX.clear(); + sgSFX.reserve(dataFile.numRecords()); + for (DataFileRecord record : dataFile) { + RecordReader reader { record, filename }; + TSFX &item = sgSFX.emplace_back(); + reader.advance(); // Skip the first column (effect ID). + reader.readEnumList("flags", item.bFlags, ParseSfxFlag); + reader.readString("path", item.pszName); + } + sgSFX.shrink_to_fit(); +} + void PrivSoundInit(uint8_t bLoadMask) { if (!gbSndInited) { return; } + if (sgSFX.empty()) LoadEffectsData(); + for (auto &sfx : sgSFX) { if (sfx.bFlags == 0 || sfx.pSnd != nullptr) { continue; @@ -1065,7 +182,7 @@ void PrivSoundInit(uint8_t bLoadMask) continue; } - sfx.pSnd = sound_file_load(sfx.pszName); + sfx.pSnd = sound_file_load(sfx.pszName.c_str()); } } @@ -1104,6 +221,8 @@ void PlaySfxLoc(SfxID psfx, Point position, bool randomizeByCategory) psfx = RndSFX(psfx); } + if (!gbSndInited) return; + if (IsAnyOf(psfx, SfxID::Walk, SfxID::ShootBow, SfxID::CastSpell, SfxID::Swing)) { TSnd *pSnd = sgSFX[static_cast(psfx)].pSnd.get(); if (pSnd != nullptr) @@ -1196,7 +315,7 @@ int GetSFXLength(SfxID nSFX) { TSFX &sfx = sgSFX[static_cast(nSFX)]; if (sfx.pSnd == nullptr) - sfx.pSnd = sound_file_load(sfx.pszName, + sfx.pSnd = sound_file_load(sfx.pszName.c_str(), /*stream=*/AllowStreaming && (sfx.bFlags & sfx_STREAM) != 0); return sfx.pSnd->DSB.GetLength(); } diff --git a/Source/effects.h b/Source/effects.h index 3cc309f47..0addb5b4a 100644 --- a/Source/effects.h +++ b/Source/effects.h @@ -7,8 +7,8 @@ #include #include +#include -#include "engine.h" #include "engine/sound.h" namespace devilution { @@ -1065,7 +1065,7 @@ enum sfx_flag : uint8_t { struct TSFX { uint8_t bFlags; - const char *pszName; + std::string pszName; std::unique_ptr pSnd; }; diff --git a/Source/effects_stubs.cpp b/Source/effects_stubs.cpp index 63883ba86..29fd40110 100644 --- a/Source/effects_stubs.cpp +++ b/Source/effects_stubs.cpp @@ -7,29 +7,26 @@ namespace devilution { int sfxdelay; SfxID sfxdnum; -// Disable clang-format here because our config says: -// AllowShortFunctionsOnASingleLine: None -// clang-format off bool effect_is_playing(SfxID nSFX) { return false; } void stream_stop() { } void PlaySFX(SfxID psfx) { switch (psfx) { - case PS_WARR69: - case PS_MAGE69: - case PS_ROGUE69: - case PS_MONK69: - case PS_SWING: - case LS_ACID: - case IS_MAGIC: - case IS_BHIT: - case PS_WARR14: - case PS_WARR15: - case PS_WARR16: - case PS_WARR2: - case PS_ROGUE14: - case PS_MAGE14: - case PS_MONK14: + case SfxID::Warrior69: + case SfxID::Sorceror69: + case SfxID::Rogue69: + case SfxID::Monk69: + case SfxID::Swing: + case SfxID::SpellAcid: + case SfxID::OperateShrine: + case SfxID::BrutalHit: + case SfxID::Warrior14: + case SfxID::Warrior15: + case SfxID::Warrior16: + case SfxID::Warrior2: + case SfxID::Rogue14: + case SfxID::Sorceror14: + case SfxID::Monk14: AdvanceRndSeed(); break; default: @@ -50,6 +47,5 @@ void sound_init() { } void ui_sound_init() { } void effects_play_sound(SfxID id) { } int GetSFXLength(SfxID nSFX) { return 0; } -// clang-format off } // namespace devilution diff --git a/Source/engine/sound_stubs.cpp b/Source/engine/sound_stubs.cpp index c4fa7302d..f766e9376 100644 --- a/Source/engine/sound_stubs.cpp +++ b/Source/engine/sound_stubs.cpp @@ -8,15 +8,10 @@ bool gbMusicOn; bool gbSoundOn; _music_id sgnMusicTrack = NUM_MUSIC; -// Disable clang-format here because our config says: -// AllowShortFunctionsOnASingleLine: None -// clang-format off void ClearDuplicateSounds() { } void snd_play_snd(TSnd *pSnd, int lVolume, int lPan) { } std::unique_ptr sound_file_load(const char *path, bool stream) { return nullptr; } -TSnd::~TSnd() -{ -} +TSnd::~TSnd() { } void snd_init() { } void snd_deinit() { } void music_stop() { } @@ -27,6 +22,5 @@ int sound_get_or_set_sound_volume(int volume) { return 0; } void music_mute() { } void music_unmute() { } _music_id GetLevelMusic(dungeon_type dungeonType) { return TMUSIC_TOWN; } -// clang-format on } // namespace devilution diff --git a/Source/monstdat.h b/Source/monstdat.h index 69fc29cb5..f137f6d9b 100644 --- a/Source/monstdat.h +++ b/Source/monstdat.h @@ -6,6 +6,7 @@ #pragma once #include +#include #include "textdat.h"