فهرست منبع

Sound patch from Ubuntux #2
(vcmi_sounds.diff)

Michał W. Urbańczyk 16 سال پیش
والد
کامیت
ade4b46edd

+ 3 - 1
AI/EmptyAI/CEmptyAI.h

@@ -1,5 +1,7 @@
 #include "../../AI_Base.h"
 #include "../../AI_Base.h"
 #include "../../CCallback.h"
 #include "../../CCallback.h"
+#include "../../hch/CSoundBase.h"
+
 class CEmptyAI : public CGlobalAI
 class CEmptyAI : public CGlobalAI
 {
 {
 	ICallback * cb;
 	ICallback * cb;
@@ -13,7 +15,7 @@ public:
 	void showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID){};
 	void showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID){};
 	void tileRevealed(int3 pos){};
 	void tileRevealed(int3 pos){};
 	void tileHidden(int3 pos){};
 	void tileHidden(int3 pos){};
-	void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel){};
+	void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, soundBase::soundNames soundID, bool selection, bool cancel){};
 	void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd){};
 	void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd){};
 	void heroGotLevel(const CGHeroInstance *hero, int pskill, std::vector<ui16> &skills, boost::function<void(ui32)> &callback);
 	void heroGotLevel(const CGHeroInstance *hero, int pskill, std::vector<ui16> &skills, boost::function<void(ui32)> &callback);
 };
 };

+ 1 - 1
AI/GeniusAI/CGeniusAI.cpp

@@ -69,7 +69,7 @@ void GeniusAI::CGeniusAI::showGarrisonDialog( const CArmedInstance *up, const CG
 	onEnd();
 	onEnd();
 }
 }
 
 
-void CGeniusAI::showBlockingDialog( const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel )
+void CGeniusAI::showBlockingDialog( const std::string &text, const std::vector<Component> &components, ui32 askID, soundBase::soundNames soundID, bool selection, bool cancel )
 {
 {
 	m_cb->selectionMade(cancel ? 0 : 1, askID);
 	m_cb->selectionMade(cancel ? 0 : 1, askID);
 }
 }

+ 1 - 1
AI/GeniusAI/CGeniusAI.h

@@ -190,7 +190,7 @@ public:
 	virtual void heroMoved(const HeroMoveDetails &);
 	virtual void heroMoved(const HeroMoveDetails &);
 	virtual void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, int val) {};
 	virtual void heroPrimarySkillChanged(const CGHeroInstance * hero, int which, int val) {};
 	virtual void showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID){};
 	virtual void showSelDialog(std::string text, std::vector<CSelectableComponent*> & components, int askID){};
-	virtual void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel); 
+	virtual void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, soundBase::soundNames soundID, bool selection, bool cancel);
 	virtual void tileRevealed(int3 pos){};
 	virtual void tileRevealed(int3 pos){};
 	virtual void tileHidden(int3 pos){};
 	virtual void tileHidden(int3 pos){};
 	virtual void heroGotLevel(const CGHeroInstance *hero, int pskill, std::vector<ui16> &skills, boost::function<void(ui32)> &callback);
 	virtual void heroGotLevel(const CGHeroInstance *hero, int pskill, std::vector<ui16> &skills, boost::function<void(ui32)> &callback);

+ 6 - 6
CCastleInterface.cpp

@@ -271,12 +271,12 @@ void CHeroGSlot::clickLeft(boost::logic::tribool down)
 				{
 				{
 					std::string tmp = CGI->generaltexth->allTexts[18]; //You already have %d adventuring heroes under your command.
 					std::string tmp = CGI->generaltexth->allTexts[18]; //You already have %d adventuring heroes under your command.
 					boost::algorithm::replace_first(tmp,"%d",boost::lexical_cast<std::string>(LOCPLINT->cb->howManyHeroes(false)));
 					boost::algorithm::replace_first(tmp,"%d",boost::lexical_cast<std::string>(LOCPLINT->cb->howManyHeroes(false)));
-					LOCPLINT->showInfoDialog(tmp,std::vector<SComponent*>());
+					LOCPLINT->showInfoDialog(tmp,std::vector<SComponent*>(), soundBase::sound_todo);
 					allow = false;
 					allow = false;
 				}
 				}
 				else if(!other->hero->army.slots.size()) //hero has no creatures - strange, but if we have appropriate error message...
 				else if(!other->hero->army.slots.size()) //hero has no creatures - strange, but if we have appropriate error message...
 				{
 				{
-					LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[19],std::vector<SComponent*>()); //This hero has no creatures.  A hero must have creatures before he can brave the dangers of the countryside.
+					LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[19],std::vector<SComponent*>(), soundBase::sound_todo); //This hero has no creatures.  A hero must have creatures before he can brave the dangers of the countryside.
 					allow = false;
 					allow = false;
 				}
 				}
 			}
 			}
@@ -523,7 +523,7 @@ void CCastleInterface::buildingClicked(int building)
 				{
 				{
 					if(LOCPLINT->cb->getResourceAmount(6) < 500) //not enough gold to buy spellbook
 					if(LOCPLINT->cb->getResourceAmount(6) < 500) //not enough gold to buy spellbook
 					{
 					{
-						LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[213],std::vector<SComponent*>());
+						LOCPLINT->showInfoDialog(CGI->generaltexth->allTexts[213],std::vector<SComponent*>(), soundBase::sound_todo);
 					}
 					}
 					else
 					else
 					{
 					{
@@ -563,7 +563,7 @@ void CCastleInterface::buildingClicked(int building)
 			}
 			}
 		case 15: //resource silo
 		case 15: //resource silo
 			{
 			{
-				LOCPLINT->showInfoDialog(CGI->buildh->buildings[town->subID][15]->description,std::vector<SComponent*>());
+				LOCPLINT->showInfoDialog(CGI->buildh->buildings[town->subID][15]->description,std::vector<SComponent*>(), soundBase::sound_todo);
 				break;
 				break;
 			}
 			}
 		case 16: //blacksmith
 		case 16: //blacksmith
@@ -573,7 +573,7 @@ void CCastleInterface::buildingClicked(int building)
 				{
 				{
 					std::string pom = CGI->generaltexth->allTexts[273];
 					std::string pom = CGI->generaltexth->allTexts[273];
 					boost::algorithm::replace_first(pom,"%s",CGI->buildh->buildings[town->subID][16]->Name());
 					boost::algorithm::replace_first(pom,"%s",CGI->buildh->buildings[town->subID][16]->Name());
-					LOCPLINT->showInfoDialog(pom,std::vector<SComponent*>());
+					LOCPLINT->showInfoDialog(pom,std::vector<SComponent*>(), soundBase::sound_todo);
 					return;
 					return;
 				}
 				}
 				int aid = town->town->warMachine;
 				int aid = town->town->warMachine;
@@ -1535,7 +1535,7 @@ void CMageGuildScreen::Scroll::clickLeft (tribool down)
 		std::vector<SComponent*> comps(1,
 		std::vector<SComponent*> comps(1,
 			new CCustomImgComponent(SComponent::spell,spell->id,0,graphics->spellscr->ourImages[spell->id].bitmap,false)
 			new CCustomImgComponent(SComponent::spell,spell->id,0,graphics->spellscr->ourImages[spell->id].bitmap,false)
 		);
 		);
-		LOCPLINT->showInfoDialog(spell->descriptions[0],comps);
+		LOCPLINT->showInfoDialog(spell->descriptions[0],comps, soundBase::sound_todo);
 	}
 	}
 }
 }
 
 

+ 3 - 2
CGameInterface.h

@@ -5,6 +5,7 @@
 #include <vector>
 #include <vector>
 #include "lib/BattleAction.h"
 #include "lib/BattleAction.h"
 #include "client/FunctionList.h"
 #include "client/FunctionList.h"
+#include "hch/CMusicHandler.h"
 
 
 /*
 /*
  * CGameInterface.h, part of VCMI engine
  * CGameInterface.h, part of VCMI engine
@@ -79,10 +80,10 @@ public:
 	virtual void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town){};
 	virtual void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town){};
 	virtual void init(ICallback * CB){};
 	virtual void init(ICallback * CB){};
 	virtual void receivedResource(int type, int val){};
 	virtual void receivedResource(int type, int val){};
-	virtual void showInfoDialog(const std::string &text, const std::vector<Component*> &components){};
+	virtual void showInfoDialog(const std::string &text, const std::vector<Component*> &components, soundBase::soundNames soundID){};
 	//virtual void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
 	//virtual void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
 	//virtual void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
 	//virtual void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID){};
-	virtual void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel) = 0; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID.
+	virtual void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, const soundBase::soundNames soundID, bool selection, bool cancel) = 0; //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID.
 	virtual void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd) = 0; //all stacks operations between these objects become allowed, interface has to call onEnd when done
 	virtual void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd) = 0; //all stacks operations between these objects become allowed, interface has to call onEnd when done
 	virtual void tileHidden(const std::set<int3> &pos){};
 	virtual void tileHidden(const std::set<int3> &pos){};
 	virtual void tileRevealed(const std::set<int3> &pos){};
 	virtual void tileRevealed(const std::set<int3> &pos){};

+ 2 - 2
CHeroWindow.cpp

@@ -855,7 +855,7 @@ void LRClickableAreaWText::clickLeft(boost::logic::tribool down)
 {
 {
 	if(!down && pressedL)
 	if(!down && pressedL)
 	{
 	{
-		LOCPLINT->showInfoDialog(text, std::vector<SComponent*>());
+		LOCPLINT->showInfoDialog(text, std::vector<SComponent*>(), soundBase::sound_todo);
 	}
 	}
 	ClickableL::clickLeft(down);
 	ClickableL::clickLeft(down);
 }
 }
@@ -901,7 +901,7 @@ void LRClickableAreaWTextComp::clickLeft(boost::logic::tribool down)
 	if((!down) && pressedL)
 	if((!down) && pressedL)
 	{
 	{
 		std::vector<SComponent*> comp(1, new SComponent(SComponent::Etype(baseType), type, bonus));
 		std::vector<SComponent*> comp(1, new SComponent(SComponent::Etype(baseType), type, bonus));
-		LOCPLINT->showInfoDialog(text, comp);
+		LOCPLINT->showInfoDialog(text, comp, soundBase::sound_todo);
 	}
 	}
 	ClickableL::clickLeft(down);
 	ClickableL::clickLeft(down);
 }
 }

+ 19 - 5
CPlayerInterface.cpp

@@ -1173,7 +1173,15 @@ void CPlayerInterface::yourTurn()
 			graphics->heroWins.insert(std::pair<int,SDL_Surface*>(hh[i]->subID,pom));
 			graphics->heroWins.insert(std::pair<int,SDL_Surface*>(hh[i]->subID,pom));
 		}
 		}
 
 
-		adventureInt->infoBar.newDay(cb->getDate(1));
+		/* TODO: This isn't quite right. First day in game should play
+		 * NEWDAY. And we don't play NEWMONTH. */
+		int day = cb->getDate(1);
+		if (day != 1)
+			CGI->mush->playSound(soundBase::newDay);
+		else
+			CGI->mush->playSound(soundBase::newWeek);
+
+		adventureInt->infoBar.newDay(day);
 
 
 		//select first hero if available.
 		//select first hero if available.
 		//TODO: check if hero is slept
 		//TODO: check if hero is slept
@@ -2071,6 +2079,9 @@ void CPlayerInterface::heroGotLevel(const CGHeroInstance *hero, int pskill, std:
 		while(showingDialog->data)
 		while(showingDialog->data)
 			showingDialog->cond.wait(un);
 			showingDialog->cond.wait(un);
 	}
 	}
+
+	CGI->mush->playSound(soundBase::heroNewLevel);
+
 	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	CLevelWindow *lw = new CLevelWindow(hero,pskill,skills,callback);
 	CLevelWindow *lw = new CLevelWindow(hero,pskill,skills,callback);
 	LOCPLINT->pushInt(lw);
 	LOCPLINT->pushInt(lw);
@@ -2170,6 +2181,7 @@ void CPlayerInterface::buildChanged(const CGTownInstance *town, int buildingID,
 	switch(what)
 	switch(what)
 	{
 	{
 	case 1:
 	case 1:
+		CGI->mush->playSound(soundBase::newBuilding);
 		castleInt->addBuilding(buildingID);
 		castleInt->addBuilding(buildingID);
 		break;
 		break;
 	case 2:
 	case 2:
@@ -2394,15 +2406,15 @@ void CPlayerInterface::showComp(SComponent comp)
 	adventureInt->infoBar.showComp(&comp,4000);
 	adventureInt->infoBar.showComp(&comp,4000);
 }
 }
 
 
-void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector<Component*> &components)
+void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector<Component*> &components, soundBase::soundNames soundID)
 {
 {
 	std::vector<SComponent*> intComps;
 	std::vector<SComponent*> intComps;
 	for(int i=0;i<components.size();i++)
 	for(int i=0;i<components.size();i++)
 		intComps.push_back(new SComponent(*components[i]));
 		intComps.push_back(new SComponent(*components[i]));
-	showInfoDialog(text,intComps);
+	showInfoDialog(text,intComps,soundID);
 }
 }
 
 
-void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector<SComponent*> & components)
+void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector<SComponent*> & components, soundBase::soundNames soundID)
 {
 {
 	{
 	{
 		boost::unique_lock<boost::mutex> un(showingDialog->mx);
 		boost::unique_lock<boost::mutex> un(showingDialog->mx);
@@ -2421,6 +2433,7 @@ void CPlayerInterface::showInfoDialog(const std::string &text, const std::vector
 
 
 	if(makingTurn && listInt.size())
 	if(makingTurn && listInt.size())
 	{
 	{
+		CGI->mush->playSound(soundID);
 		showingDialog->set(true);
 		showingDialog->set(true);
 		pushInt(temp);
 		pushInt(temp);
 	}
 	}
@@ -2447,10 +2460,11 @@ void CPlayerInterface::showYesNoDialog(const std::string &text, const std::vecto
 	LOCPLINT->pushInt(temp);
 	LOCPLINT->pushInt(temp);
 }
 }
 
 
-void CPlayerInterface::showBlockingDialog( const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel )
+void CPlayerInterface::showBlockingDialog( const std::string &text, const std::vector<Component> &components, ui32 askID, soundBase::soundNames soundID, bool selection, bool cancel )
 {
 {
 	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	boost::unique_lock<boost::recursive_mutex> un(*pim);
 
 
+	CGI->mush->playSound(soundID);
 
 
 	if(!selection && cancel) //simple yes/no dialog
 	if(!selection && cancel) //simple yes/no dialog
 	{
 	{

+ 3 - 3
CPlayerInterface.h

@@ -592,10 +592,10 @@ public:
 	void heroMovePointsChanged(const CGHeroInstance * hero);
 	void heroMovePointsChanged(const CGHeroInstance * hero);
 	void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town);
 	void heroVisitsTown(const CGHeroInstance* hero, const CGTownInstance * town);
 	void receivedResource(int type, int val);
 	void receivedResource(int type, int val);
-	void showInfoDialog(const std::string &text, const std::vector<Component*> &components);
+	void showInfoDialog(const std::string &text, const std::vector<Component*> &components, soundBase::soundNames soundID);
 	//void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
 	//void showSelDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
 	//void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
 	//void showYesNoDialog(const std::string &text, const std::vector<Component*> &components, ui32 askID);
-	void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, bool selection, bool cancel); //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID.
+	void showBlockingDialog(const std::string &text, const std::vector<Component> &components, ui32 askID, soundBase::soundNames soundID, bool selection, bool cancel); //Show a dialog, player must take decision. If selection then he has to choose between one of given components, if cancel he is allowed to not choose. After making choice, CCallback::selectionMade should be called with number of selected component (1 - n) or 0 for cancel (if allowed) and askID.
 	void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd);
 	void showGarrisonDialog(const CArmedInstance *up, const CGHeroInstance *down, boost::function<void()> &onEnd);
 	void tileHidden(const std::set<int3> &pos);
 	void tileHidden(const std::set<int3> &pos);
 	void tileRevealed(const std::set<int3> &pos);
 	void tileRevealed(const std::set<int3> &pos);
@@ -636,7 +636,7 @@ public:
 	void handleMouseMotion(SDL_Event *sEvent);
 	void handleMouseMotion(SDL_Event *sEvent);
 	void init(ICallback * CB);
 	void init(ICallback * CB);
 	int3 repairScreenPos(int3 pos); //returns position closest to pos we can center screen on
 	int3 repairScreenPos(int3 pos); //returns position closest to pos we can center screen on
-	void showInfoDialog(const std::string &text, const std::vector<SComponent*> & components);
+	void showInfoDialog(const std::string &text, const std::vector<SComponent*> & components, soundBase::soundNames soundID);
 	void showYesNoDialog(const std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool DelComps); //deactivateCur - whether current main interface should be deactivated; delComps - if components will be deleted on window close
 	void showYesNoDialog(const std::string &text, const std::vector<SComponent*> & components, CFunctionList<void()> onYes, CFunctionList<void()> onNo, bool DelComps); //deactivateCur - whether current main interface should be deactivated; delComps - if components will be deleted on window close
 	bool moveHero(const CGHeroInstance *h, CPath path);
 	bool moveHero(const CGHeroInstance *h, CPath path);
 
 

+ 4 - 1
CPreGame.cpp

@@ -1973,6 +1973,7 @@ void CPreGame::scenHandleEv(SDL_Event& sEvent)
 		{
 		{
 			if (isItIn(&btns[i]->pos,sEvent.motion.x,sEvent.motion.y))
 			if (isItIn(&btns[i]->pos,sEvent.motion.x,sEvent.motion.y))
 			{
 			{
+				mush->playSound(soundBase::button);
 				btns[i]->press(true);
 				btns[i]->press(true);
 				ourScenSel->pressed=(Button*)btns[i];
 				ourScenSel->pressed=(Button*)btns[i];
 			}
 			}
@@ -1981,6 +1982,7 @@ void CPreGame::scenHandleEv(SDL_Event& sEvent)
 									&& (sEvent.button.x>55) && (sEvent.button.x<372))
 									&& (sEvent.button.x>55) && (sEvent.button.x<372))
 		{
 		{
 			int py = ((sEvent.button.y-121)/25)+ourScenSel->mapsel.slid->whereAreWe;
 			int py = ((sEvent.button.y-121)/25)+ourScenSel->mapsel.slid->whereAreWe;
+			mush->playSound(soundBase::button);
 			ourScenSel->mapsel.select(ourScenSel->mapsel.whichWL(py));
 			ourScenSel->mapsel.select(ourScenSel->mapsel.whichWL(py));
 		}
 		}
 
 
@@ -2199,7 +2201,6 @@ StartInfo CPreGame::runLoop()
 				}
 				}
 				else if ((sEvent.type==SDL_MOUSEBUTTONDOWN) && (sEvent.button.button == SDL_BUTTON_LEFT))
 				else if ((sEvent.type==SDL_MOUSEBUTTONDOWN) && (sEvent.button.button == SDL_BUTTON_LEFT))
 				{
 				{
-					mush->playClick();
 					for (size_t i=0; i < btns.size(); ++i)
 					for (size_t i=0; i < btns.size(); ++i)
 					{
 					{
 						if (isItIn(&btns[i]->pos,sEvent.motion.x,sEvent.motion.y))
 						if (isItIn(&btns[i]->pos,sEvent.motion.x,sEvent.motion.y))
@@ -2235,6 +2236,8 @@ StartInfo CPreGame::runLoop()
 						highlightButton(5,1);
 						highlightButton(5,1);
 						current->highlighted=5;
 						current->highlighted=5;
 					}
 					}
+					if (current->highlighted)
+						mush->playSound(soundBase::button);
 				}
 				}
 				else if ((sEvent.type==SDL_MOUSEBUTTONUP) && (sEvent.button.button == SDL_BUTTON_LEFT))
 				else if ((sEvent.type==SDL_MOUSEBUTTONUP) && (sEvent.button.button == SDL_BUTTON_LEFT))
 				{
 				{

+ 3 - 2
client/NetPacksClient.cpp

@@ -11,6 +11,7 @@
 #include "../lib/VCMI_Lib.h"
 #include "../lib/VCMI_Lib.h"
 #include "../map.h"
 #include "../map.h"
 #include "../hch/CSpellHandler.h"
 #include "../hch/CSpellHandler.h"
+#include "../hch/CSoundBase.h"
 #include "../mapHandler.h"
 #include "../mapHandler.h"
 #include <boost/bind.hpp>
 #include <boost/bind.hpp>
 #include <boost/foreach.hpp>
 #include <boost/foreach.hpp>
@@ -265,7 +266,7 @@ void InfoWindow::applyCl( CClient *cl )
 	std::string str = toString(text);
 	std::string str = toString(text);
 
 
 	if(vstd::contains(cl->playerint,player))
 	if(vstd::contains(cl->playerint,player))
-		cl->playerint[player]->showInfoDialog(str,comps);
+		cl->playerint[player]->showInfoDialog(str,comps,(soundBase::soundNames)soundID);
 	else
 	else
 		tlog2 << "We received InfoWindow for not our player...\n";
 		tlog2 << "We received InfoWindow for not our player...\n";
 }
 }
@@ -284,7 +285,7 @@ void BlockingDialog::applyCl( CClient *cl )
 {
 {
 	std::string str = toString(text);
 	std::string str = toString(text);
 	if(vstd::contains(cl->playerint,player))
 	if(vstd::contains(cl->playerint,player))
-		cl->playerint[player]->showBlockingDialog(str,components,id,selection(),cancel());
+		cl->playerint[player]->showBlockingDialog(str,components,id,(soundBase::soundNames)soundID,selection(),cancel());
 	else
 	else
 		tlog2 << "We received YesNoDialog for not our player...\n";
 		tlog2 << "We received YesNoDialog for not our player...\n";
 }
 }

+ 62 - 33
hch/CMusicHandler.cpp

@@ -1,4 +1,11 @@
 #include "../stdafx.h"
 #include "../stdafx.h"
+
+#include <boost/assign/std/vector.hpp> 
+#include <boost/assign/list_of.hpp>
+
+#include <SDL_mixer.h>
+
+#include "CSndHandler.h"
 #include "CMusicHandler.h"
 #include "CMusicHandler.h"
 
 
 /*
 /*
@@ -11,17 +18,25 @@
  *
  *
  */
  */
 
 
+using namespace boost::assign;
+
 void CMusicHandler::initMusics()
 void CMusicHandler::initMusics()
 {
 {
-	if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096)==-1)
+	if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1)
 	{
 	{
 		printf("Mix_OpenAudio error: %s!!!\n", Mix_GetError());
 		printf("Mix_OpenAudio error: %s!!!\n", Mix_GetError());
-		//exit(2);
-		sndh = NULL;
 		return;
 		return;
 	}
 	}
 	atexit(Mix_CloseAudio);
 	atexit(Mix_CloseAudio);
 
 
+	// Map sound names
+#define VCMI_SOUND_NAME(x) ( soundBase::x,
+#define VCMI_SOUND_FILE(y) cachedSounds(#y, 0) )
+	sounds = boost::assign::map_list_of
+		VCMI_SOUND_LIST;
+#undef VCMI_SOUND_NAME
+#undef VCMI_SOUND_FILE
+
 	//AITheme0 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITheme0.mp3");
 	//AITheme0 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITheme0.mp3");
 	//AITheme1 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITHEME1.mp3");
 	//AITheme1 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITHEME1.mp3");
 	//AITheme2 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITHEME2.mp3");
 	//AITheme2 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITHEME2.mp3");
@@ -65,46 +80,60 @@ void CMusicHandler::initMusics()
 	//winBattle = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "Win Battle.mp3");
 	//winBattle = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "Win Battle.mp3");
 	//winScenario = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "Win Scenario.mp3");
 	//winScenario = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "Win Scenario.mp3");
 
 
-	click = Mix_LoadWAV(DATA_DIR "MP3" PATHSEPARATOR "snd1.wav");
-	if(!click) 
-		tlog1 << "Cannot open " DATA_DIR "MP3" PATHSEPARATOR "snd1.wav\n";
-	else
-		click->volume = 30;
-
-	this->sndh = new CSndHandler(std::string(DATA_DIR "Data" PATHSEPARATOR "Heroes3.snd"));
+	// Map sounds
+	sndh = new CSndHandler(std::string(DATA_DIR "Data" PATHSEPARATOR "Heroes3.snd"));
 }
 }
 
 
-void CMusicHandler::playClick()
+// Return an SDL chunk. Allocate if it is not cached yet.
+Mix_Chunk *CMusicHandler::GetSoundChunk(std::string srcName)
 {
 {
-	if(!sndh) return;
-	int channel;
-	channel = Mix_PlayChannel(-1, click, 0);
-	if(channel == -1)
-	{
-		fprintf(stderr, "Unable to play WAV file: %s\n", Mix_GetError());
-	}
-}
-
-void CMusicHandler::playLodSnd(std::string sndname)
-{
-	if(!sndh) return;
 	int size;
 	int size;
-	const unsigned char *data;
+	const char *data = sndh->extract(srcName, size);
 	SDL_RWops *ops;
 	SDL_RWops *ops;
 	Mix_Chunk *chunk;
 	Mix_Chunk *chunk;
-	int channel;
 
 
-	if ((data = reinterpret_cast<const unsigned char*>(sndh->extract(sndname, size))) == NULL)
-		return;
+	if (!data)
+		return NULL;
 
 
 	ops = SDL_RWFromConstMem(data, size);
 	ops = SDL_RWFromConstMem(data, size);
-	chunk = Mix_LoadWAV_RW(ops, 1);
+	chunk = Mix_LoadWAV_RW(ops, 1);	// will free ops
+
+	if (!chunk)
+		fprintf(stderr, "Unable to mix: %s\n",
+				Mix_GetError());
+
+	return chunk;
+}
+  
+// Plays a sound, and return its channel so we can fade it out later
+int CMusicHandler::playSound(soundBase::soundNames soundID)
+{
+	int channel;
+
+	if (!sndh)
+		return -1;
 
 
-	channel = Mix_PlayChannel(-1, chunk, 0);
-	if(channel == -1)
+	std::map<soundBase::soundNames, cachedSounds>::iterator it;
+
+	it = sounds.find(soundID);
+	if (it == sounds.end())
+		return -1;
+
+	class cachedSounds sound = it->second;
+
+	if (!sound.chunk) {
+		sound.chunk = GetSoundChunk(sound.filename);
+	}
+
+	if (sound.chunk)
 	{
 	{
-		fprintf(stderr, "Unable to play WAV file("DATA_DIR "Data" PATHSEPARATOR "Heroes3.wav::%s): %s\n",
-			sndname.c_str(),Mix_GetError());
+		channel = Mix_PlayChannel(-1, sound.chunk, 0);
+		if(channel == -1)
+		{
+			fprintf(stderr, "Unable to play WAV file("DATA_DIR "Data" PATHSEPARATOR "Heroes3.wav::%s): %s\n",
+					sound.filename.c_str(),Mix_GetError());
+		}
 	}
 	}
-	ops->close(ops);
+
+	return channel;
 }
 }

+ 25 - 9
hch/CMusicHandler.h

@@ -1,8 +1,7 @@
 #ifndef __CMUSICHANDLER_H__
 #ifndef __CMUSICHANDLER_H__
 #define __CMUSICHANDLER_H__
 #define __CMUSICHANDLER_H__
 
 
-#include <SDL_mixer.h>
-#include "CSndHandler.h"
+#include "CSoundBase.h"
 
 
 /*
 /*
  * CMusicHandler.h, part of VCMI engine
  * CMusicHandler.h, part of VCMI engine
@@ -14,18 +13,35 @@
  *
  *
  */
  */
 
 
+struct Mix_Chunk;
+class CSndHandler;
+
 class CMusicHandler
 class CMusicHandler
 {
 {
-protected:
+private:
 	CSndHandler *sndh;
 	CSndHandler *sndh;
+
+	class cachedSounds {
+	public:
+		std::string filename;
+		Mix_Chunk *chunk;
+
+		// This is some horrible C++ abuse. Isn't there any way to do
+		// something simplier to init sounds?
+		cachedSounds(std::string filename_in, Mix_Chunk *chunk_in):
+		filename(filename_in), chunk(chunk_in) {};
+	};
+
+	std::map<soundBase::soundNames, cachedSounds> sounds;
+
+	Mix_Chunk *GetSoundChunk(std::string srcName);
+
 public:
 public:
-	Mix_Music *AITheme0, *AITheme1, *AITheme2, *combat1, *combat2, *combat3, *combat4, *castleTown, *defendCastle, *dirt, *dungeon, *elemTown, *evilTheme, *fortressTown, *goodTheme, *grass, *infernoTown, *lava, *loopLepr, *loseCampain, *loseCastle, *loseCombat, *mainMenu, *mainMenuWoG, *necroTown, *neutralTheme, *rampart, *retreatBattle, *rough, *sand, *secretTheme, *snow, *stronghold, *surrenderBattle, *swamp, *towerTown, *ultimateLose, *underground, *water, *winScenario, *winBattle;
-	Mix_Chunk * buildTown, *click;
+	CMusicHandler(): sndh(NULL) {};
 	void initMusics();
 	void initMusics();
-	void playClick(); //plays click music ;]
-	void playLodSnd(std::string sndname);  // plays sound wavs from Heroes3.snd
-};
-
 
 
+	// Sounds
+	int playSound(soundBase::soundNames soundID); // plays sound wavs from Heroes3.snd
+};
 
 
 #endif // __CMUSICHANDLER_H__
 #endif // __CMUSICHANDLER_H__

+ 5 - 0
hch/CObjectHandler.cpp

@@ -13,6 +13,7 @@
 #include <boost/random/linear_congruential.hpp>
 #include <boost/random/linear_congruential.hpp>
 #include "CTownHandler.h"
 #include "CTownHandler.h"
 #include "CArtHandler.h"
 #include "CArtHandler.h"
+#include "CSoundBase.h"
 #include "../lib/VCMI_Lib.h"
 #include "../lib/VCMI_Lib.h"
 #include "../lib/IGameCallback.h"
 #include "../lib/IGameCallback.h"
 #include "../CGameState.h"
 #include "../CGameState.h"
@@ -1092,6 +1093,7 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const
 				iw.components.push_back(Component(id,subid,val,0));
 				iw.components.push_back(Component(id,subid,val,0));
 				iw.player = cb->getOwner(heroID);
 				iw.player = cb->getOwner(heroID);
 				iw.text << std::pair<ui8,ui32>(11,ot);
 				iw.text << std::pair<ui8,ui32>(11,ot);
+				iw.soundID = soundBase::gazebo;
 				cb->showInfoDialog(&iw);
 				cb->showInfoDialog(&iw);
 				cb->changePrimSkill(heroID,4,val);
 				cb->changePrimSkill(heroID,4,val);
 				break;
 				break;
@@ -1962,6 +1964,7 @@ void CGPickable::onHeroVisit( const CGHeroInstance * h ) const
 				sd.text << std::pair<ui8,ui32>(11,146);
 				sd.text << std::pair<ui8,ui32>(11,146);
 				sd.components.push_back(Component(2,6,val1,0));
 				sd.components.push_back(Component(2,6,val1,0));
 				sd.components.push_back(Component(5,0,val2,0));
 				sd.components.push_back(Component(5,0,val2,0));
+				sd.soundID = soundBase::chest;
 				boost::function<void(ui32)> fun = boost::bind(&CGPickable::chosen,this,_1,h->id);
 				boost::function<void(ui32)> fun = boost::bind(&CGPickable::chosen,this,_1,h->id);
 				cb->showBlockingDialog(&sd,fun);
 				cb->showBlockingDialog(&sd,fun);
 				return;
 				return;
@@ -2061,6 +2064,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const
 	{
 	{
 	case 14: //swan pond
 	case 14: //swan pond
 		messageID = 29;
 		messageID = 29;
+		iw.soundID = soundBase::faerie;
 		gbonus.bonus.type = HeroBonus::LUCK;
 		gbonus.bonus.type = HeroBonus::LUCK;
 		gbonus.bonus.val = 2;
 		gbonus.bonus.val = 2;
 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,67);
 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,67);
@@ -2104,6 +2108,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const
 		break;
 		break;
 	case 96: //temple
 	case 96: //temple
 		messageID = 140;
 		messageID = 140;
+		iw.soundID = soundBase::temple;
 		gbonus.bonus.type = HeroBonus::MORALE;
 		gbonus.bonus.type = HeroBonus::MORALE;
 		if(cb->getDate(1)==7) //sunday
 		if(cb->getDate(1)==7) //sunday
 		{
 		{

+ 2076 - 0
hch/CSoundBase.h

@@ -0,0 +1,2076 @@
+#ifndef __CSOUNDBASE_H__
+#define __CSOUNDBASE_H__
+
+// Use some magic to keep the list of files and their code name in sync.
+
+#define VCMI_SOUND_LIST \
+VCMI_SOUND_NAME(AAGLAttack) VCMI_SOUND_FILE(AAGLATTK.wav) \
+VCMI_SOUND_NAME(AAGLDefend) VCMI_SOUND_FILE(AAGLDFND.wav) \
+VCMI_SOUND_NAME(AAGLKill) VCMI_SOUND_FILE(AAGLKILL.wav) \
+VCMI_SOUND_NAME(AAGLMove) VCMI_SOUND_FILE(AAGLMOVE.wav) \
+VCMI_SOUND_NAME(AAGLWNCE) VCMI_SOUND_FILE(AAGLWNCE.wav) \
+VCMI_SOUND_NAME(acid) VCMI_SOUND_FILE(ACID.wav) \
+VCMI_SOUND_NAME(ADVLAttack) VCMI_SOUND_FILE(ADVLATTK.wav) \
+VCMI_SOUND_NAME(ADVLDefend) VCMI_SOUND_FILE(ADVLDFND.wav) \
+VCMI_SOUND_NAME(ADVLEXT1) VCMI_SOUND_FILE(ADVLEXT1.wav) \
+VCMI_SOUND_NAME(ADVLEXT2) VCMI_SOUND_FILE(ADVLEXT2.wav) \
+VCMI_SOUND_NAME(ADVLKill) VCMI_SOUND_FILE(ADVLKILL.wav) \
+VCMI_SOUND_NAME(ADVLMove) VCMI_SOUND_FILE(ADVLMOVE.wav) \
+VCMI_SOUND_NAME(ADVLWNCE) VCMI_SOUND_FILE(ADVLWNCE.wav) \
+VCMI_SOUND_NAME(AELMAttack) VCMI_SOUND_FILE(AELMATTK.wav) \
+VCMI_SOUND_NAME(AELMDefend) VCMI_SOUND_FILE(AELMDFND.wav) \
+VCMI_SOUND_NAME(AELMKill) VCMI_SOUND_FILE(AELMKILL.wav) \
+VCMI_SOUND_NAME(AELMMove) VCMI_SOUND_FILE(AELMMOVE.wav) \
+VCMI_SOUND_NAME(AELMWNCE) VCMI_SOUND_FILE(AELMWNCE.wav) \
+VCMI_SOUND_NAME(AGE) VCMI_SOUND_FILE(AGE.wav) \
+VCMI_SOUND_NAME(AGRMAttack) VCMI_SOUND_FILE(AGRMATTK.wav) \
+VCMI_SOUND_NAME(AGRMDefend) VCMI_SOUND_FILE(AGRMDFND.wav) \
+VCMI_SOUND_NAME(AGRMKill) VCMI_SOUND_FILE(AGRMKILL.wav) \
+VCMI_SOUND_NAME(AGRMMove) VCMI_SOUND_FILE(AGRMMOVE.wav) \
+VCMI_SOUND_NAME(AGRMShot) VCMI_SOUND_FILE(AGRMSHOT.wav) \
+VCMI_SOUND_NAME(AGRMWNCE) VCMI_SOUND_FILE(AGRMWNCE.wav) \
+VCMI_SOUND_NAME(AIRSHELD) VCMI_SOUND_FILE(AIRSHELD.wav) \
+VCMI_SOUND_NAME(ALIZAttack) VCMI_SOUND_FILE(ALIZATTK.wav) \
+VCMI_SOUND_NAME(ALIZDefend) VCMI_SOUND_FILE(ALIZDFND.wav) \
+VCMI_SOUND_NAME(ALIZKill) VCMI_SOUND_FILE(ALIZKILL.wav) \
+VCMI_SOUND_NAME(ALIZMove) VCMI_SOUND_FILE(ALIZMOVE.wav) \
+VCMI_SOUND_NAME(ALIZShot) VCMI_SOUND_FILE(ALIZSHOT.wav) \
+VCMI_SOUND_NAME(ALIZWNCE) VCMI_SOUND_FILE(ALIZWNCE.wav) \
+VCMI_SOUND_NAME(AMAGAttack) VCMI_SOUND_FILE(AMAGATTK.wav) \
+VCMI_SOUND_NAME(AMAGDefend) VCMI_SOUND_FILE(AMAGDFND.wav) \
+VCMI_SOUND_NAME(AMAGKill) VCMI_SOUND_FILE(AMAGKILL.wav) \
+VCMI_SOUND_NAME(AMAGMove) VCMI_SOUND_FILE(AMAGMOVE.wav) \
+VCMI_SOUND_NAME(AMAGShot) VCMI_SOUND_FILE(AMAGSHOT.wav) \
+VCMI_SOUND_NAME(AMAGWNCE) VCMI_SOUND_FILE(AMAGWNCE.wav) \
+VCMI_SOUND_NAME(ANGLAttack) VCMI_SOUND_FILE(ANGLATTK.wav) \
+VCMI_SOUND_NAME(ANGLDefend) VCMI_SOUND_FILE(ANGLDFND.wav) \
+VCMI_SOUND_NAME(ANGLKill) VCMI_SOUND_FILE(ANGLKILL.wav) \
+VCMI_SOUND_NAME(ANGLMove) VCMI_SOUND_FILE(ANGLMOVE.wav) \
+VCMI_SOUND_NAME(ANGLWNCE) VCMI_SOUND_FILE(ANGLWNCE.wav) \
+VCMI_SOUND_NAME(ANIMDEAD) VCMI_SOUND_FILE(ANIMDEAD.wav) \
+VCMI_SOUND_NAME(ANTIMAGK) VCMI_SOUND_FILE(ANTIMAGK.wav) \
+VCMI_SOUND_NAME(APEGAttack) VCMI_SOUND_FILE(APEGATTK.wav) \
+VCMI_SOUND_NAME(APEGDefend) VCMI_SOUND_FILE(APEGDFND.wav) \
+VCMI_SOUND_NAME(APEGKill) VCMI_SOUND_FILE(APEGKILL.wav) \
+VCMI_SOUND_NAME(APEGMove) VCMI_SOUND_FILE(APEGMOVE.wav) \
+VCMI_SOUND_NAME(APEGWNCE) VCMI_SOUND_FILE(APEGWNCE.wav) \
+VCMI_SOUND_NAME(ARMGEDN) VCMI_SOUND_FILE(ARMGEDN.wav) \
+VCMI_SOUND_NAME(AZURAttack) VCMI_SOUND_FILE(AZURATTK.wav) \
+VCMI_SOUND_NAME(AZURDefend) VCMI_SOUND_FILE(AZURDFND.wav) \
+VCMI_SOUND_NAME(AZURKill) VCMI_SOUND_FILE(AZURKILL.wav) \
+VCMI_SOUND_NAME(AZURMove) VCMI_SOUND_FILE(AZURMOVE.wav) \
+VCMI_SOUND_NAME(AZURWNCE) VCMI_SOUND_FILE(AZURWNCE.wav) \
+VCMI_SOUND_NAME(BACKLASH) VCMI_SOUND_FILE(BACKLASH.wav) \
+VCMI_SOUND_NAME(BADLUCK) VCMI_SOUND_FILE(BADLUCK.wav) \
+VCMI_SOUND_NAME(BADMRLE) VCMI_SOUND_FILE(BADMRLE.wav) \
+VCMI_SOUND_NAME(BALLKill) VCMI_SOUND_FILE(BALLKILL.wav) \
+VCMI_SOUND_NAME(BALLShot) VCMI_SOUND_FILE(BALLSHOT.wav) \
+VCMI_SOUND_NAME(BALLWNCE) VCMI_SOUND_FILE(BALLWNCE.wav) \
+VCMI_SOUND_NAME(BASLAttack) VCMI_SOUND_FILE(BASLATTK.wav) \
+VCMI_SOUND_NAME(BASLDefend) VCMI_SOUND_FILE(BASLDFND.wav) \
+VCMI_SOUND_NAME(BASLKill) VCMI_SOUND_FILE(BASLKILL.wav) \
+VCMI_SOUND_NAME(BASLMove) VCMI_SOUND_FILE(BASLMOVE.wav) \
+VCMI_SOUND_NAME(BASLWNCE) VCMI_SOUND_FILE(BASLWNCE.wav) \
+VCMI_SOUND_NAME(battle00) VCMI_SOUND_FILE(BATTLE00.wav) \
+VCMI_SOUND_NAME(battle01) VCMI_SOUND_FILE(BATTLE01.wav) \
+VCMI_SOUND_NAME(battle02) VCMI_SOUND_FILE(BATTLE02.wav) \
+VCMI_SOUND_NAME(battle03) VCMI_SOUND_FILE(BATTLE03.wav) \
+VCMI_SOUND_NAME(battle04) VCMI_SOUND_FILE(BATTLE04.wav) \
+VCMI_SOUND_NAME(battle05) VCMI_SOUND_FILE(BATTLE05.wav) \
+VCMI_SOUND_NAME(battle06) VCMI_SOUND_FILE(BATTLE06.wav) \
+VCMI_SOUND_NAME(battle07) VCMI_SOUND_FILE(BATTLE07.wav) \
+VCMI_SOUND_NAME(BDRFAttack) VCMI_SOUND_FILE(BDRFATTK.wav) \
+VCMI_SOUND_NAME(BDRFDefend) VCMI_SOUND_FILE(BDRFDFND.wav) \
+VCMI_SOUND_NAME(BDRFKill) VCMI_SOUND_FILE(BDRFKILL.wav) \
+VCMI_SOUND_NAME(BDRFMove) VCMI_SOUND_FILE(BDRFMOVE.wav) \
+VCMI_SOUND_NAME(BDRFWNCE) VCMI_SOUND_FILE(BDRFWNCE.wav) \
+VCMI_SOUND_NAME(BERSERK) VCMI_SOUND_FILE(BERSERK.wav) \
+VCMI_SOUND_NAME(BGORAttack) VCMI_SOUND_FILE(BGORATTK.wav) \
+VCMI_SOUND_NAME(BGORDefend) VCMI_SOUND_FILE(BGORDFND.wav) \
+VCMI_SOUND_NAME(BGORKill) VCMI_SOUND_FILE(BGORKILL.wav) \
+VCMI_SOUND_NAME(BGORMove) VCMI_SOUND_FILE(BGORMOVE.wav) \
+VCMI_SOUND_NAME(BGORWNCE) VCMI_SOUND_FILE(BGORWNCE.wav) \
+VCMI_SOUND_NAME(BHDRAttack) VCMI_SOUND_FILE(BHDRATTK.wav) \
+VCMI_SOUND_NAME(BHDRDETH) VCMI_SOUND_FILE(BHDRDETH.wav) \
+VCMI_SOUND_NAME(BHDRDefend) VCMI_SOUND_FILE(BHDRDFND.wav) \
+VCMI_SOUND_NAME(BHDRKill) VCMI_SOUND_FILE(BHDRKILL.wav) \
+VCMI_SOUND_NAME(BHDRMove) VCMI_SOUND_FILE(BHDRMOVE.wav) \
+VCMI_SOUND_NAME(BHDRShot) VCMI_SOUND_FILE(BHDRSHOT.wav) \
+VCMI_SOUND_NAME(BHDRWNCE) VCMI_SOUND_FILE(BHDRWNCE.wav) \
+VCMI_SOUND_NAME(BIND) VCMI_SOUND_FILE(BIND.wav) \
+VCMI_SOUND_NAME(BKDRAttack) VCMI_SOUND_FILE(BKDRATTK.wav) \
+VCMI_SOUND_NAME(BKDRDefend) VCMI_SOUND_FILE(BKDRDFND.wav) \
+VCMI_SOUND_NAME(BKDRKill) VCMI_SOUND_FILE(BKDRKILL.wav) \
+VCMI_SOUND_NAME(BKDRMove) VCMI_SOUND_FILE(BKDRMOVE.wav) \
+VCMI_SOUND_NAME(BKDRWNCE) VCMI_SOUND_FILE(BKDRWNCE.wav) \
+VCMI_SOUND_NAME(BKNTAttack) VCMI_SOUND_FILE(BKNTATTK.wav) \
+VCMI_SOUND_NAME(BKNTDefend) VCMI_SOUND_FILE(BKNTDFND.wav) \
+VCMI_SOUND_NAME(BKNTKill) VCMI_SOUND_FILE(BKNTKILL.wav) \
+VCMI_SOUND_NAME(BKNTMove) VCMI_SOUND_FILE(BKNTMOVE.wav) \
+VCMI_SOUND_NAME(BKNTWNCE) VCMI_SOUND_FILE(BKNTWNCE.wav) \
+VCMI_SOUND_NAME(bless) VCMI_SOUND_FILE(BLESS.wav) \
+VCMI_SOUND_NAME(blind) VCMI_SOUND_FILE(BLIND.wav) \
+VCMI_SOUND_NAME(bloodlus) VCMI_SOUND_FILE(BLOODLUS.wav) \
+VCMI_SOUND_NAME(BLRDAttack) VCMI_SOUND_FILE(BLRDATTK.wav) \
+VCMI_SOUND_NAME(BLRDDefend) VCMI_SOUND_FILE(BLRDDFND.wav) \
+VCMI_SOUND_NAME(BLRDKill) VCMI_SOUND_FILE(BLRDKILL.wav) \
+VCMI_SOUND_NAME(BLRDMove) VCMI_SOUND_FILE(BLRDMOVE.wav) \
+VCMI_SOUND_NAME(BLRDWNCE) VCMI_SOUND_FILE(BLRDWNCE.wav) \
+VCMI_SOUND_NAME(BMTHAttack) VCMI_SOUND_FILE(BMTHATTK.wav) \
+VCMI_SOUND_NAME(BMTHDefend) VCMI_SOUND_FILE(BMTHDFND.wav) \
+VCMI_SOUND_NAME(BMTHKill) VCMI_SOUND_FILE(BMTHKILL.wav) \
+VCMI_SOUND_NAME(BMTHMove) VCMI_SOUND_FILE(BMTHMOVE.wav) \
+VCMI_SOUND_NAME(BMTHWNCE) VCMI_SOUND_FILE(BMTHWNCE.wav) \
+VCMI_SOUND_NAME(BOARAttack) VCMI_SOUND_FILE(BOARATTK.wav) \
+VCMI_SOUND_NAME(BOARDefend) VCMI_SOUND_FILE(BOARDFND.wav) \
+VCMI_SOUND_NAME(BOARKill) VCMI_SOUND_FILE(BOARKILL.wav) \
+VCMI_SOUND_NAME(BOARMove) VCMI_SOUND_FILE(BOARMOVE.wav) \
+VCMI_SOUND_NAME(BOARWNCE) VCMI_SOUND_FILE(BOARWNCE.wav) \
+VCMI_SOUND_NAME(BODRAttack) VCMI_SOUND_FILE(BODRATTK.wav) \
+VCMI_SOUND_NAME(BODRDefend) VCMI_SOUND_FILE(BODRDFND.wav) \
+VCMI_SOUND_NAME(BODRKill) VCMI_SOUND_FILE(BODRKILL.wav) \
+VCMI_SOUND_NAME(BODRMove) VCMI_SOUND_FILE(BODRMOVE.wav) \
+VCMI_SOUND_NAME(BODRWNCE) VCMI_SOUND_FILE(BODRWNCE.wav) \
+VCMI_SOUND_NAME(BTREAttack) VCMI_SOUND_FILE(BTREATTK.wav) \
+VCMI_SOUND_NAME(BTREDefend) VCMI_SOUND_FILE(BTREDFND.wav) \
+VCMI_SOUND_NAME(BTREKill) VCMI_SOUND_FILE(BTREKILL.wav) \
+VCMI_SOUND_NAME(BTREMove) VCMI_SOUND_FILE(BTREMOVE.wav) \
+VCMI_SOUND_NAME(BTREWNCE) VCMI_SOUND_FILE(BTREWNCE.wav) \
+VCMI_SOUND_NAME(newBuilding) VCMI_SOUND_FILE(BUILDTWN.wav) \
+VCMI_SOUND_NAME(button) VCMI_SOUND_FILE(BUTTON.wav) \
+VCMI_SOUND_NAME(CALFAttack) VCMI_SOUND_FILE(CALFATTK.wav) \
+VCMI_SOUND_NAME(CALFDefend) VCMI_SOUND_FILE(CALFDFND.wav) \
+VCMI_SOUND_NAME(CALFKill) VCMI_SOUND_FILE(CALFKILL.wav) \
+VCMI_SOUND_NAME(CALFMove) VCMI_SOUND_FILE(CALFMOVE.wav) \
+VCMI_SOUND_NAME(CALFShot) VCMI_SOUND_FILE(CALFSHOT.wav) \
+VCMI_SOUND_NAME(CALFWNCE) VCMI_SOUND_FILE(CALFWNCE.wav) \
+VCMI_SOUND_NAME(CARTKill) VCMI_SOUND_FILE(CARTKILL.wav) \
+VCMI_SOUND_NAME(CARTWNCE) VCMI_SOUND_FILE(CARTWNCE.wav) \
+VCMI_SOUND_NAME(CATAKill) VCMI_SOUND_FILE(CATAKILL.wav) \
+VCMI_SOUND_NAME(CATAShot) VCMI_SOUND_FILE(CATASHOT.wav) \
+VCMI_SOUND_NAME(CATAWNCE) VCMI_SOUND_FILE(CATAWNCE.wav) \
+VCMI_SOUND_NAME(CAVAAttack) VCMI_SOUND_FILE(CAVAATTK.wav) \
+VCMI_SOUND_NAME(CAVADefend) VCMI_SOUND_FILE(CAVADFND.wav) \
+VCMI_SOUND_NAME(CAVAKill) VCMI_SOUND_FILE(CAVAKILL.wav) \
+VCMI_SOUND_NAME(CAVAMove) VCMI_SOUND_FILE(CAVAMOVE.wav) \
+VCMI_SOUND_NAME(CAVAWNCE) VCMI_SOUND_FILE(CAVAWNCE.wav) \
+VCMI_SOUND_NAME(CAVEHEAD) VCMI_SOUND_FILE(CAVEHEAD.wav) \
+VCMI_SOUND_NAME(CCYCAttack) VCMI_SOUND_FILE(CCYCATTK.wav) \
+VCMI_SOUND_NAME(CCYCDefend) VCMI_SOUND_FILE(CCYCDFND.wav) \
+VCMI_SOUND_NAME(CCYCKill) VCMI_SOUND_FILE(CCYCKILL.wav) \
+VCMI_SOUND_NAME(CCYCMove) VCMI_SOUND_FILE(CCYCMOVE.wav) \
+VCMI_SOUND_NAME(CCYCShot) VCMI_SOUND_FILE(CCYCSHOT.wav) \
+VCMI_SOUND_NAME(CCYCWNCE) VCMI_SOUND_FILE(CCYCWNCE.wav) \
+VCMI_SOUND_NAME(CERBAttack) VCMI_SOUND_FILE(CERBATTK.wav) \
+VCMI_SOUND_NAME(CERBDefend) VCMI_SOUND_FILE(CERBDFND.wav) \
+VCMI_SOUND_NAME(CERBKill) VCMI_SOUND_FILE(CERBKILL.wav) \
+VCMI_SOUND_NAME(CERBMove) VCMI_SOUND_FILE(CERBMOVE.wav) \
+VCMI_SOUND_NAME(CERBWNCE) VCMI_SOUND_FILE(CERBWNCE.wav) \
+VCMI_SOUND_NAME(CGORAttack) VCMI_SOUND_FILE(CGORATTK.wav) \
+VCMI_SOUND_NAME(CGORDefend) VCMI_SOUND_FILE(CGORDFND.wav) \
+VCMI_SOUND_NAME(CGORKill) VCMI_SOUND_FILE(CGORKILL.wav) \
+VCMI_SOUND_NAME(CGORMove) VCMI_SOUND_FILE(CGORMOVE.wav) \
+VCMI_SOUND_NAME(CGORWNCE) VCMI_SOUND_FILE(CGORWNCE.wav) \
+VCMI_SOUND_NAME(chainLigthning) VCMI_SOUND_FILE(CHAINLTE.wav) \
+VCMI_SOUND_NAME(chat) VCMI_SOUND_FILE(CHAT.wav) \
+VCMI_SOUND_NAME(chest) VCMI_SOUND_FILE(CHEST.wav) \
+VCMI_SOUND_NAME(CHMPAttack) VCMI_SOUND_FILE(CHMPATTK.wav) \
+VCMI_SOUND_NAME(CHMPDefend) VCMI_SOUND_FILE(CHMPDFND.wav) \
+VCMI_SOUND_NAME(CHMPKill) VCMI_SOUND_FILE(CHMPKILL.wav) \
+VCMI_SOUND_NAME(CHMPMove) VCMI_SOUND_FILE(CHMPMOVE.wav) \
+VCMI_SOUND_NAME(CHMPWNCE) VCMI_SOUND_FILE(CHMPWNCE.wav) \
+VCMI_SOUND_NAME(CHYDAttack) VCMI_SOUND_FILE(CHYDATTK.wav) \
+VCMI_SOUND_NAME(CHYDDefend) VCMI_SOUND_FILE(CHYDDFND.wav) \
+VCMI_SOUND_NAME(CHYDKill) VCMI_SOUND_FILE(CHYDKILL.wav) \
+VCMI_SOUND_NAME(CHYDMove) VCMI_SOUND_FILE(CHYDMOVE.wav) \
+VCMI_SOUND_NAME(CHYDWNCE) VCMI_SOUND_FILE(CHYDWNCE.wav) \
+VCMI_SOUND_NAME(CLIMAX) VCMI_SOUND_FILE(CLIMAX.wav) \
+VCMI_SOUND_NAME(CLONE) VCMI_SOUND_FILE(CLONE.wav) \
+VCMI_SOUND_NAME(CNTRAttack) VCMI_SOUND_FILE(CNTRATTK.wav) \
+VCMI_SOUND_NAME(CNTRDefend) VCMI_SOUND_FILE(CNTRDFND.wav) \
+VCMI_SOUND_NAME(CNTRKill) VCMI_SOUND_FILE(CNTRKILL.wav) \
+VCMI_SOUND_NAME(CNTRMove) VCMI_SOUND_FILE(CNTRMOVE.wav) \
+VCMI_SOUND_NAME(CNTRShot) VCMI_SOUND_FILE(CNTRSHOT.wav) \
+VCMI_SOUND_NAME(Counterstrike) VCMI_SOUND_FILE(CNTRSTRK.wav) \
+VCMI_SOUND_NAME(CNTRWNCE) VCMI_SOUND_FILE(CNTRWNCE.wav) \
+VCMI_SOUND_NAME(COLDRAY) VCMI_SOUND_FILE(COLDRAY.wav) \
+VCMI_SOUND_NAME(COLDRING) VCMI_SOUND_FILE(COLDRING.wav) \
+VCMI_SOUND_NAME(CRUSAttack) VCMI_SOUND_FILE(CRUSATTK.wav) \
+VCMI_SOUND_NAME(CRUSDefend) VCMI_SOUND_FILE(CRUSDFND.wav) \
+VCMI_SOUND_NAME(CRUSKill) VCMI_SOUND_FILE(CRUSKILL.wav) \
+VCMI_SOUND_NAME(CRUSMove) VCMI_SOUND_FILE(CRUSMOVE.wav) \
+VCMI_SOUND_NAME(CRUSWNCE) VCMI_SOUND_FILE(CRUSWNCE.wav) \
+VCMI_SOUND_NAME(CRYSAttack) VCMI_SOUND_FILE(CRYSATTK.wav) \
+VCMI_SOUND_NAME(CRYSDefend) VCMI_SOUND_FILE(CRYSDFND.wav) \
+VCMI_SOUND_NAME(CRYSKill) VCMI_SOUND_FILE(CRYSKILL.wav) \
+VCMI_SOUND_NAME(CRYSMove) VCMI_SOUND_FILE(CRYSMOVE.wav) \
+VCMI_SOUND_NAME(CRYSWNCE) VCMI_SOUND_FILE(CRYSWNCE.wav) \
+VCMI_SOUND_NAME(CURE) VCMI_SOUND_FILE(CURE.wav) \
+VCMI_SOUND_NAME(CURSE) VCMI_SOUND_FILE(CURSE.wav) \
+VCMI_SOUND_NAME(cyclopAttack) VCMI_SOUND_FILE(CYCLATTK.wav) \
+VCMI_SOUND_NAME(cyclopDefend) VCMI_SOUND_FILE(CYCLDFND.wav) \
+VCMI_SOUND_NAME(cyclopKill) VCMI_SOUND_FILE(CYCLKILL.wav) \
+VCMI_SOUND_NAME(cyclopMove) VCMI_SOUND_FILE(CYCLMOVE.wav) \
+VCMI_SOUND_NAME(cyclopShot) VCMI_SOUND_FILE(CYCLSHOT.wav) \
+VCMI_SOUND_NAME(cyclopWNCE) VCMI_SOUND_FILE(CYCLWNCE.wav) \
+VCMI_SOUND_NAME(DANGER) VCMI_SOUND_FILE(DANGER.wav) \
+VCMI_SOUND_NAME(deathBlood) VCMI_SOUND_FILE(DEATHBLO.wav) \
+VCMI_SOUND_NAME(deathCloud) VCMI_SOUND_FILE(DEATHCLD.wav) \
+VCMI_SOUND_NAME(deathRIP) VCMI_SOUND_FILE(DEATHRIP.wav) \
+VCMI_SOUND_NAME(deathSTR) VCMI_SOUND_FILE(DEATHSTR.wav) \
+VCMI_SOUND_NAME(DECAY) VCMI_SOUND_FILE(DECAY.wav) \
+VCMI_SOUND_NAME(DEFAULT) VCMI_SOUND_FILE(DEFAULT.wav) \
+VCMI_SOUND_NAME(DEVLAttack) VCMI_SOUND_FILE(DEVLATTK.wav) \
+VCMI_SOUND_NAME(DEVLDefend) VCMI_SOUND_FILE(DEVLDFND.wav) \
+VCMI_SOUND_NAME(DEVLEXT1) VCMI_SOUND_FILE(DEVLEXT1.wav) \
+VCMI_SOUND_NAME(DEVLEXT2) VCMI_SOUND_FILE(DEVLEXT2.wav) \
+VCMI_SOUND_NAME(DEVLKill) VCMI_SOUND_FILE(DEVLKILL.wav) \
+VCMI_SOUND_NAME(DEVLMove) VCMI_SOUND_FILE(DEVLMOVE.wav) \
+VCMI_SOUND_NAME(DEVLWNCE) VCMI_SOUND_FILE(DEVLWNCE.wav) \
+VCMI_SOUND_NAME(DFLYAttack) VCMI_SOUND_FILE(DFLYATTK.wav) \
+VCMI_SOUND_NAME(DFLYDefend) VCMI_SOUND_FILE(DFLYDFND.wav) \
+VCMI_SOUND_NAME(DFLYKill) VCMI_SOUND_FILE(DFLYKILL.wav) \
+VCMI_SOUND_NAME(DFLYMove) VCMI_SOUND_FILE(DFLYMOVE.wav) \
+VCMI_SOUND_NAME(DFLYWNCE) VCMI_SOUND_FILE(DFLYWNCE.wav) \
+VCMI_SOUND_NAME(DGLMAttack) VCMI_SOUND_FILE(DGLMATTK.wav) \
+VCMI_SOUND_NAME(DGLMDefend) VCMI_SOUND_FILE(DGLMDFND.wav) \
+VCMI_SOUND_NAME(DGLMKill) VCMI_SOUND_FILE(DGLMKILL.wav) \
+VCMI_SOUND_NAME(DGLMMove) VCMI_SOUND_FILE(DGLMMOVE.wav) \
+VCMI_SOUND_NAME(DGLMWNCE) VCMI_SOUND_FILE(DGLMWNCE.wav) \
+VCMI_SOUND_NAME(DHDMAttack) VCMI_SOUND_FILE(DHDMATTK.wav) \
+VCMI_SOUND_NAME(DHDMDefend) VCMI_SOUND_FILE(DHDMDFND.wav) \
+VCMI_SOUND_NAME(DHDMKill) VCMI_SOUND_FILE(DHDMKILL.wav) \
+VCMI_SOUND_NAME(DHDMMove) VCMI_SOUND_FILE(DHDMMOVE.wav) \
+VCMI_SOUND_NAME(DHDMWNCE) VCMI_SOUND_FILE(DHDMWNCE.wav) \
+VCMI_SOUND_NAME(Dig) VCMI_SOUND_FILE(DIGSOUND.wav) \
+VCMI_SOUND_NAME(DIPMAGK) VCMI_SOUND_FILE(DIPMAGK.wav) \
+VCMI_SOUND_NAME(DISEASE) VCMI_SOUND_FILE(DISEASE.wav) \
+VCMI_SOUND_NAME(DISGUISE) VCMI_SOUND_FILE(DISGUISE.wav) \
+VCMI_SOUND_NAME(DISPELL) VCMI_SOUND_FILE(DISPELL.wav) \
+VCMI_SOUND_NAME(DISRUPTR) VCMI_SOUND_FILE(DISRUPTR.wav) \
+VCMI_SOUND_NAME(dragonHall) VCMI_SOUND_FILE(DRAGON.wav) \
+VCMI_SOUND_NAME(DRAINLIF) VCMI_SOUND_FILE(DRAINLIF.wav) \
+VCMI_SOUND_NAME(DRAWBRG) VCMI_SOUND_FILE(DRAWBRG.wav) \
+VCMI_SOUND_NAME(DRGNSLAY) VCMI_SOUND_FILE(DRGNSLAY.wav) \
+VCMI_SOUND_NAME(DWRFAttack) VCMI_SOUND_FILE(DWRFATTK.wav) \
+VCMI_SOUND_NAME(DWRFDefend) VCMI_SOUND_FILE(DWRFDFND.wav) \
+VCMI_SOUND_NAME(DWRFKill) VCMI_SOUND_FILE(DWRFKILL.wav) \
+VCMI_SOUND_NAME(DWRFMove) VCMI_SOUND_FILE(DWRFMOVE.wav) \
+VCMI_SOUND_NAME(DWRFWNCE) VCMI_SOUND_FILE(DWRFWNCE.wav) \
+VCMI_SOUND_NAME(ECNTAttack) VCMI_SOUND_FILE(ECNTATTK.wav) \
+VCMI_SOUND_NAME(ECNTDefend) VCMI_SOUND_FILE(ECNTDFND.wav) \
+VCMI_SOUND_NAME(ECNTKill) VCMI_SOUND_FILE(ECNTKILL.wav) \
+VCMI_SOUND_NAME(ECNTMove) VCMI_SOUND_FILE(ECNTMOVE.wav) \
+VCMI_SOUND_NAME(ECNTWNCE) VCMI_SOUND_FILE(ECNTWNCE.wav) \
+VCMI_SOUND_NAME(EELMAttack) VCMI_SOUND_FILE(EELMATTK.wav) \
+VCMI_SOUND_NAME(EELMDefend) VCMI_SOUND_FILE(EELMDFND.wav) \
+VCMI_SOUND_NAME(EELMKill) VCMI_SOUND_FILE(EELMKILL.wav) \
+VCMI_SOUND_NAME(EELMMove) VCMI_SOUND_FILE(EELMMOVE.wav) \
+VCMI_SOUND_NAME(EELMWNCE) VCMI_SOUND_FILE(EELMWNCE.wav) \
+VCMI_SOUND_NAME(EFRTAttack) VCMI_SOUND_FILE(EFRTATTK.wav) \
+VCMI_SOUND_NAME(EFRTDefend) VCMI_SOUND_FILE(EFRTDFND.wav) \
+VCMI_SOUND_NAME(EFRTKill) VCMI_SOUND_FILE(EFRTKILL.wav) \
+VCMI_SOUND_NAME(EFRTMove) VCMI_SOUND_FILE(EFRTMOVE.wav) \
+VCMI_SOUND_NAME(EFRTWNCE) VCMI_SOUND_FILE(EFRTWNCE.wav) \
+VCMI_SOUND_NAME(ENCHAttack) VCMI_SOUND_FILE(ENCHATTK.wav) \
+VCMI_SOUND_NAME(ENCHDefend) VCMI_SOUND_FILE(ENCHDFND.wav) \
+VCMI_SOUND_NAME(ENCHKill) VCMI_SOUND_FILE(ENCHKILL.wav) \
+VCMI_SOUND_NAME(ENCHMove) VCMI_SOUND_FILE(ENCHMOVE.wav) \
+VCMI_SOUND_NAME(ENCHShot) VCMI_SOUND_FILE(ENCHSHOT.wav) \
+VCMI_SOUND_NAME(ENCHWNCE) VCMI_SOUND_FILE(ENCHWNCE.wav) \
+VCMI_SOUND_NAME(ENERAttack) VCMI_SOUND_FILE(ENERATTK.wav) \
+VCMI_SOUND_NAME(ENERDefend) VCMI_SOUND_FILE(ENERDFND.wav) \
+VCMI_SOUND_NAME(ENERKill) VCMI_SOUND_FILE(ENERKILL.wav) \
+VCMI_SOUND_NAME(ENERMove) VCMI_SOUND_FILE(ENERMOVE.wav) \
+VCMI_SOUND_NAME(ENERWNCE) VCMI_SOUND_FILE(ENERWNCE.wav) \
+VCMI_SOUND_NAME(ERTHQUAK) VCMI_SOUND_FILE(ERTHQUAK.wav) \
+VCMI_SOUND_NAME(ESULAttack) VCMI_SOUND_FILE(ESULATTK.wav) \
+VCMI_SOUND_NAME(ESULDefend) VCMI_SOUND_FILE(ESULDFND.wav) \
+VCMI_SOUND_NAME(ESULKill) VCMI_SOUND_FILE(ESULKILL.wav) \
+VCMI_SOUND_NAME(ESULMove) VCMI_SOUND_FILE(ESULMOVE.wav) \
+VCMI_SOUND_NAME(ESULShot) VCMI_SOUND_FILE(ESULSHOT.wav) \
+VCMI_SOUND_NAME(ESULWNCE) VCMI_SOUND_FILE(ESULWNCE.wav) \
+VCMI_SOUND_NAME(EVLIAttack) VCMI_SOUND_FILE(EVLIATTK.wav) \
+VCMI_SOUND_NAME(EVLIDETH) VCMI_SOUND_FILE(EVLIDETH.wav) \
+VCMI_SOUND_NAME(EVLIDefend) VCMI_SOUND_FILE(EVLIDFND.wav) \
+VCMI_SOUND_NAME(EVLIKill) VCMI_SOUND_FILE(EVLIKILL.wav) \
+VCMI_SOUND_NAME(EVLIMove) VCMI_SOUND_FILE(EVLIMOVE.wav) \
+VCMI_SOUND_NAME(EVLIShot) VCMI_SOUND_FILE(EVLISHOT.wav) \
+VCMI_SOUND_NAME(EVLIWNCE) VCMI_SOUND_FILE(EVLIWNCE.wav) \
+VCMI_SOUND_NAME(experience) VCMI_SOUND_FILE(EXPERNCE.wav) \
+VCMI_SOUND_NAME(FAERAttack) VCMI_SOUND_FILE(FAERATTK.wav) \
+VCMI_SOUND_NAME(FAERDefend) VCMI_SOUND_FILE(FAERDFND.wav) \
+VCMI_SOUND_NAME(faerie) VCMI_SOUND_FILE(FAERIE.wav) \
+VCMI_SOUND_NAME(FAERKill) VCMI_SOUND_FILE(FAERKILL.wav) \
+VCMI_SOUND_NAME(FAERMove) VCMI_SOUND_FILE(FAERMOVE.wav) \
+VCMI_SOUND_NAME(FAERShot) VCMI_SOUND_FILE(FAERSHOT.wav) \
+VCMI_SOUND_NAME(FAERWNCE) VCMI_SOUND_FILE(FAERWNCE.wav) \
+VCMI_SOUND_NAME(FAIDKill) VCMI_SOUND_FILE(FAIDKILL.wav) \
+VCMI_SOUND_NAME(FAIDWNCE) VCMI_SOUND_FILE(FAIDWNCE.wav) \
+VCMI_SOUND_NAME(FDFLAttack) VCMI_SOUND_FILE(FDFLATTK.wav) \
+VCMI_SOUND_NAME(FDFLDefend) VCMI_SOUND_FILE(FDFLDFND.wav) \
+VCMI_SOUND_NAME(FDFLKill) VCMI_SOUND_FILE(FDFLKILL.wav) \
+VCMI_SOUND_NAME(FDFLMove) VCMI_SOUND_FILE(FDFLMOVE.wav) \
+VCMI_SOUND_NAME(FDFLShot) VCMI_SOUND_FILE(FDFLSHOT.wav) \
+VCMI_SOUND_NAME(FDFLWNCE) VCMI_SOUND_FILE(FDFLWNCE.wav) \
+VCMI_SOUND_NAME(FEAR) VCMI_SOUND_FILE(FEAR.wav) \
+VCMI_SOUND_NAME(FELMAttack) VCMI_SOUND_FILE(FELMATTK.wav) \
+VCMI_SOUND_NAME(FELMDefend) VCMI_SOUND_FILE(FELMDFND.wav) \
+VCMI_SOUND_NAME(FELMKill) VCMI_SOUND_FILE(FELMKILL.wav) \
+VCMI_SOUND_NAME(FELMMove) VCMI_SOUND_FILE(FELMMOVE.wav) \
+VCMI_SOUND_NAME(FELMWNCE) VCMI_SOUND_FILE(FELMWNCE.wav) \
+VCMI_SOUND_NAME(FIRBAttack) VCMI_SOUND_FILE(FIRBATTK.wav) \
+VCMI_SOUND_NAME(FIRBDefend) VCMI_SOUND_FILE(FIRBDFND.wav) \
+VCMI_SOUND_NAME(FIRBKill) VCMI_SOUND_FILE(FIRBKILL.wav) \
+VCMI_SOUND_NAME(FIRBMove) VCMI_SOUND_FILE(FIRBMOVE.wav) \
+VCMI_SOUND_NAME(FIRBWNCE) VCMI_SOUND_FILE(FIRBWNCE.wav) \
+VCMI_SOUND_NAME(fireball) VCMI_SOUND_FILE(FIREBALL.wav) \
+VCMI_SOUND_NAME(fireblast) VCMI_SOUND_FILE(FIREBLST.wav) \
+VCMI_SOUND_NAME(FIRESHIE) VCMI_SOUND_FILE(FIRESHIE.wav) \
+VCMI_SOUND_NAME(FIRESHLD) VCMI_SOUND_FILE(FIRESHLD.wav) \
+VCMI_SOUND_NAME(fireStorm) VCMI_SOUND_FILE(FIRESTRM.wav) \
+VCMI_SOUND_NAME(fireWall) VCMI_SOUND_FILE(FIREWALL.wav) \
+VCMI_SOUND_NAME(FLAGMINE) VCMI_SOUND_FILE(FLAGMINE.wav) \
+VCMI_SOUND_NAME(FLYSPELL) VCMI_SOUND_FILE(FLYSPELL.wav) \
+VCMI_SOUND_NAME(FMLRAttack) VCMI_SOUND_FILE(FMLRATTK.wav) \
+VCMI_SOUND_NAME(FMLRDefend) VCMI_SOUND_FILE(FMLRDFND.wav) \
+VCMI_SOUND_NAME(FMLRKill) VCMI_SOUND_FILE(FMLRKILL.wav) \
+VCMI_SOUND_NAME(FMLRMove) VCMI_SOUND_FILE(FMLRMOVE.wav) \
+VCMI_SOUND_NAME(FMLRWNCE) VCMI_SOUND_FILE(FMLRWNCE.wav) \
+VCMI_SOUND_NAME(FORCEFLD) VCMI_SOUND_FILE(FORCEFLD.wav) \
+VCMI_SOUND_NAME(FORGET) VCMI_SOUND_FILE(FORGET.wav) \
+VCMI_SOUND_NAME(FORTUNE) VCMI_SOUND_FILE(FORTUNE.wav) \
+VCMI_SOUND_NAME(FRENZY) VCMI_SOUND_FILE(FRENZY.wav) \
+VCMI_SOUND_NAME(FROSTING) VCMI_SOUND_FILE(FROSTING.wav) \
+VCMI_SOUND_NAME(gazebo) VCMI_SOUND_FILE(GAZEBO.wav) \
+VCMI_SOUND_NAME(GBASAttack) VCMI_SOUND_FILE(GBASATTK.wav) \
+VCMI_SOUND_NAME(GBASDefend) VCMI_SOUND_FILE(GBASDFND.wav) \
+VCMI_SOUND_NAME(GBASKill) VCMI_SOUND_FILE(GBASKILL.wav) \
+VCMI_SOUND_NAME(GBASMove) VCMI_SOUND_FILE(GBASMOVE.wav) \
+VCMI_SOUND_NAME(GBASWNCE) VCMI_SOUND_FILE(GBASWNCE.wav) \
+VCMI_SOUND_NAME(GBLNAttack) VCMI_SOUND_FILE(GBLNATTK.wav) \
+VCMI_SOUND_NAME(GBLNDefend) VCMI_SOUND_FILE(GBLNDFND.wav) \
+VCMI_SOUND_NAME(GBLNKill) VCMI_SOUND_FILE(GBLNKILL.wav) \
+VCMI_SOUND_NAME(GBLNMove) VCMI_SOUND_FILE(GBLNMOVE.wav) \
+VCMI_SOUND_NAME(GBLNWNCE) VCMI_SOUND_FILE(GBLNWNCE.wav) \
+VCMI_SOUND_NAME(GELFAttack) VCMI_SOUND_FILE(GELFATTK.wav) \
+VCMI_SOUND_NAME(GELFDefend) VCMI_SOUND_FILE(GELFDFND.wav) \
+VCMI_SOUND_NAME(GELFKill) VCMI_SOUND_FILE(GELFKILL.wav) \
+VCMI_SOUND_NAME(GELFMove) VCMI_SOUND_FILE(GELFMOVE.wav) \
+VCMI_SOUND_NAME(GELFShot) VCMI_SOUND_FILE(GELFSHOT.wav) \
+VCMI_SOUND_NAME(GELFWNCE) VCMI_SOUND_FILE(GELFWNCE.wav) \
+VCMI_SOUND_NAME(GENIAttack) VCMI_SOUND_FILE(GENIATTK.wav) \
+VCMI_SOUND_NAME(GENIDefend) VCMI_SOUND_FILE(GENIDFND.wav) \
+VCMI_SOUND_NAME(GENIE) VCMI_SOUND_FILE(GENIE.wav) \
+VCMI_SOUND_NAME(GENIKill) VCMI_SOUND_FILE(GENIKILL.wav) \
+VCMI_SOUND_NAME(GENIMove) VCMI_SOUND_FILE(GENIMOVE.wav) \
+VCMI_SOUND_NAME(GENIWNCE) VCMI_SOUND_FILE(GENIWNCE.wav) \
+VCMI_SOUND_NAME(GETPROTECTION) VCMI_SOUND_FILE(GETPROTECTION.wav) \
+VCMI_SOUND_NAME(GGLMAttack) VCMI_SOUND_FILE(GGLMATTK.wav) \
+VCMI_SOUND_NAME(GGLMDefend) VCMI_SOUND_FILE(GGLMDFND.wav) \
+VCMI_SOUND_NAME(GGLMKill) VCMI_SOUND_FILE(GGLMKILL.wav) \
+VCMI_SOUND_NAME(GGLMMove) VCMI_SOUND_FILE(GGLMMOVE.wav) \
+VCMI_SOUND_NAME(GGLMWNCE) VCMI_SOUND_FILE(GGLMWNCE.wav) \
+VCMI_SOUND_NAME(GHDRAttack) VCMI_SOUND_FILE(GHDRATTK.wav) \
+VCMI_SOUND_NAME(GHDRDefend) VCMI_SOUND_FILE(GHDRDFND.wav) \
+VCMI_SOUND_NAME(GHDRKill) VCMI_SOUND_FILE(GHDRKILL.wav) \
+VCMI_SOUND_NAME(GHDRMove) VCMI_SOUND_FILE(GHDRMOVE.wav) \
+VCMI_SOUND_NAME(GHDRWNCE) VCMI_SOUND_FILE(GHDRWNCE.wav) \
+VCMI_SOUND_NAME(GNLMAttack) VCMI_SOUND_FILE(GNLMATTK.wav) \
+VCMI_SOUND_NAME(GNLMDefend) VCMI_SOUND_FILE(GNLMDFND.wav) \
+VCMI_SOUND_NAME(GNLMKill) VCMI_SOUND_FILE(GNLMKILL.wav) \
+VCMI_SOUND_NAME(GNLMMove) VCMI_SOUND_FILE(GNLMMOVE.wav) \
+VCMI_SOUND_NAME(GNLMWNCE) VCMI_SOUND_FILE(GNLMWNCE.wav) \
+VCMI_SOUND_NAME(GNOLAttack) VCMI_SOUND_FILE(GNOLATTK.wav) \
+VCMI_SOUND_NAME(GNOLDefend) VCMI_SOUND_FILE(GNOLDFND.wav) \
+VCMI_SOUND_NAME(GNOLKill) VCMI_SOUND_FILE(GNOLKILL.wav) \
+VCMI_SOUND_NAME(GNOLMove) VCMI_SOUND_FILE(GNOLMOVE.wav) \
+VCMI_SOUND_NAME(GNOLWNCE) VCMI_SOUND_FILE(GNOLWNCE.wav) \
+VCMI_SOUND_NAME(GODRAttack) VCMI_SOUND_FILE(GODRATTK.wav) \
+VCMI_SOUND_NAME(GODRDefend) VCMI_SOUND_FILE(GODRDFND.wav) \
+VCMI_SOUND_NAME(GODRKill) VCMI_SOUND_FILE(GODRKILL.wav) \
+VCMI_SOUND_NAME(GODRMove) VCMI_SOUND_FILE(GODRMOVE.wav) \
+VCMI_SOUND_NAME(GODRWNCE) VCMI_SOUND_FILE(GODRWNCE.wav) \
+VCMI_SOUND_NAME(GOGFLAME) VCMI_SOUND_FILE(GOGFLAME.wav) \
+VCMI_SOUND_NAME(GOGGAttack) VCMI_SOUND_FILE(GOGGATTK.wav) \
+VCMI_SOUND_NAME(GOGGDefend) VCMI_SOUND_FILE(GOGGDFND.wav) \
+VCMI_SOUND_NAME(GOGGKill) VCMI_SOUND_FILE(GOGGKILL.wav) \
+VCMI_SOUND_NAME(GOGGMove) VCMI_SOUND_FILE(GOGGMOVE.wav) \
+VCMI_SOUND_NAME(GOGGShot) VCMI_SOUND_FILE(GOGGSHOT.wav) \
+VCMI_SOUND_NAME(GOGGWNCE) VCMI_SOUND_FILE(GOGGWNCE.wav) \
+VCMI_SOUND_NAME(GOODLUCK) VCMI_SOUND_FILE(GOODLUCK.wav) \
+VCMI_SOUND_NAME(GOODMRLE) VCMI_SOUND_FILE(GOODMRLE.wav) \
+VCMI_SOUND_NAME(GRAVEYARD) VCMI_SOUND_FILE(GRAVEYARD.wav) \
+VCMI_SOUND_NAME(GRDRAttack) VCMI_SOUND_FILE(GRDRATTK.wav) \
+VCMI_SOUND_NAME(GRDRDefend) VCMI_SOUND_FILE(GRDRDFND.wav) \
+VCMI_SOUND_NAME(GRDRKill) VCMI_SOUND_FILE(GRDRKILL.wav) \
+VCMI_SOUND_NAME(GRDRMove) VCMI_SOUND_FILE(GRDRMOVE.wav) \
+VCMI_SOUND_NAME(GRDRWNCE) VCMI_SOUND_FILE(GRDRWNCE.wav) \
+VCMI_SOUND_NAME(GRIFAttack) VCMI_SOUND_FILE(GRIFATTK.wav) \
+VCMI_SOUND_NAME(GRIFDefend) VCMI_SOUND_FILE(GRIFDFND.wav) \
+VCMI_SOUND_NAME(GRIFKill) VCMI_SOUND_FILE(GRIFKILL.wav) \
+VCMI_SOUND_NAME(GRIFMove) VCMI_SOUND_FILE(GRIFMOVE.wav) \
+VCMI_SOUND_NAME(GRIFWNCE) VCMI_SOUND_FILE(GRIFWNCE.wav) \
+VCMI_SOUND_NAME(GTITAttack) VCMI_SOUND_FILE(GTITATTK.wav) \
+VCMI_SOUND_NAME(GTITDefend) VCMI_SOUND_FILE(GTITDFND.wav) \
+VCMI_SOUND_NAME(GTITKill) VCMI_SOUND_FILE(GTITKILL.wav) \
+VCMI_SOUND_NAME(GTITMove) VCMI_SOUND_FILE(GTITMOVE.wav) \
+VCMI_SOUND_NAME(GTITShot) VCMI_SOUND_FILE(GTITSHOT.wav) \
+VCMI_SOUND_NAME(GTITWNCE) VCMI_SOUND_FILE(GTITWNCE.wav) \
+VCMI_SOUND_NAME(GWRDAttack) VCMI_SOUND_FILE(GWRDATTK.wav) \
+VCMI_SOUND_NAME(GWRDDefend) VCMI_SOUND_FILE(GWRDDFND.wav) \
+VCMI_SOUND_NAME(GWRDKill) VCMI_SOUND_FILE(GWRDKILL.wav) \
+VCMI_SOUND_NAME(GWRDMove) VCMI_SOUND_FILE(GWRDMOVE.wav) \
+VCMI_SOUND_NAME(GWRDWNCE) VCMI_SOUND_FILE(GWRDWNCE.wav) \
+VCMI_SOUND_NAME(HALBAttack) VCMI_SOUND_FILE(HALBATTK.wav) \
+VCMI_SOUND_NAME(HALBDefend) VCMI_SOUND_FILE(HALBDFND.wav) \
+VCMI_SOUND_NAME(HALBKill) VCMI_SOUND_FILE(HALBKILL.wav) \
+VCMI_SOUND_NAME(HALBMove) VCMI_SOUND_FILE(HALBMOVE.wav) \
+VCMI_SOUND_NAME(HALBWNCE) VCMI_SOUND_FILE(HALBWNCE.wav) \
+VCMI_SOUND_NAME(HALFAttack) VCMI_SOUND_FILE(HALFATTK.wav) \
+VCMI_SOUND_NAME(HALFDefend) VCMI_SOUND_FILE(HALFDFND.wav) \
+VCMI_SOUND_NAME(HALFKill) VCMI_SOUND_FILE(HALFKILL.wav) \
+VCMI_SOUND_NAME(HALFMove) VCMI_SOUND_FILE(HALFMOVE.wav) \
+VCMI_SOUND_NAME(HALFShot) VCMI_SOUND_FILE(HALFSHOT.wav) \
+VCMI_SOUND_NAME(HALFWNCE) VCMI_SOUND_FILE(HALFWNCE.wav) \
+VCMI_SOUND_NAME(HARPAttack) VCMI_SOUND_FILE(HARPATTK.wav) \
+VCMI_SOUND_NAME(HARPDefend) VCMI_SOUND_FILE(HARPDFND.wav) \
+VCMI_SOUND_NAME(HARPKill) VCMI_SOUND_FILE(HARPKILL.wav) \
+VCMI_SOUND_NAME(HARPMove) VCMI_SOUND_FILE(HARPMOVE.wav) \
+VCMI_SOUND_NAME(HARPWNCE) VCMI_SOUND_FILE(HARPWNCE.wav) \
+VCMI_SOUND_NAME(HASTE) VCMI_SOUND_FILE(HASTE.wav) \
+VCMI_SOUND_NAME(HCRSAttack) VCMI_SOUND_FILE(HCRSATTK.wav) \
+VCMI_SOUND_NAME(HCRSDefend) VCMI_SOUND_FILE(HCRSDFND.wav) \
+VCMI_SOUND_NAME(HCRSKill) VCMI_SOUND_FILE(HCRSKILL.wav) \
+VCMI_SOUND_NAME(HCRSMove) VCMI_SOUND_FILE(HCRSMOVE.wav) \
+VCMI_SOUND_NAME(HCRSShot) VCMI_SOUND_FILE(HCRSSHOT.wav) \
+VCMI_SOUND_NAME(HCRSWNCE) VCMI_SOUND_FILE(HCRSWNCE.wav) \
+VCMI_SOUND_NAME(HGOBAttack) VCMI_SOUND_FILE(HGOBATTK.wav) \
+VCMI_SOUND_NAME(HGOBDefend) VCMI_SOUND_FILE(HGOBDFND.wav) \
+VCMI_SOUND_NAME(HGOBKill) VCMI_SOUND_FILE(HGOBKILL.wav) \
+VCMI_SOUND_NAME(HGOBMove) VCMI_SOUND_FILE(HGOBMOVE.wav) \
+VCMI_SOUND_NAME(HGOBWNCE) VCMI_SOUND_FILE(HGOBWNCE.wav) \
+VCMI_SOUND_NAME(HGWRAttack) VCMI_SOUND_FILE(HGWRATTK.wav) \
+VCMI_SOUND_NAME(HGWRDefend) VCMI_SOUND_FILE(HGWRDFND.wav) \
+VCMI_SOUND_NAME(HGWRKill) VCMI_SOUND_FILE(HGWRKILL.wav) \
+VCMI_SOUND_NAME(HGWRMove) VCMI_SOUND_FILE(HGWRMOVE.wav) \
+VCMI_SOUND_NAME(HGWRWNCE) VCMI_SOUND_FILE(HGWRWNCE.wav) \
+VCMI_SOUND_NAME(HHAGAttack) VCMI_SOUND_FILE(HHAGATTK.wav) \
+VCMI_SOUND_NAME(HHAGDefend) VCMI_SOUND_FILE(HHAGDFND.wav) \
+VCMI_SOUND_NAME(HHAGKill) VCMI_SOUND_FILE(HHAGKILL.wav) \
+VCMI_SOUND_NAME(HHAGMove) VCMI_SOUND_FILE(HHAGMOVE.wav) \
+VCMI_SOUND_NAME(HHAGShot) VCMI_SOUND_FILE(HHAGSHOT.wav) \
+VCMI_SOUND_NAME(HHAGWNCE) VCMI_SOUND_FILE(HHAGWNCE.wav) \
+VCMI_SOUND_NAME(HHNDAttack) VCMI_SOUND_FILE(HHNDATTK.wav) \
+VCMI_SOUND_NAME(HHNDDefend) VCMI_SOUND_FILE(HHNDDFND.wav) \
+VCMI_SOUND_NAME(HHNDKill) VCMI_SOUND_FILE(HHNDKILL.wav) \
+VCMI_SOUND_NAME(HHNDMove) VCMI_SOUND_FILE(HHNDMOVE.wav) \
+VCMI_SOUND_NAME(HHNDWNCE) VCMI_SOUND_FILE(HHNDWNCE.wav) \
+VCMI_SOUND_NAME(horse00) VCMI_SOUND_FILE(HORSE00.wav) \
+VCMI_SOUND_NAME(horse01) VCMI_SOUND_FILE(HORSE01.wav) \
+VCMI_SOUND_NAME(horse02) VCMI_SOUND_FILE(HORSE02.wav) \
+VCMI_SOUND_NAME(horse03) VCMI_SOUND_FILE(HORSE03.wav) \
+VCMI_SOUND_NAME(horse04) VCMI_SOUND_FILE(HORSE04.wav) \
+VCMI_SOUND_NAME(horse05) VCMI_SOUND_FILE(HORSE05.wav) \
+VCMI_SOUND_NAME(horse06) VCMI_SOUND_FILE(HORSE06.wav) \
+VCMI_SOUND_NAME(horse07) VCMI_SOUND_FILE(HORSE07.wav) \
+VCMI_SOUND_NAME(horse08) VCMI_SOUND_FILE(HORSE08.wav) \
+VCMI_SOUND_NAME(horse09) VCMI_SOUND_FILE(HORSE09.wav) \
+VCMI_SOUND_NAME(horse10) VCMI_SOUND_FILE(HORSE10.wav) \
+VCMI_SOUND_NAME(horse20) VCMI_SOUND_FILE(HORSE20.wav) \
+VCMI_SOUND_NAME(horse21) VCMI_SOUND_FILE(HORSE21.wav) \
+VCMI_SOUND_NAME(horse22) VCMI_SOUND_FILE(HORSE22.wav) \
+VCMI_SOUND_NAME(horse23) VCMI_SOUND_FILE(HORSE23.wav) \
+VCMI_SOUND_NAME(horse24) VCMI_SOUND_FILE(HORSE24.wav) \
+VCMI_SOUND_NAME(horse25) VCMI_SOUND_FILE(HORSE25.wav) \
+VCMI_SOUND_NAME(horse26) VCMI_SOUND_FILE(HORSE26.wav) \
+VCMI_SOUND_NAME(horse27) VCMI_SOUND_FILE(HORSE27.wav) \
+VCMI_SOUND_NAME(horse29) VCMI_SOUND_FILE(HORSE29.wav) \
+VCMI_SOUND_NAME(hydraAttack) VCMI_SOUND_FILE(HYDRATTK.wav) \
+VCMI_SOUND_NAME(hydraDefend) VCMI_SOUND_FILE(HYDRDFND.wav) \
+VCMI_SOUND_NAME(hydraKill) VCMI_SOUND_FILE(HYDRKILL.wav) \
+VCMI_SOUND_NAME(hydraMove) VCMI_SOUND_FILE(HYDRMOVE.wav) \
+VCMI_SOUND_NAME(hydraWNCE) VCMI_SOUND_FILE(HYDRWNCE.wav) \
+VCMI_SOUND_NAME(HYPNOTIZ) VCMI_SOUND_FILE(HYPNOTIZ.wav) \
+VCMI_SOUND_NAME(ICELAttack) VCMI_SOUND_FILE(ICELATTK.wav) \
+VCMI_SOUND_NAME(ICELDefend) VCMI_SOUND_FILE(ICELDFND.wav) \
+VCMI_SOUND_NAME(ICELKill) VCMI_SOUND_FILE(ICELKILL.wav) \
+VCMI_SOUND_NAME(ICELMove) VCMI_SOUND_FILE(ICELMOVE.wav) \
+VCMI_SOUND_NAME(ICELShot) VCMI_SOUND_FILE(ICELSHOT.wav) \
+VCMI_SOUND_NAME(ICELWNCE) VCMI_SOUND_FILE(ICELWNCE.wav) \
+VCMI_SOUND_NAME(ICERAYEX) VCMI_SOUND_FILE(ICERAYEX.wav) \
+VCMI_SOUND_NAME(ICERAY) VCMI_SOUND_FILE(ICERAY.wav) \
+VCMI_SOUND_NAME(IGLMAttack) VCMI_SOUND_FILE(IGLMATTK.wav) \
+VCMI_SOUND_NAME(IGLMDefend) VCMI_SOUND_FILE(IGLMDFND.wav) \
+VCMI_SOUND_NAME(IGLMKill) VCMI_SOUND_FILE(IGLMKILL.wav) \
+VCMI_SOUND_NAME(IGLMMove) VCMI_SOUND_FILE(IGLMMOVE.wav) \
+VCMI_SOUND_NAME(IGLMWNCE) VCMI_SOUND_FILE(IGLMWNCE.wav) \
+VCMI_SOUND_NAME(IMPPAttack) VCMI_SOUND_FILE(IMPPATTK.wav) \
+VCMI_SOUND_NAME(IMPPDefend) VCMI_SOUND_FILE(IMPPDFND.wav) \
+VCMI_SOUND_NAME(IMPPKill) VCMI_SOUND_FILE(IMPPKILL.wav) \
+VCMI_SOUND_NAME(IMPPMove) VCMI_SOUND_FILE(IMPPMOVE.wav) \
+VCMI_SOUND_NAME(IMPPWNCE) VCMI_SOUND_FILE(IMPPWNCE.wav) \
+VCMI_SOUND_NAME(ITRGAttack) VCMI_SOUND_FILE(ITRGATTK.wav) \
+VCMI_SOUND_NAME(ITRGDefend) VCMI_SOUND_FILE(ITRGDFND.wav) \
+VCMI_SOUND_NAME(ITRGKill) VCMI_SOUND_FILE(ITRGKILL.wav) \
+VCMI_SOUND_NAME(ITRGMove) VCMI_SOUND_FILE(ITRGMOVE.wav) \
+VCMI_SOUND_NAME(ITRGWNCE) VCMI_SOUND_FILE(ITRGWNCE.wav) \
+VCMI_SOUND_NAME(KEEPShot) VCMI_SOUND_FILE(KEEPSHOT.wav) \
+VCMI_SOUND_NAME(KillFADE) VCMI_SOUND_FILE(KILLFADE.wav) \
+VCMI_SOUND_NAME(LANDKill) VCMI_SOUND_FILE(LANDKILL.wav) \
+VCMI_SOUND_NAME(LANDMINE) VCMI_SOUND_FILE(LANDMINE.wav) \
+VCMI_SOUND_NAME(LCRSAttack) VCMI_SOUND_FILE(LCRSATTK.wav) \
+VCMI_SOUND_NAME(LCRSDefend) VCMI_SOUND_FILE(LCRSDFND.wav) \
+VCMI_SOUND_NAME(LCRSKill) VCMI_SOUND_FILE(LCRSKILL.wav) \
+VCMI_SOUND_NAME(LCRSMove) VCMI_SOUND_FILE(LCRSMOVE.wav) \
+VCMI_SOUND_NAME(LCRSShot) VCMI_SOUND_FILE(LCRSSHOT.wav) \
+VCMI_SOUND_NAME(LCRSWNCE) VCMI_SOUND_FILE(LCRSWNCE.wav) \
+VCMI_SOUND_NAME(LICHATK2) VCMI_SOUND_FILE(LICHATK2.wav) \
+VCMI_SOUND_NAME(LICHAttack) VCMI_SOUND_FILE(LICHATTK.wav) \
+VCMI_SOUND_NAME(LICHDefend) VCMI_SOUND_FILE(LICHDFND.wav) \
+VCMI_SOUND_NAME(LICHKill) VCMI_SOUND_FILE(LICHKILL.wav) \
+VCMI_SOUND_NAME(LICHMove) VCMI_SOUND_FILE(LICHMOVE.wav) \
+VCMI_SOUND_NAME(LICHShot) VCMI_SOUND_FILE(LICHSHOT.wav) \
+VCMI_SOUND_NAME(LICHWNCE) VCMI_SOUND_FILE(LICHWNCE.wav) \
+VCMI_SOUND_NAME(LIGHTBLT) VCMI_SOUND_FILE(LIGHTBLT.wav) \
+VCMI_SOUND_NAME(LIGHTHOUSE) VCMI_SOUND_FILE(LIGHTHOUSE.wav) \
+VCMI_SOUND_NAME(LOOPAIR) VCMI_SOUND_FILE(LOOPAIR.wav) \
+VCMI_SOUND_NAME(LOOPANIM) VCMI_SOUND_FILE(LOOPANIM.wav) \
+VCMI_SOUND_NAME(LOOPARCH) VCMI_SOUND_FILE(LOOPARCH.wav) \
+VCMI_SOUND_NAME(LOOPAREN) VCMI_SOUND_FILE(LOOPAREN.wav) \
+VCMI_SOUND_NAME(LOOPBEHE) VCMI_SOUND_FILE(LOOPBEHE.wav) \
+VCMI_SOUND_NAME(LOOPBIRD) VCMI_SOUND_FILE(LOOPBIRD.wav) \
+VCMI_SOUND_NAME(LOOPBUOY) VCMI_SOUND_FILE(LOOPBUOY.wav) \
+VCMI_SOUND_NAME(LOOPCAMP) VCMI_SOUND_FILE(LOOPCAMP.wav) \
+VCMI_SOUND_NAME(LOOPCAVE) VCMI_SOUND_FILE(LOOPCAVE.wav) \
+VCMI_SOUND_NAME(LOOPCRYS) VCMI_SOUND_FILE(LOOPCRYS.wav) \
+VCMI_SOUND_NAME(LOOPCURS) VCMI_SOUND_FILE(LOOPCURS.wav) \
+VCMI_SOUND_NAME(LOOPDEAD) VCMI_SOUND_FILE(LOOPDEAD.wav) \
+VCMI_SOUND_NAME(LOOPDEN) VCMI_SOUND_FILE(LOOPDEN.wav) \
+VCMI_SOUND_NAME(LOOPDEVL) VCMI_SOUND_FILE(LOOPDEVL.wav) \
+VCMI_SOUND_NAME(LOOPDOG) VCMI_SOUND_FILE(LOOPDOG.wav) \
+VCMI_SOUND_NAME(LOOPDRAG) VCMI_SOUND_FILE(LOOPDRAG.wav) \
+VCMI_SOUND_NAME(LOOPDWAR) VCMI_SOUND_FILE(LOOPDWAR.wav) \
+VCMI_SOUND_NAME(LOOPEART) VCMI_SOUND_FILE(LOOPEART.wav) \
+VCMI_SOUND_NAME(LOOPELF) VCMI_SOUND_FILE(LOOPELF.wav) \
+VCMI_SOUND_NAME(LOOPFACT) VCMI_SOUND_FILE(LOOPFACT.wav) \
+VCMI_SOUND_NAME(LOOPFAER) VCMI_SOUND_FILE(LOOPFAER.wav) \
+VCMI_SOUND_NAME(LOOPFALL) VCMI_SOUND_FILE(LOOPFALL.wav) \
+VCMI_SOUND_NAME(LOOPFIRE) VCMI_SOUND_FILE(LOOPFIRE.wav) \
+VCMI_SOUND_NAME(LOOPFLAG) VCMI_SOUND_FILE(LOOPFLAG.wav) \
+VCMI_SOUND_NAME(LOOPFOUN) VCMI_SOUND_FILE(LOOPFOUN.wav) \
+VCMI_SOUND_NAME(LOOPGARD) VCMI_SOUND_FILE(LOOPGARD.wav) \
+VCMI_SOUND_NAME(LOOPGATE) VCMI_SOUND_FILE(LOOPGATE.wav) \
+VCMI_SOUND_NAME(LOOPGEMP) VCMI_SOUND_FILE(LOOPGEMP.wav) \
+VCMI_SOUND_NAME(LOOPGOBL) VCMI_SOUND_FILE(LOOPGOBL.wav) \
+VCMI_SOUND_NAME(LOOPGREM) VCMI_SOUND_FILE(LOOPGREM.wav) \
+VCMI_SOUND_NAME(LOOPGRIF) VCMI_SOUND_FILE(LOOPGRIF.wav) \
+VCMI_SOUND_NAME(LOOPHARP) VCMI_SOUND_FILE(LOOPHARP.wav) \
+VCMI_SOUND_NAME(LOOPHORS) VCMI_SOUND_FILE(LOOPHORS.wav) \
+VCMI_SOUND_NAME(LOOPHYDR) VCMI_SOUND_FILE(LOOPHYDR.wav) \
+VCMI_SOUND_NAME(LOOPLEAR) VCMI_SOUND_FILE(LOOPLEAR.wav) \
+VCMI_SOUND_NAME(LOOPLEPR) VCMI_SOUND_FILE(LOOPLEPR.wav) \
+VCMI_SOUND_NAME(LOOPLUMB) VCMI_SOUND_FILE(LOOPLUMB.wav) \
+VCMI_SOUND_NAME(LOOPMAGI) VCMI_SOUND_FILE(LOOPMAGI.wav) \
+VCMI_SOUND_NAME(LOOPMANT) VCMI_SOUND_FILE(LOOPMANT.wav) \
+VCMI_SOUND_NAME(LOOPMARK) VCMI_SOUND_FILE(LOOPMARK.wav) \
+VCMI_SOUND_NAME(LOOPMEDU) VCMI_SOUND_FILE(LOOPMEDU.wav) \
+VCMI_SOUND_NAME(LOOPMERC) VCMI_SOUND_FILE(LOOPMERC.wav) \
+VCMI_SOUND_NAME(LOOPMILL) VCMI_SOUND_FILE(LOOPMILL.wav) \
+VCMI_SOUND_NAME(LOOPMINE) VCMI_SOUND_FILE(LOOPMINE.wav) \
+VCMI_SOUND_NAME(LOOPMON1) VCMI_SOUND_FILE(LOOPMON1.wav) \
+VCMI_SOUND_NAME(LOOPMON2) VCMI_SOUND_FILE(LOOPMON2.wav) \
+VCMI_SOUND_NAME(LOOPMONK) VCMI_SOUND_FILE(LOOPMONK.wav) \
+VCMI_SOUND_NAME(LOOPMONS) VCMI_SOUND_FILE(LOOPMONS.wav) \
+VCMI_SOUND_NAME(LOOPNAGA) VCMI_SOUND_FILE(LOOPNAGA.wav) \
+VCMI_SOUND_NAME(LOOPOCEA) VCMI_SOUND_FILE(LOOPOCEA.wav) \
+VCMI_SOUND_NAME(LOOPOGRE) VCMI_SOUND_FILE(LOOPOGRE.wav) \
+VCMI_SOUND_NAME(LOOPORC) VCMI_SOUND_FILE(LOOPORC.wav) \
+VCMI_SOUND_NAME(LOOPPEGA) VCMI_SOUND_FILE(LOOPPEGA.wav) \
+VCMI_SOUND_NAME(LOOPPIKE) VCMI_SOUND_FILE(LOOPPIKE.wav) \
+VCMI_SOUND_NAME(LOOPSANC) VCMI_SOUND_FILE(LOOPSANC.wav) \
+VCMI_SOUND_NAME(LOOPSHRIN) VCMI_SOUND_FILE(LOOPSHRIN.wav) \
+VCMI_SOUND_NAME(LOOPSIRE) VCMI_SOUND_FILE(LOOPSIRE.wav) \
+VCMI_SOUND_NAME(LOOPSKEL) VCMI_SOUND_FILE(LOOPSKEL.wav) \
+VCMI_SOUND_NAME(LOOPSTAR) VCMI_SOUND_FILE(LOOPSTAR.wav) \
+VCMI_SOUND_NAME(LOOPSULF) VCMI_SOUND_FILE(LOOPSULF.wav) \
+VCMI_SOUND_NAME(LOOPSWAR) VCMI_SOUND_FILE(LOOPSWAR.wav) \
+VCMI_SOUND_NAME(LOOPSWOR) VCMI_SOUND_FILE(LOOPSWOR.wav) \
+VCMI_SOUND_NAME(LOOPTAV) VCMI_SOUND_FILE(LOOPTAV.wav) \
+VCMI_SOUND_NAME(LOOPTITA) VCMI_SOUND_FILE(LOOPTITA.wav) \
+VCMI_SOUND_NAME(LOOPUNIC) VCMI_SOUND_FILE(LOOPUNIC.wav) \
+VCMI_SOUND_NAME(LOOPVENT) VCMI_SOUND_FILE(LOOPVENT.wav) \
+VCMI_SOUND_NAME(LOOPVOLC) VCMI_SOUND_FILE(LOOPVOLC.wav) \
+VCMI_SOUND_NAME(LOOPWHIR) VCMI_SOUND_FILE(LOOPWHIR.wav) \
+VCMI_SOUND_NAME(LOOPWIND) VCMI_SOUND_FILE(LOOPWIND.wav) \
+VCMI_SOUND_NAME(LOOPWOLF) VCMI_SOUND_FILE(LOOPWOLF.wav) \
+VCMI_SOUND_NAME(LTITAttack) VCMI_SOUND_FILE(LTITATTK.wav) \
+VCMI_SOUND_NAME(LTITDefend) VCMI_SOUND_FILE(LTITDFND.wav) \
+VCMI_SOUND_NAME(LTITKill) VCMI_SOUND_FILE(LTITKILL.wav) \
+VCMI_SOUND_NAME(LTITMove) VCMI_SOUND_FILE(LTITMOVE.wav) \
+VCMI_SOUND_NAME(LTITWNCE) VCMI_SOUND_FILE(LTITWNCE.wav) \
+VCMI_SOUND_NAME(LUCK) VCMI_SOUND_FILE(LUCK.wav) \
+VCMI_SOUND_NAME(MAGCAROW) VCMI_SOUND_FILE(MAGCAROW.wav) \
+VCMI_SOUND_NAME(MAGCHDRN) VCMI_SOUND_FILE(MAGCHDRN.wav) \
+VCMI_SOUND_NAME(MAGCHFIL) VCMI_SOUND_FILE(MAGCHFIL.wav) \
+VCMI_SOUND_NAME(MAGEAttack) VCMI_SOUND_FILE(MAGEATTK.wav) \
+VCMI_SOUND_NAME(MAGEDefend) VCMI_SOUND_FILE(MAGEDFND.wav) \
+VCMI_SOUND_NAME(MAGEKill) VCMI_SOUND_FILE(MAGEKILL.wav) \
+VCMI_SOUND_NAME(MAGEMove) VCMI_SOUND_FILE(MAGEMOVE.wav) \
+VCMI_SOUND_NAME(MAGEShot) VCMI_SOUND_FILE(MAGESHOT.wav) \
+VCMI_SOUND_NAME(MAGEWNCE) VCMI_SOUND_FILE(MAGEWNCE.wav) \
+VCMI_SOUND_NAME(MAGICBLT) VCMI_SOUND_FILE(MAGICBLT.wav) \
+VCMI_SOUND_NAME(MAGICRES) VCMI_SOUND_FILE(MAGICRES.wav) \
+VCMI_SOUND_NAME(MAGMAttack) VCMI_SOUND_FILE(MAGMATTK.wav) \
+VCMI_SOUND_NAME(MAGMDefend) VCMI_SOUND_FILE(MAGMDFND.wav) \
+VCMI_SOUND_NAME(MAGMKill) VCMI_SOUND_FILE(MAGMKILL.wav) \
+VCMI_SOUND_NAME(MAGMMove) VCMI_SOUND_FILE(MAGMMOVE.wav) \
+VCMI_SOUND_NAME(MAGMWNCE) VCMI_SOUND_FILE(MAGMWNCE.wav) \
+VCMI_SOUND_NAME(MANADRAI) VCMI_SOUND_FILE(MANADRAI.wav) \
+VCMI_SOUND_NAME(MANTAttack) VCMI_SOUND_FILE(MANTATTK.wav) \
+VCMI_SOUND_NAME(MANTDefend) VCMI_SOUND_FILE(MANTDFND.wav) \
+VCMI_SOUND_NAME(MANTKill) VCMI_SOUND_FILE(MANTKILL.wav) \
+VCMI_SOUND_NAME(MANTMove) VCMI_SOUND_FILE(MANTMOVE.wav) \
+VCMI_SOUND_NAME(MANTShot) VCMI_SOUND_FILE(MANTSHOT.wav) \
+VCMI_SOUND_NAME(MANTWNCE) VCMI_SOUND_FILE(MANTWNCE.wav) \
+VCMI_SOUND_NAME(MEDQAttack) VCMI_SOUND_FILE(MEDQATTK.wav) \
+VCMI_SOUND_NAME(MEDQDefend) VCMI_SOUND_FILE(MEDQDFND.wav) \
+VCMI_SOUND_NAME(MEDQKill) VCMI_SOUND_FILE(MEDQKILL.wav) \
+VCMI_SOUND_NAME(MEDQMove) VCMI_SOUND_FILE(MEDQMOVE.wav) \
+VCMI_SOUND_NAME(MEDQShot) VCMI_SOUND_FILE(MEDQSHOT.wav) \
+VCMI_SOUND_NAME(MEDQWNCE) VCMI_SOUND_FILE(MEDQWNCE.wav) \
+VCMI_SOUND_NAME(MEDUAttack) VCMI_SOUND_FILE(MEDUATTK.wav) \
+VCMI_SOUND_NAME(MEDUDefend) VCMI_SOUND_FILE(MEDUDFND.wav) \
+VCMI_SOUND_NAME(MEDUKill) VCMI_SOUND_FILE(MEDUKILL.wav) \
+VCMI_SOUND_NAME(MEDUMove) VCMI_SOUND_FILE(MEDUMOVE.wav) \
+VCMI_SOUND_NAME(MEDUShot) VCMI_SOUND_FILE(MEDUSHOT.wav) \
+VCMI_SOUND_NAME(MEDUWNCE) VCMI_SOUND_FILE(MEDUWNCE.wav) \
+VCMI_SOUND_NAME(METEOR) VCMI_SOUND_FILE(METEOR.wav) \
+VCMI_SOUND_NAME(MGELAttack) VCMI_SOUND_FILE(MGELATTK.wav) \
+VCMI_SOUND_NAME(MGELDefend) VCMI_SOUND_FILE(MGELDFND.wav) \
+VCMI_SOUND_NAME(MGELKill) VCMI_SOUND_FILE(MGELKILL.wav) \
+VCMI_SOUND_NAME(MGELMove) VCMI_SOUND_FILE(MGELMOVE.wav) \
+VCMI_SOUND_NAME(MGELWNCE) VCMI_SOUND_FILE(MGELWNCE.wav) \
+VCMI_SOUND_NAME(MGOGAttack) VCMI_SOUND_FILE(MGOGATTK.wav) \
+VCMI_SOUND_NAME(MGOGDefend) VCMI_SOUND_FILE(MGOGDFND.wav) \
+VCMI_SOUND_NAME(MGOGKill) VCMI_SOUND_FILE(MGOGKILL.wav) \
+VCMI_SOUND_NAME(MGOGMove) VCMI_SOUND_FILE(MGOGMOVE.wav) \
+VCMI_SOUND_NAME(MGOGShot) VCMI_SOUND_FILE(MGOGSHOT.wav) \
+VCMI_SOUND_NAME(MGOGWNCE) VCMI_SOUND_FILE(MGOGWNCE.wav) \
+VCMI_SOUND_NAME(MGRMAttack) VCMI_SOUND_FILE(MGRMATTK.wav) \
+VCMI_SOUND_NAME(MGRMDefend) VCMI_SOUND_FILE(MGRMDFND.wav) \
+VCMI_SOUND_NAME(MGRMKill) VCMI_SOUND_FILE(MGRMKILL.wav) \
+VCMI_SOUND_NAME(MGRMMove) VCMI_SOUND_FILE(MGRMMOVE.wav) \
+VCMI_SOUND_NAME(MGRMShot) VCMI_SOUND_FILE(MGRMSHOT.wav) \
+VCMI_SOUND_NAME(MGRMWNCE) VCMI_SOUND_FILE(MGRMWNCE.wav) \
+VCMI_SOUND_NAME(MILITARY) VCMI_SOUND_FILE(MILITARY.wav) \
+VCMI_SOUND_NAME(MINKAttack) VCMI_SOUND_FILE(MINKATTK.wav) \
+VCMI_SOUND_NAME(MINKDefend) VCMI_SOUND_FILE(MINKDFND.wav) \
+VCMI_SOUND_NAME(MINKKill) VCMI_SOUND_FILE(MINKKILL.wav) \
+VCMI_SOUND_NAME(MINKMove) VCMI_SOUND_FILE(MINKMOVE.wav) \
+VCMI_SOUND_NAME(MINKShot) VCMI_SOUND_FILE(MINKSHOT.wav) \
+VCMI_SOUND_NAME(MINKWNCE) VCMI_SOUND_FILE(MINKWNCE.wav) \
+VCMI_SOUND_NAME(MINOAttack) VCMI_SOUND_FILE(MINOATTK.wav) \
+VCMI_SOUND_NAME(MINODefend) VCMI_SOUND_FILE(MINODFND.wav) \
+VCMI_SOUND_NAME(MINOKill) VCMI_SOUND_FILE(MINOKILL.wav) \
+VCMI_SOUND_NAME(MINOMove) VCMI_SOUND_FILE(MINOMOVE.wav) \
+VCMI_SOUND_NAME(MINOWNCE) VCMI_SOUND_FILE(MINOWNCE.wav) \
+VCMI_SOUND_NAME(MIRRORIM) VCMI_SOUND_FILE(MIRRORIM.wav) \
+VCMI_SOUND_NAME(MIRTH) VCMI_SOUND_FILE(MIRTH.wav) \
+VCMI_SOUND_NAME(MISFORT) VCMI_SOUND_FILE(MISFORT.wav) \
+VCMI_SOUND_NAME(MNRDEATH) VCMI_SOUND_FILE(MNRDEATH.wav) \
+VCMI_SOUND_NAME(monkAttack) VCMI_SOUND_FILE(MONKATTK.wav) \
+VCMI_SOUND_NAME(monkDefend) VCMI_SOUND_FILE(MONKDFND.wav) \
+VCMI_SOUND_NAME(monkKill) VCMI_SOUND_FILE(MONKKILL.wav) \
+VCMI_SOUND_NAME(monkMove) VCMI_SOUND_FILE(MONKMOVE.wav) \
+VCMI_SOUND_NAME(monkShot) VCMI_SOUND_FILE(MONKSHOT.wav) \
+VCMI_SOUND_NAME(monkWNCE) VCMI_SOUND_FILE(MONKWNCE.wav) \
+VCMI_SOUND_NAME(MORALE) VCMI_SOUND_FILE(MORALE.wav) \
+VCMI_SOUND_NAME(MUCKMIRE) VCMI_SOUND_FILE(MUCKMIRE.wav) \
+VCMI_SOUND_NAME(MUMYAttack) VCMI_SOUND_FILE(MUMYATTK.wav) \
+VCMI_SOUND_NAME(MUMYDefend) VCMI_SOUND_FILE(MUMYDFND.wav) \
+VCMI_SOUND_NAME(MUMYKill) VCMI_SOUND_FILE(MUMYKILL.wav) \
+VCMI_SOUND_NAME(MUMYMove) VCMI_SOUND_FILE(MUMYMOVE.wav) \
+VCMI_SOUND_NAME(MUMYWNCE) VCMI_SOUND_FILE(MUMYWNCE.wav) \
+VCMI_SOUND_NAME(MYSTERY) VCMI_SOUND_FILE(MYSTERY.wav) \
+VCMI_SOUND_NAME(newDay) VCMI_SOUND_FILE(NEWDAY.wav) \
+VCMI_SOUND_NAME(newMonth) VCMI_SOUND_FILE(NEWMONTH.wav) \
+VCMI_SOUND_NAME(newWeek) VCMI_SOUND_FILE(NEWWEEK.wav) \
+VCMI_SOUND_NAME(NGRDAttack) VCMI_SOUND_FILE(NGRDATTK.wav) \
+VCMI_SOUND_NAME(NGRDDefend) VCMI_SOUND_FILE(NGRDDFND.wav) \
+VCMI_SOUND_NAME(NGRDKill) VCMI_SOUND_FILE(NGRDKILL.wav) \
+VCMI_SOUND_NAME(NGRDMove) VCMI_SOUND_FILE(NGRDMOVE.wav) \
+VCMI_SOUND_NAME(NGRDWNCE) VCMI_SOUND_FILE(NGRDWNCE.wav) \
+VCMI_SOUND_NAME(NMADAttack) VCMI_SOUND_FILE(NMADATTK.wav) \
+VCMI_SOUND_NAME(NMADDefend) VCMI_SOUND_FILE(NMADDFND.wav) \
+VCMI_SOUND_NAME(NMADKill) VCMI_SOUND_FILE(NMADKILL.wav) \
+VCMI_SOUND_NAME(NMADMove) VCMI_SOUND_FILE(NMADMOVE.wav) \
+VCMI_SOUND_NAME(NMADWNCE) VCMI_SOUND_FILE(NMADWNCE.wav) \
+VCMI_SOUND_NAME(NOMAD) VCMI_SOUND_FILE(NOMAD.wav) \
+VCMI_SOUND_NAME(NOSFAttack) VCMI_SOUND_FILE(NOSFATTK.wav) \
+VCMI_SOUND_NAME(NOSFDefend) VCMI_SOUND_FILE(NOSFDFND.wav) \
+VCMI_SOUND_NAME(NOSFEXT1) VCMI_SOUND_FILE(NOSFEXT1.wav) \
+VCMI_SOUND_NAME(NOSFEXT2) VCMI_SOUND_FILE(NOSFEXT2.wav) \
+VCMI_SOUND_NAME(NOSFKill) VCMI_SOUND_FILE(NOSFKILL.wav) \
+VCMI_SOUND_NAME(NOSFMove) VCMI_SOUND_FILE(NOSFMOVE.wav) \
+VCMI_SOUND_NAME(NOSFShot) VCMI_SOUND_FILE(NOSFSHOT.wav) \
+VCMI_SOUND_NAME(NOSFWNCE) VCMI_SOUND_FILE(NOSFWNCE.wav) \
+VCMI_SOUND_NAME(NSENAttack) VCMI_SOUND_FILE(NSENATTK.wav) \
+VCMI_SOUND_NAME(NSENDefend) VCMI_SOUND_FILE(NSENDFND.wav) \
+VCMI_SOUND_NAME(NSENKill) VCMI_SOUND_FILE(NSENKILL.wav) \
+VCMI_SOUND_NAME(NSENMove) VCMI_SOUND_FILE(NSENMOVE.wav) \
+VCMI_SOUND_NAME(NSENWNCE) VCMI_SOUND_FILE(NSENWNCE.wav) \
+VCMI_SOUND_NAME(heroNewLevel) VCMI_SOUND_FILE(NWHEROLV.wav) \
+VCMI_SOUND_NAME(OBELISK) VCMI_SOUND_FILE(OBELISK.wav) \
+VCMI_SOUND_NAME(OGREAttack) VCMI_SOUND_FILE(OGREATTK.wav) \
+VCMI_SOUND_NAME(OGREDefend) VCMI_SOUND_FILE(OGREDFND.wav) \
+VCMI_SOUND_NAME(OGREKill) VCMI_SOUND_FILE(OGREKILL.wav) \
+VCMI_SOUND_NAME(OGREMove) VCMI_SOUND_FILE(OGREMOVE.wav) \
+VCMI_SOUND_NAME(OGREWNCE) VCMI_SOUND_FILE(OGREWNCE.wav) \
+VCMI_SOUND_NAME(OGRGAttack) VCMI_SOUND_FILE(OGRGATTK.wav) \
+VCMI_SOUND_NAME(OGRGDefend) VCMI_SOUND_FILE(OGRGDFND.wav) \
+VCMI_SOUND_NAME(OGRGKill) VCMI_SOUND_FILE(OGRGKILL.wav) \
+VCMI_SOUND_NAME(OGRGMove) VCMI_SOUND_FILE(OGRGMOVE.wav) \
+VCMI_SOUND_NAME(OGRGWNCE) VCMI_SOUND_FILE(OGRGWNCE.wav) \
+VCMI_SOUND_NAME(OGRMAttack) VCMI_SOUND_FILE(OGRMATTK.wav) \
+VCMI_SOUND_NAME(OGRMDefend) VCMI_SOUND_FILE(OGRMDFND.wav) \
+VCMI_SOUND_NAME(OGRMKill) VCMI_SOUND_FILE(OGRMKILL.wav) \
+VCMI_SOUND_NAME(OGRMMove) VCMI_SOUND_FILE(OGRMMOVE.wav) \
+VCMI_SOUND_NAME(OGRMShot) VCMI_SOUND_FILE(OGRMSHOT.wav) \
+VCMI_SOUND_NAME(OGRMWNCE) VCMI_SOUND_FILE(OGRMWNCE.wav) \
+VCMI_SOUND_NAME(OORCAttack) VCMI_SOUND_FILE(OORCATTK.wav) \
+VCMI_SOUND_NAME(OORCDefend) VCMI_SOUND_FILE(OORCDFND.wav) \
+VCMI_SOUND_NAME(OORCKill) VCMI_SOUND_FILE(OORCKILL.wav) \
+VCMI_SOUND_NAME(OORCMove) VCMI_SOUND_FILE(OORCMOVE.wav) \
+VCMI_SOUND_NAME(OORCShot) VCMI_SOUND_FILE(OORCSHOT.wav) \
+VCMI_SOUND_NAME(OORCWNCE) VCMI_SOUND_FILE(OORCWNCE.wav) \
+VCMI_SOUND_NAME(ORCCAttack) VCMI_SOUND_FILE(ORCCATTK.wav) \
+VCMI_SOUND_NAME(ORCCDefend) VCMI_SOUND_FILE(ORCCDFND.wav) \
+VCMI_SOUND_NAME(ORCCKill) VCMI_SOUND_FILE(ORCCKILL.wav) \
+VCMI_SOUND_NAME(ORCCMove) VCMI_SOUND_FILE(ORCCMOVE.wav) \
+VCMI_SOUND_NAME(ORCCShot) VCMI_SOUND_FILE(ORCCSHOT.wav) \
+VCMI_SOUND_NAME(ORCCWNCE) VCMI_SOUND_FILE(ORCCWNCE.wav) \
+VCMI_SOUND_NAME(PARALYZE) VCMI_SOUND_FILE(PARALYZE.wav) \
+VCMI_SOUND_NAME(PEGAAttack) VCMI_SOUND_FILE(PEGAATTK.wav) \
+VCMI_SOUND_NAME(PEGADefend) VCMI_SOUND_FILE(PEGADFND.wav) \
+VCMI_SOUND_NAME(PEGAKill) VCMI_SOUND_FILE(PEGAKILL.wav) \
+VCMI_SOUND_NAME(PEGAMove) VCMI_SOUND_FILE(PEGAMOVE.wav) \
+VCMI_SOUND_NAME(PEGAWNCE) VCMI_SOUND_FILE(PEGAWNCE.wav) \
+VCMI_SOUND_NAME(PFNDAttack) VCMI_SOUND_FILE(PFNDATTK.wav) \
+VCMI_SOUND_NAME(PFNDDefend) VCMI_SOUND_FILE(PFNDDFND.wav) \
+VCMI_SOUND_NAME(PFNDKill) VCMI_SOUND_FILE(PFNDKILL.wav) \
+VCMI_SOUND_NAME(PFNDMove) VCMI_SOUND_FILE(PFNDMOVE.wav) \
+VCMI_SOUND_NAME(PFNDWNCE) VCMI_SOUND_FILE(PFNDWNCE.wav) \
+VCMI_SOUND_NAME(PFOEAttack) VCMI_SOUND_FILE(PFOEATTK.wav) \
+VCMI_SOUND_NAME(PFOEDefend) VCMI_SOUND_FILE(PFOEDFND.wav) \
+VCMI_SOUND_NAME(PFOEKill) VCMI_SOUND_FILE(PFOEKILL.wav) \
+VCMI_SOUND_NAME(PFOEMove) VCMI_SOUND_FILE(PFOEMOVE.wav) \
+VCMI_SOUND_NAME(PFOEWNCE) VCMI_SOUND_FILE(PFOEWNCE.wav) \
+VCMI_SOUND_NAME(PHOEAttack) VCMI_SOUND_FILE(PHOEATTK.wav) \
+VCMI_SOUND_NAME(PHOEDefend) VCMI_SOUND_FILE(PHOEDFND.wav) \
+VCMI_SOUND_NAME(PHOEKill) VCMI_SOUND_FILE(PHOEKILL.wav) \
+VCMI_SOUND_NAME(PHOEMove) VCMI_SOUND_FILE(PHOEMOVE.wav) \
+VCMI_SOUND_NAME(PHOEWNCE) VCMI_SOUND_FILE(PHOEWNCE.wav) \
+VCMI_SOUND_NAME(pickup01) VCMI_SOUND_FILE(PICKUP01.wav) \
+VCMI_SOUND_NAME(pickup02) VCMI_SOUND_FILE(PICKUP02.wav) \
+VCMI_SOUND_NAME(pickup03) VCMI_SOUND_FILE(PICKUP03.wav) \
+VCMI_SOUND_NAME(pickup04) VCMI_SOUND_FILE(PICKUP04.wav) \
+VCMI_SOUND_NAME(pickup05) VCMI_SOUND_FILE(PICKUP05.wav) \
+VCMI_SOUND_NAME(pickup06) VCMI_SOUND_FILE(PICKUP06.wav) \
+VCMI_SOUND_NAME(pickup07) VCMI_SOUND_FILE(PICKUP07.wav) \
+VCMI_SOUND_NAME(pikemanAttack) VCMI_SOUND_FILE(PIKEATTK.wav) \
+VCMI_SOUND_NAME(pikemanDefend) VCMI_SOUND_FILE(PIKEDFND.wav) \
+VCMI_SOUND_NAME(pikemanKill) VCMI_SOUND_FILE(PIKEKILL.wav) \
+VCMI_SOUND_NAME(pikemanMove) VCMI_SOUND_FILE(PIKEMOVE.wav) \
+VCMI_SOUND_NAME(pikemanWNCE) VCMI_SOUND_FILE(PIKEWNCE.wav) \
+VCMI_SOUND_NAME(pixieAttack) VCMI_SOUND_FILE(PIXIATTK.wav) \
+VCMI_SOUND_NAME(pixieDefend) VCMI_SOUND_FILE(PIXIDFND.wav) \
+VCMI_SOUND_NAME(pixieKill) VCMI_SOUND_FILE(PIXIKILL.wav) \
+VCMI_SOUND_NAME(pixieMove) VCMI_SOUND_FILE(PIXIMOVE.wav) \
+VCMI_SOUND_NAME(pixieWNCE) VCMI_SOUND_FILE(PIXIWNCE.wav) \
+VCMI_SOUND_NAME(PLAYCOME) VCMI_SOUND_FILE(PLAYCOME.wav) \
+VCMI_SOUND_NAME(PLAYEXIT) VCMI_SOUND_FILE(PLAYEXIT.wav) \
+VCMI_SOUND_NAME(PLAYTURN) VCMI_SOUND_FILE(PLAYTURN.wav) \
+VCMI_SOUND_NAME(PLCHAttack) VCMI_SOUND_FILE(PLCHATTK.wav) \
+VCMI_SOUND_NAME(PLCHDefend) VCMI_SOUND_FILE(PLCHDFND.wav) \
+VCMI_SOUND_NAME(PLCHKill) VCMI_SOUND_FILE(PLCHKILL.wav) \
+VCMI_SOUND_NAME(PLCHMove) VCMI_SOUND_FILE(PLCHMOVE.wav) \
+VCMI_SOUND_NAME(PLCHShot) VCMI_SOUND_FILE(PLCHSHOT.wav) \
+VCMI_SOUND_NAME(PLCHWNCE) VCMI_SOUND_FILE(PLCHWNCE.wav) \
+VCMI_SOUND_NAME(PLIZAttack) VCMI_SOUND_FILE(PLIZATTK.wav) \
+VCMI_SOUND_NAME(PLIZDefend) VCMI_SOUND_FILE(PLIZDFND.wav) \
+VCMI_SOUND_NAME(PLIZKill) VCMI_SOUND_FILE(PLIZKILL.wav) \
+VCMI_SOUND_NAME(PLIZMove) VCMI_SOUND_FILE(PLIZMOVE.wav) \
+VCMI_SOUND_NAME(PLIZShot) VCMI_SOUND_FILE(PLIZSHOT.wav) \
+VCMI_SOUND_NAME(PLIZWNCE) VCMI_SOUND_FILE(PLIZWNCE.wav) \
+VCMI_SOUND_NAME(POISON) VCMI_SOUND_FILE(POISON.wav) \
+VCMI_SOUND_NAME(PRAYER) VCMI_SOUND_FILE(PRAYER.wav) \
+VCMI_SOUND_NAME(PRECISON) VCMI_SOUND_FILE(PRECISON.wav) \
+VCMI_SOUND_NAME(PROTECTA) VCMI_SOUND_FILE(PROTECTA.wav) \
+VCMI_SOUND_NAME(PROTECTE) VCMI_SOUND_FILE(PROTECTE.wav) \
+VCMI_SOUND_NAME(PROTECTF) VCMI_SOUND_FILE(PROTECTF.wav) \
+VCMI_SOUND_NAME(PROTECT) VCMI_SOUND_FILE(PROTECT.wav) \
+VCMI_SOUND_NAME(PROTECTW) VCMI_SOUND_FILE(PROTECTW.wav) \
+VCMI_SOUND_NAME(PSNTAttack) VCMI_SOUND_FILE(PSNTATTK.wav) \
+VCMI_SOUND_NAME(PSNTDefend) VCMI_SOUND_FILE(PSNTDFND.wav) \
+VCMI_SOUND_NAME(PSNTKill) VCMI_SOUND_FILE(PSNTKILL.wav) \
+VCMI_SOUND_NAME(PSNTMove) VCMI_SOUND_FILE(PSNTMOVE.wav) \
+VCMI_SOUND_NAME(PSNTWNCE) VCMI_SOUND_FILE(PSNTWNCE.wav) \
+VCMI_SOUND_NAME(PSYCAttack) VCMI_SOUND_FILE(PSYCATTK.wav) \
+VCMI_SOUND_NAME(PSYCDefend) VCMI_SOUND_FILE(PSYCDFND.wav) \
+VCMI_SOUND_NAME(PSYCKill) VCMI_SOUND_FILE(PSYCKILL.wav) \
+VCMI_SOUND_NAME(PSYCMove) VCMI_SOUND_FILE(PSYCMOVE.wav) \
+VCMI_SOUND_NAME(PSYCWNCE) VCMI_SOUND_FILE(PSYCWNCE.wav) \
+VCMI_SOUND_NAME(QUEST) VCMI_SOUND_FILE(QUEST.wav) \
+VCMI_SOUND_NAME(QUIKSAND) VCMI_SOUND_FILE(QUIKSAND.wav) \
+VCMI_SOUND_NAME(RDDRAttack) VCMI_SOUND_FILE(RDDRATTK.wav) \
+VCMI_SOUND_NAME(RDDRDefend) VCMI_SOUND_FILE(RDDRDFND.wav) \
+VCMI_SOUND_NAME(RDDRKill) VCMI_SOUND_FILE(RDDRKILL.wav) \
+VCMI_SOUND_NAME(RDDRMove) VCMI_SOUND_FILE(RDDRMOVE.wav) \
+VCMI_SOUND_NAME(RDDRWNCE) VCMI_SOUND_FILE(RDDRWNCE.wav) \
+VCMI_SOUND_NAME(REGENER) VCMI_SOUND_FILE(REGENER.wav) \
+VCMI_SOUND_NAME(REMoveOB) VCMI_SOUND_FILE(REMOVEOB.wav) \
+VCMI_SOUND_NAME(RESURECT) VCMI_SOUND_FILE(RESURECT.wav) \
+VCMI_SOUND_NAME(RGRFAttack) VCMI_SOUND_FILE(RGRFATTK.wav) \
+VCMI_SOUND_NAME(RGRFDefend) VCMI_SOUND_FILE(RGRFDFND.wav) \
+VCMI_SOUND_NAME(RGRFKill) VCMI_SOUND_FILE(RGRFKILL.wav) \
+VCMI_SOUND_NAME(RGRFMove) VCMI_SOUND_FILE(RGRFMOVE.wav) \
+VCMI_SOUND_NAME(RGRFWNCE) VCMI_SOUND_FILE(RGRFWNCE.wav) \
+VCMI_SOUND_NAME(ROCCAttack) VCMI_SOUND_FILE(ROCCATTK.wav) \
+VCMI_SOUND_NAME(ROCCDefend) VCMI_SOUND_FILE(ROCCDFND.wav) \
+VCMI_SOUND_NAME(ROCCKill) VCMI_SOUND_FILE(ROCCKILL.wav) \
+VCMI_SOUND_NAME(ROCCMove) VCMI_SOUND_FILE(ROCCMOVE.wav) \
+VCMI_SOUND_NAME(ROCCWNCE) VCMI_SOUND_FILE(ROCCWNCE.wav) \
+VCMI_SOUND_NAME(ROGUAttack) VCMI_SOUND_FILE(ROGUATTK.wav) \
+VCMI_SOUND_NAME(ROGUDefend) VCMI_SOUND_FILE(ROGUDFND.wav) \
+VCMI_SOUND_NAME(ROGUE) VCMI_SOUND_FILE(ROGUE.wav) \
+VCMI_SOUND_NAME(ROGUKill) VCMI_SOUND_FILE(ROGUKILL.wav) \
+VCMI_SOUND_NAME(ROGUMove) VCMI_SOUND_FILE(ROGUMOVE.wav) \
+VCMI_SOUND_NAME(ROGUWNCE) VCMI_SOUND_FILE(ROGUWNCE.wav) \
+VCMI_SOUND_NAME(RSBRYFZL) VCMI_SOUND_FILE(RSBRYFZL.wav) \
+VCMI_SOUND_NAME(RUSTAttack) VCMI_SOUND_FILE(RUSTATTK.wav) \
+VCMI_SOUND_NAME(RUSTDefend) VCMI_SOUND_FILE(RUSTDFND.wav) \
+VCMI_SOUND_NAME(RUSTKill) VCMI_SOUND_FILE(RUSTKILL.wav) \
+VCMI_SOUND_NAME(RUSTMove) VCMI_SOUND_FILE(RUSTMOVE.wav) \
+VCMI_SOUND_NAME(RUSTWNCE) VCMI_SOUND_FILE(RUSTWNCE.wav) \
+VCMI_SOUND_NAME(SACBRETH) VCMI_SOUND_FILE(SACBRETH.wav) \
+VCMI_SOUND_NAME(SACRIF1) VCMI_SOUND_FILE(SACRIF1.wav) \
+VCMI_SOUND_NAME(SACRIF2) VCMI_SOUND_FILE(SACRIF2.wav) \
+VCMI_SOUND_NAME(SCRPAttack) VCMI_SOUND_FILE(SCRPATTK.wav) \
+VCMI_SOUND_NAME(SCRPDefend) VCMI_SOUND_FILE(SCRPDFND.wav) \
+VCMI_SOUND_NAME(SCRPKill) VCMI_SOUND_FILE(SCRPKILL.wav) \
+VCMI_SOUND_NAME(SCRPMove) VCMI_SOUND_FILE(SCRPMOVE.wav) \
+VCMI_SOUND_NAME(SCRPShot) VCMI_SOUND_FILE(SCRPSHOT.wav) \
+VCMI_SOUND_NAME(SCRPWNCE) VCMI_SOUND_FILE(SCRPWNCE.wav) \
+VCMI_SOUND_NAME(SCUTBOAT) VCMI_SOUND_FILE(SCUTBOAT.wav) \
+VCMI_SOUND_NAME(SGLMAttack) VCMI_SOUND_FILE(SGLMATTK.wav) \
+VCMI_SOUND_NAME(SGLMDefend) VCMI_SOUND_FILE(SGLMDFND.wav) \
+VCMI_SOUND_NAME(SGLMKill) VCMI_SOUND_FILE(SGLMKILL.wav) \
+VCMI_SOUND_NAME(SGLMMove) VCMI_SOUND_FILE(SGLMMOVE.wav) \
+VCMI_SOUND_NAME(SGLMWNCE) VCMI_SOUND_FILE(SGLMWNCE.wav) \
+VCMI_SOUND_NAME(SGRGAttack) VCMI_SOUND_FILE(SGRGATTK.wav) \
+VCMI_SOUND_NAME(SGRGDefend) VCMI_SOUND_FILE(SGRGDFND.wav) \
+VCMI_SOUND_NAME(SGRGKill) VCMI_SOUND_FILE(SGRGKILL.wav) \
+VCMI_SOUND_NAME(SGRGMove) VCMI_SOUND_FILE(SGRGMOVE.wav) \
+VCMI_SOUND_NAME(SGRGWNCE) VCMI_SOUND_FILE(SGRGWNCE.wav) \
+VCMI_SOUND_NAME(SHDMAttack) VCMI_SOUND_FILE(SHDMATTK.wav) \
+VCMI_SOUND_NAME(SHDMDefend) VCMI_SOUND_FILE(SHDMDFND.wav) \
+VCMI_SOUND_NAME(SHDMKill) VCMI_SOUND_FILE(SHDMKILL.wav) \
+VCMI_SOUND_NAME(SHDMMove) VCMI_SOUND_FILE(SHDMMOVE.wav) \
+VCMI_SOUND_NAME(SHDMWNCE) VCMI_SOUND_FILE(SHDMWNCE.wav) \
+VCMI_SOUND_NAME(SHIELD) VCMI_SOUND_FILE(SHIELD.wav) \
+VCMI_SOUND_NAME(SKELAttack) VCMI_SOUND_FILE(SKELATTK.wav) \
+VCMI_SOUND_NAME(SKELDefend) VCMI_SOUND_FILE(SKELDFND.wav) \
+VCMI_SOUND_NAME(SKELKill) VCMI_SOUND_FILE(SKELKILL.wav) \
+VCMI_SOUND_NAME(SKELMove) VCMI_SOUND_FILE(SKELMOVE.wav) \
+VCMI_SOUND_NAME(SKELWNCE) VCMI_SOUND_FILE(SKELWNCE.wav) \
+VCMI_SOUND_NAME(SKLWAttack) VCMI_SOUND_FILE(SKLWATTK.wav) \
+VCMI_SOUND_NAME(SKLWDefend) VCMI_SOUND_FILE(SKLWDFND.wav) \
+VCMI_SOUND_NAME(SKLWKill) VCMI_SOUND_FILE(SKLWKILL.wav) \
+VCMI_SOUND_NAME(SKLWMove) VCMI_SOUND_FILE(SKLWMOVE.wav) \
+VCMI_SOUND_NAME(SKLWWNCE) VCMI_SOUND_FILE(SKLWWNCE.wav) \
+VCMI_SOUND_NAME(SLAYER) VCMI_SOUND_FILE(SLAYER.wav) \
+VCMI_SOUND_NAME(SORROW) VCMI_SOUND_FILE(SORROW.wav) \
+VCMI_SOUND_NAME(SPONTCOMB) VCMI_SOUND_FILE(SPONTCOMB.wav) \
+VCMI_SOUND_NAME(SPRTAttack) VCMI_SOUND_FILE(SPRTATTK.wav) \
+VCMI_SOUND_NAME(SPRTDefend) VCMI_SOUND_FILE(SPRTDFND.wav) \
+VCMI_SOUND_NAME(SPRTKill) VCMI_SOUND_FILE(SPRTKILL.wav) \
+VCMI_SOUND_NAME(SPRTMove) VCMI_SOUND_FILE(SPRTMOVE.wav) \
+VCMI_SOUND_NAME(SPRTWNCE) VCMI_SOUND_FILE(SPRTWNCE.wav) \
+VCMI_SOUND_NAME(STORAttack) VCMI_SOUND_FILE(STORATTK.wav) \
+VCMI_SOUND_NAME(STORDefend) VCMI_SOUND_FILE(STORDFND.wav) \
+VCMI_SOUND_NAME(STORE) VCMI_SOUND_FILE(STORE.wav) \
+VCMI_SOUND_NAME(STORKill) VCMI_SOUND_FILE(STORKILL.wav) \
+VCMI_SOUND_NAME(STORMove) VCMI_SOUND_FILE(STORMOVE.wav) \
+VCMI_SOUND_NAME(STORM) VCMI_SOUND_FILE(STORM.wav) \
+VCMI_SOUND_NAME(STORShot) VCMI_SOUND_FILE(STORSHOT.wav) \
+VCMI_SOUND_NAME(STORWNCE) VCMI_SOUND_FILE(STORWNCE.wav) \
+VCMI_SOUND_NAME(SUMMBOAT) VCMI_SOUND_FILE(SUMMBOAT.wav) \
+VCMI_SOUND_NAME(SUMNELM) VCMI_SOUND_FILE(SUMNELM.wav) \
+VCMI_SOUND_NAME(SWRDAttack) VCMI_SOUND_FILE(SWRDATTK.wav) \
+VCMI_SOUND_NAME(SWRDDefend) VCMI_SOUND_FILE(SWRDDFND.wav) \
+VCMI_SOUND_NAME(SWRDKill) VCMI_SOUND_FILE(SWRDKILL.wav) \
+VCMI_SOUND_NAME(SWRDMove) VCMI_SOUND_FILE(SWRDMOVE.wav) \
+VCMI_SOUND_NAME(SWRDWNCE) VCMI_SOUND_FILE(SWRDWNCE.wav) \
+VCMI_SOUND_NAME(SYSMSG) VCMI_SOUND_FILE(SYSMSG.wav) \
+VCMI_SOUND_NAME(TAILWIND) VCMI_SOUND_FILE(TAILWIND.wav) \
+VCMI_SOUND_NAME(TBRDAttack) VCMI_SOUND_FILE(TBRDATTK.wav) \
+VCMI_SOUND_NAME(TBRDDefend) VCMI_SOUND_FILE(TBRDDFND.wav) \
+VCMI_SOUND_NAME(TBRDKill) VCMI_SOUND_FILE(TBRDKILL.wav) \
+VCMI_SOUND_NAME(TBRDMove) VCMI_SOUND_FILE(TBRDMOVE.wav) \
+VCMI_SOUND_NAME(TBRDWNCE) VCMI_SOUND_FILE(TBRDWNCE.wav) \
+VCMI_SOUND_NAME(TELEIN) VCMI_SOUND_FILE(TELEIN.wav) \
+VCMI_SOUND_NAME(TELPTIN) VCMI_SOUND_FILE(TELPTIN.wav) \
+VCMI_SOUND_NAME(TELPTOUT) VCMI_SOUND_FILE(TELPTOUT.wav) \
+VCMI_SOUND_NAME(temple) VCMI_SOUND_FILE(TEMPLE.wav) \
+VCMI_SOUND_NAME(timeOver) VCMI_SOUND_FILE(TIMEOVER.wav) \
+VCMI_SOUND_NAME(treasure) VCMI_SOUND_FILE(TREASURE.wav) \
+VCMI_SOUND_NAME(TREEAttack) VCMI_SOUND_FILE(TREEATTK.wav) \
+VCMI_SOUND_NAME(TREEDefend) VCMI_SOUND_FILE(TREEDFND.wav) \
+VCMI_SOUND_NAME(TREEKill) VCMI_SOUND_FILE(TREEKILL.wav) \
+VCMI_SOUND_NAME(TREEMove) VCMI_SOUND_FILE(TREEMOVE.wav) \
+VCMI_SOUND_NAME(TREEWNCE) VCMI_SOUND_FILE(TREEWNCE.wav) \
+VCMI_SOUND_NAME(TRLLAttack) VCMI_SOUND_FILE(TRLLATTK.wav) \
+VCMI_SOUND_NAME(TRLLDefend) VCMI_SOUND_FILE(TRLLDFND.wav) \
+VCMI_SOUND_NAME(TRLLKill) VCMI_SOUND_FILE(TRLLKILL.wav) \
+VCMI_SOUND_NAME(TRLLMove) VCMI_SOUND_FILE(TRLLMOVE.wav) \
+VCMI_SOUND_NAME(TRLLWNCE) VCMI_SOUND_FILE(TRLLWNCE.wav) \
+VCMI_SOUND_NAME(TROGAttack) VCMI_SOUND_FILE(TROGATTK.wav) \
+VCMI_SOUND_NAME(TROGDefend) VCMI_SOUND_FILE(TROGDFND.wav) \
+VCMI_SOUND_NAME(TROGKill) VCMI_SOUND_FILE(TROGKILL.wav) \
+VCMI_SOUND_NAME(TROGMove) VCMI_SOUND_FILE(TROGMOVE.wav) \
+VCMI_SOUND_NAME(TROGWNCE) VCMI_SOUND_FILE(TROGWNCE.wav) \
+VCMI_SOUND_NAME(TUFFSKIN) VCMI_SOUND_FILE(TUFFSKIN.wav) \
+VCMI_SOUND_NAME(ULTIMATEARTIFACT) VCMI_SOUND_FILE(ULTIMATEARTIFACT.wav) \
+VCMI_SOUND_NAME(UNICAttack) VCMI_SOUND_FILE(UNICATTK.wav) \
+VCMI_SOUND_NAME(UNICDefend) VCMI_SOUND_FILE(UNICDFND.wav) \
+VCMI_SOUND_NAME(UNICKill) VCMI_SOUND_FILE(UNICKILL.wav) \
+VCMI_SOUND_NAME(UNICMove) VCMI_SOUND_FILE(UNICMOVE.wav) \
+VCMI_SOUND_NAME(UNICWNCE) VCMI_SOUND_FILE(UNICWNCE.wav) \
+VCMI_SOUND_NAME(VAMPAttack) VCMI_SOUND_FILE(VAMPATTK.wav) \
+VCMI_SOUND_NAME(VAMPDefend) VCMI_SOUND_FILE(VAMPDFND.wav) \
+VCMI_SOUND_NAME(VAMPEXT1) VCMI_SOUND_FILE(VAMPEXT1.wav) \
+VCMI_SOUND_NAME(VAMPEXT2) VCMI_SOUND_FILE(VAMPEXT2.wav) \
+VCMI_SOUND_NAME(VAMPKill) VCMI_SOUND_FILE(VAMPKILL.wav) \
+VCMI_SOUND_NAME(VAMPMove) VCMI_SOUND_FILE(VAMPMOVE.wav) \
+VCMI_SOUND_NAME(VAMPWNCE) VCMI_SOUND_FILE(VAMPWNCE.wav) \
+VCMI_SOUND_NAME(VIEW) VCMI_SOUND_FILE(VIEW.wav) \
+VCMI_SOUND_NAME(VISIONS) VCMI_SOUND_FILE(VISIONS.wav) \
+VCMI_SOUND_NAME(WALLHIT) VCMI_SOUND_FILE(WALLHIT.wav) \
+VCMI_SOUND_NAME(WALLMISS) VCMI_SOUND_FILE(WALLMISS.wav) \
+VCMI_SOUND_NAME(WATRWALK) VCMI_SOUND_FILE(WATRWALK.wav) \
+VCMI_SOUND_NAME(WEAKNESS) VCMI_SOUND_FILE(WEAKNESS.wav) \
+VCMI_SOUND_NAME(WELFAttack) VCMI_SOUND_FILE(WELFATTK.wav) \
+VCMI_SOUND_NAME(WELFDefend) VCMI_SOUND_FILE(WELFDFND.wav) \
+VCMI_SOUND_NAME(WELFKill) VCMI_SOUND_FILE(WELFKILL.wav) \
+VCMI_SOUND_NAME(WELFMove) VCMI_SOUND_FILE(WELFMOVE.wav) \
+VCMI_SOUND_NAME(WELFShot) VCMI_SOUND_FILE(WELFSHOT.wav) \
+VCMI_SOUND_NAME(WELFWNCE) VCMI_SOUND_FILE(WELFWNCE.wav) \
+VCMI_SOUND_NAME(WELMAttack) VCMI_SOUND_FILE(WELMATTK.wav) \
+VCMI_SOUND_NAME(WELMDefend) VCMI_SOUND_FILE(WELMDFND.wav) \
+VCMI_SOUND_NAME(WELMKill) VCMI_SOUND_FILE(WELMKILL.wav) \
+VCMI_SOUND_NAME(WELMMove) VCMI_SOUND_FILE(WELMMOVE.wav) \
+VCMI_SOUND_NAME(WELMWNCE) VCMI_SOUND_FILE(WELMWNCE.wav) \
+VCMI_SOUND_NAME(WGHTAttack) VCMI_SOUND_FILE(WGHTATTK.wav) \
+VCMI_SOUND_NAME(WGHTDefend) VCMI_SOUND_FILE(WGHTDFND.wav) \
+VCMI_SOUND_NAME(WGHTKill) VCMI_SOUND_FILE(WGHTKILL.wav) \
+VCMI_SOUND_NAME(WGHTMove) VCMI_SOUND_FILE(WGHTMOVE.wav) \
+VCMI_SOUND_NAME(WGHTWNCE) VCMI_SOUND_FILE(WGHTWNCE.wav) \
+VCMI_SOUND_NAME(WRTHAttack) VCMI_SOUND_FILE(WRTHATTK.wav) \
+VCMI_SOUND_NAME(WRTHDefend) VCMI_SOUND_FILE(WRTHDFND.wav) \
+VCMI_SOUND_NAME(WRTHKill) VCMI_SOUND_FILE(WRTHKILL.wav) \
+VCMI_SOUND_NAME(WRTHMove) VCMI_SOUND_FILE(WRTHMOVE.wav) \
+VCMI_SOUND_NAME(WRTHWNCE) VCMI_SOUND_FILE(WRTHWNCE.wav) \
+VCMI_SOUND_NAME(WUNCAttack) VCMI_SOUND_FILE(WUNCATTK.wav) \
+VCMI_SOUND_NAME(WUNCDefend) VCMI_SOUND_FILE(WUNCDFND.wav) \
+VCMI_SOUND_NAME(WUNCKill) VCMI_SOUND_FILE(WUNCKILL.wav) \
+VCMI_SOUND_NAME(WUNCMove) VCMI_SOUND_FILE(WUNCMOVE.wav) \
+VCMI_SOUND_NAME(WUNCShot) VCMI_SOUND_FILE(WUNCSHOT.wav) \
+VCMI_SOUND_NAME(WUNCWNCE) VCMI_SOUND_FILE(WUNCWNCE.wav) \
+VCMI_SOUND_NAME(WYVMAttack) VCMI_SOUND_FILE(WYVMATTK.wav) \
+VCMI_SOUND_NAME(WYVMDefend) VCMI_SOUND_FILE(WYVMDFND.wav) \
+VCMI_SOUND_NAME(WYVMKill) VCMI_SOUND_FILE(WYVMKILL.wav) \
+VCMI_SOUND_NAME(WYVMMove) VCMI_SOUND_FILE(WYVMMOVE.wav) \
+VCMI_SOUND_NAME(WYVMWNCE) VCMI_SOUND_FILE(WYVMWNCE.wav) \
+VCMI_SOUND_NAME(WYVNAttack) VCMI_SOUND_FILE(WYVNATTK.wav) \
+VCMI_SOUND_NAME(WYVNDefend) VCMI_SOUND_FILE(WYVNDFND.wav) \
+VCMI_SOUND_NAME(WYVNKill) VCMI_SOUND_FILE(WYVNKILL.wav) \
+VCMI_SOUND_NAME(WYVNMove) VCMI_SOUND_FILE(WYVNMOVE.wav) \
+VCMI_SOUND_NAME(WYVNWNCE) VCMI_SOUND_FILE(WYVNWNCE.wav) \
+VCMI_SOUND_NAME(YBMHAttack) VCMI_SOUND_FILE(YBMHATTK.wav) \
+VCMI_SOUND_NAME(YBMHDefend) VCMI_SOUND_FILE(YBMHDFND.wav) \
+VCMI_SOUND_NAME(YBMHKill) VCMI_SOUND_FILE(YBMHKILL.wav) \
+VCMI_SOUND_NAME(YBMHMove) VCMI_SOUND_FILE(YBMHMOVE.wav) \
+VCMI_SOUND_NAME(YBMHWNCE) VCMI_SOUND_FILE(YBMHWNCE.wav) \
+VCMI_SOUND_NAME(zelotAttack) VCMI_SOUND_FILE(ZELTATTK.wav) \
+VCMI_SOUND_NAME(zelotDefend) VCMI_SOUND_FILE(ZELTDFND.wav) \
+VCMI_SOUND_NAME(zelotKill) VCMI_SOUND_FILE(ZELTKILL.wav) \
+VCMI_SOUND_NAME(zelotMove) VCMI_SOUND_FILE(ZELTMOVE.wav) \
+VCMI_SOUND_NAME(zelotShot) VCMI_SOUND_FILE(ZELTSHOT.wav) \
+VCMI_SOUND_NAME(zelotWNCE) VCMI_SOUND_FILE(ZELTWNCE.wav) \
+VCMI_SOUND_NAME(ZMBLAttack) VCMI_SOUND_FILE(ZMBLATTK.wav) \
+VCMI_SOUND_NAME(ZMBLDefend) VCMI_SOUND_FILE(ZMBLDFND.wav) \
+VCMI_SOUND_NAME(ZMBLKill) VCMI_SOUND_FILE(ZMBLKILL.wav) \
+VCMI_SOUND_NAME(ZMBLMove) VCMI_SOUND_FILE(ZMBLMOVE.wav) \
+VCMI_SOUND_NAME(ZMBLWNCE) VCMI_SOUND_FILE(ZMBLWNCE.wav) \
+VCMI_SOUND_NAME(ZOMBAttack) VCMI_SOUND_FILE(ZOMBATTK.wav) \
+VCMI_SOUND_NAME(ZOMBDefend) VCMI_SOUND_FILE(ZOMBDFND.wav) \
+VCMI_SOUND_NAME(ZOMBKill) VCMI_SOUND_FILE(ZOMBKILL.wav) \
+VCMI_SOUND_NAME(ZOMBMove) VCMI_SOUND_FILE(ZOMBMOVE.wav) \
+VCMI_SOUND_NAME(ZOMBWNCE) VCMI_SOUND_FILE(ZOMBWNCE.wav)
+
+class soundBase
+{
+public:
+	// Make a list of enums
+	// We must keep an entry 0 for an invalid or no sound.
+#define VCMI_SOUND_NAME(x) x,
+#define VCMI_SOUND_FILE(y)
+	enum soundNames {
+		invalid=0,
+		sound_todo=1,			// temp entry until code is fixed
+		VCMI_SOUND_LIST
+	};
+#undef VCMI_SOUND_NAME
+#undef VCMI_SOUND_FILE
+};
+
+#endif // __CSOUNDBASE_H__
+#ifndef __CSOUNDBASE_H__
+#define __CSOUNDBASE_H__
+
+// Use some magic to keep the list of files and their code name in sync.
+
+#define VCMI_SOUND_LIST \
+VCMI_SOUND_NAME(AAGLAttack) VCMI_SOUND_FILE(AAGLATTK.wav) \
+VCMI_SOUND_NAME(AAGLDefend) VCMI_SOUND_FILE(AAGLDFND.wav) \
+VCMI_SOUND_NAME(AAGLKill) VCMI_SOUND_FILE(AAGLKILL.wav) \
+VCMI_SOUND_NAME(AAGLMove) VCMI_SOUND_FILE(AAGLMOVE.wav) \
+VCMI_SOUND_NAME(AAGLWNCE) VCMI_SOUND_FILE(AAGLWNCE.wav) \
+VCMI_SOUND_NAME(acid) VCMI_SOUND_FILE(ACID.wav) \
+VCMI_SOUND_NAME(ADVLAttack) VCMI_SOUND_FILE(ADVLATTK.wav) \
+VCMI_SOUND_NAME(ADVLDefend) VCMI_SOUND_FILE(ADVLDFND.wav) \
+VCMI_SOUND_NAME(ADVLEXT1) VCMI_SOUND_FILE(ADVLEXT1.wav) \
+VCMI_SOUND_NAME(ADVLEXT2) VCMI_SOUND_FILE(ADVLEXT2.wav) \
+VCMI_SOUND_NAME(ADVLKill) VCMI_SOUND_FILE(ADVLKILL.wav) \
+VCMI_SOUND_NAME(ADVLMove) VCMI_SOUND_FILE(ADVLMOVE.wav) \
+VCMI_SOUND_NAME(ADVLWNCE) VCMI_SOUND_FILE(ADVLWNCE.wav) \
+VCMI_SOUND_NAME(AELMAttack) VCMI_SOUND_FILE(AELMATTK.wav) \
+VCMI_SOUND_NAME(AELMDefend) VCMI_SOUND_FILE(AELMDFND.wav) \
+VCMI_SOUND_NAME(AELMKill) VCMI_SOUND_FILE(AELMKILL.wav) \
+VCMI_SOUND_NAME(AELMMove) VCMI_SOUND_FILE(AELMMOVE.wav) \
+VCMI_SOUND_NAME(AELMWNCE) VCMI_SOUND_FILE(AELMWNCE.wav) \
+VCMI_SOUND_NAME(AGE) VCMI_SOUND_FILE(AGE.wav) \
+VCMI_SOUND_NAME(AGRMAttack) VCMI_SOUND_FILE(AGRMATTK.wav) \
+VCMI_SOUND_NAME(AGRMDefend) VCMI_SOUND_FILE(AGRMDFND.wav) \
+VCMI_SOUND_NAME(AGRMKill) VCMI_SOUND_FILE(AGRMKILL.wav) \
+VCMI_SOUND_NAME(AGRMMove) VCMI_SOUND_FILE(AGRMMOVE.wav) \
+VCMI_SOUND_NAME(AGRMShot) VCMI_SOUND_FILE(AGRMSHOT.wav) \
+VCMI_SOUND_NAME(AGRMWNCE) VCMI_SOUND_FILE(AGRMWNCE.wav) \
+VCMI_SOUND_NAME(AIRSHELD) VCMI_SOUND_FILE(AIRSHELD.wav) \
+VCMI_SOUND_NAME(ALIZAttack) VCMI_SOUND_FILE(ALIZATTK.wav) \
+VCMI_SOUND_NAME(ALIZDefend) VCMI_SOUND_FILE(ALIZDFND.wav) \
+VCMI_SOUND_NAME(ALIZKill) VCMI_SOUND_FILE(ALIZKILL.wav) \
+VCMI_SOUND_NAME(ALIZMove) VCMI_SOUND_FILE(ALIZMOVE.wav) \
+VCMI_SOUND_NAME(ALIZShot) VCMI_SOUND_FILE(ALIZSHOT.wav) \
+VCMI_SOUND_NAME(ALIZWNCE) VCMI_SOUND_FILE(ALIZWNCE.wav) \
+VCMI_SOUND_NAME(AMAGAttack) VCMI_SOUND_FILE(AMAGATTK.wav) \
+VCMI_SOUND_NAME(AMAGDefend) VCMI_SOUND_FILE(AMAGDFND.wav) \
+VCMI_SOUND_NAME(AMAGKill) VCMI_SOUND_FILE(AMAGKILL.wav) \
+VCMI_SOUND_NAME(AMAGMove) VCMI_SOUND_FILE(AMAGMOVE.wav) \
+VCMI_SOUND_NAME(AMAGShot) VCMI_SOUND_FILE(AMAGSHOT.wav) \
+VCMI_SOUND_NAME(AMAGWNCE) VCMI_SOUND_FILE(AMAGWNCE.wav) \
+VCMI_SOUND_NAME(ANGLAttack) VCMI_SOUND_FILE(ANGLATTK.wav) \
+VCMI_SOUND_NAME(ANGLDefend) VCMI_SOUND_FILE(ANGLDFND.wav) \
+VCMI_SOUND_NAME(ANGLKill) VCMI_SOUND_FILE(ANGLKILL.wav) \
+VCMI_SOUND_NAME(ANGLMove) VCMI_SOUND_FILE(ANGLMOVE.wav) \
+VCMI_SOUND_NAME(ANGLWNCE) VCMI_SOUND_FILE(ANGLWNCE.wav) \
+VCMI_SOUND_NAME(ANIMDEAD) VCMI_SOUND_FILE(ANIMDEAD.wav) \
+VCMI_SOUND_NAME(ANTIMAGK) VCMI_SOUND_FILE(ANTIMAGK.wav) \
+VCMI_SOUND_NAME(APEGAttack) VCMI_SOUND_FILE(APEGATTK.wav) \
+VCMI_SOUND_NAME(APEGDefend) VCMI_SOUND_FILE(APEGDFND.wav) \
+VCMI_SOUND_NAME(APEGKill) VCMI_SOUND_FILE(APEGKILL.wav) \
+VCMI_SOUND_NAME(APEGMove) VCMI_SOUND_FILE(APEGMOVE.wav) \
+VCMI_SOUND_NAME(APEGWNCE) VCMI_SOUND_FILE(APEGWNCE.wav) \
+VCMI_SOUND_NAME(ARMGEDN) VCMI_SOUND_FILE(ARMGEDN.wav) \
+VCMI_SOUND_NAME(AZURAttack) VCMI_SOUND_FILE(AZURATTK.wav) \
+VCMI_SOUND_NAME(AZURDefend) VCMI_SOUND_FILE(AZURDFND.wav) \
+VCMI_SOUND_NAME(AZURKill) VCMI_SOUND_FILE(AZURKILL.wav) \
+VCMI_SOUND_NAME(AZURMove) VCMI_SOUND_FILE(AZURMOVE.wav) \
+VCMI_SOUND_NAME(AZURWNCE) VCMI_SOUND_FILE(AZURWNCE.wav) \
+VCMI_SOUND_NAME(BACKLASH) VCMI_SOUND_FILE(BACKLASH.wav) \
+VCMI_SOUND_NAME(BADLUCK) VCMI_SOUND_FILE(BADLUCK.wav) \
+VCMI_SOUND_NAME(BADMRLE) VCMI_SOUND_FILE(BADMRLE.wav) \
+VCMI_SOUND_NAME(BALLKill) VCMI_SOUND_FILE(BALLKILL.wav) \
+VCMI_SOUND_NAME(BALLShot) VCMI_SOUND_FILE(BALLSHOT.wav) \
+VCMI_SOUND_NAME(BALLWNCE) VCMI_SOUND_FILE(BALLWNCE.wav) \
+VCMI_SOUND_NAME(BASLAttack) VCMI_SOUND_FILE(BASLATTK.wav) \
+VCMI_SOUND_NAME(BASLDefend) VCMI_SOUND_FILE(BASLDFND.wav) \
+VCMI_SOUND_NAME(BASLKill) VCMI_SOUND_FILE(BASLKILL.wav) \
+VCMI_SOUND_NAME(BASLMove) VCMI_SOUND_FILE(BASLMOVE.wav) \
+VCMI_SOUND_NAME(BASLWNCE) VCMI_SOUND_FILE(BASLWNCE.wav) \
+VCMI_SOUND_NAME(battle00) VCMI_SOUND_FILE(BATTLE00.wav) \
+VCMI_SOUND_NAME(battle01) VCMI_SOUND_FILE(BATTLE01.wav) \
+VCMI_SOUND_NAME(battle02) VCMI_SOUND_FILE(BATTLE02.wav) \
+VCMI_SOUND_NAME(battle03) VCMI_SOUND_FILE(BATTLE03.wav) \
+VCMI_SOUND_NAME(battle04) VCMI_SOUND_FILE(BATTLE04.wav) \
+VCMI_SOUND_NAME(battle05) VCMI_SOUND_FILE(BATTLE05.wav) \
+VCMI_SOUND_NAME(battle06) VCMI_SOUND_FILE(BATTLE06.wav) \
+VCMI_SOUND_NAME(battle07) VCMI_SOUND_FILE(BATTLE07.wav) \
+VCMI_SOUND_NAME(BDRFAttack) VCMI_SOUND_FILE(BDRFATTK.wav) \
+VCMI_SOUND_NAME(BDRFDefend) VCMI_SOUND_FILE(BDRFDFND.wav) \
+VCMI_SOUND_NAME(BDRFKill) VCMI_SOUND_FILE(BDRFKILL.wav) \
+VCMI_SOUND_NAME(BDRFMove) VCMI_SOUND_FILE(BDRFMOVE.wav) \
+VCMI_SOUND_NAME(BDRFWNCE) VCMI_SOUND_FILE(BDRFWNCE.wav) \
+VCMI_SOUND_NAME(BERSERK) VCMI_SOUND_FILE(BERSERK.wav) \
+VCMI_SOUND_NAME(BGORAttack) VCMI_SOUND_FILE(BGORATTK.wav) \
+VCMI_SOUND_NAME(BGORDefend) VCMI_SOUND_FILE(BGORDFND.wav) \
+VCMI_SOUND_NAME(BGORKill) VCMI_SOUND_FILE(BGORKILL.wav) \
+VCMI_SOUND_NAME(BGORMove) VCMI_SOUND_FILE(BGORMOVE.wav) \
+VCMI_SOUND_NAME(BGORWNCE) VCMI_SOUND_FILE(BGORWNCE.wav) \
+VCMI_SOUND_NAME(BHDRAttack) VCMI_SOUND_FILE(BHDRATTK.wav) \
+VCMI_SOUND_NAME(BHDRDETH) VCMI_SOUND_FILE(BHDRDETH.wav) \
+VCMI_SOUND_NAME(BHDRDefend) VCMI_SOUND_FILE(BHDRDFND.wav) \
+VCMI_SOUND_NAME(BHDRKill) VCMI_SOUND_FILE(BHDRKILL.wav) \
+VCMI_SOUND_NAME(BHDRMove) VCMI_SOUND_FILE(BHDRMOVE.wav) \
+VCMI_SOUND_NAME(BHDRShot) VCMI_SOUND_FILE(BHDRSHOT.wav) \
+VCMI_SOUND_NAME(BHDRWNCE) VCMI_SOUND_FILE(BHDRWNCE.wav) \
+VCMI_SOUND_NAME(BIND) VCMI_SOUND_FILE(BIND.wav) \
+VCMI_SOUND_NAME(BKDRAttack) VCMI_SOUND_FILE(BKDRATTK.wav) \
+VCMI_SOUND_NAME(BKDRDefend) VCMI_SOUND_FILE(BKDRDFND.wav) \
+VCMI_SOUND_NAME(BKDRKill) VCMI_SOUND_FILE(BKDRKILL.wav) \
+VCMI_SOUND_NAME(BKDRMove) VCMI_SOUND_FILE(BKDRMOVE.wav) \
+VCMI_SOUND_NAME(BKDRWNCE) VCMI_SOUND_FILE(BKDRWNCE.wav) \
+VCMI_SOUND_NAME(BKNTAttack) VCMI_SOUND_FILE(BKNTATTK.wav) \
+VCMI_SOUND_NAME(BKNTDefend) VCMI_SOUND_FILE(BKNTDFND.wav) \
+VCMI_SOUND_NAME(BKNTKill) VCMI_SOUND_FILE(BKNTKILL.wav) \
+VCMI_SOUND_NAME(BKNTMove) VCMI_SOUND_FILE(BKNTMOVE.wav) \
+VCMI_SOUND_NAME(BKNTWNCE) VCMI_SOUND_FILE(BKNTWNCE.wav) \
+VCMI_SOUND_NAME(bless) VCMI_SOUND_FILE(BLESS.wav) \
+VCMI_SOUND_NAME(blind) VCMI_SOUND_FILE(BLIND.wav) \
+VCMI_SOUND_NAME(bloodlus) VCMI_SOUND_FILE(BLOODLUS.wav) \
+VCMI_SOUND_NAME(BLRDAttack) VCMI_SOUND_FILE(BLRDATTK.wav) \
+VCMI_SOUND_NAME(BLRDDefend) VCMI_SOUND_FILE(BLRDDFND.wav) \
+VCMI_SOUND_NAME(BLRDKill) VCMI_SOUND_FILE(BLRDKILL.wav) \
+VCMI_SOUND_NAME(BLRDMove) VCMI_SOUND_FILE(BLRDMOVE.wav) \
+VCMI_SOUND_NAME(BLRDWNCE) VCMI_SOUND_FILE(BLRDWNCE.wav) \
+VCMI_SOUND_NAME(BMTHAttack) VCMI_SOUND_FILE(BMTHATTK.wav) \
+VCMI_SOUND_NAME(BMTHDefend) VCMI_SOUND_FILE(BMTHDFND.wav) \
+VCMI_SOUND_NAME(BMTHKill) VCMI_SOUND_FILE(BMTHKILL.wav) \
+VCMI_SOUND_NAME(BMTHMove) VCMI_SOUND_FILE(BMTHMOVE.wav) \
+VCMI_SOUND_NAME(BMTHWNCE) VCMI_SOUND_FILE(BMTHWNCE.wav) \
+VCMI_SOUND_NAME(BOARAttack) VCMI_SOUND_FILE(BOARATTK.wav) \
+VCMI_SOUND_NAME(BOARDefend) VCMI_SOUND_FILE(BOARDFND.wav) \
+VCMI_SOUND_NAME(BOARKill) VCMI_SOUND_FILE(BOARKILL.wav) \
+VCMI_SOUND_NAME(BOARMove) VCMI_SOUND_FILE(BOARMOVE.wav) \
+VCMI_SOUND_NAME(BOARWNCE) VCMI_SOUND_FILE(BOARWNCE.wav) \
+VCMI_SOUND_NAME(BODRAttack) VCMI_SOUND_FILE(BODRATTK.wav) \
+VCMI_SOUND_NAME(BODRDefend) VCMI_SOUND_FILE(BODRDFND.wav) \
+VCMI_SOUND_NAME(BODRKill) VCMI_SOUND_FILE(BODRKILL.wav) \
+VCMI_SOUND_NAME(BODRMove) VCMI_SOUND_FILE(BODRMOVE.wav) \
+VCMI_SOUND_NAME(BODRWNCE) VCMI_SOUND_FILE(BODRWNCE.wav) \
+VCMI_SOUND_NAME(BTREAttack) VCMI_SOUND_FILE(BTREATTK.wav) \
+VCMI_SOUND_NAME(BTREDefend) VCMI_SOUND_FILE(BTREDFND.wav) \
+VCMI_SOUND_NAME(BTREKill) VCMI_SOUND_FILE(BTREKILL.wav) \
+VCMI_SOUND_NAME(BTREMove) VCMI_SOUND_FILE(BTREMOVE.wav) \
+VCMI_SOUND_NAME(BTREWNCE) VCMI_SOUND_FILE(BTREWNCE.wav) \
+VCMI_SOUND_NAME(newBuilding) VCMI_SOUND_FILE(BUILDTWN.wav) \
+VCMI_SOUND_NAME(button) VCMI_SOUND_FILE(BUTTON.wav) \
+VCMI_SOUND_NAME(CALFAttack) VCMI_SOUND_FILE(CALFATTK.wav) \
+VCMI_SOUND_NAME(CALFDefend) VCMI_SOUND_FILE(CALFDFND.wav) \
+VCMI_SOUND_NAME(CALFKill) VCMI_SOUND_FILE(CALFKILL.wav) \
+VCMI_SOUND_NAME(CALFMove) VCMI_SOUND_FILE(CALFMOVE.wav) \
+VCMI_SOUND_NAME(CALFShot) VCMI_SOUND_FILE(CALFSHOT.wav) \
+VCMI_SOUND_NAME(CALFWNCE) VCMI_SOUND_FILE(CALFWNCE.wav) \
+VCMI_SOUND_NAME(CARTKill) VCMI_SOUND_FILE(CARTKILL.wav) \
+VCMI_SOUND_NAME(CARTWNCE) VCMI_SOUND_FILE(CARTWNCE.wav) \
+VCMI_SOUND_NAME(CATAKill) VCMI_SOUND_FILE(CATAKILL.wav) \
+VCMI_SOUND_NAME(CATAShot) VCMI_SOUND_FILE(CATASHOT.wav) \
+VCMI_SOUND_NAME(CATAWNCE) VCMI_SOUND_FILE(CATAWNCE.wav) \
+VCMI_SOUND_NAME(CAVAAttack) VCMI_SOUND_FILE(CAVAATTK.wav) \
+VCMI_SOUND_NAME(CAVADefend) VCMI_SOUND_FILE(CAVADFND.wav) \
+VCMI_SOUND_NAME(CAVAKill) VCMI_SOUND_FILE(CAVAKILL.wav) \
+VCMI_SOUND_NAME(CAVAMove) VCMI_SOUND_FILE(CAVAMOVE.wav) \
+VCMI_SOUND_NAME(CAVAWNCE) VCMI_SOUND_FILE(CAVAWNCE.wav) \
+VCMI_SOUND_NAME(CAVEHEAD) VCMI_SOUND_FILE(CAVEHEAD.wav) \
+VCMI_SOUND_NAME(CCYCAttack) VCMI_SOUND_FILE(CCYCATTK.wav) \
+VCMI_SOUND_NAME(CCYCDefend) VCMI_SOUND_FILE(CCYCDFND.wav) \
+VCMI_SOUND_NAME(CCYCKill) VCMI_SOUND_FILE(CCYCKILL.wav) \
+VCMI_SOUND_NAME(CCYCMove) VCMI_SOUND_FILE(CCYCMOVE.wav) \
+VCMI_SOUND_NAME(CCYCShot) VCMI_SOUND_FILE(CCYCSHOT.wav) \
+VCMI_SOUND_NAME(CCYCWNCE) VCMI_SOUND_FILE(CCYCWNCE.wav) \
+VCMI_SOUND_NAME(CERBAttack) VCMI_SOUND_FILE(CERBATTK.wav) \
+VCMI_SOUND_NAME(CERBDefend) VCMI_SOUND_FILE(CERBDFND.wav) \
+VCMI_SOUND_NAME(CERBKill) VCMI_SOUND_FILE(CERBKILL.wav) \
+VCMI_SOUND_NAME(CERBMove) VCMI_SOUND_FILE(CERBMOVE.wav) \
+VCMI_SOUND_NAME(CERBWNCE) VCMI_SOUND_FILE(CERBWNCE.wav) \
+VCMI_SOUND_NAME(CGORAttack) VCMI_SOUND_FILE(CGORATTK.wav) \
+VCMI_SOUND_NAME(CGORDefend) VCMI_SOUND_FILE(CGORDFND.wav) \
+VCMI_SOUND_NAME(CGORKill) VCMI_SOUND_FILE(CGORKILL.wav) \
+VCMI_SOUND_NAME(CGORMove) VCMI_SOUND_FILE(CGORMOVE.wav) \
+VCMI_SOUND_NAME(CGORWNCE) VCMI_SOUND_FILE(CGORWNCE.wav) \
+VCMI_SOUND_NAME(chainLigthning) VCMI_SOUND_FILE(CHAINLTE.wav) \
+VCMI_SOUND_NAME(chat) VCMI_SOUND_FILE(CHAT.wav) \
+VCMI_SOUND_NAME(chest) VCMI_SOUND_FILE(CHEST.wav) \
+VCMI_SOUND_NAME(CHMPAttack) VCMI_SOUND_FILE(CHMPATTK.wav) \
+VCMI_SOUND_NAME(CHMPDefend) VCMI_SOUND_FILE(CHMPDFND.wav) \
+VCMI_SOUND_NAME(CHMPKill) VCMI_SOUND_FILE(CHMPKILL.wav) \
+VCMI_SOUND_NAME(CHMPMove) VCMI_SOUND_FILE(CHMPMOVE.wav) \
+VCMI_SOUND_NAME(CHMPWNCE) VCMI_SOUND_FILE(CHMPWNCE.wav) \
+VCMI_SOUND_NAME(CHYDAttack) VCMI_SOUND_FILE(CHYDATTK.wav) \
+VCMI_SOUND_NAME(CHYDDefend) VCMI_SOUND_FILE(CHYDDFND.wav) \
+VCMI_SOUND_NAME(CHYDKill) VCMI_SOUND_FILE(CHYDKILL.wav) \
+VCMI_SOUND_NAME(CHYDMove) VCMI_SOUND_FILE(CHYDMOVE.wav) \
+VCMI_SOUND_NAME(CHYDWNCE) VCMI_SOUND_FILE(CHYDWNCE.wav) \
+VCMI_SOUND_NAME(CLIMAX) VCMI_SOUND_FILE(CLIMAX.wav) \
+VCMI_SOUND_NAME(CLONE) VCMI_SOUND_FILE(CLONE.wav) \
+VCMI_SOUND_NAME(CNTRAttack) VCMI_SOUND_FILE(CNTRATTK.wav) \
+VCMI_SOUND_NAME(CNTRDefend) VCMI_SOUND_FILE(CNTRDFND.wav) \
+VCMI_SOUND_NAME(CNTRKill) VCMI_SOUND_FILE(CNTRKILL.wav) \
+VCMI_SOUND_NAME(CNTRMove) VCMI_SOUND_FILE(CNTRMOVE.wav) \
+VCMI_SOUND_NAME(CNTRShot) VCMI_SOUND_FILE(CNTRSHOT.wav) \
+VCMI_SOUND_NAME(Counterstrike) VCMI_SOUND_FILE(CNTRSTRK.wav) \
+VCMI_SOUND_NAME(CNTRWNCE) VCMI_SOUND_FILE(CNTRWNCE.wav) \
+VCMI_SOUND_NAME(COLDRAY) VCMI_SOUND_FILE(COLDRAY.wav) \
+VCMI_SOUND_NAME(COLDRING) VCMI_SOUND_FILE(COLDRING.wav) \
+VCMI_SOUND_NAME(CRUSAttack) VCMI_SOUND_FILE(CRUSATTK.wav) \
+VCMI_SOUND_NAME(CRUSDefend) VCMI_SOUND_FILE(CRUSDFND.wav) \
+VCMI_SOUND_NAME(CRUSKill) VCMI_SOUND_FILE(CRUSKILL.wav) \
+VCMI_SOUND_NAME(CRUSMove) VCMI_SOUND_FILE(CRUSMOVE.wav) \
+VCMI_SOUND_NAME(CRUSWNCE) VCMI_SOUND_FILE(CRUSWNCE.wav) \
+VCMI_SOUND_NAME(CRYSAttack) VCMI_SOUND_FILE(CRYSATTK.wav) \
+VCMI_SOUND_NAME(CRYSDefend) VCMI_SOUND_FILE(CRYSDFND.wav) \
+VCMI_SOUND_NAME(CRYSKill) VCMI_SOUND_FILE(CRYSKILL.wav) \
+VCMI_SOUND_NAME(CRYSMove) VCMI_SOUND_FILE(CRYSMOVE.wav) \
+VCMI_SOUND_NAME(CRYSWNCE) VCMI_SOUND_FILE(CRYSWNCE.wav) \
+VCMI_SOUND_NAME(CURE) VCMI_SOUND_FILE(CURE.wav) \
+VCMI_SOUND_NAME(CURSE) VCMI_SOUND_FILE(CURSE.wav) \
+VCMI_SOUND_NAME(cyclopAttack) VCMI_SOUND_FILE(CYCLATTK.wav) \
+VCMI_SOUND_NAME(cyclopDefend) VCMI_SOUND_FILE(CYCLDFND.wav) \
+VCMI_SOUND_NAME(cyclopKill) VCMI_SOUND_FILE(CYCLKILL.wav) \
+VCMI_SOUND_NAME(cyclopMove) VCMI_SOUND_FILE(CYCLMOVE.wav) \
+VCMI_SOUND_NAME(cyclopShot) VCMI_SOUND_FILE(CYCLSHOT.wav) \
+VCMI_SOUND_NAME(cyclopWNCE) VCMI_SOUND_FILE(CYCLWNCE.wav) \
+VCMI_SOUND_NAME(DANGER) VCMI_SOUND_FILE(DANGER.wav) \
+VCMI_SOUND_NAME(deathBlood) VCMI_SOUND_FILE(DEATHBLO.wav) \
+VCMI_SOUND_NAME(deathCloud) VCMI_SOUND_FILE(DEATHCLD.wav) \
+VCMI_SOUND_NAME(deathRIP) VCMI_SOUND_FILE(DEATHRIP.wav) \
+VCMI_SOUND_NAME(deathSTR) VCMI_SOUND_FILE(DEATHSTR.wav) \
+VCMI_SOUND_NAME(DECAY) VCMI_SOUND_FILE(DECAY.wav) \
+VCMI_SOUND_NAME(DEFAULT) VCMI_SOUND_FILE(DEFAULT.wav) \
+VCMI_SOUND_NAME(DEVLAttack) VCMI_SOUND_FILE(DEVLATTK.wav) \
+VCMI_SOUND_NAME(DEVLDefend) VCMI_SOUND_FILE(DEVLDFND.wav) \
+VCMI_SOUND_NAME(DEVLEXT1) VCMI_SOUND_FILE(DEVLEXT1.wav) \
+VCMI_SOUND_NAME(DEVLEXT2) VCMI_SOUND_FILE(DEVLEXT2.wav) \
+VCMI_SOUND_NAME(DEVLKill) VCMI_SOUND_FILE(DEVLKILL.wav) \
+VCMI_SOUND_NAME(DEVLMove) VCMI_SOUND_FILE(DEVLMOVE.wav) \
+VCMI_SOUND_NAME(DEVLWNCE) VCMI_SOUND_FILE(DEVLWNCE.wav) \
+VCMI_SOUND_NAME(DFLYAttack) VCMI_SOUND_FILE(DFLYATTK.wav) \
+VCMI_SOUND_NAME(DFLYDefend) VCMI_SOUND_FILE(DFLYDFND.wav) \
+VCMI_SOUND_NAME(DFLYKill) VCMI_SOUND_FILE(DFLYKILL.wav) \
+VCMI_SOUND_NAME(DFLYMove) VCMI_SOUND_FILE(DFLYMOVE.wav) \
+VCMI_SOUND_NAME(DFLYWNCE) VCMI_SOUND_FILE(DFLYWNCE.wav) \
+VCMI_SOUND_NAME(DGLMAttack) VCMI_SOUND_FILE(DGLMATTK.wav) \
+VCMI_SOUND_NAME(DGLMDefend) VCMI_SOUND_FILE(DGLMDFND.wav) \
+VCMI_SOUND_NAME(DGLMKill) VCMI_SOUND_FILE(DGLMKILL.wav) \
+VCMI_SOUND_NAME(DGLMMove) VCMI_SOUND_FILE(DGLMMOVE.wav) \
+VCMI_SOUND_NAME(DGLMWNCE) VCMI_SOUND_FILE(DGLMWNCE.wav) \
+VCMI_SOUND_NAME(DHDMAttack) VCMI_SOUND_FILE(DHDMATTK.wav) \
+VCMI_SOUND_NAME(DHDMDefend) VCMI_SOUND_FILE(DHDMDFND.wav) \
+VCMI_SOUND_NAME(DHDMKill) VCMI_SOUND_FILE(DHDMKILL.wav) \
+VCMI_SOUND_NAME(DHDMMove) VCMI_SOUND_FILE(DHDMMOVE.wav) \
+VCMI_SOUND_NAME(DHDMWNCE) VCMI_SOUND_FILE(DHDMWNCE.wav) \
+VCMI_SOUND_NAME(Dig) VCMI_SOUND_FILE(DIGSOUND.wav) \
+VCMI_SOUND_NAME(DIPMAGK) VCMI_SOUND_FILE(DIPMAGK.wav) \
+VCMI_SOUND_NAME(DISEASE) VCMI_SOUND_FILE(DISEASE.wav) \
+VCMI_SOUND_NAME(DISGUISE) VCMI_SOUND_FILE(DISGUISE.wav) \
+VCMI_SOUND_NAME(DISPELL) VCMI_SOUND_FILE(DISPELL.wav) \
+VCMI_SOUND_NAME(DISRUPTR) VCMI_SOUND_FILE(DISRUPTR.wav) \
+VCMI_SOUND_NAME(dragonHall) VCMI_SOUND_FILE(DRAGON.wav) \
+VCMI_SOUND_NAME(DRAINLIF) VCMI_SOUND_FILE(DRAINLIF.wav) \
+VCMI_SOUND_NAME(DRAWBRG) VCMI_SOUND_FILE(DRAWBRG.wav) \
+VCMI_SOUND_NAME(DRGNSLAY) VCMI_SOUND_FILE(DRGNSLAY.wav) \
+VCMI_SOUND_NAME(DWRFAttack) VCMI_SOUND_FILE(DWRFATTK.wav) \
+VCMI_SOUND_NAME(DWRFDefend) VCMI_SOUND_FILE(DWRFDFND.wav) \
+VCMI_SOUND_NAME(DWRFKill) VCMI_SOUND_FILE(DWRFKILL.wav) \
+VCMI_SOUND_NAME(DWRFMove) VCMI_SOUND_FILE(DWRFMOVE.wav) \
+VCMI_SOUND_NAME(DWRFWNCE) VCMI_SOUND_FILE(DWRFWNCE.wav) \
+VCMI_SOUND_NAME(ECNTAttack) VCMI_SOUND_FILE(ECNTATTK.wav) \
+VCMI_SOUND_NAME(ECNTDefend) VCMI_SOUND_FILE(ECNTDFND.wav) \
+VCMI_SOUND_NAME(ECNTKill) VCMI_SOUND_FILE(ECNTKILL.wav) \
+VCMI_SOUND_NAME(ECNTMove) VCMI_SOUND_FILE(ECNTMOVE.wav) \
+VCMI_SOUND_NAME(ECNTWNCE) VCMI_SOUND_FILE(ECNTWNCE.wav) \
+VCMI_SOUND_NAME(EELMAttack) VCMI_SOUND_FILE(EELMATTK.wav) \
+VCMI_SOUND_NAME(EELMDefend) VCMI_SOUND_FILE(EELMDFND.wav) \
+VCMI_SOUND_NAME(EELMKill) VCMI_SOUND_FILE(EELMKILL.wav) \
+VCMI_SOUND_NAME(EELMMove) VCMI_SOUND_FILE(EELMMOVE.wav) \
+VCMI_SOUND_NAME(EELMWNCE) VCMI_SOUND_FILE(EELMWNCE.wav) \
+VCMI_SOUND_NAME(EFRTAttack) VCMI_SOUND_FILE(EFRTATTK.wav) \
+VCMI_SOUND_NAME(EFRTDefend) VCMI_SOUND_FILE(EFRTDFND.wav) \
+VCMI_SOUND_NAME(EFRTKill) VCMI_SOUND_FILE(EFRTKILL.wav) \
+VCMI_SOUND_NAME(EFRTMove) VCMI_SOUND_FILE(EFRTMOVE.wav) \
+VCMI_SOUND_NAME(EFRTWNCE) VCMI_SOUND_FILE(EFRTWNCE.wav) \
+VCMI_SOUND_NAME(ENCHAttack) VCMI_SOUND_FILE(ENCHATTK.wav) \
+VCMI_SOUND_NAME(ENCHDefend) VCMI_SOUND_FILE(ENCHDFND.wav) \
+VCMI_SOUND_NAME(ENCHKill) VCMI_SOUND_FILE(ENCHKILL.wav) \
+VCMI_SOUND_NAME(ENCHMove) VCMI_SOUND_FILE(ENCHMOVE.wav) \
+VCMI_SOUND_NAME(ENCHShot) VCMI_SOUND_FILE(ENCHSHOT.wav) \
+VCMI_SOUND_NAME(ENCHWNCE) VCMI_SOUND_FILE(ENCHWNCE.wav) \
+VCMI_SOUND_NAME(ENERAttack) VCMI_SOUND_FILE(ENERATTK.wav) \
+VCMI_SOUND_NAME(ENERDefend) VCMI_SOUND_FILE(ENERDFND.wav) \
+VCMI_SOUND_NAME(ENERKill) VCMI_SOUND_FILE(ENERKILL.wav) \
+VCMI_SOUND_NAME(ENERMove) VCMI_SOUND_FILE(ENERMOVE.wav) \
+VCMI_SOUND_NAME(ENERWNCE) VCMI_SOUND_FILE(ENERWNCE.wav) \
+VCMI_SOUND_NAME(ERTHQUAK) VCMI_SOUND_FILE(ERTHQUAK.wav) \
+VCMI_SOUND_NAME(ESULAttack) VCMI_SOUND_FILE(ESULATTK.wav) \
+VCMI_SOUND_NAME(ESULDefend) VCMI_SOUND_FILE(ESULDFND.wav) \
+VCMI_SOUND_NAME(ESULKill) VCMI_SOUND_FILE(ESULKILL.wav) \
+VCMI_SOUND_NAME(ESULMove) VCMI_SOUND_FILE(ESULMOVE.wav) \
+VCMI_SOUND_NAME(ESULShot) VCMI_SOUND_FILE(ESULSHOT.wav) \
+VCMI_SOUND_NAME(ESULWNCE) VCMI_SOUND_FILE(ESULWNCE.wav) \
+VCMI_SOUND_NAME(EVLIAttack) VCMI_SOUND_FILE(EVLIATTK.wav) \
+VCMI_SOUND_NAME(EVLIDETH) VCMI_SOUND_FILE(EVLIDETH.wav) \
+VCMI_SOUND_NAME(EVLIDefend) VCMI_SOUND_FILE(EVLIDFND.wav) \
+VCMI_SOUND_NAME(EVLIKill) VCMI_SOUND_FILE(EVLIKILL.wav) \
+VCMI_SOUND_NAME(EVLIMove) VCMI_SOUND_FILE(EVLIMOVE.wav) \
+VCMI_SOUND_NAME(EVLIShot) VCMI_SOUND_FILE(EVLISHOT.wav) \
+VCMI_SOUND_NAME(EVLIWNCE) VCMI_SOUND_FILE(EVLIWNCE.wav) \
+VCMI_SOUND_NAME(experience) VCMI_SOUND_FILE(EXPERNCE.wav) \
+VCMI_SOUND_NAME(FAERAttack) VCMI_SOUND_FILE(FAERATTK.wav) \
+VCMI_SOUND_NAME(FAERDefend) VCMI_SOUND_FILE(FAERDFND.wav) \
+VCMI_SOUND_NAME(faerie) VCMI_SOUND_FILE(FAERIE.wav) \
+VCMI_SOUND_NAME(FAERKill) VCMI_SOUND_FILE(FAERKILL.wav) \
+VCMI_SOUND_NAME(FAERMove) VCMI_SOUND_FILE(FAERMOVE.wav) \
+VCMI_SOUND_NAME(FAERShot) VCMI_SOUND_FILE(FAERSHOT.wav) \
+VCMI_SOUND_NAME(FAERWNCE) VCMI_SOUND_FILE(FAERWNCE.wav) \
+VCMI_SOUND_NAME(FAIDKill) VCMI_SOUND_FILE(FAIDKILL.wav) \
+VCMI_SOUND_NAME(FAIDWNCE) VCMI_SOUND_FILE(FAIDWNCE.wav) \
+VCMI_SOUND_NAME(FDFLAttack) VCMI_SOUND_FILE(FDFLATTK.wav) \
+VCMI_SOUND_NAME(FDFLDefend) VCMI_SOUND_FILE(FDFLDFND.wav) \
+VCMI_SOUND_NAME(FDFLKill) VCMI_SOUND_FILE(FDFLKILL.wav) \
+VCMI_SOUND_NAME(FDFLMove) VCMI_SOUND_FILE(FDFLMOVE.wav) \
+VCMI_SOUND_NAME(FDFLShot) VCMI_SOUND_FILE(FDFLSHOT.wav) \
+VCMI_SOUND_NAME(FDFLWNCE) VCMI_SOUND_FILE(FDFLWNCE.wav) \
+VCMI_SOUND_NAME(FEAR) VCMI_SOUND_FILE(FEAR.wav) \
+VCMI_SOUND_NAME(FELMAttack) VCMI_SOUND_FILE(FELMATTK.wav) \
+VCMI_SOUND_NAME(FELMDefend) VCMI_SOUND_FILE(FELMDFND.wav) \
+VCMI_SOUND_NAME(FELMKill) VCMI_SOUND_FILE(FELMKILL.wav) \
+VCMI_SOUND_NAME(FELMMove) VCMI_SOUND_FILE(FELMMOVE.wav) \
+VCMI_SOUND_NAME(FELMWNCE) VCMI_SOUND_FILE(FELMWNCE.wav) \
+VCMI_SOUND_NAME(FIRBAttack) VCMI_SOUND_FILE(FIRBATTK.wav) \
+VCMI_SOUND_NAME(FIRBDefend) VCMI_SOUND_FILE(FIRBDFND.wav) \
+VCMI_SOUND_NAME(FIRBKill) VCMI_SOUND_FILE(FIRBKILL.wav) \
+VCMI_SOUND_NAME(FIRBMove) VCMI_SOUND_FILE(FIRBMOVE.wav) \
+VCMI_SOUND_NAME(FIRBWNCE) VCMI_SOUND_FILE(FIRBWNCE.wav) \
+VCMI_SOUND_NAME(fireball) VCMI_SOUND_FILE(FIREBALL.wav) \
+VCMI_SOUND_NAME(fireblast) VCMI_SOUND_FILE(FIREBLST.wav) \
+VCMI_SOUND_NAME(FIRESHIE) VCMI_SOUND_FILE(FIRESHIE.wav) \
+VCMI_SOUND_NAME(FIRESHLD) VCMI_SOUND_FILE(FIRESHLD.wav) \
+VCMI_SOUND_NAME(fireStorm) VCMI_SOUND_FILE(FIRESTRM.wav) \
+VCMI_SOUND_NAME(fireWall) VCMI_SOUND_FILE(FIREWALL.wav) \
+VCMI_SOUND_NAME(FLAGMINE) VCMI_SOUND_FILE(FLAGMINE.wav) \
+VCMI_SOUND_NAME(FLYSPELL) VCMI_SOUND_FILE(FLYSPELL.wav) \
+VCMI_SOUND_NAME(FMLRAttack) VCMI_SOUND_FILE(FMLRATTK.wav) \
+VCMI_SOUND_NAME(FMLRDefend) VCMI_SOUND_FILE(FMLRDFND.wav) \
+VCMI_SOUND_NAME(FMLRKill) VCMI_SOUND_FILE(FMLRKILL.wav) \
+VCMI_SOUND_NAME(FMLRMove) VCMI_SOUND_FILE(FMLRMOVE.wav) \
+VCMI_SOUND_NAME(FMLRWNCE) VCMI_SOUND_FILE(FMLRWNCE.wav) \
+VCMI_SOUND_NAME(FORCEFLD) VCMI_SOUND_FILE(FORCEFLD.wav) \
+VCMI_SOUND_NAME(FORGET) VCMI_SOUND_FILE(FORGET.wav) \
+VCMI_SOUND_NAME(FORTUNE) VCMI_SOUND_FILE(FORTUNE.wav) \
+VCMI_SOUND_NAME(FRENZY) VCMI_SOUND_FILE(FRENZY.wav) \
+VCMI_SOUND_NAME(FROSTING) VCMI_SOUND_FILE(FROSTING.wav) \
+VCMI_SOUND_NAME(gazebo) VCMI_SOUND_FILE(GAZEBO.wav) \
+VCMI_SOUND_NAME(GBASAttack) VCMI_SOUND_FILE(GBASATTK.wav) \
+VCMI_SOUND_NAME(GBASDefend) VCMI_SOUND_FILE(GBASDFND.wav) \
+VCMI_SOUND_NAME(GBASKill) VCMI_SOUND_FILE(GBASKILL.wav) \
+VCMI_SOUND_NAME(GBASMove) VCMI_SOUND_FILE(GBASMOVE.wav) \
+VCMI_SOUND_NAME(GBASWNCE) VCMI_SOUND_FILE(GBASWNCE.wav) \
+VCMI_SOUND_NAME(GBLNAttack) VCMI_SOUND_FILE(GBLNATTK.wav) \
+VCMI_SOUND_NAME(GBLNDefend) VCMI_SOUND_FILE(GBLNDFND.wav) \
+VCMI_SOUND_NAME(GBLNKill) VCMI_SOUND_FILE(GBLNKILL.wav) \
+VCMI_SOUND_NAME(GBLNMove) VCMI_SOUND_FILE(GBLNMOVE.wav) \
+VCMI_SOUND_NAME(GBLNWNCE) VCMI_SOUND_FILE(GBLNWNCE.wav) \
+VCMI_SOUND_NAME(GELFAttack) VCMI_SOUND_FILE(GELFATTK.wav) \
+VCMI_SOUND_NAME(GELFDefend) VCMI_SOUND_FILE(GELFDFND.wav) \
+VCMI_SOUND_NAME(GELFKill) VCMI_SOUND_FILE(GELFKILL.wav) \
+VCMI_SOUND_NAME(GELFMove) VCMI_SOUND_FILE(GELFMOVE.wav) \
+VCMI_SOUND_NAME(GELFShot) VCMI_SOUND_FILE(GELFSHOT.wav) \
+VCMI_SOUND_NAME(GELFWNCE) VCMI_SOUND_FILE(GELFWNCE.wav) \
+VCMI_SOUND_NAME(GENIAttack) VCMI_SOUND_FILE(GENIATTK.wav) \
+VCMI_SOUND_NAME(GENIDefend) VCMI_SOUND_FILE(GENIDFND.wav) \
+VCMI_SOUND_NAME(GENIE) VCMI_SOUND_FILE(GENIE.wav) \
+VCMI_SOUND_NAME(GENIKill) VCMI_SOUND_FILE(GENIKILL.wav) \
+VCMI_SOUND_NAME(GENIMove) VCMI_SOUND_FILE(GENIMOVE.wav) \
+VCMI_SOUND_NAME(GENIWNCE) VCMI_SOUND_FILE(GENIWNCE.wav) \
+VCMI_SOUND_NAME(GETPROTECTION) VCMI_SOUND_FILE(GETPROTECTION.wav) \
+VCMI_SOUND_NAME(GGLMAttack) VCMI_SOUND_FILE(GGLMATTK.wav) \
+VCMI_SOUND_NAME(GGLMDefend) VCMI_SOUND_FILE(GGLMDFND.wav) \
+VCMI_SOUND_NAME(GGLMKill) VCMI_SOUND_FILE(GGLMKILL.wav) \
+VCMI_SOUND_NAME(GGLMMove) VCMI_SOUND_FILE(GGLMMOVE.wav) \
+VCMI_SOUND_NAME(GGLMWNCE) VCMI_SOUND_FILE(GGLMWNCE.wav) \
+VCMI_SOUND_NAME(GHDRAttack) VCMI_SOUND_FILE(GHDRATTK.wav) \
+VCMI_SOUND_NAME(GHDRDefend) VCMI_SOUND_FILE(GHDRDFND.wav) \
+VCMI_SOUND_NAME(GHDRKill) VCMI_SOUND_FILE(GHDRKILL.wav) \
+VCMI_SOUND_NAME(GHDRMove) VCMI_SOUND_FILE(GHDRMOVE.wav) \
+VCMI_SOUND_NAME(GHDRWNCE) VCMI_SOUND_FILE(GHDRWNCE.wav) \
+VCMI_SOUND_NAME(GNLMAttack) VCMI_SOUND_FILE(GNLMATTK.wav) \
+VCMI_SOUND_NAME(GNLMDefend) VCMI_SOUND_FILE(GNLMDFND.wav) \
+VCMI_SOUND_NAME(GNLMKill) VCMI_SOUND_FILE(GNLMKILL.wav) \
+VCMI_SOUND_NAME(GNLMMove) VCMI_SOUND_FILE(GNLMMOVE.wav) \
+VCMI_SOUND_NAME(GNLMWNCE) VCMI_SOUND_FILE(GNLMWNCE.wav) \
+VCMI_SOUND_NAME(GNOLAttack) VCMI_SOUND_FILE(GNOLATTK.wav) \
+VCMI_SOUND_NAME(GNOLDefend) VCMI_SOUND_FILE(GNOLDFND.wav) \
+VCMI_SOUND_NAME(GNOLKill) VCMI_SOUND_FILE(GNOLKILL.wav) \
+VCMI_SOUND_NAME(GNOLMove) VCMI_SOUND_FILE(GNOLMOVE.wav) \
+VCMI_SOUND_NAME(GNOLWNCE) VCMI_SOUND_FILE(GNOLWNCE.wav) \
+VCMI_SOUND_NAME(GODRAttack) VCMI_SOUND_FILE(GODRATTK.wav) \
+VCMI_SOUND_NAME(GODRDefend) VCMI_SOUND_FILE(GODRDFND.wav) \
+VCMI_SOUND_NAME(GODRKill) VCMI_SOUND_FILE(GODRKILL.wav) \
+VCMI_SOUND_NAME(GODRMove) VCMI_SOUND_FILE(GODRMOVE.wav) \
+VCMI_SOUND_NAME(GODRWNCE) VCMI_SOUND_FILE(GODRWNCE.wav) \
+VCMI_SOUND_NAME(GOGFLAME) VCMI_SOUND_FILE(GOGFLAME.wav) \
+VCMI_SOUND_NAME(GOGGAttack) VCMI_SOUND_FILE(GOGGATTK.wav) \
+VCMI_SOUND_NAME(GOGGDefend) VCMI_SOUND_FILE(GOGGDFND.wav) \
+VCMI_SOUND_NAME(GOGGKill) VCMI_SOUND_FILE(GOGGKILL.wav) \
+VCMI_SOUND_NAME(GOGGMove) VCMI_SOUND_FILE(GOGGMOVE.wav) \
+VCMI_SOUND_NAME(GOGGShot) VCMI_SOUND_FILE(GOGGSHOT.wav) \
+VCMI_SOUND_NAME(GOGGWNCE) VCMI_SOUND_FILE(GOGGWNCE.wav) \
+VCMI_SOUND_NAME(GOODLUCK) VCMI_SOUND_FILE(GOODLUCK.wav) \
+VCMI_SOUND_NAME(GOODMRLE) VCMI_SOUND_FILE(GOODMRLE.wav) \
+VCMI_SOUND_NAME(GRAVEYARD) VCMI_SOUND_FILE(GRAVEYARD.wav) \
+VCMI_SOUND_NAME(GRDRAttack) VCMI_SOUND_FILE(GRDRATTK.wav) \
+VCMI_SOUND_NAME(GRDRDefend) VCMI_SOUND_FILE(GRDRDFND.wav) \
+VCMI_SOUND_NAME(GRDRKill) VCMI_SOUND_FILE(GRDRKILL.wav) \
+VCMI_SOUND_NAME(GRDRMove) VCMI_SOUND_FILE(GRDRMOVE.wav) \
+VCMI_SOUND_NAME(GRDRWNCE) VCMI_SOUND_FILE(GRDRWNCE.wav) \
+VCMI_SOUND_NAME(GRIFAttack) VCMI_SOUND_FILE(GRIFATTK.wav) \
+VCMI_SOUND_NAME(GRIFDefend) VCMI_SOUND_FILE(GRIFDFND.wav) \
+VCMI_SOUND_NAME(GRIFKill) VCMI_SOUND_FILE(GRIFKILL.wav) \
+VCMI_SOUND_NAME(GRIFMove) VCMI_SOUND_FILE(GRIFMOVE.wav) \
+VCMI_SOUND_NAME(GRIFWNCE) VCMI_SOUND_FILE(GRIFWNCE.wav) \
+VCMI_SOUND_NAME(GTITAttack) VCMI_SOUND_FILE(GTITATTK.wav) \
+VCMI_SOUND_NAME(GTITDefend) VCMI_SOUND_FILE(GTITDFND.wav) \
+VCMI_SOUND_NAME(GTITKill) VCMI_SOUND_FILE(GTITKILL.wav) \
+VCMI_SOUND_NAME(GTITMove) VCMI_SOUND_FILE(GTITMOVE.wav) \
+VCMI_SOUND_NAME(GTITShot) VCMI_SOUND_FILE(GTITSHOT.wav) \
+VCMI_SOUND_NAME(GTITWNCE) VCMI_SOUND_FILE(GTITWNCE.wav) \
+VCMI_SOUND_NAME(GWRDAttack) VCMI_SOUND_FILE(GWRDATTK.wav) \
+VCMI_SOUND_NAME(GWRDDefend) VCMI_SOUND_FILE(GWRDDFND.wav) \
+VCMI_SOUND_NAME(GWRDKill) VCMI_SOUND_FILE(GWRDKILL.wav) \
+VCMI_SOUND_NAME(GWRDMove) VCMI_SOUND_FILE(GWRDMOVE.wav) \
+VCMI_SOUND_NAME(GWRDWNCE) VCMI_SOUND_FILE(GWRDWNCE.wav) \
+VCMI_SOUND_NAME(HALBAttack) VCMI_SOUND_FILE(HALBATTK.wav) \
+VCMI_SOUND_NAME(HALBDefend) VCMI_SOUND_FILE(HALBDFND.wav) \
+VCMI_SOUND_NAME(HALBKill) VCMI_SOUND_FILE(HALBKILL.wav) \
+VCMI_SOUND_NAME(HALBMove) VCMI_SOUND_FILE(HALBMOVE.wav) \
+VCMI_SOUND_NAME(HALBWNCE) VCMI_SOUND_FILE(HALBWNCE.wav) \
+VCMI_SOUND_NAME(HALFAttack) VCMI_SOUND_FILE(HALFATTK.wav) \
+VCMI_SOUND_NAME(HALFDefend) VCMI_SOUND_FILE(HALFDFND.wav) \
+VCMI_SOUND_NAME(HALFKill) VCMI_SOUND_FILE(HALFKILL.wav) \
+VCMI_SOUND_NAME(HALFMove) VCMI_SOUND_FILE(HALFMOVE.wav) \
+VCMI_SOUND_NAME(HALFShot) VCMI_SOUND_FILE(HALFSHOT.wav) \
+VCMI_SOUND_NAME(HALFWNCE) VCMI_SOUND_FILE(HALFWNCE.wav) \
+VCMI_SOUND_NAME(HARPAttack) VCMI_SOUND_FILE(HARPATTK.wav) \
+VCMI_SOUND_NAME(HARPDefend) VCMI_SOUND_FILE(HARPDFND.wav) \
+VCMI_SOUND_NAME(HARPKill) VCMI_SOUND_FILE(HARPKILL.wav) \
+VCMI_SOUND_NAME(HARPMove) VCMI_SOUND_FILE(HARPMOVE.wav) \
+VCMI_SOUND_NAME(HARPWNCE) VCMI_SOUND_FILE(HARPWNCE.wav) \
+VCMI_SOUND_NAME(HASTE) VCMI_SOUND_FILE(HASTE.wav) \
+VCMI_SOUND_NAME(HCRSAttack) VCMI_SOUND_FILE(HCRSATTK.wav) \
+VCMI_SOUND_NAME(HCRSDefend) VCMI_SOUND_FILE(HCRSDFND.wav) \
+VCMI_SOUND_NAME(HCRSKill) VCMI_SOUND_FILE(HCRSKILL.wav) \
+VCMI_SOUND_NAME(HCRSMove) VCMI_SOUND_FILE(HCRSMOVE.wav) \
+VCMI_SOUND_NAME(HCRSShot) VCMI_SOUND_FILE(HCRSSHOT.wav) \
+VCMI_SOUND_NAME(HCRSWNCE) VCMI_SOUND_FILE(HCRSWNCE.wav) \
+VCMI_SOUND_NAME(HGOBAttack) VCMI_SOUND_FILE(HGOBATTK.wav) \
+VCMI_SOUND_NAME(HGOBDefend) VCMI_SOUND_FILE(HGOBDFND.wav) \
+VCMI_SOUND_NAME(HGOBKill) VCMI_SOUND_FILE(HGOBKILL.wav) \
+VCMI_SOUND_NAME(HGOBMove) VCMI_SOUND_FILE(HGOBMOVE.wav) \
+VCMI_SOUND_NAME(HGOBWNCE) VCMI_SOUND_FILE(HGOBWNCE.wav) \
+VCMI_SOUND_NAME(HGWRAttack) VCMI_SOUND_FILE(HGWRATTK.wav) \
+VCMI_SOUND_NAME(HGWRDefend) VCMI_SOUND_FILE(HGWRDFND.wav) \
+VCMI_SOUND_NAME(HGWRKill) VCMI_SOUND_FILE(HGWRKILL.wav) \
+VCMI_SOUND_NAME(HGWRMove) VCMI_SOUND_FILE(HGWRMOVE.wav) \
+VCMI_SOUND_NAME(HGWRWNCE) VCMI_SOUND_FILE(HGWRWNCE.wav) \
+VCMI_SOUND_NAME(HHAGAttack) VCMI_SOUND_FILE(HHAGATTK.wav) \
+VCMI_SOUND_NAME(HHAGDefend) VCMI_SOUND_FILE(HHAGDFND.wav) \
+VCMI_SOUND_NAME(HHAGKill) VCMI_SOUND_FILE(HHAGKILL.wav) \
+VCMI_SOUND_NAME(HHAGMove) VCMI_SOUND_FILE(HHAGMOVE.wav) \
+VCMI_SOUND_NAME(HHAGShot) VCMI_SOUND_FILE(HHAGSHOT.wav) \
+VCMI_SOUND_NAME(HHAGWNCE) VCMI_SOUND_FILE(HHAGWNCE.wav) \
+VCMI_SOUND_NAME(HHNDAttack) VCMI_SOUND_FILE(HHNDATTK.wav) \
+VCMI_SOUND_NAME(HHNDDefend) VCMI_SOUND_FILE(HHNDDFND.wav) \
+VCMI_SOUND_NAME(HHNDKill) VCMI_SOUND_FILE(HHNDKILL.wav) \
+VCMI_SOUND_NAME(HHNDMove) VCMI_SOUND_FILE(HHNDMOVE.wav) \
+VCMI_SOUND_NAME(HHNDWNCE) VCMI_SOUND_FILE(HHNDWNCE.wav) \
+VCMI_SOUND_NAME(horse00) VCMI_SOUND_FILE(HORSE00.wav) \
+VCMI_SOUND_NAME(horse01) VCMI_SOUND_FILE(HORSE01.wav) \
+VCMI_SOUND_NAME(horse02) VCMI_SOUND_FILE(HORSE02.wav) \
+VCMI_SOUND_NAME(horse03) VCMI_SOUND_FILE(HORSE03.wav) \
+VCMI_SOUND_NAME(horse04) VCMI_SOUND_FILE(HORSE04.wav) \
+VCMI_SOUND_NAME(horse05) VCMI_SOUND_FILE(HORSE05.wav) \
+VCMI_SOUND_NAME(horse06) VCMI_SOUND_FILE(HORSE06.wav) \
+VCMI_SOUND_NAME(horse07) VCMI_SOUND_FILE(HORSE07.wav) \
+VCMI_SOUND_NAME(horse08) VCMI_SOUND_FILE(HORSE08.wav) \
+VCMI_SOUND_NAME(horse09) VCMI_SOUND_FILE(HORSE09.wav) \
+VCMI_SOUND_NAME(horse10) VCMI_SOUND_FILE(HORSE10.wav) \
+VCMI_SOUND_NAME(horse20) VCMI_SOUND_FILE(HORSE20.wav) \
+VCMI_SOUND_NAME(horse21) VCMI_SOUND_FILE(HORSE21.wav) \
+VCMI_SOUND_NAME(horse22) VCMI_SOUND_FILE(HORSE22.wav) \
+VCMI_SOUND_NAME(horse23) VCMI_SOUND_FILE(HORSE23.wav) \
+VCMI_SOUND_NAME(horse24) VCMI_SOUND_FILE(HORSE24.wav) \
+VCMI_SOUND_NAME(horse25) VCMI_SOUND_FILE(HORSE25.wav) \
+VCMI_SOUND_NAME(horse26) VCMI_SOUND_FILE(HORSE26.wav) \
+VCMI_SOUND_NAME(horse27) VCMI_SOUND_FILE(HORSE27.wav) \
+VCMI_SOUND_NAME(horse29) VCMI_SOUND_FILE(HORSE29.wav) \
+VCMI_SOUND_NAME(hydraAttack) VCMI_SOUND_FILE(HYDRATTK.wav) \
+VCMI_SOUND_NAME(hydraDefend) VCMI_SOUND_FILE(HYDRDFND.wav) \
+VCMI_SOUND_NAME(hydraKill) VCMI_SOUND_FILE(HYDRKILL.wav) \
+VCMI_SOUND_NAME(hydraMove) VCMI_SOUND_FILE(HYDRMOVE.wav) \
+VCMI_SOUND_NAME(hydraWNCE) VCMI_SOUND_FILE(HYDRWNCE.wav) \
+VCMI_SOUND_NAME(HYPNOTIZ) VCMI_SOUND_FILE(HYPNOTIZ.wav) \
+VCMI_SOUND_NAME(ICELAttack) VCMI_SOUND_FILE(ICELATTK.wav) \
+VCMI_SOUND_NAME(ICELDefend) VCMI_SOUND_FILE(ICELDFND.wav) \
+VCMI_SOUND_NAME(ICELKill) VCMI_SOUND_FILE(ICELKILL.wav) \
+VCMI_SOUND_NAME(ICELMove) VCMI_SOUND_FILE(ICELMOVE.wav) \
+VCMI_SOUND_NAME(ICELShot) VCMI_SOUND_FILE(ICELSHOT.wav) \
+VCMI_SOUND_NAME(ICELWNCE) VCMI_SOUND_FILE(ICELWNCE.wav) \
+VCMI_SOUND_NAME(ICERAYEX) VCMI_SOUND_FILE(ICERAYEX.wav) \
+VCMI_SOUND_NAME(ICERAY) VCMI_SOUND_FILE(ICERAY.wav) \
+VCMI_SOUND_NAME(IGLMAttack) VCMI_SOUND_FILE(IGLMATTK.wav) \
+VCMI_SOUND_NAME(IGLMDefend) VCMI_SOUND_FILE(IGLMDFND.wav) \
+VCMI_SOUND_NAME(IGLMKill) VCMI_SOUND_FILE(IGLMKILL.wav) \
+VCMI_SOUND_NAME(IGLMMove) VCMI_SOUND_FILE(IGLMMOVE.wav) \
+VCMI_SOUND_NAME(IGLMWNCE) VCMI_SOUND_FILE(IGLMWNCE.wav) \
+VCMI_SOUND_NAME(IMPPAttack) VCMI_SOUND_FILE(IMPPATTK.wav) \
+VCMI_SOUND_NAME(IMPPDefend) VCMI_SOUND_FILE(IMPPDFND.wav) \
+VCMI_SOUND_NAME(IMPPKill) VCMI_SOUND_FILE(IMPPKILL.wav) \
+VCMI_SOUND_NAME(IMPPMove) VCMI_SOUND_FILE(IMPPMOVE.wav) \
+VCMI_SOUND_NAME(IMPPWNCE) VCMI_SOUND_FILE(IMPPWNCE.wav) \
+VCMI_SOUND_NAME(ITRGAttack) VCMI_SOUND_FILE(ITRGATTK.wav) \
+VCMI_SOUND_NAME(ITRGDefend) VCMI_SOUND_FILE(ITRGDFND.wav) \
+VCMI_SOUND_NAME(ITRGKill) VCMI_SOUND_FILE(ITRGKILL.wav) \
+VCMI_SOUND_NAME(ITRGMove) VCMI_SOUND_FILE(ITRGMOVE.wav) \
+VCMI_SOUND_NAME(ITRGWNCE) VCMI_SOUND_FILE(ITRGWNCE.wav) \
+VCMI_SOUND_NAME(KEEPShot) VCMI_SOUND_FILE(KEEPSHOT.wav) \
+VCMI_SOUND_NAME(KillFADE) VCMI_SOUND_FILE(KILLFADE.wav) \
+VCMI_SOUND_NAME(LANDKill) VCMI_SOUND_FILE(LANDKILL.wav) \
+VCMI_SOUND_NAME(LANDMINE) VCMI_SOUND_FILE(LANDMINE.wav) \
+VCMI_SOUND_NAME(LCRSAttack) VCMI_SOUND_FILE(LCRSATTK.wav) \
+VCMI_SOUND_NAME(LCRSDefend) VCMI_SOUND_FILE(LCRSDFND.wav) \
+VCMI_SOUND_NAME(LCRSKill) VCMI_SOUND_FILE(LCRSKILL.wav) \
+VCMI_SOUND_NAME(LCRSMove) VCMI_SOUND_FILE(LCRSMOVE.wav) \
+VCMI_SOUND_NAME(LCRSShot) VCMI_SOUND_FILE(LCRSSHOT.wav) \
+VCMI_SOUND_NAME(LCRSWNCE) VCMI_SOUND_FILE(LCRSWNCE.wav) \
+VCMI_SOUND_NAME(LICHATK2) VCMI_SOUND_FILE(LICHATK2.wav) \
+VCMI_SOUND_NAME(LICHAttack) VCMI_SOUND_FILE(LICHATTK.wav) \
+VCMI_SOUND_NAME(LICHDefend) VCMI_SOUND_FILE(LICHDFND.wav) \
+VCMI_SOUND_NAME(LICHKill) VCMI_SOUND_FILE(LICHKILL.wav) \
+VCMI_SOUND_NAME(LICHMove) VCMI_SOUND_FILE(LICHMOVE.wav) \
+VCMI_SOUND_NAME(LICHShot) VCMI_SOUND_FILE(LICHSHOT.wav) \
+VCMI_SOUND_NAME(LICHWNCE) VCMI_SOUND_FILE(LICHWNCE.wav) \
+VCMI_SOUND_NAME(LIGHTBLT) VCMI_SOUND_FILE(LIGHTBLT.wav) \
+VCMI_SOUND_NAME(LIGHTHOUSE) VCMI_SOUND_FILE(LIGHTHOUSE.wav) \
+VCMI_SOUND_NAME(LOOPAIR) VCMI_SOUND_FILE(LOOPAIR.wav) \
+VCMI_SOUND_NAME(LOOPANIM) VCMI_SOUND_FILE(LOOPANIM.wav) \
+VCMI_SOUND_NAME(LOOPARCH) VCMI_SOUND_FILE(LOOPARCH.wav) \
+VCMI_SOUND_NAME(LOOPAREN) VCMI_SOUND_FILE(LOOPAREN.wav) \
+VCMI_SOUND_NAME(LOOPBEHE) VCMI_SOUND_FILE(LOOPBEHE.wav) \
+VCMI_SOUND_NAME(LOOPBIRD) VCMI_SOUND_FILE(LOOPBIRD.wav) \
+VCMI_SOUND_NAME(LOOPBUOY) VCMI_SOUND_FILE(LOOPBUOY.wav) \
+VCMI_SOUND_NAME(LOOPCAMP) VCMI_SOUND_FILE(LOOPCAMP.wav) \
+VCMI_SOUND_NAME(LOOPCAVE) VCMI_SOUND_FILE(LOOPCAVE.wav) \
+VCMI_SOUND_NAME(LOOPCRYS) VCMI_SOUND_FILE(LOOPCRYS.wav) \
+VCMI_SOUND_NAME(LOOPCURS) VCMI_SOUND_FILE(LOOPCURS.wav) \
+VCMI_SOUND_NAME(LOOPDEAD) VCMI_SOUND_FILE(LOOPDEAD.wav) \
+VCMI_SOUND_NAME(LOOPDEN) VCMI_SOUND_FILE(LOOPDEN.wav) \
+VCMI_SOUND_NAME(LOOPDEVL) VCMI_SOUND_FILE(LOOPDEVL.wav) \
+VCMI_SOUND_NAME(LOOPDOG) VCMI_SOUND_FILE(LOOPDOG.wav) \
+VCMI_SOUND_NAME(LOOPDRAG) VCMI_SOUND_FILE(LOOPDRAG.wav) \
+VCMI_SOUND_NAME(LOOPDWAR) VCMI_SOUND_FILE(LOOPDWAR.wav) \
+VCMI_SOUND_NAME(LOOPEART) VCMI_SOUND_FILE(LOOPEART.wav) \
+VCMI_SOUND_NAME(LOOPELF) VCMI_SOUND_FILE(LOOPELF.wav) \
+VCMI_SOUND_NAME(LOOPFACT) VCMI_SOUND_FILE(LOOPFACT.wav) \
+VCMI_SOUND_NAME(LOOPFAER) VCMI_SOUND_FILE(LOOPFAER.wav) \
+VCMI_SOUND_NAME(LOOPFALL) VCMI_SOUND_FILE(LOOPFALL.wav) \
+VCMI_SOUND_NAME(LOOPFIRE) VCMI_SOUND_FILE(LOOPFIRE.wav) \
+VCMI_SOUND_NAME(LOOPFLAG) VCMI_SOUND_FILE(LOOPFLAG.wav) \
+VCMI_SOUND_NAME(LOOPFOUN) VCMI_SOUND_FILE(LOOPFOUN.wav) \
+VCMI_SOUND_NAME(LOOPGARD) VCMI_SOUND_FILE(LOOPGARD.wav) \
+VCMI_SOUND_NAME(LOOPGATE) VCMI_SOUND_FILE(LOOPGATE.wav) \
+VCMI_SOUND_NAME(LOOPGEMP) VCMI_SOUND_FILE(LOOPGEMP.wav) \
+VCMI_SOUND_NAME(LOOPGOBL) VCMI_SOUND_FILE(LOOPGOBL.wav) \
+VCMI_SOUND_NAME(LOOPGREM) VCMI_SOUND_FILE(LOOPGREM.wav) \
+VCMI_SOUND_NAME(LOOPGRIF) VCMI_SOUND_FILE(LOOPGRIF.wav) \
+VCMI_SOUND_NAME(LOOPHARP) VCMI_SOUND_FILE(LOOPHARP.wav) \
+VCMI_SOUND_NAME(LOOPHORS) VCMI_SOUND_FILE(LOOPHORS.wav) \
+VCMI_SOUND_NAME(LOOPHYDR) VCMI_SOUND_FILE(LOOPHYDR.wav) \
+VCMI_SOUND_NAME(LOOPLEAR) VCMI_SOUND_FILE(LOOPLEAR.wav) \
+VCMI_SOUND_NAME(LOOPLEPR) VCMI_SOUND_FILE(LOOPLEPR.wav) \
+VCMI_SOUND_NAME(LOOPLUMB) VCMI_SOUND_FILE(LOOPLUMB.wav) \
+VCMI_SOUND_NAME(LOOPMAGI) VCMI_SOUND_FILE(LOOPMAGI.wav) \
+VCMI_SOUND_NAME(LOOPMANT) VCMI_SOUND_FILE(LOOPMANT.wav) \
+VCMI_SOUND_NAME(LOOPMARK) VCMI_SOUND_FILE(LOOPMARK.wav) \
+VCMI_SOUND_NAME(LOOPMEDU) VCMI_SOUND_FILE(LOOPMEDU.wav) \
+VCMI_SOUND_NAME(LOOPMERC) VCMI_SOUND_FILE(LOOPMERC.wav) \
+VCMI_SOUND_NAME(LOOPMILL) VCMI_SOUND_FILE(LOOPMILL.wav) \
+VCMI_SOUND_NAME(LOOPMINE) VCMI_SOUND_FILE(LOOPMINE.wav) \
+VCMI_SOUND_NAME(LOOPMON1) VCMI_SOUND_FILE(LOOPMON1.wav) \
+VCMI_SOUND_NAME(LOOPMON2) VCMI_SOUND_FILE(LOOPMON2.wav) \
+VCMI_SOUND_NAME(LOOPMONK) VCMI_SOUND_FILE(LOOPMONK.wav) \
+VCMI_SOUND_NAME(LOOPMONS) VCMI_SOUND_FILE(LOOPMONS.wav) \
+VCMI_SOUND_NAME(LOOPNAGA) VCMI_SOUND_FILE(LOOPNAGA.wav) \
+VCMI_SOUND_NAME(LOOPOCEA) VCMI_SOUND_FILE(LOOPOCEA.wav) \
+VCMI_SOUND_NAME(LOOPOGRE) VCMI_SOUND_FILE(LOOPOGRE.wav) \
+VCMI_SOUND_NAME(LOOPORC) VCMI_SOUND_FILE(LOOPORC.wav) \
+VCMI_SOUND_NAME(LOOPPEGA) VCMI_SOUND_FILE(LOOPPEGA.wav) \
+VCMI_SOUND_NAME(LOOPPIKE) VCMI_SOUND_FILE(LOOPPIKE.wav) \
+VCMI_SOUND_NAME(LOOPSANC) VCMI_SOUND_FILE(LOOPSANC.wav) \
+VCMI_SOUND_NAME(LOOPSHRIN) VCMI_SOUND_FILE(LOOPSHRIN.wav) \
+VCMI_SOUND_NAME(LOOPSIRE) VCMI_SOUND_FILE(LOOPSIRE.wav) \
+VCMI_SOUND_NAME(LOOPSKEL) VCMI_SOUND_FILE(LOOPSKEL.wav) \
+VCMI_SOUND_NAME(LOOPSTAR) VCMI_SOUND_FILE(LOOPSTAR.wav) \
+VCMI_SOUND_NAME(LOOPSULF) VCMI_SOUND_FILE(LOOPSULF.wav) \
+VCMI_SOUND_NAME(LOOPSWAR) VCMI_SOUND_FILE(LOOPSWAR.wav) \
+VCMI_SOUND_NAME(LOOPSWOR) VCMI_SOUND_FILE(LOOPSWOR.wav) \
+VCMI_SOUND_NAME(LOOPTAV) VCMI_SOUND_FILE(LOOPTAV.wav) \
+VCMI_SOUND_NAME(LOOPTITA) VCMI_SOUND_FILE(LOOPTITA.wav) \
+VCMI_SOUND_NAME(LOOPUNIC) VCMI_SOUND_FILE(LOOPUNIC.wav) \
+VCMI_SOUND_NAME(LOOPVENT) VCMI_SOUND_FILE(LOOPVENT.wav) \
+VCMI_SOUND_NAME(LOOPVOLC) VCMI_SOUND_FILE(LOOPVOLC.wav) \
+VCMI_SOUND_NAME(LOOPWHIR) VCMI_SOUND_FILE(LOOPWHIR.wav) \
+VCMI_SOUND_NAME(LOOPWIND) VCMI_SOUND_FILE(LOOPWIND.wav) \
+VCMI_SOUND_NAME(LOOPWOLF) VCMI_SOUND_FILE(LOOPWOLF.wav) \
+VCMI_SOUND_NAME(LTITAttack) VCMI_SOUND_FILE(LTITATTK.wav) \
+VCMI_SOUND_NAME(LTITDefend) VCMI_SOUND_FILE(LTITDFND.wav) \
+VCMI_SOUND_NAME(LTITKill) VCMI_SOUND_FILE(LTITKILL.wav) \
+VCMI_SOUND_NAME(LTITMove) VCMI_SOUND_FILE(LTITMOVE.wav) \
+VCMI_SOUND_NAME(LTITWNCE) VCMI_SOUND_FILE(LTITWNCE.wav) \
+VCMI_SOUND_NAME(LUCK) VCMI_SOUND_FILE(LUCK.wav) \
+VCMI_SOUND_NAME(MAGCAROW) VCMI_SOUND_FILE(MAGCAROW.wav) \
+VCMI_SOUND_NAME(MAGCHDRN) VCMI_SOUND_FILE(MAGCHDRN.wav) \
+VCMI_SOUND_NAME(MAGCHFIL) VCMI_SOUND_FILE(MAGCHFIL.wav) \
+VCMI_SOUND_NAME(MAGEAttack) VCMI_SOUND_FILE(MAGEATTK.wav) \
+VCMI_SOUND_NAME(MAGEDefend) VCMI_SOUND_FILE(MAGEDFND.wav) \
+VCMI_SOUND_NAME(MAGEKill) VCMI_SOUND_FILE(MAGEKILL.wav) \
+VCMI_SOUND_NAME(MAGEMove) VCMI_SOUND_FILE(MAGEMOVE.wav) \
+VCMI_SOUND_NAME(MAGEShot) VCMI_SOUND_FILE(MAGESHOT.wav) \
+VCMI_SOUND_NAME(MAGEWNCE) VCMI_SOUND_FILE(MAGEWNCE.wav) \
+VCMI_SOUND_NAME(MAGICBLT) VCMI_SOUND_FILE(MAGICBLT.wav) \
+VCMI_SOUND_NAME(MAGICRES) VCMI_SOUND_FILE(MAGICRES.wav) \
+VCMI_SOUND_NAME(MAGMAttack) VCMI_SOUND_FILE(MAGMATTK.wav) \
+VCMI_SOUND_NAME(MAGMDefend) VCMI_SOUND_FILE(MAGMDFND.wav) \
+VCMI_SOUND_NAME(MAGMKill) VCMI_SOUND_FILE(MAGMKILL.wav) \
+VCMI_SOUND_NAME(MAGMMove) VCMI_SOUND_FILE(MAGMMOVE.wav) \
+VCMI_SOUND_NAME(MAGMWNCE) VCMI_SOUND_FILE(MAGMWNCE.wav) \
+VCMI_SOUND_NAME(MANADRAI) VCMI_SOUND_FILE(MANADRAI.wav) \
+VCMI_SOUND_NAME(MANTAttack) VCMI_SOUND_FILE(MANTATTK.wav) \
+VCMI_SOUND_NAME(MANTDefend) VCMI_SOUND_FILE(MANTDFND.wav) \
+VCMI_SOUND_NAME(MANTKill) VCMI_SOUND_FILE(MANTKILL.wav) \
+VCMI_SOUND_NAME(MANTMove) VCMI_SOUND_FILE(MANTMOVE.wav) \
+VCMI_SOUND_NAME(MANTShot) VCMI_SOUND_FILE(MANTSHOT.wav) \
+VCMI_SOUND_NAME(MANTWNCE) VCMI_SOUND_FILE(MANTWNCE.wav) \
+VCMI_SOUND_NAME(MEDQAttack) VCMI_SOUND_FILE(MEDQATTK.wav) \
+VCMI_SOUND_NAME(MEDQDefend) VCMI_SOUND_FILE(MEDQDFND.wav) \
+VCMI_SOUND_NAME(MEDQKill) VCMI_SOUND_FILE(MEDQKILL.wav) \
+VCMI_SOUND_NAME(MEDQMove) VCMI_SOUND_FILE(MEDQMOVE.wav) \
+VCMI_SOUND_NAME(MEDQShot) VCMI_SOUND_FILE(MEDQSHOT.wav) \
+VCMI_SOUND_NAME(MEDQWNCE) VCMI_SOUND_FILE(MEDQWNCE.wav) \
+VCMI_SOUND_NAME(MEDUAttack) VCMI_SOUND_FILE(MEDUATTK.wav) \
+VCMI_SOUND_NAME(MEDUDefend) VCMI_SOUND_FILE(MEDUDFND.wav) \
+VCMI_SOUND_NAME(MEDUKill) VCMI_SOUND_FILE(MEDUKILL.wav) \
+VCMI_SOUND_NAME(MEDUMove) VCMI_SOUND_FILE(MEDUMOVE.wav) \
+VCMI_SOUND_NAME(MEDUShot) VCMI_SOUND_FILE(MEDUSHOT.wav) \
+VCMI_SOUND_NAME(MEDUWNCE) VCMI_SOUND_FILE(MEDUWNCE.wav) \
+VCMI_SOUND_NAME(METEOR) VCMI_SOUND_FILE(METEOR.wav) \
+VCMI_SOUND_NAME(MGELAttack) VCMI_SOUND_FILE(MGELATTK.wav) \
+VCMI_SOUND_NAME(MGELDefend) VCMI_SOUND_FILE(MGELDFND.wav) \
+VCMI_SOUND_NAME(MGELKill) VCMI_SOUND_FILE(MGELKILL.wav) \
+VCMI_SOUND_NAME(MGELMove) VCMI_SOUND_FILE(MGELMOVE.wav) \
+VCMI_SOUND_NAME(MGELWNCE) VCMI_SOUND_FILE(MGELWNCE.wav) \
+VCMI_SOUND_NAME(MGOGAttack) VCMI_SOUND_FILE(MGOGATTK.wav) \
+VCMI_SOUND_NAME(MGOGDefend) VCMI_SOUND_FILE(MGOGDFND.wav) \
+VCMI_SOUND_NAME(MGOGKill) VCMI_SOUND_FILE(MGOGKILL.wav) \
+VCMI_SOUND_NAME(MGOGMove) VCMI_SOUND_FILE(MGOGMOVE.wav) \
+VCMI_SOUND_NAME(MGOGShot) VCMI_SOUND_FILE(MGOGSHOT.wav) \
+VCMI_SOUND_NAME(MGOGWNCE) VCMI_SOUND_FILE(MGOGWNCE.wav) \
+VCMI_SOUND_NAME(MGRMAttack) VCMI_SOUND_FILE(MGRMATTK.wav) \
+VCMI_SOUND_NAME(MGRMDefend) VCMI_SOUND_FILE(MGRMDFND.wav) \
+VCMI_SOUND_NAME(MGRMKill) VCMI_SOUND_FILE(MGRMKILL.wav) \
+VCMI_SOUND_NAME(MGRMMove) VCMI_SOUND_FILE(MGRMMOVE.wav) \
+VCMI_SOUND_NAME(MGRMShot) VCMI_SOUND_FILE(MGRMSHOT.wav) \
+VCMI_SOUND_NAME(MGRMWNCE) VCMI_SOUND_FILE(MGRMWNCE.wav) \
+VCMI_SOUND_NAME(MILITARY) VCMI_SOUND_FILE(MILITARY.wav) \
+VCMI_SOUND_NAME(MINKAttack) VCMI_SOUND_FILE(MINKATTK.wav) \
+VCMI_SOUND_NAME(MINKDefend) VCMI_SOUND_FILE(MINKDFND.wav) \
+VCMI_SOUND_NAME(MINKKill) VCMI_SOUND_FILE(MINKKILL.wav) \
+VCMI_SOUND_NAME(MINKMove) VCMI_SOUND_FILE(MINKMOVE.wav) \
+VCMI_SOUND_NAME(MINKShot) VCMI_SOUND_FILE(MINKSHOT.wav) \
+VCMI_SOUND_NAME(MINKWNCE) VCMI_SOUND_FILE(MINKWNCE.wav) \
+VCMI_SOUND_NAME(MINOAttack) VCMI_SOUND_FILE(MINOATTK.wav) \
+VCMI_SOUND_NAME(MINODefend) VCMI_SOUND_FILE(MINODFND.wav) \
+VCMI_SOUND_NAME(MINOKill) VCMI_SOUND_FILE(MINOKILL.wav) \
+VCMI_SOUND_NAME(MINOMove) VCMI_SOUND_FILE(MINOMOVE.wav) \
+VCMI_SOUND_NAME(MINOWNCE) VCMI_SOUND_FILE(MINOWNCE.wav) \
+VCMI_SOUND_NAME(MIRRORIM) VCMI_SOUND_FILE(MIRRORIM.wav) \
+VCMI_SOUND_NAME(MIRTH) VCMI_SOUND_FILE(MIRTH.wav) \
+VCMI_SOUND_NAME(MISFORT) VCMI_SOUND_FILE(MISFORT.wav) \
+VCMI_SOUND_NAME(MNRDEATH) VCMI_SOUND_FILE(MNRDEATH.wav) \
+VCMI_SOUND_NAME(monkAttack) VCMI_SOUND_FILE(MONKATTK.wav) \
+VCMI_SOUND_NAME(monkDefend) VCMI_SOUND_FILE(MONKDFND.wav) \
+VCMI_SOUND_NAME(monkKill) VCMI_SOUND_FILE(MONKKILL.wav) \
+VCMI_SOUND_NAME(monkMove) VCMI_SOUND_FILE(MONKMOVE.wav) \
+VCMI_SOUND_NAME(monkShot) VCMI_SOUND_FILE(MONKSHOT.wav) \
+VCMI_SOUND_NAME(monkWNCE) VCMI_SOUND_FILE(MONKWNCE.wav) \
+VCMI_SOUND_NAME(MORALE) VCMI_SOUND_FILE(MORALE.wav) \
+VCMI_SOUND_NAME(MUCKMIRE) VCMI_SOUND_FILE(MUCKMIRE.wav) \
+VCMI_SOUND_NAME(MUMYAttack) VCMI_SOUND_FILE(MUMYATTK.wav) \
+VCMI_SOUND_NAME(MUMYDefend) VCMI_SOUND_FILE(MUMYDFND.wav) \
+VCMI_SOUND_NAME(MUMYKill) VCMI_SOUND_FILE(MUMYKILL.wav) \
+VCMI_SOUND_NAME(MUMYMove) VCMI_SOUND_FILE(MUMYMOVE.wav) \
+VCMI_SOUND_NAME(MUMYWNCE) VCMI_SOUND_FILE(MUMYWNCE.wav) \
+VCMI_SOUND_NAME(MYSTERY) VCMI_SOUND_FILE(MYSTERY.wav) \
+VCMI_SOUND_NAME(newDay) VCMI_SOUND_FILE(NEWDAY.wav) \
+VCMI_SOUND_NAME(newMonth) VCMI_SOUND_FILE(NEWMONTH.wav) \
+VCMI_SOUND_NAME(newWeek) VCMI_SOUND_FILE(NEWWEEK.wav) \
+VCMI_SOUND_NAME(NGRDAttack) VCMI_SOUND_FILE(NGRDATTK.wav) \
+VCMI_SOUND_NAME(NGRDDefend) VCMI_SOUND_FILE(NGRDDFND.wav) \
+VCMI_SOUND_NAME(NGRDKill) VCMI_SOUND_FILE(NGRDKILL.wav) \
+VCMI_SOUND_NAME(NGRDMove) VCMI_SOUND_FILE(NGRDMOVE.wav) \
+VCMI_SOUND_NAME(NGRDWNCE) VCMI_SOUND_FILE(NGRDWNCE.wav) \
+VCMI_SOUND_NAME(NMADAttack) VCMI_SOUND_FILE(NMADATTK.wav) \
+VCMI_SOUND_NAME(NMADDefend) VCMI_SOUND_FILE(NMADDFND.wav) \
+VCMI_SOUND_NAME(NMADKill) VCMI_SOUND_FILE(NMADKILL.wav) \
+VCMI_SOUND_NAME(NMADMove) VCMI_SOUND_FILE(NMADMOVE.wav) \
+VCMI_SOUND_NAME(NMADWNCE) VCMI_SOUND_FILE(NMADWNCE.wav) \
+VCMI_SOUND_NAME(NOMAD) VCMI_SOUND_FILE(NOMAD.wav) \
+VCMI_SOUND_NAME(NOSFAttack) VCMI_SOUND_FILE(NOSFATTK.wav) \
+VCMI_SOUND_NAME(NOSFDefend) VCMI_SOUND_FILE(NOSFDFND.wav) \
+VCMI_SOUND_NAME(NOSFEXT1) VCMI_SOUND_FILE(NOSFEXT1.wav) \
+VCMI_SOUND_NAME(NOSFEXT2) VCMI_SOUND_FILE(NOSFEXT2.wav) \
+VCMI_SOUND_NAME(NOSFKill) VCMI_SOUND_FILE(NOSFKILL.wav) \
+VCMI_SOUND_NAME(NOSFMove) VCMI_SOUND_FILE(NOSFMOVE.wav) \
+VCMI_SOUND_NAME(NOSFShot) VCMI_SOUND_FILE(NOSFSHOT.wav) \
+VCMI_SOUND_NAME(NOSFWNCE) VCMI_SOUND_FILE(NOSFWNCE.wav) \
+VCMI_SOUND_NAME(NSENAttack) VCMI_SOUND_FILE(NSENATTK.wav) \
+VCMI_SOUND_NAME(NSENDefend) VCMI_SOUND_FILE(NSENDFND.wav) \
+VCMI_SOUND_NAME(NSENKill) VCMI_SOUND_FILE(NSENKILL.wav) \
+VCMI_SOUND_NAME(NSENMove) VCMI_SOUND_FILE(NSENMOVE.wav) \
+VCMI_SOUND_NAME(NSENWNCE) VCMI_SOUND_FILE(NSENWNCE.wav) \
+VCMI_SOUND_NAME(heroNewLevel) VCMI_SOUND_FILE(NWHEROLV.wav) \
+VCMI_SOUND_NAME(OBELISK) VCMI_SOUND_FILE(OBELISK.wav) \
+VCMI_SOUND_NAME(OGREAttack) VCMI_SOUND_FILE(OGREATTK.wav) \
+VCMI_SOUND_NAME(OGREDefend) VCMI_SOUND_FILE(OGREDFND.wav) \
+VCMI_SOUND_NAME(OGREKill) VCMI_SOUND_FILE(OGREKILL.wav) \
+VCMI_SOUND_NAME(OGREMove) VCMI_SOUND_FILE(OGREMOVE.wav) \
+VCMI_SOUND_NAME(OGREWNCE) VCMI_SOUND_FILE(OGREWNCE.wav) \
+VCMI_SOUND_NAME(OGRGAttack) VCMI_SOUND_FILE(OGRGATTK.wav) \
+VCMI_SOUND_NAME(OGRGDefend) VCMI_SOUND_FILE(OGRGDFND.wav) \
+VCMI_SOUND_NAME(OGRGKill) VCMI_SOUND_FILE(OGRGKILL.wav) \
+VCMI_SOUND_NAME(OGRGMove) VCMI_SOUND_FILE(OGRGMOVE.wav) \
+VCMI_SOUND_NAME(OGRGWNCE) VCMI_SOUND_FILE(OGRGWNCE.wav) \
+VCMI_SOUND_NAME(OGRMAttack) VCMI_SOUND_FILE(OGRMATTK.wav) \
+VCMI_SOUND_NAME(OGRMDefend) VCMI_SOUND_FILE(OGRMDFND.wav) \
+VCMI_SOUND_NAME(OGRMKill) VCMI_SOUND_FILE(OGRMKILL.wav) \
+VCMI_SOUND_NAME(OGRMMove) VCMI_SOUND_FILE(OGRMMOVE.wav) \
+VCMI_SOUND_NAME(OGRMShot) VCMI_SOUND_FILE(OGRMSHOT.wav) \
+VCMI_SOUND_NAME(OGRMWNCE) VCMI_SOUND_FILE(OGRMWNCE.wav) \
+VCMI_SOUND_NAME(OORCAttack) VCMI_SOUND_FILE(OORCATTK.wav) \
+VCMI_SOUND_NAME(OORCDefend) VCMI_SOUND_FILE(OORCDFND.wav) \
+VCMI_SOUND_NAME(OORCKill) VCMI_SOUND_FILE(OORCKILL.wav) \
+VCMI_SOUND_NAME(OORCMove) VCMI_SOUND_FILE(OORCMOVE.wav) \
+VCMI_SOUND_NAME(OORCShot) VCMI_SOUND_FILE(OORCSHOT.wav) \
+VCMI_SOUND_NAME(OORCWNCE) VCMI_SOUND_FILE(OORCWNCE.wav) \
+VCMI_SOUND_NAME(ORCCAttack) VCMI_SOUND_FILE(ORCCATTK.wav) \
+VCMI_SOUND_NAME(ORCCDefend) VCMI_SOUND_FILE(ORCCDFND.wav) \
+VCMI_SOUND_NAME(ORCCKill) VCMI_SOUND_FILE(ORCCKILL.wav) \
+VCMI_SOUND_NAME(ORCCMove) VCMI_SOUND_FILE(ORCCMOVE.wav) \
+VCMI_SOUND_NAME(ORCCShot) VCMI_SOUND_FILE(ORCCSHOT.wav) \
+VCMI_SOUND_NAME(ORCCWNCE) VCMI_SOUND_FILE(ORCCWNCE.wav) \
+VCMI_SOUND_NAME(PARALYZE) VCMI_SOUND_FILE(PARALYZE.wav) \
+VCMI_SOUND_NAME(PEGAAttack) VCMI_SOUND_FILE(PEGAATTK.wav) \
+VCMI_SOUND_NAME(PEGADefend) VCMI_SOUND_FILE(PEGADFND.wav) \
+VCMI_SOUND_NAME(PEGAKill) VCMI_SOUND_FILE(PEGAKILL.wav) \
+VCMI_SOUND_NAME(PEGAMove) VCMI_SOUND_FILE(PEGAMOVE.wav) \
+VCMI_SOUND_NAME(PEGAWNCE) VCMI_SOUND_FILE(PEGAWNCE.wav) \
+VCMI_SOUND_NAME(PFNDAttack) VCMI_SOUND_FILE(PFNDATTK.wav) \
+VCMI_SOUND_NAME(PFNDDefend) VCMI_SOUND_FILE(PFNDDFND.wav) \
+VCMI_SOUND_NAME(PFNDKill) VCMI_SOUND_FILE(PFNDKILL.wav) \
+VCMI_SOUND_NAME(PFNDMove) VCMI_SOUND_FILE(PFNDMOVE.wav) \
+VCMI_SOUND_NAME(PFNDWNCE) VCMI_SOUND_FILE(PFNDWNCE.wav) \
+VCMI_SOUND_NAME(PFOEAttack) VCMI_SOUND_FILE(PFOEATTK.wav) \
+VCMI_SOUND_NAME(PFOEDefend) VCMI_SOUND_FILE(PFOEDFND.wav) \
+VCMI_SOUND_NAME(PFOEKill) VCMI_SOUND_FILE(PFOEKILL.wav) \
+VCMI_SOUND_NAME(PFOEMove) VCMI_SOUND_FILE(PFOEMOVE.wav) \
+VCMI_SOUND_NAME(PFOEWNCE) VCMI_SOUND_FILE(PFOEWNCE.wav) \
+VCMI_SOUND_NAME(PHOEAttack) VCMI_SOUND_FILE(PHOEATTK.wav) \
+VCMI_SOUND_NAME(PHOEDefend) VCMI_SOUND_FILE(PHOEDFND.wav) \
+VCMI_SOUND_NAME(PHOEKill) VCMI_SOUND_FILE(PHOEKILL.wav) \
+VCMI_SOUND_NAME(PHOEMove) VCMI_SOUND_FILE(PHOEMOVE.wav) \
+VCMI_SOUND_NAME(PHOEWNCE) VCMI_SOUND_FILE(PHOEWNCE.wav) \
+VCMI_SOUND_NAME(pickup01) VCMI_SOUND_FILE(PICKUP01.wav) \
+VCMI_SOUND_NAME(pickup02) VCMI_SOUND_FILE(PICKUP02.wav) \
+VCMI_SOUND_NAME(pickup03) VCMI_SOUND_FILE(PICKUP03.wav) \
+VCMI_SOUND_NAME(pickup04) VCMI_SOUND_FILE(PICKUP04.wav) \
+VCMI_SOUND_NAME(pickup05) VCMI_SOUND_FILE(PICKUP05.wav) \
+VCMI_SOUND_NAME(pickup06) VCMI_SOUND_FILE(PICKUP06.wav) \
+VCMI_SOUND_NAME(pickup07) VCMI_SOUND_FILE(PICKUP07.wav) \
+VCMI_SOUND_NAME(pikemanAttack) VCMI_SOUND_FILE(PIKEATTK.wav) \
+VCMI_SOUND_NAME(pikemanDefend) VCMI_SOUND_FILE(PIKEDFND.wav) \
+VCMI_SOUND_NAME(pikemanKill) VCMI_SOUND_FILE(PIKEKILL.wav) \
+VCMI_SOUND_NAME(pikemanMove) VCMI_SOUND_FILE(PIKEMOVE.wav) \
+VCMI_SOUND_NAME(pikemanWNCE) VCMI_SOUND_FILE(PIKEWNCE.wav) \
+VCMI_SOUND_NAME(pixieAttack) VCMI_SOUND_FILE(PIXIATTK.wav) \
+VCMI_SOUND_NAME(pixieDefend) VCMI_SOUND_FILE(PIXIDFND.wav) \
+VCMI_SOUND_NAME(pixieKill) VCMI_SOUND_FILE(PIXIKILL.wav) \
+VCMI_SOUND_NAME(pixieMove) VCMI_SOUND_FILE(PIXIMOVE.wav) \
+VCMI_SOUND_NAME(pixieWNCE) VCMI_SOUND_FILE(PIXIWNCE.wav) \
+VCMI_SOUND_NAME(PLAYCOME) VCMI_SOUND_FILE(PLAYCOME.wav) \
+VCMI_SOUND_NAME(PLAYEXIT) VCMI_SOUND_FILE(PLAYEXIT.wav) \
+VCMI_SOUND_NAME(PLAYTURN) VCMI_SOUND_FILE(PLAYTURN.wav) \
+VCMI_SOUND_NAME(PLCHAttack) VCMI_SOUND_FILE(PLCHATTK.wav) \
+VCMI_SOUND_NAME(PLCHDefend) VCMI_SOUND_FILE(PLCHDFND.wav) \
+VCMI_SOUND_NAME(PLCHKill) VCMI_SOUND_FILE(PLCHKILL.wav) \
+VCMI_SOUND_NAME(PLCHMove) VCMI_SOUND_FILE(PLCHMOVE.wav) \
+VCMI_SOUND_NAME(PLCHShot) VCMI_SOUND_FILE(PLCHSHOT.wav) \
+VCMI_SOUND_NAME(PLCHWNCE) VCMI_SOUND_FILE(PLCHWNCE.wav) \
+VCMI_SOUND_NAME(PLIZAttack) VCMI_SOUND_FILE(PLIZATTK.wav) \
+VCMI_SOUND_NAME(PLIZDefend) VCMI_SOUND_FILE(PLIZDFND.wav) \
+VCMI_SOUND_NAME(PLIZKill) VCMI_SOUND_FILE(PLIZKILL.wav) \
+VCMI_SOUND_NAME(PLIZMove) VCMI_SOUND_FILE(PLIZMOVE.wav) \
+VCMI_SOUND_NAME(PLIZShot) VCMI_SOUND_FILE(PLIZSHOT.wav) \
+VCMI_SOUND_NAME(PLIZWNCE) VCMI_SOUND_FILE(PLIZWNCE.wav) \
+VCMI_SOUND_NAME(POISON) VCMI_SOUND_FILE(POISON.wav) \
+VCMI_SOUND_NAME(PRAYER) VCMI_SOUND_FILE(PRAYER.wav) \
+VCMI_SOUND_NAME(PRECISON) VCMI_SOUND_FILE(PRECISON.wav) \
+VCMI_SOUND_NAME(PROTECTA) VCMI_SOUND_FILE(PROTECTA.wav) \
+VCMI_SOUND_NAME(PROTECTE) VCMI_SOUND_FILE(PROTECTE.wav) \
+VCMI_SOUND_NAME(PROTECTF) VCMI_SOUND_FILE(PROTECTF.wav) \
+VCMI_SOUND_NAME(PROTECT) VCMI_SOUND_FILE(PROTECT.wav) \
+VCMI_SOUND_NAME(PROTECTW) VCMI_SOUND_FILE(PROTECTW.wav) \
+VCMI_SOUND_NAME(PSNTAttack) VCMI_SOUND_FILE(PSNTATTK.wav) \
+VCMI_SOUND_NAME(PSNTDefend) VCMI_SOUND_FILE(PSNTDFND.wav) \
+VCMI_SOUND_NAME(PSNTKill) VCMI_SOUND_FILE(PSNTKILL.wav) \
+VCMI_SOUND_NAME(PSNTMove) VCMI_SOUND_FILE(PSNTMOVE.wav) \
+VCMI_SOUND_NAME(PSNTWNCE) VCMI_SOUND_FILE(PSNTWNCE.wav) \
+VCMI_SOUND_NAME(PSYCAttack) VCMI_SOUND_FILE(PSYCATTK.wav) \
+VCMI_SOUND_NAME(PSYCDefend) VCMI_SOUND_FILE(PSYCDFND.wav) \
+VCMI_SOUND_NAME(PSYCKill) VCMI_SOUND_FILE(PSYCKILL.wav) \
+VCMI_SOUND_NAME(PSYCMove) VCMI_SOUND_FILE(PSYCMOVE.wav) \
+VCMI_SOUND_NAME(PSYCWNCE) VCMI_SOUND_FILE(PSYCWNCE.wav) \
+VCMI_SOUND_NAME(QUEST) VCMI_SOUND_FILE(QUEST.wav) \
+VCMI_SOUND_NAME(QUIKSAND) VCMI_SOUND_FILE(QUIKSAND.wav) \
+VCMI_SOUND_NAME(RDDRAttack) VCMI_SOUND_FILE(RDDRATTK.wav) \
+VCMI_SOUND_NAME(RDDRDefend) VCMI_SOUND_FILE(RDDRDFND.wav) \
+VCMI_SOUND_NAME(RDDRKill) VCMI_SOUND_FILE(RDDRKILL.wav) \
+VCMI_SOUND_NAME(RDDRMove) VCMI_SOUND_FILE(RDDRMOVE.wav) \
+VCMI_SOUND_NAME(RDDRWNCE) VCMI_SOUND_FILE(RDDRWNCE.wav) \
+VCMI_SOUND_NAME(REGENER) VCMI_SOUND_FILE(REGENER.wav) \
+VCMI_SOUND_NAME(REMoveOB) VCMI_SOUND_FILE(REMOVEOB.wav) \
+VCMI_SOUND_NAME(RESURECT) VCMI_SOUND_FILE(RESURECT.wav) \
+VCMI_SOUND_NAME(RGRFAttack) VCMI_SOUND_FILE(RGRFATTK.wav) \
+VCMI_SOUND_NAME(RGRFDefend) VCMI_SOUND_FILE(RGRFDFND.wav) \
+VCMI_SOUND_NAME(RGRFKill) VCMI_SOUND_FILE(RGRFKILL.wav) \
+VCMI_SOUND_NAME(RGRFMove) VCMI_SOUND_FILE(RGRFMOVE.wav) \
+VCMI_SOUND_NAME(RGRFWNCE) VCMI_SOUND_FILE(RGRFWNCE.wav) \
+VCMI_SOUND_NAME(ROCCAttack) VCMI_SOUND_FILE(ROCCATTK.wav) \
+VCMI_SOUND_NAME(ROCCDefend) VCMI_SOUND_FILE(ROCCDFND.wav) \
+VCMI_SOUND_NAME(ROCCKill) VCMI_SOUND_FILE(ROCCKILL.wav) \
+VCMI_SOUND_NAME(ROCCMove) VCMI_SOUND_FILE(ROCCMOVE.wav) \
+VCMI_SOUND_NAME(ROCCWNCE) VCMI_SOUND_FILE(ROCCWNCE.wav) \
+VCMI_SOUND_NAME(ROGUAttack) VCMI_SOUND_FILE(ROGUATTK.wav) \
+VCMI_SOUND_NAME(ROGUDefend) VCMI_SOUND_FILE(ROGUDFND.wav) \
+VCMI_SOUND_NAME(ROGUE) VCMI_SOUND_FILE(ROGUE.wav) \
+VCMI_SOUND_NAME(ROGUKill) VCMI_SOUND_FILE(ROGUKILL.wav) \
+VCMI_SOUND_NAME(ROGUMove) VCMI_SOUND_FILE(ROGUMOVE.wav) \
+VCMI_SOUND_NAME(ROGUWNCE) VCMI_SOUND_FILE(ROGUWNCE.wav) \
+VCMI_SOUND_NAME(RSBRYFZL) VCMI_SOUND_FILE(RSBRYFZL.wav) \
+VCMI_SOUND_NAME(RUSTAttack) VCMI_SOUND_FILE(RUSTATTK.wav) \
+VCMI_SOUND_NAME(RUSTDefend) VCMI_SOUND_FILE(RUSTDFND.wav) \
+VCMI_SOUND_NAME(RUSTKill) VCMI_SOUND_FILE(RUSTKILL.wav) \
+VCMI_SOUND_NAME(RUSTMove) VCMI_SOUND_FILE(RUSTMOVE.wav) \
+VCMI_SOUND_NAME(RUSTWNCE) VCMI_SOUND_FILE(RUSTWNCE.wav) \
+VCMI_SOUND_NAME(SACBRETH) VCMI_SOUND_FILE(SACBRETH.wav) \
+VCMI_SOUND_NAME(SACRIF1) VCMI_SOUND_FILE(SACRIF1.wav) \
+VCMI_SOUND_NAME(SACRIF2) VCMI_SOUND_FILE(SACRIF2.wav) \
+VCMI_SOUND_NAME(SCRPAttack) VCMI_SOUND_FILE(SCRPATTK.wav) \
+VCMI_SOUND_NAME(SCRPDefend) VCMI_SOUND_FILE(SCRPDFND.wav) \
+VCMI_SOUND_NAME(SCRPKill) VCMI_SOUND_FILE(SCRPKILL.wav) \
+VCMI_SOUND_NAME(SCRPMove) VCMI_SOUND_FILE(SCRPMOVE.wav) \
+VCMI_SOUND_NAME(SCRPShot) VCMI_SOUND_FILE(SCRPSHOT.wav) \
+VCMI_SOUND_NAME(SCRPWNCE) VCMI_SOUND_FILE(SCRPWNCE.wav) \
+VCMI_SOUND_NAME(SCUTBOAT) VCMI_SOUND_FILE(SCUTBOAT.wav) \
+VCMI_SOUND_NAME(SGLMAttack) VCMI_SOUND_FILE(SGLMATTK.wav) \
+VCMI_SOUND_NAME(SGLMDefend) VCMI_SOUND_FILE(SGLMDFND.wav) \
+VCMI_SOUND_NAME(SGLMKill) VCMI_SOUND_FILE(SGLMKILL.wav) \
+VCMI_SOUND_NAME(SGLMMove) VCMI_SOUND_FILE(SGLMMOVE.wav) \
+VCMI_SOUND_NAME(SGLMWNCE) VCMI_SOUND_FILE(SGLMWNCE.wav) \
+VCMI_SOUND_NAME(SGRGAttack) VCMI_SOUND_FILE(SGRGATTK.wav) \
+VCMI_SOUND_NAME(SGRGDefend) VCMI_SOUND_FILE(SGRGDFND.wav) \
+VCMI_SOUND_NAME(SGRGKill) VCMI_SOUND_FILE(SGRGKILL.wav) \
+VCMI_SOUND_NAME(SGRGMove) VCMI_SOUND_FILE(SGRGMOVE.wav) \
+VCMI_SOUND_NAME(SGRGWNCE) VCMI_SOUND_FILE(SGRGWNCE.wav) \
+VCMI_SOUND_NAME(SHDMAttack) VCMI_SOUND_FILE(SHDMATTK.wav) \
+VCMI_SOUND_NAME(SHDMDefend) VCMI_SOUND_FILE(SHDMDFND.wav) \
+VCMI_SOUND_NAME(SHDMKill) VCMI_SOUND_FILE(SHDMKILL.wav) \
+VCMI_SOUND_NAME(SHDMMove) VCMI_SOUND_FILE(SHDMMOVE.wav) \
+VCMI_SOUND_NAME(SHDMWNCE) VCMI_SOUND_FILE(SHDMWNCE.wav) \
+VCMI_SOUND_NAME(SHIELD) VCMI_SOUND_FILE(SHIELD.wav) \
+VCMI_SOUND_NAME(SKELAttack) VCMI_SOUND_FILE(SKELATTK.wav) \
+VCMI_SOUND_NAME(SKELDefend) VCMI_SOUND_FILE(SKELDFND.wav) \
+VCMI_SOUND_NAME(SKELKill) VCMI_SOUND_FILE(SKELKILL.wav) \
+VCMI_SOUND_NAME(SKELMove) VCMI_SOUND_FILE(SKELMOVE.wav) \
+VCMI_SOUND_NAME(SKELWNCE) VCMI_SOUND_FILE(SKELWNCE.wav) \
+VCMI_SOUND_NAME(SKLWAttack) VCMI_SOUND_FILE(SKLWATTK.wav) \
+VCMI_SOUND_NAME(SKLWDefend) VCMI_SOUND_FILE(SKLWDFND.wav) \
+VCMI_SOUND_NAME(SKLWKill) VCMI_SOUND_FILE(SKLWKILL.wav) \
+VCMI_SOUND_NAME(SKLWMove) VCMI_SOUND_FILE(SKLWMOVE.wav) \
+VCMI_SOUND_NAME(SKLWWNCE) VCMI_SOUND_FILE(SKLWWNCE.wav) \
+VCMI_SOUND_NAME(SLAYER) VCMI_SOUND_FILE(SLAYER.wav) \
+VCMI_SOUND_NAME(SORROW) VCMI_SOUND_FILE(SORROW.wav) \
+VCMI_SOUND_NAME(SPONTCOMB) VCMI_SOUND_FILE(SPONTCOMB.wav) \
+VCMI_SOUND_NAME(SPRTAttack) VCMI_SOUND_FILE(SPRTATTK.wav) \
+VCMI_SOUND_NAME(SPRTDefend) VCMI_SOUND_FILE(SPRTDFND.wav) \
+VCMI_SOUND_NAME(SPRTKill) VCMI_SOUND_FILE(SPRTKILL.wav) \
+VCMI_SOUND_NAME(SPRTMove) VCMI_SOUND_FILE(SPRTMOVE.wav) \
+VCMI_SOUND_NAME(SPRTWNCE) VCMI_SOUND_FILE(SPRTWNCE.wav) \
+VCMI_SOUND_NAME(STORAttack) VCMI_SOUND_FILE(STORATTK.wav) \
+VCMI_SOUND_NAME(STORDefend) VCMI_SOUND_FILE(STORDFND.wav) \
+VCMI_SOUND_NAME(STORE) VCMI_SOUND_FILE(STORE.wav) \
+VCMI_SOUND_NAME(STORKill) VCMI_SOUND_FILE(STORKILL.wav) \
+VCMI_SOUND_NAME(STORMove) VCMI_SOUND_FILE(STORMOVE.wav) \
+VCMI_SOUND_NAME(STORM) VCMI_SOUND_FILE(STORM.wav) \
+VCMI_SOUND_NAME(STORShot) VCMI_SOUND_FILE(STORSHOT.wav) \
+VCMI_SOUND_NAME(STORWNCE) VCMI_SOUND_FILE(STORWNCE.wav) \
+VCMI_SOUND_NAME(SUMMBOAT) VCMI_SOUND_FILE(SUMMBOAT.wav) \
+VCMI_SOUND_NAME(SUMNELM) VCMI_SOUND_FILE(SUMNELM.wav) \
+VCMI_SOUND_NAME(SWRDAttack) VCMI_SOUND_FILE(SWRDATTK.wav) \
+VCMI_SOUND_NAME(SWRDDefend) VCMI_SOUND_FILE(SWRDDFND.wav) \
+VCMI_SOUND_NAME(SWRDKill) VCMI_SOUND_FILE(SWRDKILL.wav) \
+VCMI_SOUND_NAME(SWRDMove) VCMI_SOUND_FILE(SWRDMOVE.wav) \
+VCMI_SOUND_NAME(SWRDWNCE) VCMI_SOUND_FILE(SWRDWNCE.wav) \
+VCMI_SOUND_NAME(SYSMSG) VCMI_SOUND_FILE(SYSMSG.wav) \
+VCMI_SOUND_NAME(TAILWIND) VCMI_SOUND_FILE(TAILWIND.wav) \
+VCMI_SOUND_NAME(TBRDAttack) VCMI_SOUND_FILE(TBRDATTK.wav) \
+VCMI_SOUND_NAME(TBRDDefend) VCMI_SOUND_FILE(TBRDDFND.wav) \
+VCMI_SOUND_NAME(TBRDKill) VCMI_SOUND_FILE(TBRDKILL.wav) \
+VCMI_SOUND_NAME(TBRDMove) VCMI_SOUND_FILE(TBRDMOVE.wav) \
+VCMI_SOUND_NAME(TBRDWNCE) VCMI_SOUND_FILE(TBRDWNCE.wav) \
+VCMI_SOUND_NAME(TELEIN) VCMI_SOUND_FILE(TELEIN.wav) \
+VCMI_SOUND_NAME(TELPTIN) VCMI_SOUND_FILE(TELPTIN.wav) \
+VCMI_SOUND_NAME(TELPTOUT) VCMI_SOUND_FILE(TELPTOUT.wav) \
+VCMI_SOUND_NAME(temple) VCMI_SOUND_FILE(TEMPLE.wav) \
+VCMI_SOUND_NAME(timeOver) VCMI_SOUND_FILE(TIMEOVER.wav) \
+VCMI_SOUND_NAME(treasure) VCMI_SOUND_FILE(TREASURE.wav) \
+VCMI_SOUND_NAME(TREEAttack) VCMI_SOUND_FILE(TREEATTK.wav) \
+VCMI_SOUND_NAME(TREEDefend) VCMI_SOUND_FILE(TREEDFND.wav) \
+VCMI_SOUND_NAME(TREEKill) VCMI_SOUND_FILE(TREEKILL.wav) \
+VCMI_SOUND_NAME(TREEMove) VCMI_SOUND_FILE(TREEMOVE.wav) \
+VCMI_SOUND_NAME(TREEWNCE) VCMI_SOUND_FILE(TREEWNCE.wav) \
+VCMI_SOUND_NAME(TRLLAttack) VCMI_SOUND_FILE(TRLLATTK.wav) \
+VCMI_SOUND_NAME(TRLLDefend) VCMI_SOUND_FILE(TRLLDFND.wav) \
+VCMI_SOUND_NAME(TRLLKill) VCMI_SOUND_FILE(TRLLKILL.wav) \
+VCMI_SOUND_NAME(TRLLMove) VCMI_SOUND_FILE(TRLLMOVE.wav) \
+VCMI_SOUND_NAME(TRLLWNCE) VCMI_SOUND_FILE(TRLLWNCE.wav) \
+VCMI_SOUND_NAME(TROGAttack) VCMI_SOUND_FILE(TROGATTK.wav) \
+VCMI_SOUND_NAME(TROGDefend) VCMI_SOUND_FILE(TROGDFND.wav) \
+VCMI_SOUND_NAME(TROGKill) VCMI_SOUND_FILE(TROGKILL.wav) \
+VCMI_SOUND_NAME(TROGMove) VCMI_SOUND_FILE(TROGMOVE.wav) \
+VCMI_SOUND_NAME(TROGWNCE) VCMI_SOUND_FILE(TROGWNCE.wav) \
+VCMI_SOUND_NAME(TUFFSKIN) VCMI_SOUND_FILE(TUFFSKIN.wav) \
+VCMI_SOUND_NAME(ULTIMATEARTIFACT) VCMI_SOUND_FILE(ULTIMATEARTIFACT.wav) \
+VCMI_SOUND_NAME(UNICAttack) VCMI_SOUND_FILE(UNICATTK.wav) \
+VCMI_SOUND_NAME(UNICDefend) VCMI_SOUND_FILE(UNICDFND.wav) \
+VCMI_SOUND_NAME(UNICKill) VCMI_SOUND_FILE(UNICKILL.wav) \
+VCMI_SOUND_NAME(UNICMove) VCMI_SOUND_FILE(UNICMOVE.wav) \
+VCMI_SOUND_NAME(UNICWNCE) VCMI_SOUND_FILE(UNICWNCE.wav) \
+VCMI_SOUND_NAME(VAMPAttack) VCMI_SOUND_FILE(VAMPATTK.wav) \
+VCMI_SOUND_NAME(VAMPDefend) VCMI_SOUND_FILE(VAMPDFND.wav) \
+VCMI_SOUND_NAME(VAMPEXT1) VCMI_SOUND_FILE(VAMPEXT1.wav) \
+VCMI_SOUND_NAME(VAMPEXT2) VCMI_SOUND_FILE(VAMPEXT2.wav) \
+VCMI_SOUND_NAME(VAMPKill) VCMI_SOUND_FILE(VAMPKILL.wav) \
+VCMI_SOUND_NAME(VAMPMove) VCMI_SOUND_FILE(VAMPMOVE.wav) \
+VCMI_SOUND_NAME(VAMPWNCE) VCMI_SOUND_FILE(VAMPWNCE.wav) \
+VCMI_SOUND_NAME(VIEW) VCMI_SOUND_FILE(VIEW.wav) \
+VCMI_SOUND_NAME(VISIONS) VCMI_SOUND_FILE(VISIONS.wav) \
+VCMI_SOUND_NAME(WALLHIT) VCMI_SOUND_FILE(WALLHIT.wav) \
+VCMI_SOUND_NAME(WALLMISS) VCMI_SOUND_FILE(WALLMISS.wav) \
+VCMI_SOUND_NAME(WATRWALK) VCMI_SOUND_FILE(WATRWALK.wav) \
+VCMI_SOUND_NAME(WEAKNESS) VCMI_SOUND_FILE(WEAKNESS.wav) \
+VCMI_SOUND_NAME(WELFAttack) VCMI_SOUND_FILE(WELFATTK.wav) \
+VCMI_SOUND_NAME(WELFDefend) VCMI_SOUND_FILE(WELFDFND.wav) \
+VCMI_SOUND_NAME(WELFKill) VCMI_SOUND_FILE(WELFKILL.wav) \
+VCMI_SOUND_NAME(WELFMove) VCMI_SOUND_FILE(WELFMOVE.wav) \
+VCMI_SOUND_NAME(WELFShot) VCMI_SOUND_FILE(WELFSHOT.wav) \
+VCMI_SOUND_NAME(WELFWNCE) VCMI_SOUND_FILE(WELFWNCE.wav) \
+VCMI_SOUND_NAME(WELMAttack) VCMI_SOUND_FILE(WELMATTK.wav) \
+VCMI_SOUND_NAME(WELMDefend) VCMI_SOUND_FILE(WELMDFND.wav) \
+VCMI_SOUND_NAME(WELMKill) VCMI_SOUND_FILE(WELMKILL.wav) \
+VCMI_SOUND_NAME(WELMMove) VCMI_SOUND_FILE(WELMMOVE.wav) \
+VCMI_SOUND_NAME(WELMWNCE) VCMI_SOUND_FILE(WELMWNCE.wav) \
+VCMI_SOUND_NAME(WGHTAttack) VCMI_SOUND_FILE(WGHTATTK.wav) \
+VCMI_SOUND_NAME(WGHTDefend) VCMI_SOUND_FILE(WGHTDFND.wav) \
+VCMI_SOUND_NAME(WGHTKill) VCMI_SOUND_FILE(WGHTKILL.wav) \
+VCMI_SOUND_NAME(WGHTMove) VCMI_SOUND_FILE(WGHTMOVE.wav) \
+VCMI_SOUND_NAME(WGHTWNCE) VCMI_SOUND_FILE(WGHTWNCE.wav) \
+VCMI_SOUND_NAME(WRTHAttack) VCMI_SOUND_FILE(WRTHATTK.wav) \
+VCMI_SOUND_NAME(WRTHDefend) VCMI_SOUND_FILE(WRTHDFND.wav) \
+VCMI_SOUND_NAME(WRTHKill) VCMI_SOUND_FILE(WRTHKILL.wav) \
+VCMI_SOUND_NAME(WRTHMove) VCMI_SOUND_FILE(WRTHMOVE.wav) \
+VCMI_SOUND_NAME(WRTHWNCE) VCMI_SOUND_FILE(WRTHWNCE.wav) \
+VCMI_SOUND_NAME(WUNCAttack) VCMI_SOUND_FILE(WUNCATTK.wav) \
+VCMI_SOUND_NAME(WUNCDefend) VCMI_SOUND_FILE(WUNCDFND.wav) \
+VCMI_SOUND_NAME(WUNCKill) VCMI_SOUND_FILE(WUNCKILL.wav) \
+VCMI_SOUND_NAME(WUNCMove) VCMI_SOUND_FILE(WUNCMOVE.wav) \
+VCMI_SOUND_NAME(WUNCShot) VCMI_SOUND_FILE(WUNCSHOT.wav) \
+VCMI_SOUND_NAME(WUNCWNCE) VCMI_SOUND_FILE(WUNCWNCE.wav) \
+VCMI_SOUND_NAME(WYVMAttack) VCMI_SOUND_FILE(WYVMATTK.wav) \
+VCMI_SOUND_NAME(WYVMDefend) VCMI_SOUND_FILE(WYVMDFND.wav) \
+VCMI_SOUND_NAME(WYVMKill) VCMI_SOUND_FILE(WYVMKILL.wav) \
+VCMI_SOUND_NAME(WYVMMove) VCMI_SOUND_FILE(WYVMMOVE.wav) \
+VCMI_SOUND_NAME(WYVMWNCE) VCMI_SOUND_FILE(WYVMWNCE.wav) \
+VCMI_SOUND_NAME(WYVNAttack) VCMI_SOUND_FILE(WYVNATTK.wav) \
+VCMI_SOUND_NAME(WYVNDefend) VCMI_SOUND_FILE(WYVNDFND.wav) \
+VCMI_SOUND_NAME(WYVNKill) VCMI_SOUND_FILE(WYVNKILL.wav) \
+VCMI_SOUND_NAME(WYVNMove) VCMI_SOUND_FILE(WYVNMOVE.wav) \
+VCMI_SOUND_NAME(WYVNWNCE) VCMI_SOUND_FILE(WYVNWNCE.wav) \
+VCMI_SOUND_NAME(YBMHAttack) VCMI_SOUND_FILE(YBMHATTK.wav) \
+VCMI_SOUND_NAME(YBMHDefend) VCMI_SOUND_FILE(YBMHDFND.wav) \
+VCMI_SOUND_NAME(YBMHKill) VCMI_SOUND_FILE(YBMHKILL.wav) \
+VCMI_SOUND_NAME(YBMHMove) VCMI_SOUND_FILE(YBMHMOVE.wav) \
+VCMI_SOUND_NAME(YBMHWNCE) VCMI_SOUND_FILE(YBMHWNCE.wav) \
+VCMI_SOUND_NAME(zelotAttack) VCMI_SOUND_FILE(ZELTATTK.wav) \
+VCMI_SOUND_NAME(zelotDefend) VCMI_SOUND_FILE(ZELTDFND.wav) \
+VCMI_SOUND_NAME(zelotKill) VCMI_SOUND_FILE(ZELTKILL.wav) \
+VCMI_SOUND_NAME(zelotMove) VCMI_SOUND_FILE(ZELTMOVE.wav) \
+VCMI_SOUND_NAME(zelotShot) VCMI_SOUND_FILE(ZELTSHOT.wav) \
+VCMI_SOUND_NAME(zelotWNCE) VCMI_SOUND_FILE(ZELTWNCE.wav) \
+VCMI_SOUND_NAME(ZMBLAttack) VCMI_SOUND_FILE(ZMBLATTK.wav) \
+VCMI_SOUND_NAME(ZMBLDefend) VCMI_SOUND_FILE(ZMBLDFND.wav) \
+VCMI_SOUND_NAME(ZMBLKill) VCMI_SOUND_FILE(ZMBLKILL.wav) \
+VCMI_SOUND_NAME(ZMBLMove) VCMI_SOUND_FILE(ZMBLMOVE.wav) \
+VCMI_SOUND_NAME(ZMBLWNCE) VCMI_SOUND_FILE(ZMBLWNCE.wav) \
+VCMI_SOUND_NAME(ZOMBAttack) VCMI_SOUND_FILE(ZOMBATTK.wav) \
+VCMI_SOUND_NAME(ZOMBDefend) VCMI_SOUND_FILE(ZOMBDFND.wav) \
+VCMI_SOUND_NAME(ZOMBKill) VCMI_SOUND_FILE(ZOMBKILL.wav) \
+VCMI_SOUND_NAME(ZOMBMove) VCMI_SOUND_FILE(ZOMBMOVE.wav) \
+VCMI_SOUND_NAME(ZOMBWNCE) VCMI_SOUND_FILE(ZOMBWNCE.wav)
+
+class soundBase
+{
+public:
+	// Make a list of enums
+	// We must keep an entry 0 for an invalid or no sound.
+#define VCMI_SOUND_NAME(x) x,
+#define VCMI_SOUND_FILE(y)
+	enum soundNames {
+		invalid=0,
+		sound_todo=1,			// temp entry until code is fixed
+		VCMI_SOUND_LIST
+	};
+#undef VCMI_SOUND_NAME
+#undef VCMI_SOUND_FILE
+};
+
+#endif // __CSOUNDBASE_H__

+ 10 - 3
lib/NetPacks.h

@@ -526,12 +526,16 @@ struct InfoWindow : public CPackForClient //103  - displays simple info window
 	MetaString text;
 	MetaString text;
 	std::vector<Component> components;
 	std::vector<Component> components;
 	ui8 player;
 	ui8 player;
+	ui16 soundID;
 
 
 	template <typename Handler> void serialize(Handler &h, const int version)
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{
 	{
-		h & text & components & player;
+		h & text & components & player & soundID;
 	}
 	}
-	InfoWindow(){type = 103;};
+	InfoWindow() { 
+		type = 103;
+		soundID = 0; 
+	};
 };
 };
 
 
 struct SetObjectProperty : public CPackForClient//1001
 struct SetObjectProperty : public CPackForClient//1001
@@ -594,6 +598,7 @@ struct BlockingDialog : public Query//2003
 	std::vector<Component> components;
 	std::vector<Component> components;
 	ui8 player;
 	ui8 player;
 	ui8 flags;
 	ui8 flags;
+	ui16 soundID;
 
 
 	bool cancel() const
 	bool cancel() const
 	{
 	{
@@ -608,6 +613,7 @@ struct BlockingDialog : public Query//2003
 	{
 	{
 		type = 2003;
 		type = 2003;
 		flags = 0;
 		flags = 0;
+		soundID = 0;
 		if(yesno) flags |= ALLOW_CANCEL;
 		if(yesno) flags |= ALLOW_CANCEL;
 		if(Selection) flags |= SELECTION;
 		if(Selection) flags |= SELECTION;
 	}
 	}
@@ -615,11 +621,12 @@ struct BlockingDialog : public Query//2003
 	{
 	{
 		type = 2003;
 		type = 2003;
 		flags = 0;
 		flags = 0;
+		soundID = 0;
 	};
 	};
 
 
 	template <typename Handler> void serialize(Handler &h, const int version)
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{
 	{
-		h & id & text & components & player & flags;
+		h & id & text & components & player & flags & soundID;
 	}
 	}
 };
 };
 
 

+ 4 - 0
lib/VCMI_lib.vcproj

@@ -396,6 +396,10 @@
 				RelativePath=".\Connection.h"
 				RelativePath=".\Connection.h"
 				>
 				>
 			</File>
 			</File>
+			<File
+				RelativePath="..\hch\CSoundBase.h"
+				>
+			</File>
 			<File
 			<File
 				RelativePath="..\hch\CSpellHandler.h"
 				RelativePath="..\hch\CSpellHandler.h"
 				>
 				>