changeset 2534:1bcadc6dd203

enum SOUND_
author Ritor1
date Mon, 09 Feb 2015 19:17:12 +0600
parents 2baaac65d5bf
children 3a36de426f5f
files Arcomage/Arcomage.cpp Engine/Events.cpp Engine/Game.cpp Engine/Graphics/Indoor.cpp Engine/Graphics/IndoorCameraD3D.cpp Engine/Graphics/Outdoor.cpp Engine/Graphics/Outdoor.h Engine/Graphics/Render.cpp Engine/Objects/Actor.cpp Engine/Objects/Chest.cpp Engine/Objects/NPC.cpp Engine/Objects/Player.cpp Engine/Objects/SpriteObject.cpp Engine/OurMath.cpp Engine/OurMath.h Engine/Party.cpp Engine/Spells/CastSpellInfo.cpp Engine/Tables/TileFrameTable.h Engine/TurnEngine/TurnEngine.cpp GUI/UI/Books/UINotesBooks.cpp GUI/UI/Books/UISpellBook.cpp GUI/UI/UIArena.cpp GUI/UI/UIBooks.cpp GUI/UI/UIHouses.cpp GUI/UI/UIPartyCreation.cpp GUI/UI/UIPopup.cpp IO/Mouse.cpp Media/Audio/AudioPlayer.cpp Media/Audio/AudioPlayer.h
diffstat 29 files changed, 519 insertions(+), 632 deletions(-) [+]
line wrap: on
line diff
--- a/Arcomage/Arcomage.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Arcomage/Arcomage.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -478,7 +478,7 @@
   case 40:
   case 43:
   case 46:
-      play_sound_id = SOUND_Arcomage_LoseResources;
+      play_sound_id = SOUND_bricks_down;
       break;
   case 39:
   case 41:
@@ -486,7 +486,7 @@
   case 44:
   case 45:
   case 47:
-      play_sound_id = SOUND_Arcomage_AddResources;
+      play_sound_id = SOUND_bricks_up;
       break;
   case 0:
   case 12:
@@ -496,20 +496,20 @@
   case 48:
   case 50:
   case 53:
-      play_sound_id = SOUND_Arcomage_TowerWallDamage;
+      play_sound_id = SOUND_damage;
       break;
   case 21:
   case 22:
   case 23:
-      play_sound_id = SOUND_Arcomage_DrawCard;
+      play_sound_id = SOUND_deal;
       break;
   case 56:
-      play_sound_id = SOUND_Arcomage_124;
+      play_sound_id = SOUND_defeat;
       break;
   case 31:
   case 34:
   case 37:
-      play_sound_id = SOUND_Arcomage_ProductionDamage;
+      play_sound_id = SOUND_querry_up;
       break;
   case 1:
   case 30:
@@ -518,29 +518,29 @@
   case 35:
   case 36:
   case 38:
-      play_sound_id = SOUND_Arcomage_ProductionUpgrade;
+      play_sound_id = SOUND_querry_down;
      break;
   case 20:
-      play_sound_id = SOUND_Arcomage_127;
+      play_sound_id = SOUND_shuffle;
       break;
   case 3:
-      play_sound_id = SOUND_Arcomage_128;
+      play_sound_id = SOUND_title;
       break;
   case 52:
   case 54:
-      play_sound_id = SOUND_Arcomage_TowerUpgrade;
+      play_sound_id = SOUND_tower_up;
       break;
   case 10:
   case 11:
   case 13:
-      play_sound_id = SOUND_Arcomage_130;
+      play_sound_id = SOUND_typing;
       break;
   case 55:
-      play_sound_id = SOUND_Arcomage_131;
+      play_sound_id = SOUND_victory;
       break;
   case 49:
   case 51:
-      play_sound_id = SOUND_Arcomage_WallUpgrade;
+      play_sound_id = SOUND_wall_up;
       break;
   default:
       return;
--- a/Engine/Events.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Events.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -1177,7 +1177,7 @@
           {
             pRenderer->Sub01();
           pAudioPlayer->PlaySound(SOUND_Invalid, 0, 0, -1, 0, 0, 0, 0);
-          pAudioPlayer->PlaySound(SOUND_EnteringAHouse, 814, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_enter, 814, 0, -1, 0, 0, 0, 0);
           v104 = 187;
           if ( uCurrentHouse_Animation != 167 )
             v104 = EVT_DWORD(_evt->v5);
--- a/Engine/Game.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Game.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -30,6 +30,7 @@
 #include "TurnEngine/TurnEngine.h"
 #include "Media/Video/Bink_Smacker.h"
 #include "Events.h"
+#include "OurMath.h"
 #include "texts.h"
 #include "GUI/GUIFont.h"
 #include "Log.h"
@@ -99,8 +100,8 @@
 
   pGame->pIndoorCameraD3D->sRotationX = pParty->sRotationX;
   pGame->pIndoorCameraD3D->sRotationY = pParty->sRotationY;
-  pGame->pIndoorCameraD3D->vPartyPos.x = pParty->vPosition.x - pParty->y_rotation_granularity * cosf(2 * 3.141592653589 * pParty->sRotationY / 2048.0);
-  pGame->pIndoorCameraD3D->vPartyPos.y = pParty->vPosition.y - pParty->y_rotation_granularity * sinf(2 * 3.141592653589 * pParty->sRotationY / 2048.0);
+  pGame->pIndoorCameraD3D->vPartyPos.x = pParty->vPosition.x - pParty->y_rotation_granularity * cosf(2 * pi_double * pParty->sRotationY / 2048.0);
+  pGame->pIndoorCameraD3D->vPartyPos.y = pParty->vPosition.y - pParty->y_rotation_granularity * sinf(2 * pi_double * pParty->sRotationY / 2048.0);
   pGame->pIndoorCameraD3D->vPartyPos.z = pParty->vPosition.z + pParty->sEyelevel;//193, but real 353
 
   //pIndoorCamera->Initialize2();
@@ -1357,7 +1358,7 @@
           else
           {
             ShowStatusBarString(pGlobalTXT_LocalizationStrings[201], 2);// "Are you sure?  Click again to start a New Game"
-            pAudioPlayer->PlaySound(SOUND_20001, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_quest, 0, 0, -1, 0, 0, 0, 0);
             dword_6BE138 = 124;
           }
           stru_506E40.Release();
@@ -1382,13 +1383,13 @@
             pCurrentScreen = SCREEN_GAME;
             viewparams->bRedrawGameUI = 1;
             if ( !uMessageParam )
-              pAudioPlayer->PlaySound((SoundID)(SOUND_EnteringAHouse|0x1), 0, 0, -1, 0, 0, 0, 0);
+              pAudioPlayer->PlaySound((SoundID)SOUND_wooddrclose, 0, 0, -1, 0, 0, 0, 0);
             uGameState = GAME_STATE_GAME_QUITTING_TO_MAIN_MENU;
           }
           else
           {
             ShowStatusBarString(pGlobalTXT_LocalizationStrings[82], 2);// "Are you sure?  Click again to quit"
-            pAudioPlayer->PlaySound(SOUND_20001, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_quest, 0, 0, -1, 0, 0, 0, 0);
             dword_6BE138 = 132;
           }
           stru_506E40.Release();
@@ -1610,7 +1611,7 @@
             pPrevVirtualCidesMapping[i] = pKeyActionMap->GetActionVKey((enum InputAction)i);
             GameMenuUI_InvaligKeyBindingsFlags[i] = false;
           }
-          pAudioPlayer->PlaySound(SOUND_219, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_chimes, 0, 0, -1, 0, 0, 0, 0);
           continue;
         case UIMSG_SelectKeyPage1:
           KeyboardPageNum = 1;
@@ -1670,13 +1671,13 @@
             if ( (uGammaPos -- -1) < 0 )
             {
               uGammaPos = 0;
-              pAudioPlayer->PlaySound(SOUND_21, 0, 0, -1, 0, 0, 0, 0);
+              pAudioPlayer->PlaySound(SOUND_ClickMovingSelector, 0, 0, -1, 0, 0, 0, 0);
               continue;
             }
             v19 = (double)(signed int)uGammaPos * 0.1 + 0.6;
             pGame->pGammaController->Initialize(v19);
             GUIWindow::Create(21, 161, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderLeft, (char *)1);
-            pAudioPlayer->PlaySound(SOUND_21, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_ClickMovingSelector, 0, 0, -1, 0, 0, 0, 0);
             continue;
           }
           if ( uMessageParam == 5 )
@@ -1687,7 +1688,7 @@
               v21 = (double)(signed int)uGammaPos * 0.1 + 0.6;
               pGame->pGammaController->Initialize(v21);
               GUIWindow::Create(213, 161, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderRight, (char *)1);
-              pAudioPlayer->PlaySound(SOUND_21, 0, 0, -1, 0, 0, 0, 0);
+              pAudioPlayer->PlaySound(SOUND_ClickMovingSelector, 0, 0, -1, 0, 0, 0, 0);
               continue;
             }
             uGammaPos = 9;
@@ -1698,7 +1699,7 @@
             v22 = (double)(signed int)uGammaPos * 0.1 + 0.6;
             pGame->pGammaController->Initialize(v22);
           }
-          pAudioPlayer->PlaySound(SOUND_21, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_ClickMovingSelector, 0, 0, -1, 0, 0, 0, 0);
           continue;
         case UIMSG_ToggleBloodsplats:
           pGame->ToggleFlags2(0x20u);
@@ -1717,11 +1718,13 @@
               uMusicVolimeMultiplier = 0;
             GUIWindow::Create(243, 216, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderLeft, (char *)1);
             if ( uMusicVolimeMultiplier )
-              pAudioPlayer->PlaySound(SOUND_Bell, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
-		    if ( use_music_folder )
+              pAudioPlayer->PlaySound(SOUND_hurp, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
+		   
+			if ( use_music_folder )
               alSourcef (mSourceID, AL_GAIN, pSoundVolumeLevels[uMusicVolimeMultiplier]);
 			else
               pAudioPlayer->SetMusicVolume(pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f);
+
             continue;
           }
           if ( uMessageParam == 5 )//+
@@ -1731,7 +1734,7 @@
               uMusicVolimeMultiplier = 9;
             GUIWindow::Create(435, 216, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderRight, (char *)1);
             if ( uMusicVolimeMultiplier )
-              pAudioPlayer->PlaySound(SOUND_Bell, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
+              pAudioPlayer->PlaySound(SOUND_hurp, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
 		    if ( use_music_folder )
               alSourcef (mSourceID, AL_GAIN, pSoundVolumeLevels[uMusicVolimeMultiplier]);
 			else
@@ -1742,7 +1745,7 @@
           if ( (char)uMusicVolimeMultiplier > 9 )
             uMusicVolimeMultiplier = 9;
           if ( uMusicVolimeMultiplier )
-            pAudioPlayer->PlaySound(SOUND_Bell, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
+            pAudioPlayer->PlaySound(SOUND_hurp, -1, 0, -1, 0, 0, pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0f, 0);
 	      if ( use_music_folder )
             alSourcef (mSourceID, AL_GAIN, pSoundVolumeLevels[uMusicVolimeMultiplier]);
 		  else
@@ -1756,7 +1759,7 @@
               uSoundVolumeMultiplier = 0;
             GUIWindow::Create(243, 162, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderLeft, (char *)1);
             pAudioPlayer->SetMasterVolume(pSoundVolumeLevels[uSoundVolumeMultiplier] * 128.0f);
-            pAudioPlayer->PlaySound(SOUND_shurch, -1, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_church, -1, 0, -1, 0, 0, 0, 0);
 			int v = AIL_redbook_volume(pAudioPlayer->hAILRedbook);
 			//v = v+1;
 			if (v)
@@ -1773,14 +1776,14 @@
             //v154 = (int)pBtn_SliderRight;
             GUIWindow::Create(v24, 162, 0, 0, WINDOW_PressedButton2, (int)pBtn_SliderRight, (char *)1);
             pAudioPlayer->SetMasterVolume(pSoundVolumeLevels[uSoundVolumeMultiplier] * 128.0f);
-            pAudioPlayer->PlaySound(SOUND_shurch, -1, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_church, -1, 0, -1, 0, 0, 0, 0);
             continue;
           }
           uSoundVolumeMultiplier = (pMouse->GetCursorPos(&v207)->x - 263) / 17;
           if ( (char)uSoundVolumeMultiplier > 8 )
             uSoundVolumeMultiplier = 9;
           pAudioPlayer->SetMasterVolume(pSoundVolumeLevels[uSoundVolumeMultiplier] * 128.0f);
-          pAudioPlayer->PlaySound(SOUND_shurch, -1, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_church, -1, 0, -1, 0, 0, 0, 0);
           continue;
         case UIMSG_ToggleFlipOnExit:
           bFlipOnExit = bFlipOnExit == 0;
@@ -2250,7 +2253,7 @@
                           continue;
                       }
                       GetHouseGoodbyeSpeech();
-                      pAudioPlayer->PlaySound(SOUND_WoodDRClose, 814, 0, -1, 0, 0, 0, 0);
+                      pAudioPlayer->PlaySound(SOUND_wooddrclose, 814, 0, -1, 0, 0, 0, 0);
                       pMediaPlayer->Unload();
                       pGUIWindow_CurrentMenu = window_SpeakInHouse;
                       if ( pGUIWindow_Settings )
@@ -3500,7 +3503,7 @@
                 }*/
                 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
                 ShowStatusBarString(pGlobalTXT_LocalizationStrings[481], 2);// "Encounter!"
-                pAudioPlayer->PlaySound(SOUND_227, 0, 0, -1, 0, 0, 0, 0);
+                pAudioPlayer->PlaySound(SOUND_encounter, 0, 0, -1, 0, 0, 0, 0);
                 continue;
               }
             }
@@ -3573,7 +3576,7 @@
           {
             pPlayer10->uQuickSpell = 0;
             quick_spell_at_page = 0;
-            pAudioPlayer->PlaySound(SOUND_203, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_fizzle, 0, 0, -1, 0, 0, 0, 0);
             continue;
           }
           pPlayers[uActiveCharacter]->uQuickSpell = quick_spell_at_page + 11 * pPlayers[uActiveCharacter]->lastOpenedSpellbookPage;
@@ -3598,7 +3601,7 @@
             }
           }
           if ( !skill_count )//нет скиллов
-            pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_204), 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_TurnPageU), 0, 0, -1, 0, 0, 0, 0);
           else
           {
             if ( GetAsyncKeyState(VK_SHIFT) )
@@ -3616,7 +3619,7 @@
             OnCloseSpellBookPage();
             pPlayers[uActiveCharacter]->lastOpenedSpellbookPage = LOBYTE(v217[uAction]);
             pGUIWindow_CurrentMenu->OpenSpellBook();
-            pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_204), 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_TurnPageU), 0, 0, -1, 0, 0, 0, 0);
           }
           continue;
         }
@@ -3626,7 +3629,7 @@
           OnCloseSpellBookPage();
           pPlayers[uActiveCharacter]->lastOpenedSpellbookPage = uMessageParam;
           pGUIWindow_CurrentMenu->OpenSpellBook();
-          pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_204), 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound((SoundID)(rand() % 2 + SOUND_TurnPageU), 0, 0, -1, 0, 0, 0, 0);
           continue;
         case UIMSG_SelectSpell:
         {
@@ -3828,7 +3831,7 @@
               *(short *)v105 = uNumSeconds + 1;
               pPlayer4->uSkillPoints -= pPlayer4->pActiveSkills[uMessageParam] & 0x3F;
               pPlayer4->PlaySound(SPEECH_14, 0);
-              pAudioPlayer->PlaySound((SoundID)20001, 0, 0, -1, 0, 0, 0, 0);
+              pAudioPlayer->PlaySound((SoundID)SOUND_quest, 0, 0, -1, 0, 0, 0, 0);
               continue;
             }
             v87 = pGlobalTXT_LocalizationStrings[487];// "You have already mastered this skill!"
@@ -4208,7 +4211,7 @@
           pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
                                                     % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * pParam;
           uPlayerCreationUI_SelectedCharacter = pParam;
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
           break;
         case UIMSG_PlayerCreation_VoicePrev:
           pSex = pParty->pPlayers[pParam].GetSexByVoice();
@@ -4221,7 +4224,7 @@
           while (pParty->pPlayers[pParam].GetSexByVoice() != pSex);
           pButton = pCreationUI_BtnPressLeft2[pParam];
           GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, WINDOW_PressedButton, (int)pButton, (char *)1);
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
           pParty->pPlayers[pParam].PlaySound(SPEECH_PickMe, 0);
           break;
         case UIMSG_PlayerCreation_VoiceNext:
@@ -4233,7 +4236,7 @@
           while (pParty->pPlayers[pParam].GetSexByVoice() != pSex);
           pButton = pCreationUI_BtnPressRight2[pParam];
           GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, WINDOW_PressedButton, (int)pButton, (char *)1);
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
           pParty->pPlayers[pParam].PlaySound(SPEECH_PickMe, 0);
           break;
         case UIMSG_PlayerCreation_FacePrev:
@@ -4251,7 +4254,7 @@
                                                     % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * pParam;
           uPlayerCreationUI_SelectedCharacter = v25;
           GUIWindow::Create(pCreationUI_BtnPressLeft[v25]->uX, pCreationUI_BtnPressLeft[v25]->uY, 0, 0, WINDOW_PressedButton, (int)pCreationUI_BtnPressLeft[v25], (char *)1);
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0.0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0.0, 0);
           pParty->pPlayers[pParam].PlaySound(SPEECH_PickMe, 0);
           break;
         case UIMSG_PlayerCreation_FaceNext:
@@ -4267,27 +4270,27 @@
                                                     % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * pParam;
           uPlayerCreationUI_SelectedCharacter = v21;
           GUIWindow::Create(pCreationUI_BtnPressRight[v21]->uX, pCreationUI_BtnPressRight[v21]->uY, 0, 0, WINDOW_PressedButton, (int)pCreationUI_BtnPressRight[v21], (char *)1);
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
           pParty->pPlayers[pParam].PlaySound(SPEECH_PickMe, 0);
           break;
         case UIMSG_PlayerCreationClickPlus:
           GUIWindow::Create(613, 393, 0, 0, WINDOW_PressedButton2, (int)pPlayerCreationUI_BtnPlus, (char *)1);
           pPlayer[uPlayerCreationUI_SelectedCharacter].IncreaseAttribute((pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem) % 7);
-          pAudioPlayer->PlaySound(SOUND_20, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_ClickMinus, 0, 0, -1, 0, 0, 0, 0);
           break;
         case UIMSG_PlayerCreationClickMinus:
           GUIWindow::Create(523, 393, 0, 0, WINDOW_PressedButton2, (int)pPlayerCreationUI_BtnMinus, (char *)1);
           pPlayer[uPlayerCreationUI_SelectedCharacter].DecreaseAttribute((pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem) % 7);
-          pAudioPlayer->PlaySound(SOUND_23, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_ClickPlus, 0, 0, -1, 0, 0, 0, 0);
           break;
         case UIMSG_PlayerCreationSelectActiveSkill:
           if ( pPlayer[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(3) == 37 )
             pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].pActiveSkills[pPlayer[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(pParam + 4)] = 1;
-          pAudioPlayer->PlaySound(SOUND_24, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_ClickSkill, 0, 0, -1, 0, 0, 0, 0);
           break;
         case UIMSG_PlayerCreationSelectClass:
           pPlayer[uPlayerCreationUI_SelectedCharacter].Reset((PLAYER_CLASS_TYPE)pParam);
-          pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
           break;
         case UIMSG_PlayerCreationClickOK:
           GUIWindow::Create(580, 431, 0, 0, WINDOW_PressedButton2, (int)pPlayerCreationUI_BtnOK, 0);
@@ -4313,7 +4316,7 @@
             pParty->pPlayers[pParam].pActiveSkills[pPlayer[pParam].GetSkillIdxByOrder(3)] = 0;
           break;
         case UIMSG_PlayerCreationChangeName:
-          pAudioPlayer->PlaySound(SOUND_24, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_ClickSkill, 0, 0, -1, 0, 0, 0, 0);
           v3 = (void *)pParam;
           uPlayerCreationUI_SelectedCharacter = pParam;
           pKeyActionMap->EnterText(0, 15, pGUIWindow_CurrentMenu);
--- a/Engine/Graphics/Indoor.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Graphics/Indoor.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -5760,11 +5760,11 @@
       if ( integer_sqrt(pX_ * pX_ + pY_ * pY_ + pZ_ * pZ_) >= 16 )
       {
         if ( on_water )
-          pAudioPlayer->PlaySound(SOUND_RunAlongWater, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_RunWaterIndoor, 804, 1, -1, 0, 0, 0, 0);
         else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_CARPET )//по ковру
-          pAudioPlayer->PlaySound(SOUND_50, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_RunCarpet, 804, 1, -1, 0, 0, 0, 0);
         else
-          pAudioPlayer->PlaySound(SOUND_RunAlong3DModel, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_RunWood, 804, 1, -1, 0, 0, 0, 0);
         pParty->walk_sound_timer = 96;//64
       }
     }
@@ -5773,11 +5773,11 @@
       if ( integer_sqrt(pX_ * pX_ + pY_ * pY_ + pZ_ * pZ_) >= 8 )
       {
         if ( on_water )
-          pAudioPlayer->PlaySound(SOUND_WalkAlongWater, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_WalkWaterIndoor, 804, 1, -1, 0, 0, 0, 0);
         else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_CARPET )//по ковру
-          pAudioPlayer->PlaySound(SOUND_89, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_WalkCarpet, 804, 1, -1, 0, 0, 0, 0);
         else
-          pAudioPlayer->PlaySound(SOUND_WalkAlong3DModel, 804, 1, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_WalkWood, 804, 1, -1, 0, 0, 0, 0);
         pParty->walk_sound_timer = 144;//64
       }
     }
--- a/Engine/Graphics/IndoorCameraD3D.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Graphics/IndoorCameraD3D.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -1354,12 +1354,12 @@
   sRotationX = camera_rot_x;
   sRotationY = camera_rot_y;
 
-  fRotationYSine = sin((3.141592653589793 + 3.141592653589793) * (double)sRotationY / 2048.0);
-  fRotationYCosine = cos((3.141592653589793 + 3.141592653589793) * (double)sRotationY / 2048.0);
+  fRotationYSine = sin((pi_double + pi_double) * (double)sRotationY / 2048.0);
+  fRotationYCosine = cos((pi_double + pi_double) * (double)sRotationY / 2048.0);
   if (byte_4D864C && pGame->uFlags & 0x80 || uCurrentlyLoadedLevelType == LEVEL_Indoor)
   {
-    fRotationXSine = sin((3.141592653589793 + 3.141592653589793) * (double)-sRotationX / 2048.0);
-    fRotationXCosine = cos((3.141592653589793 + 3.141592653589793) * (double)-sRotationX / 2048.0);
+    fRotationXSine = sin((pi_double + pi_double) * (double)-sRotationX / 2048.0);
+    fRotationXCosine = cos((pi_double + pi_double) * (double)-sRotationX / 2048.0);
 
     int_sine_y   = stru_5C6E00->Sin( pGame->pIndoorCameraD3D->sRotationY);
     int_cosine_y = stru_5C6E00->Cos( pGame->pIndoorCameraD3D->sRotationY);
@@ -1368,8 +1368,8 @@
   }
   else
   {
-    fRotationXSine = sin((3.141592653589793 + 3.141592653589793) * (double)sRotationX / 2048.0);
-    fRotationXCosine = cos((3.141592653589793 + 3.141592653589793) * (double)sRotationX / 2048.0);
+    fRotationXSine = sin((pi_double + pi_double) * (double)sRotationX / 2048.0);
+    fRotationXCosine = cos((pi_double + pi_double) * (double)sRotationX / 2048.0);
 
     int_sine_y   = stru_5C6E00->Sin(pGame->pIndoorCameraD3D->sRotationY);
     int_cosine_y = stru_5C6E00->Cos(pGame->pIndoorCameraD3D->sRotationY);
--- a/Engine/Graphics/Outdoor.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Graphics/Outdoor.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -520,7 +520,7 @@
       return 3;
     case Tilset_Desert://на песке
       return 5;
-    case Tileset_3:
+    case Tileset_CooledLava:
     case Tileset_Dirt:// на грязи
       return 4;
     case Tileset_Water:// on water(на воде)
@@ -962,10 +962,10 @@
 //----- (0047CD44) --------------------------------------------------------
 bool OutdoorLocationTerrain::Initialize()
 {
-  pHeightmap = (unsigned __int8 *)malloc(0x4000u);//height map
-  pTilemap = (unsigned __int8 *)malloc(0x4000u);//tile map
-  pAttributemap = (unsigned __int8 *)malloc(0x4000u);//карта атрибутов
-  pDmap = (struct DMap *)malloc(0x8000u);
+  pHeightmap = (unsigned __int8 *)malloc(0x4000);//height map
+  pTilemap = (unsigned __int8 *)malloc(0x4000);//tile map
+  pAttributemap = (unsigned __int8 *)malloc(0x4000);//карта атрибутов
+  pDmap = (struct DMap *)malloc(0x8000);
   if (pHeightmap && pTilemap && pAttributemap && pDmap )
     return true;
   else
@@ -991,7 +991,7 @@
   this->uNumBModels = 0;
   this->pTileTypes[0].tileset = Tileset_Grass;
   this->pTileTypes[1].tileset = Tileset_Water;
-  this->pTileTypes[2].tileset = Tileset_6;
+  this->pTileTypes[2].tileset = Tileset_Badlands;
   this->pTileTypes[3].tileset = Tileset_RoadGrassCobble;
   this->LoadTileGroupIds();
   this->LoadRoadTileset();
@@ -1070,154 +1070,14 @@
 //----- (0047D0A6) --------------------------------------------------------
 bool OutdoorLocation::Load(const char *pFilename, ODMFace *File, size_t pNumItems, int *thisa)//загрузка локации
 {
-  //OutdoorLocation *pOutdoorLocation; // esi@1
-  /*bool result; // eax@9
-  bool v7; // ebx@9
-  size_t v8; // eax@10
-  void *v9; // eax@10
-  void *v10; // eax@10
-  void *v11; // eax@10
-  int v12; // ebx@11
-  BSPModel *v13; // eax@12
-  void *v14; // eax@12
-  BSPModel *v15; // ecx@12
-  void *v16; // eax@12
-  BSPModel *v17; // ecx@12
-  BSPModel *v18; // eax@12
-  __int16 v19; // ax@15
-  __int16 v20; // ax@16
-  int v21; // ecx@16
-  ODMFace *v22; // ebx@26
-  SpriteObject *pItems; // ecx@27
-  unsigned int v24; // eax@28
-  //unsigned __int8 v25; // zf@28
-  //unsigned __int8 v26; // sf@28
-  ODMFace *v27; // eax@28
-  const char *i; // edx@29
-  unsigned __int16 v29; // ax@33
-  unsigned __int16 v30; // ax@37
-  int v31; // ecx@37
-  int v32; // eax@38
-  void *v33; // eax@38
-  TileDesc *v34; // eax@43
-  unsigned int v35; // eax@43
-  unsigned int v36; // edi@43
-  unsigned int v37; // edi@45*/
-  //size_t v38; // eax@50
-  FILE *v39; // eax@50
-  //unsigned int v40; // edi@56
-  //void *v41; // eax@56
-  //void *v42; // ebx@56
-  //const void *v43; // ebx@59
-  //const void *v44; // ebx@59
-  //unsigned int v45; // eax@59
-  //BSPModel *v46; // eax@59
-  //unsigned int v47; // ecx@59
-  //int v48; // ebx@60
-  //BSPModel *v49; // eax@61
-  //BSPModel *v50; // eax@61
-  //BSPModel *v51; // eax@61
-  //BSPModel *v52; // eax@61
-  //BSPModel *v53; // eax@61
-  //BSPModel *v54; // ecx@61
-  //BSPModel *v55; // ecx@61
-  //BSPModel *v56; // ecx@61
-  //void *v57; // ST24_4@61
-  //BSPModel *v58; // ecx@61
-  //void *v59; // ST18_4@61
-  //BSPModel *v60; // eax@61
-  //__int16 v61; // ax@64
+  FILE *pFile; // eax@50
   unsigned __int16 v62; // ax@65
-  //ODMFace *v63; // ecx@65
-  //unsigned __int16 v64; // ax@80
-  //const char *v65; // ecx@80
-  //int v66; // eax@81
-  //void *v67; // eax@81
-  //int v68; // ecx@81
-  //void *v69; // eax@81
-  //unsigned int v70; // eax@81
-  //SpawnPointMM7 *v71; // eax@81
-  //unsigned int v72; // ecx@81
-  //size_t v73; // eax@81
-  //int v74; // edi@87
-  //void *v75; // edi@88
-  //unsigned int v76; // edx@94
-  //int v77; // ecx@94
-  //char *v78; // eax@95
-  //unsigned int v79; // edx@97
-  //unsigned int v80; // eax@99
-  //int v81; // eax@107
-  //void *v82; // edi@114
-  //size_t v83; // eax@120
-  //const void *v84; // edi@120
-  //const void *v85; // edi@120
-  //BSPModel *v86; // eax@124
-  //unsigned int v87; // eax@124
-  //BSPModel *v88; // eax@126
-  //BSPModel *v89; // eax@127
-  //ODMFace *v90; // eax@129
-  //const void *v91; // edi@138
-  //const void *v92; // edi@141
-  //const void *v93; // edi@141
-  //const void *v94; // edi@144
-  //const void *v95; // edi@144
-  //const char *v96; // edi@147
-  //unsigned int v97; // eax@147
-  //TileDesc *v98; // eax@147
-  //unsigned int v99; // eax@147
-  //int v100; // ecx@150
-  //unsigned int v101; // eax@157
-//  int v102; // edi@159
-  //void *v103; // [sp-14h] [bp-B94h]@55
-  //void *v104; // [sp-10h] [bp-B90h]@59
-  //size_t v105; // [sp-Ch] [bp-B8Ch]@59
-  //char *v106; // [sp-8h] [bp-B88h]@59
-//  int v107; // [sp-4h] [bp-B84h]@12
   int v108; // [sp+0h] [bp-B80h]@10
   char Src[968]; // [sp+10h] [bp-B70h]@110
   char Dst[968]; // [sp+3D8h] [bp-7A8h]@50
   char Str[256]; // [sp+7A0h] [bp-3E0h]@50
-  /*char DstBuf; // [sp+8A0h] [bp-2E0h]@10
-  __int32 Offset; // [sp+8A4h] [bp-2DCh]@10
-  __int32 v114; // [sp+8B0h] [bp-2D0h]@10
-  __int32 v115; // [sp+8BCh] [bp-2C4h]@10
-  __int32 v116; // [sp+8C8h] [bp-2B8h]@10
-  __int32 v117; // [sp+8D4h] [bp-2ACh]@10
-  __int32 v118; // [sp+8E0h] [bp-2A0h]@10
-  __int32 v119; // [sp+8ECh] [bp-294h]@10
-  __int32 v120; // [sp+8F8h] [bp-288h]@10
-  __int32 v121; // [sp+904h] [bp-27Ch]@10
-  __int32 v122; // [sp+910h] [bp-270h]@10
-  __int32 v123; // [sp+91Ch] [bp-264h]@10
-  __int32 v124; // [sp+928h] [bp-258h]@26
-  __int32 v125; // [sp+934h] [bp-24Ch]@35
-  __int32 v126; // [sp+940h] [bp-240h]@38
-  __int32 v127; // [sp+94Ch] [bp-234h]@38
-  __int32 v128; // [sp+958h] [bp-228h]@38
-  __int32 v129; // [sp+964h] [bp-21Ch]@38
-  __int32 v130; // [sp+970h] [bp-210h]@38
-  __int32 v131; // [sp+97Ch] [bp-204h]@38
-  __int32 v132; // [sp+988h] [bp-1F8h]@38
-  __int32 v133; // [sp+994h] [bp-1ECh]@38
-  __int32 v134; // [sp+9A0h] [bp-1E0h]@38
-  __int32 v135; // [sp+9ACh] [bp-1D4h]@38
-  __int32 v136; // [sp+9D0h] [bp-1B0h]@10*/
-  //char FileName[8]; // [sp+A20h] [bp-160h]@8
-  //char v138; // [sp+A28h] [bp-158h]@12
-  //int v139; // [sp+B1Ch] [bp-64h]@10
-  //char pContainer[32]; // [sp+B20h] [bp-60h]@1
-  //int *v141; // [sp+B40h] [bp-40h]@50
-  //__int64 v142; // [sp+B44h] [bp-3Ch]@55
-  //size_t pSource; // [sp+B4Ch] [bp-34h]@56
-  //int v144; // [sp+B50h] [bp-30h]@61
-  //int v145; // [sp+B54h] [bp-2Ch]@68
   ODMHeader header; // [sp+B58h] [bp-28h]@50
-  //unsigned int pDestLen; // [sp+B68h] [bp-18h]@13
-  //FILE *ptr; // [sp+B6Ch] [bp-14h]@12
-  //void *v149; // [sp+B70h] [bp-10h]@19
   char *Str2; // [sp+B74h] [bp-Ch]@12
-  //int v151; // [sp+B78h] [bp-8h]@59
-  //void *uSourceLen; // [sp+B7Ch] [bp-4h]@59
 
   //pOutdoorLocation = this;
   //strcpy(pContainer, pFilename);
@@ -1528,7 +1388,7 @@
   //v141 = &v139;
   //v38 = strlen(pFilename);
   //strcpy((char *)&v139 + v38, ".odm");
-  v39 = pGames_LOD->FindContainer(Str, 1);
+  pFile = pGames_LOD->FindContainer(Str, true);
   //Str[strlen(Str) - 4] = 0;
 
   header.uCompressedSize = 0;
@@ -1539,7 +1399,7 @@
   header.pMagic[1] = 'v';
   header.pMagic[2] = 'i';
   header.pMagic[3] = 'i';
-  fread(&header, 0x10u, 1u, v39);
+  fread(&header, 0x10, 1, pFile);
   if (header.uVersion != 91969 ||
       header.pMagic[0] != 'm' ||
       header.pMagic[1] != 'v' ||
@@ -1559,7 +1419,7 @@
   if (header.uCompressedSize < header.uDecompressedSize)
   {
     char* pComressedSrc = (char *)malloc(header.uCompressedSize);
-    fread(pComressedSrc, header.uCompressedSize, 1, v39);
+    fread(pComressedSrc, header.uCompressedSize, 1, pFile);
 
     uint actualDecompressedSize = header.uDecompressedSize;
     zlib::MemUnzip(pSrc, &actualDecompressedSize, pComressedSrc, header.uCompressedSize);
@@ -1567,7 +1427,7 @@
   }
   else
   {
-    fread(pSrc, header.uDecompressedSize, 1, v39);
+    fread(pSrc, header.uDecompressedSize, 1, pFile);
   }
 
   memcpy(pLevelFilename, pSrc, 0x20);
@@ -1582,43 +1442,38 @@
   LoadTileGroupIds();
   LoadRoadTileset();
   strcpy(pGroundTileset, "grastyl");
-  pGameLoadingUI_ProgressBar->Progress();
+
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
+
+  //*******************Terrain**************************//
   pTerrain.Initialize();
-  //v108 = 16384;
-  //v107 = (int)v43;
-  //v106 = (char *)pTerrain.pHeightmap;
-  memcpy(pTerrain.pHeightmap, pSrc, 0x4000);
+  memcpy(pTerrain.pHeightmap, pSrc, 0x4000);				//карта высот
   pSrc += 0x4000;
 
-  //v43 = (char *)v43 + 16384;
-  //v105 = 16384;
-  //v104 = (void *)v43;
-  //v103 = pTerrain.pTilemap;
-  memcpy(pTerrain.pTilemap, pSrc, 0x4000);
+  memcpy(pTerrain.pTilemap, pSrc, 0x4000);					//карта тайлов
   pSrc += 0x4000;
 
-  //v43 = (char *)v43 + 16384;
-  memcpy(pTerrain.pAttributemap, pSrc, 0x4000);
+  memcpy(pTerrain.pAttributemap, pSrc, 0x4000);				// карта аттрибутов
   pSrc += 0x4000;
 
   //v43 = (char *)v43 + 16384;
   //v108 = (int)ptr_D4;
   free(pCmap);
   pCmap = malloc(0x8000);
-  pTerrain.FillDMap(0, 0, 128, 128);
-
-  pGameLoadingUI_ProgressBar->Progress();
-  memcpy(&uNumTerrainNormals, pSrc, 4);
-  //v43 = (char *)v43 + 4;
+  pTerrain.FillDMap(0, 0, 128, 128);						//
+
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
+
+  memcpy(&uNumTerrainNormals, pSrc, 4);						// количество нормалей
   memcpy(pTerrainSomeOtherData.data(), pSrc + 4, 0x20000);
   pSrc += 4 + 0x20000;
   //v43 = (char *)v43 + 131072;
-  memcpy(pTerrainNormalIndices.data(), pSrc, 0x10000);
+  memcpy(pTerrainNormalIndices.data(), pSrc, 0x10000);		//индексы нормалей
   pSrc += 0x10000;
   //v43 = (char *)v43 + 65536;
 
   //pFilename = (char *)(12 * uNumTerrainNormals);
-  pTerrainNormals = (Vec3_float_ *)malloc(sizeof(Vec3_float_) * uNumTerrainNormals);
+  pTerrainNormals = (Vec3_float_ *)malloc(sizeof(Vec3_float_) * uNumTerrainNormals);//карта нормалей
   memcpy(pTerrainNormals, pSrc, 12 * uNumTerrainNormals);
   pSrc += 12 * uNumTerrainNormals;
   //v44 = (char *)v43 + (int)pFilename;
@@ -1626,19 +1481,19 @@
   //v45 = uNumBModels;
   //v108 = (int)"BDdata";
 
-  pGameLoadingUI_ProgressBar->Progress();
-
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
+  
+  //************BModels************************//
   //v107 = 188 * v45;
   //v106 = (char *)pBModels;
   //v46 = (BSPModel *)malloc(v106, 188 * v45, "BDdata");
   //v47 = uNumBModels;
-  memcpy(&uNumBModels, pSrc, 4);
+  memcpy(&uNumBModels, pSrc, 4);							//количество BModel'ей
   pBModels = (BSPModel *)malloc(188 * uNumBModels);
-  //pFilename = (char *)(188 * v47);
-  memcpy(pBModels, pSrc + 4, 188 * uNumBModels);
+  memcpy(pBModels, pSrc + 4, 188 * uNumBModels);			//BModel'и
   pSrc += 4 + 188 * uNumBModels;
   
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   //uSourceLen = (char *)v44 + (int)pFilename;
   //v151 = 0;
@@ -1787,8 +1642,9 @@
 //        goto LABEL_75;
   }
 //LABEL_75:
-  pGameLoadingUI_ProgressBar->Progress();
-
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
+
+  //******************Decorations**********************//
   memcpy(&uNumLevelDecorations, pSrc, 4);
   //uSourceLen = (char *)uSourceLen + 4;
   if (uNumLevelDecorations > 3000)
@@ -1813,7 +1669,7 @@
     pLevelDecorations[i].uDecorationDescID = pDecorationList->GetDecorIdByName(name);
   }
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   memcpy(&numFaceIDListElems, pSrc, 4);
 
@@ -1833,7 +1689,7 @@
   pSrc += 4 + faceIDListSize;
 
   //uSourceLen = (char *)uSourceLen + (int)pFilename;
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   //v108 = (int)pOMAP;
   //free((void *)v108);
@@ -1851,7 +1707,7 @@
 
   memcpy(&uNumSpawnPoints, pSrc, 4);
   //uSourceLen = (char *)uSourceLen + 4;
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
   //v70 = uNumSpawnPoints;
   //v108 = (int)"Spawn";
   //v107 = 24 * v70;
@@ -1864,16 +1720,13 @@
   memcpy(pSpawnPoints, pSrc + 4, spawnPointsSize);
   pSrc += 4 + spawnPointsSize;
 
-  pGameLoadingUI_ProgressBar->Progress();
-
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
+
+  //****************.ddm file*********************//
   free(pSrcMem);
-
-  //v108 = (int)".ddm";
-  //v73 = strlen(pContainer);
   strcpy(Str + strlen(Str) - 4, ".ddm");
-  //strcpy((char *)v141 + v73, (const char *)v108);
-  v39 = pNew_LOD->FindContainer(Str, 1);//error
-  fread(&header, 0x10u, 1, v39);
+  pFile = pNew_LOD->FindContainer(Str, 1);
+  fread(&header, 0x10, 1, pFile);
   Str2 = 0;
   if (header.uVersion != 91969 ||
       header.pMagic[0] != 'm' ||
@@ -1894,19 +1747,18 @@
     pSrc = pSrcMem;
     //v149 = v75;
     if (header.uCompressedSize == header.uDecompressedSize)
-      fread(pSrc, header.uDecompressedSize, 1u, v39);
+      fread(pSrc, header.uDecompressedSize, 1, pFile);
     else if (header.uCompressedSize < header.uDecompressedSize)
     {
       void* compressedMem = malloc(header.uCompressedSize);
-      fread(compressedMem, header.uCompressedSize, 1, v39);
+      fread(compressedMem, header.uCompressedSize, 1, pFile);
 
       uint actualDecompressedSize = header.uDecompressedSize;
       zlib::MemUnzip(pSrc, &actualDecompressedSize, compressedMem, header.uCompressedSize);
       free(compressedMem);
     }
     else
-      MessageBoxW(nullptr, L"Can't load file!",
-                  L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:765", 0);
+      MessageBoxW(nullptr, L"Can't load file!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:765", 0);
 
     assert(sizeof(DDM_DLV_Header) == 0x28);
     memcpy(&ddm, pSrc, sizeof(DDM_DLV_Header));
@@ -1917,12 +1769,10 @@
   for (uint i = 0; i < uNumBModels; ++i)
     actualNumFacesInLevel += pBModels[i].uNumFaces;
 
-  //v79 = ddm.uNumFacesInBModels;
   if (ddm.uNumFacesInBModels)
   {
     if ( ddm.uNumBModels )
     {
-      //v80 = ddm.uNumDecorations;
       if (ddm.uNumDecorations)
       {
         if (ddm.uNumFacesInBModels != actualNumFacesInLevel ||
@@ -1941,17 +1791,14 @@
 
 	  if (Str2)
 	  {
-		  memset(Dst, 0, 0x3C8u);
-		  memset(Src, 0, 0x3C8u);
-		  //goto LABEL_112;
+		  memset(Dst, 0, 0x3C8);
+		  memset(Src, 0, 0x3C8);
 	  }
-	  //v81 = ddm.uLastRepawnDay;
 	  if ((unsigned int)((char *)File - ddm.uLastRepawnDay) >= pNumItems || !ddm.uLastRepawnDay)
 	  {
-		  memcpy(Dst, pSrc, 0x3C8u);
-		  memcpy(Src, pSrc + 968, 0x3C8u);
+		  memcpy(Dst, pSrc, 968);
+		  memcpy(Src, pSrc + 968, 968);
 	  }
-	  //LABEL_112:
 		  free(pSrcMem);
 
 		  ddm.uLastRepawnDay = (int)File;
@@ -1959,19 +1806,19 @@
 			  ++ddm.uNumRespawns;
 		  v108 = 0;
 		  *thisa = 1;
-		  v39 = pGames_LOD->FindContainer(Str, 0);
-		  fread(&header, 0x10, 1u, v39);
+		  pFile = pGames_LOD->FindContainer(Str, 0);
+		  fread(&header, 0x10, 1, pFile);
 		  //pFilename = (char *)header.uCompressedSize;
 		  //pDestLen = header.uDecompressedSize;
 		  //v82 = malloc(header.uDecompressedSize);
 		  pSrcMem = (unsigned char *)malloc(header.uDecompressedSize);
 		  //v149 = v82;
 		  if (header.uCompressedSize == header.uDecompressedSize)
-			  fread(pSrcMem, header.uDecompressedSize, 1, v39);
+			  fread(pSrcMem, header.uDecompressedSize, 1, pFile);
 		  else if (header.uCompressedSize < header.uDecompressedSize)
 		  {
 			  void* compressedMem = malloc(header.uCompressedSize);
-			  fread(compressedMem, header.uCompressedSize, 1u, v39);
+			  fread(compressedMem, header.uCompressedSize, 1, pFile);
 
 			  uint actualDecompressedSize = header.uDecompressedSize;
 			  zlib::MemUnzip(pSrcMem, &actualDecompressedSize, compressedMem, header.uCompressedSize);
@@ -1981,26 +1828,19 @@
 			  MessageBoxW(nullptr, L"Can't load file!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:857", 0);
 
 		  pSrc = pSrcMem + 40;
-		  //goto LABEL_120;
   }
   else
 	*thisa = 0;
-//LABEL_120:
-  //v108 = (int)".odm";
-  //v83 = strlen(pContainer);
-  //strcpy((char *)v141 + v83, (const char *)v108);
-  memcpy(uFullyRevealedCellOnMap, pSrc, 0x3C8);
-  //v84 = (const void *)(v74 + 968);
-  memcpy(uPartiallyRevealedCellOnMap, pSrc + 0x3C8, 0x3C8);
-  pSrc += 2 * 0x3C8;
-  //v85 = (char *)v84 + 968;
-
-  pGameLoadingUI_ProgressBar->Progress();
+  memcpy(uFullyRevealedCellOnMap, pSrc, 968);
+  memcpy(uPartiallyRevealedCellOnMap, pSrc + 968, 968);
+  pSrc += 2 * 968;
+
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   if ( *thisa )
   {
-    memcpy(uFullyRevealedCellOnMap, Dst, 0x3C8u);
-    memcpy(uPartiallyRevealedCellOnMap, Src, 0x3C8u);
+    memcpy(uFullyRevealedCellOnMap, Dst, 968);
+    memcpy(uPartiallyRevealedCellOnMap, Src, 968);
   }
 
   for (uint i = 0; i < uNumBModels; ++i)
@@ -2026,7 +1866,7 @@
     }
   }
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   for (uint i = 0; i < uNumLevelDecorations; ++i)
   {
@@ -2034,34 +1874,33 @@
     pSrc += 2;
   }
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   memcpy(&uNumActors, pSrc, 4);
   if (uNumActors > 500)
-    MessageBoxW(nullptr, L"Can't load file!",
-                L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:939", 0);
-
-  pGameLoadingUI_ProgressBar->Progress();
+    MessageBoxW(nullptr, L"Can't load file!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:939", 0);
+
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   assert(sizeof(Actor) == 836);
   //pFilename = (char *)(836 * uNumActors);
   memcpy(pActors.data(), pSrc + 4, uNumActors * sizeof(Actor));
   pSrc += 4 + uNumActors * sizeof(Actor);
   //v92 = (char *)v91 + (int)pFilename;
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   memcpy(&uNumSpriteObjects, pSrc, 4);
   assert(uNumSpriteObjects <= 1000 && "Too many objects");
   assert(sizeof(SpriteObject) == 112);
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   //pFilename = (char *)(112 * uNumSpriteObjects);
   memcpy(pSpriteObjects.data(), pSrc + 4, uNumSpriteObjects * sizeof(SpriteObject));
   pSrc += 4 + uNumSpriteObjects * sizeof(SpriteObject);
 
   //v94 = (char *)v93 + (int)pFilename;
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   memcpy(&uNumChests, pSrc, 4);
   //v95 = (char *)v94 + 4;
@@ -2069,19 +1908,19 @@
     MessageBoxW(nullptr, L"Can't load file!",
                 L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:968", 0);
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   assert(sizeof(Chest) == 5324);
   //pFilename = (char *)(5324 * uNumChests);
   memcpy(pChests.data(), pSrc + 4 , uNumChests * sizeof(Chest));
   pSrc += 4 + uNumChests * sizeof(Chest);
   //v96 = (char *)v95 + (int)pFilename;
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
 
   memcpy(&stru_5E4C90_MapPersistVars, pSrc, 0xC8);
   pSrc += 0xC8;
 
-  pGameLoadingUI_ProgressBar->Progress();
+  pGameLoadingUI_ProgressBar->Progress();					//прогресс загрузки
   memcpy(&loc_time, pSrc, 0x38u);
 
   free(pSrcMem);
@@ -2117,49 +1956,53 @@
   else
     strcpy(loc_time.sky_texture_name, "plansky3");
 
+  //New_SKY_NIGHT_ID = pBitmaps_LOD->LoadTexture("SKY13");
+  //if (New_SKY_NIGHT_ID != -1)
+   // pBitmaps_LOD->pTextures[New_SKY_NIGHT_ID].palette_id2 = pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[New_SKY_NIGHT_ID].palette_id1);
+
   //v101 = pBitmaps_LOD->LoadTexture(field_4F8);
   sSky_TextureID = pBitmaps_LOD->LoadTexture(loc_time.sky_texture_name);
   if (sSky_TextureID != -1)
     pBitmaps_LOD->pTextures[sSky_TextureID].palette_id2 = pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[sSky_TextureID].palette_id1);
 
   pPaletteManager->RecalculateAll();
-  pSoundList->LoadSound(53, 0);
-  pSoundList->LoadSound(92, 0);
-  pSoundList->LoadSound(57, 0);
-  pSoundList->LoadSound(96, 0);
-  pSoundList->LoadSound(64, 0);
-  pSoundList->LoadSound(103, 0);
+  pSoundList->LoadSound(SOUND_RunDirt, 0);			//For Dirt tyle(для звука хождения по грязи)
+  pSoundList->LoadSound(SOUND_WalkDirt, 0);			//для бега
+  pSoundList->LoadSound(SOUND_RunRoad, 0);			//для звука хождения по дороге
+  pSoundList->LoadSound(SOUND_WalkRoad, 0);
+  pSoundList->LoadSound(SOUND_RunWood, 0);			//для звука хождения по дереву
+  pSoundList->LoadSound(SOUND_WalkWood, 0);
   for (int i=0; i < 3;++i) 
   {
     switch ( pTileTypes[i].tileset )
     {
       case Tileset_Grass:
-        pSoundList->LoadSound(54, 0);
-        pSoundList->LoadSound(93, 0);
+        pSoundList->LoadSound(SOUND_RunGrass, 0);	//для звука хождения по траве
+        pSoundList->LoadSound(SOUND_WalkGrass, 0);
         break;
       case Tileset_Snow:
-        pSoundList->LoadSound(58, 0);
-        pSoundList->LoadSound(97, 0);
+        pSoundList->LoadSound(SOUND_RunSnow, 0);	//по снегу
+        pSoundList->LoadSound(SOUND_WalkSnow, 0);
         break;
       case Tilset_Desert:
-        pSoundList->LoadSound(52, 0);
-         pSoundList->LoadSound(91, 0);
+        pSoundList->LoadSound(SOUND_RunDesert, 0);	//по пустыне
+         pSoundList->LoadSound(SOUND_WalkDesert, 0);
         break;
-      case Tileset_3:
-        pSoundList->LoadSound(51, 0);
-        pSoundList->LoadSound(90, 0);
+      case Tileset_CooledLava:
+        pSoundList->LoadSound(SOUND_RunCooledLava, 0);//по лаве
+        pSoundList->LoadSound(SOUND_WalkCooledLava, 0);
         break;
       case Tileset_Water:
-        pSoundList->LoadSound(62, 0);
-        pSoundList->LoadSound(101, 0);
+        pSoundList->LoadSound(SOUND_RunWater, 0);		//по воде
+        pSoundList->LoadSound(SOUND_WalkWater, 0);
         break;
-      case Tileset_6:
-        pSoundList->LoadSound(49, 0);
-        pSoundList->LoadSound(88, 0);
+      case Tileset_Badlands:
+        pSoundList->LoadSound(SOUND_RunBadlands, 0);	//для звука ходьбы по бесплодным землям
+        pSoundList->LoadSound(SOUND_WalkBadlands, 0);
         break;
       case Tileset_Swamp:
-        pSoundList->LoadSound(61, 0);
-        pSoundList->LoadSound(100, 0);
+        pSoundList->LoadSound(SOUND_RunSwamp, 0);		//по болоту
+        pSoundList->LoadSound(SOUND_WalkSwamp, 0);
         break;
     }
   }
@@ -2177,7 +2020,7 @@
     v3 = (a2 - 90) / 36;
     if ( v3 && v3 != 1 && v3 != 2 )
     {
-      if ( v3 == Tileset_3 )
+      if ( v3 == Tileset_CooledLava )
         result = this->pTileTypes[3].uTileID;
       else
         result = a2;
@@ -3121,15 +2964,10 @@
   int v1; // edi@1
   int v2; // ebx@1
   int floor_level; // eax@14
-  int v6; // esi@45
   ODMFace *face; // ecx@45
-  //signed int v33; // eax@143
   int v34; // esi@143
   int v35; // esi@147
   int v36; // eax@155
-//  signed int v37; // esi@159
-//  signed int v38; // eax@159
-//  signed int i; // esi@159
   int v40; // esi@162
   bool v42; // eax@180
   signed int v43; // ecx@184
@@ -3144,15 +2982,11 @@
   unsigned int v66; // esi@263
   signed int v68; // ecx@263
   int v69; // eax@263
-//  unsigned int v76; // edi@293
   bool v77; // edx@297
   bool v78; // ecx@303
   int v79; // ecx@314
   __int16 v80; // dx@317
-  //int v81; // ebx@318
-  //int v82; // ecx@318
   int pTerrainHeight; // eax@321
-//  int v86; // [sp-20h] [bp-B4h]@246
   int v87; // [sp-20h] [bp-B4h]@248
   int v97; // [sp+Ch] [bp-88h]@180
   Vec3_int_ v98;
@@ -3172,10 +3006,11 @@
   int _walk_speed; // [sp+54h] [bp-40h]@48
   int pX; // [sp+58h] [bp-3Ch]@1
   int pY; // [sp+5Ch] [bp-38h]@1
+  int party_new_Z; // [sp+74h] [bp-20h]@1
   int v118; // [sp+60h] [bp-34h]@1
   int _angle_x; // [sp+68h] [bp-2Ch]@48
   unsigned int v122; // [sp+70h] [bp-24h]@180
-  int pZ; // [sp+74h] [bp-20h]@1
+
   bool party_walking_flag; // [sp+78h] [bp-1Ch]@1
   int _angle_y; // [sp+7Ch] [bp-18h]@48
   int v128; // [sp+88h] [bp-Ch]@1
@@ -3188,9 +3023,11 @@
   int fall_speed = pParty->uFallSpeed;
   v128 = 0;
   v129 = 0;
+
   pX = pParty->vPosition.x;
   pY = pParty->vPosition.y;
-  pZ = pParty->vPosition.z;
+  party_new_Z = pParty->vPosition.z;
+
   v113 = pParty->field_6F0;
   hovering = false;
   bool partyAtHighSlope = IsTerrainSlopeTooHigh(pParty->vPosition.x, pParty->vPosition.y);
@@ -3199,8 +3036,9 @@
   v102 = 0;
   pModel_ = false;
   bWaterWalk = false;
-
-  if (!pParty->FeatherFallActive())//Проверка падение пера
+  //************************************
+  //Проверка падение пера
+  if (!pParty->FeatherFallActive())
   {
     bFeatherFall = false;
     for (int i = 0; i < 4; ++i)
@@ -3212,9 +3050,10 @@
   }
   else
     bFeatherFall = true;
-
+  //************************************
+  //Проверка хождения по воде
   pParty->uFlags &= ~PARTY_FLAGS_1_STANDING_ON_WATER;
-  if (pParty->WaterWalkActive())//Проверка хождения по воде
+  if (pParty->WaterWalkActive())
   {
     //LOBYTE(pParty->uFlags) &= 0x7Fu;
     bWaterWalk = true;
@@ -3223,19 +3062,23 @@
           pParty->pPlayers[pParty->pPartyBuffs[PARTY_BUFF_WATER_WALK].uCaster - 1].sMana <= 0 )
       bWaterWalk = false;
   }
-
-  int bmodel_standing_on_pid;
-  int is_on_water = false;
-  floor_level = ODM_GetFloorLevel(pX, pY, pZ, pParty->uPartyHeight, &is_on_water, &bmodel_standing_on_pid, bWaterWalk);
-  int is_not_on_bmodel = bmodel_standing_on_pid == 0;
-
-  v111 = floor_level;
-  if ( bFeatherFall )
+  //*************************************
+  //определение уровня пола
+  int bmodel_standing_on_pid;                           //данные 3D model'и
+  int is_on_water = false;                              //на воду
+  floor_level = ODM_GetFloorLevel(pX, pY, party_new_Z, pParty->uPartyHeight, &is_on_water, &bmodel_standing_on_pid, bWaterWalk);
+  int is_not_on_bmodel = bmodel_standing_on_pid == 0;   //не на 3D model
+
+  v111 = floor_level;                 //???
+  //************************************
+  //определение высоты падения
+  if ( bFeatherFall )                 //падение пера
     pParty->uFallStartY = floor_level;
   else
     floor_level = pParty->uFallStartY;
-
-  if ( floor_level - pZ > 512 && !bFeatherFall && pZ <= v111 + 1 )//падение на 3D Model
+  //*************************************
+  //падение на 3D Model
+  if ( floor_level - party_new_Z > 512 && !bFeatherFall && party_new_Z <= v111 + 1 )
   {
     if (pParty->uFlags & PARTY_FLAGS_1_LANDING)
       pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
@@ -3244,64 +3087,71 @@
       if ( !pParty->pPlayers[i].HasEnchantedItemEquipped(72) && !pParty->pPlayers[i].WearsItem(ITEM_ARTIFACT_HERMES_SANDALS, EQUIP_BOOTS) )
       {
         pParty->pPlayers[i].ReceiveDamage(
-            (signed int)((pParty->uFallStartY - pZ) * (unsigned __int64)(pParty->pPlayers[i].GetMaxHealth() / 10)) / 256, DMGT_PHISYCAL);
+            (signed int)((pParty->uFallStartY - party_new_Z) * (unsigned __int64)(pParty->pPlayers[i].GetMaxHealth() / 10)) / 256, DMGT_PHISYCAL);
         bonus = 20 - pParty->pPlayers[i].GetParameterBonus(pParty->pPlayers[i].GetActualEndurance());
         pParty->pPlayers[i].SetRecoveryTime((signed __int64)((double)bonus * flt_6BE3A4_debug_recmod1 * 2.133333333333333));
       }
     }
   }
-
+  //*********************************
+  //определение высоты потолка
   ceiling_height = -1;
-  if ( pParty->bFlying )
-    ceiling_height = GetCeilingHeight(pX, pY, pZ + pParty->uPartyHeight, (int)&v102);//высота потолка
+  if ( pParty->bFlying )    //в полёте
+    ceiling_height = GetCeilingHeight(pX, pY, party_new_Z + pParty->uPartyHeight, (int)&v102);//высота потолка
   //v107 = bmodel_standing_on_pid == 0;
-  on_ground = v111 + 1;
-  if ( pZ <= on_ground )//полёт: посадка
+  on_ground = v111 + 1;     //на земле
+  //**************************************
+
+  if ( party_new_Z <= on_ground )//полёт: посадка
   {
     ceiling_height = -1;
     pParty->bFlying = false;
   }
   else
     hovering = true;
-  not_high_fall = pZ - v111 <= 32;
-
-  if ( bWalkSound && pParty->walk_sound_timer)//timer update
+  not_high_fall = party_new_Z - v111 <= 32;
+  //****************************************
+  //timer update(обновить таймер звука ходьбы)
+  if ( bWalkSound && pParty->walk_sound_timer)
   {
     if (pParty->walk_sound_timer >= pEventTimer->uTimeElapsed)
       pParty->walk_sound_timer -= pEventTimer->uTimeElapsed;
     else
       pParty->walk_sound_timer = 0;
   }
-
-  if (!bUnderwater && pParty->pPartyBuffs[PARTY_BUFF_FLY].uExpireTime <= 0)// конец действия полёта
+  //****************************************
+  // конец действия полёта
+  if (!bUnderwater && pParty->pPartyBuffs[PARTY_BUFF_FLY].uExpireTime <= 0)//не под водой и время закла полёта закончилось
     pParty->bFlying = false;
-
-  if (!hovering)//
+  //*****************************************
+  // установить на чём стоит группа
+  if (!hovering)//не в воздухе
   {
     if ( pParty->floor_face_pid != PID(OBJECT_BModel, bmodel_standing_on_pid) )
     {
       if (bmodel_standing_on_pid)
       {
-        if ( (bmodel_standing_on_pid >> 6) < pOutdoor->uNumBModels )
+	    int BModel_id = bmodel_standing_on_pid >> 6;
+        if ( BModel_id < pOutdoor->uNumBModels )
         {
-          face = pOutdoor->pBModels[bmodel_standing_on_pid >> 6].pFaces;
-          v6 = bmodel_standing_on_pid & 0x3F;
+          face = pOutdoor->pBModels[BModel_id].pFaces;
+          int face_id = bmodel_standing_on_pid & 0x3F;
           /*if ( *(char *)(v7->pFacePlane.vNormal.x + 308 * v6 + 31) & 4 )
           {
             pParty->field_6F4_packedid = PID(OBJECT_BModel,v108);
             v103 = *(short *)(v7->pFacePlane.vNormal.x + 308 * v6 + 292);
           }*/
-          if ( face[v6].uAttributes & FACE_PRESSURE_PLATE )
+          if ( face[face_id].uAttributes & FACE_PRESSURE_PLATE )
           {
             pParty->floor_face_pid = PID(OBJECT_BModel, bmodel_standing_on_pid);
-            trigger_id = face[v6].sCogTriggeredID; //
+            trigger_id = face[face_id].sCogTriggeredID; //EVT, панель имеет событие
           }
         }
       }
     }
-    pParty->floor_face_pid = PID(OBJECT_BModel, bmodel_standing_on_pid);
+    pParty->floor_face_pid = PID(OBJECT_BModel, bmodel_standing_on_pid);//6 - на земле
   }
-
+  //***********************************************
   _walk_speed = pParty->uWalkSpeed;
   _angle_y = pParty->sRotationY;
   _angle_x = pParty->sRotationX;
@@ -3328,28 +3178,28 @@
           extern int max_flight_height;
           if ( pParty->vPosition.z < max_flight_height || hovering )
           {
-            pZ += 30;
+            party_new_Z += 30;
             v113 += 30;
             pParty->bFlying = true;
-            if ( pZ > max_flight_height )
+            if ( party_new_Z > max_flight_height )
             {
-              pZ = max_flight_height;
+              party_new_Z = max_flight_height;
               v113 = max_flight_height;
             }
             v1 = 0;
             v2 = 0;
             fall_speed = 0;
             *(float *)&v128 = 0.0;
-            if ( v102 && pZ < ceiling_height && (signed int)(pParty->uPartyHeight + pZ) >= ceiling_height )//столкновение с потолком
+            if ( v102 && party_new_Z < ceiling_height && (signed int)(pParty->uPartyHeight + party_new_Z) >= ceiling_height )//столкновение с потолком
             {
               pParty->field_6E0 = 0;
               pParty->field_6E4 = 0;
               pPartyActionQueue->uNumActions = 0;
               pParty->uFlags |= PARTY_FLAGS_1_LANDING;
               pParty->vPosition.z = ceiling_height - pParty->uPartyHeight - 31;
-              pParty->field_6F0 = pZ;
+              pParty->field_6F0 = party_new_Z;
               pParty->bFlying = false;
-              pZ = ceiling_height - pParty->uPartyHeight - 31;
+              party_new_Z = ceiling_height - pParty->uPartyHeight - 31;
               v113 = pParty->field_6F0;
             }
             pParty->uFallSpeed = 0;
@@ -3367,13 +3217,13 @@
             || pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags & 1
             || pParty->pPlayers[pParty->pPartyBuffs[PARTY_BUFF_FLY].uCaster - 1].sMana > 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[PARTY_BUFF_FLY].uCaster + 10] > 0 )
           {
-            pZ -= 30;
+            party_new_Z -= 30;
             v113 -= 30;
             pParty->uFallSpeed = 0;
             fall_speed = 0;
             pParty->bFlying = true;
             pModel_ = true;
-            if ( pZ <= v111 )
+            if ( party_new_Z <= v111 )
             {
               pParty->bFlying = false;
               pPartyActionQueue->uNumActions = 0;
@@ -3382,7 +3232,7 @@
         }
         break;
 
-      case PARTY_TurnLeft:
+      case PARTY_TurnLeft://поворот влево
         if (uTurnSpeed)
           _angle_y += uTurnSpeed;   //descrete turn
         else
@@ -3391,7 +3241,7 @@
         _angle_y &= stru_5C6E00->uDoublePiMask;
       break;
 
-      case PARTY_TurnRight:
+      case PARTY_TurnRight://поворот вправо
         if (uTurnSpeed)
           _angle_y -= uTurnSpeed;
         else
@@ -3400,7 +3250,7 @@
         _angle_y &= stru_5C6E00->uDoublePiMask;
       break;
 
-      case PARTY_FastTurnLeft:
+      case PARTY_FastTurnLeft://быстрый поворот влево
         if (uTurnSpeed)
           _angle_y += uTurnSpeed;
         else
@@ -3409,7 +3259,7 @@
         _angle_y &= stru_5C6E00->uDoublePiMask;
       break;
 
-      case PARTY_FastTurnRight:
+      case PARTY_FastTurnRight://быстрый поворот вправо
         if (!uTurnSpeed)
           _angle_y -= 2.0f * fTurnSpeedMultiplier * (double)dturn;
         else
@@ -3422,11 +3272,11 @@
       {
         *(float *)&v128 = pParty->uWalkSpeed;
 
-        float sin_y = sinf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float sin_y = sinf(2 * pi_double * _angle_y / 2048.0);
         int dx = sin_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         v2 -= 3 * dx / 4;
         
-        float cos_y = cosf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float cos_y = cosf(2 * pi_double * _angle_y / 2048.0);
         int dy = cos_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         v1 += 3 * dy / 4;
 
@@ -3439,11 +3289,11 @@
       {
         *(float *)&v128 = pParty->uWalkSpeed;
 
-        float sin_y = sinf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float sin_y = sinf(2 * pi_double * _angle_y / 2048.0);
         int dx = sin_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         v2 += 3 * dx / 4;
         
-        float cos_y = cosf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float cos_y = cosf(2 * pi_double * _angle_y / 2048.0);
         int dy = cos_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         v1 -= 3 * dy / 4;
 
@@ -3456,8 +3306,8 @@
       {
         *(float *)&v128 = _walk_speed;
 
-        float sin_y = sinf(2 * 3.141592653589 * _angle_y / 2048.0),
-              cos_y = cosf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float sin_y = sinf(2 * pi_double * _angle_y / 2048.0),
+              cos_y = cosf(2 * pi_double * _angle_y / 2048.0);
 
         int dx = cos_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         int dy = sin_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
@@ -3482,8 +3332,8 @@
       {
         *(float *)&v128 = _walk_speed;
 
-        float sin_y = sinf(2 * 3.141592653589 * _angle_y / 2048.0);
-        float cos_y = cosf(2 * 3.141592653589 * _angle_y / 2048.0);
+        float sin_y = sinf(2 * pi_double * _angle_y / 2048.0);
+        float cos_y = cosf(2 * pi_double * _angle_y / 2048.0);
 
         int dx = cos_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
         int dy = sin_y * pParty->uWalkSpeed * fWalkSpeedMultiplier;
@@ -3616,27 +3466,27 @@
   if ( pParty->bFlying )
   {
     v129 = fixpoint_mul(4, stru_5C6E00->Cos(GetTickCount()));
-    pZ = v113 + v129;
+    party_new_Z = v113 + v129;
     if ( pModel_ )
-      pZ = v113;
+      party_new_Z = v113;
     if (pParty->FlyActive())
       stru_5E4C90_MapPersistVars._decor_events[20 * pParty->pPartyBuffs[PARTY_BUFF_FLY].uOverlayID + 119] &= 0xFE;
-    pParty->uFallStartY = pZ;
+    pParty->uFallStartY = party_new_Z;
   }
-  else if ( pZ < v111 )
+  else if ( party_new_Z < v111 )
   {
     if ( is_on_water && fall_speed )
       SpriteObject::sub_42F960_create_object(pX, pY, v111);
     fall_speed = 0;
-    pZ = v111;
+    party_new_Z = v111;
     pParty->uFallStartY = v111;
-    v113 = pZ;
+    v113 = party_new_Z;
     if (pParty->FlyActive())
       stru_5E4C90_MapPersistVars._decor_events[20 * pParty->pPartyBuffs[PARTY_BUFF_FLY].uOverlayID + 119] |= 1;
   }
   else
   {
-    v113 = pZ;
+    v113 = party_new_Z;
     if (pParty->FlyActive())
       stru_5E4C90_MapPersistVars._decor_events[20 * pParty->pPartyBuffs[PARTY_BUFF_FLY].uOverlayID + 119] |= 1;
   }
@@ -3656,7 +3506,7 @@
       // rolling down the hill
       // how it's done: you get a little bit pushed in the air along terrain normal, getting in the air
       // and falling to the gravity, gradually sliding downwards. nice trick
-      pZ = v111;
+      party_new_Z = v111;
       ODM_GetTerrainNormalAt(pX, pY, &v98);
       v35 = fall_speed + (8 * -(pEventTimer->uTimeElapsed * GetGravityStrength()));
       v129 = abs(v2 * v98.x + v1 * v98.y + v35 * v98.z) >> 16;
@@ -3687,7 +3537,7 @@
     }
   }
   else
-    pParty->uFallStartY = pZ;
+    pParty->uFallStartY = party_new_Z;
 
   if ( v2 * v2 + v1 * v1 < 400 && !partyAtHighSlope )
   {
@@ -3705,11 +3555,11 @@
   {
     stru_721530.position.x = pX;
     stru_721530.position.y = pY;
-    stru_721530.position.z = stru_721530.height + pZ + 1;
+    stru_721530.position.z = stru_721530.height + party_new_Z + 1;
 
     stru_721530.normal.x = pX;
     stru_721530.normal.y = pY;
-    stru_721530.normal.z = stru_721530.prolly_normal_d + pZ + 1;
+    stru_721530.normal.z = stru_721530.prolly_normal_d + party_new_Z + 1;
 
     stru_721530.velocity.x = v2;
     stru_721530.velocity.y = v128;
@@ -3739,7 +3589,7 @@
       _angle_x = pX + fixpoint_mul(stru_721530.field_7C, stru_721530.direction.x);
       _angle_y = pY + fixpoint_mul(stru_721530.field_7C, stru_721530.direction.y);
       //pModel = (BSPModel *)fixpoint_mul(stru_721530.field_7C, stru_721530.direction.z);
-      v40 = fixpoint_mul(stru_721530.field_7C, stru_721530.direction.z) + pZ;
+      v40 = fixpoint_mul(stru_721530.field_7C, stru_721530.direction.z) + party_new_Z;
     }
     v122 = v40;
     ODM_GetFloorLevel(_angle_x, _angle_y, v40, pParty->uPartyHeight, &is_on_water, &bmodel_standing_on_pid, 0);
@@ -3761,9 +3611,9 @@
     }
     else
     {
-      if ( v42_ && v129 > pZ )
+      if ( v42_ && v129 > party_new_Z )
         v44 = 0;
-      if ( v42 && v119 > pZ )
+      if ( v42 && v119 > party_new_Z )
         v43 = 0;
       if ( v44 )
       {
@@ -3776,7 +3626,7 @@
       else
       {
         int new_ = ODM_GetFloorLevel(_angle_x, _angle_y, v40, pParty->uPartyHeight, &is_on_water, &bmodel_standing_on_pid, 0);
-        if ( IsTerrainSlopeTooHigh(_angle_x, _angle_y) && new_ <= pZ )
+        if ( IsTerrainSlopeTooHigh(_angle_x, _angle_y) && new_ <= party_new_Z )
         {
           v43 = 1;
           pX = _angle_x;
@@ -3792,14 +3642,14 @@
         pX = stru_721530.normal2.x;
         pY = stru_721530.normal2.y;
       }
-      pZ = stru_721530.normal2.z - stru_721530.prolly_normal_d - 1;
+      party_new_Z = stru_721530.normal2.z - stru_721530.prolly_normal_d - 1;
       break;
     }
     stru_721530.field_70 += stru_721530.field_7C;
     pX = _angle_x;
     pY = _angle_y;
     v45 = stru_721530.uFaceID;
-    pZ = v40;
+    party_new_Z = v40;
 
     if ( PID_TYPE(stru_721530.uFaceID) == OBJECT_Actor)
     {
@@ -3831,7 +3681,7 @@
       {
         if ( fall_speed < 0 )
           fall_speed = 0;
-        pZ = pModel->pVertices.pVertices[pODMFace->pVertexIDs[0]].z + 1;
+        party_new_Z = pModel->pVertices.pVertices[pODMFace->pVertexIDs[0]].z + 1;
         if ( v2 * v2 + v128 * v128 < 400 )
         {
           v2 = 0;
@@ -3862,7 +3712,7 @@
           pX = _angle_x + fixpoint_mul(pODMFace->pFacePlane.vNormal.x, v55);
           pY = _angle_y + fixpoint_mul(pODMFace->pFacePlane.vNormal.y, v55);
           if ( !v119 )
-            pZ = v122 + fixpoint_mul(pODMFace->pFacePlane.vNormal.z, v55);
+            party_new_Z = v122 + fixpoint_mul(pODMFace->pFacePlane.vNormal.z, v55);
         }
         if ( pParty->floor_face_pid != stru_721530.uFaceID && pODMFace->Pressure_Plate() )
         {
@@ -3904,7 +3754,7 @@
   //Воспроизведение звуков ходьбы/бега------------------------
   uint pX_ = abs(pParty->vPosition.x - pX);
   uint pY_ = abs(pParty->vPosition.y - pY);
-  uint pZ_ = abs(pParty->vPosition.z - pZ);
+  uint pZ_ = abs(pParty->vPosition.z - party_new_Z);
   if ( bWalkSound && pParty->walk_sound_timer <= 0 )
   {
     pAudioPlayer->_4AA258(804);//stop sound
@@ -3913,7 +3763,7 @@
       if ( integer_sqrt(pX_ * pX_ + pY_ * pY_ + pZ_ * pZ_) >= 16 )
       {
         if ( !is_not_on_bmodel && pOutdoor->pBModels[pParty->floor_face_pid >> 9].pFaces[(pParty->floor_face_pid >> 3) & 0x3F].Visible() )
-          pAudioPlayer->PlaySound(SOUND_RunAlong3DModel, 804, 1, -1, 0, 0, 0, 0);//бег на 3D Modelи
+          pAudioPlayer->PlaySound(SOUND_RunWood, 804, 1, -1, 0, 0, 0, 0);//бег на 3D Modelи
         else
         {
           v87 = pOutdoor->GetSoundIdByPosition(WorldPosToGridCellX(pParty->vPosition.x), WorldPosToGridCellZ(pParty->vPosition.y) - 1, 1);
@@ -3927,7 +3777,7 @@
       if ( integer_sqrt(pX_ * pX_ + pY_ * pY_ + pZ_ * pZ_) >= 8 )
       {
         if ( !is_not_on_bmodel && pOutdoor->pBModels[pParty->floor_face_pid >> 9].pFaces[(pParty->floor_face_pid >> 3) & 0x3F].Visible() )
-          pAudioPlayer->PlaySound(SOUND_WalkAlong3DModel, 804, 1, -1, 0, 0, 0, 0);// хождение на 3D Modelи
+          pAudioPlayer->PlaySound(SOUND_WalkWood, 804, 1, -1, 0, 0, 0, 0);// хождение на 3D Modelи
         else
         {
           v87 = pOutdoor->GetSoundIdByPosition(WorldPosToGridCellX(pParty->vPosition.x), WorldPosToGridCellZ(pParty->vPosition.y) - 1, 0);
@@ -3962,12 +3812,12 @@
   {
     pParty->vPosition.x = pX;
     pParty->vPosition.y = pY;
-    pParty->vPosition.z = pZ;
+    pParty->vPosition.z = party_new_Z;
     pParty->field_6F0 = v113;
     pParty->uFallSpeed = fall_speed;
-    if ( pZ > 8160 ) //ограничение высоты
+    if ( party_new_Z > 8160 ) //ограничение высоты
     {
-      pZ = 8160;
+      party_new_Z = 8160;
       pParty->uFallStartY = 8160;
       pParty->vPosition.z = 8160;
     }
@@ -3976,14 +3826,15 @@
       || (EventProcessor(trigger_id, 0, 1),
          pParty->vPosition.x == pX)
       && pParty->vPosition.y == pY
-      && pParty->vPosition.z == pZ )
+      && pParty->vPosition.z == party_new_Z )
     {
       if ( pParty->vPosition.z < v111 )
       {
         pParty->uFallSpeed = 0;
         //v73 = v105;
         pParty->vPosition.z = on_ground;
-        if ( pParty->uFallStartY - pZ > 512 && !bFeatherFall && pZ <= on_ground && !bUnderwater )//Fall to the ground(падение на землю с высоты)
+        if ( pParty->uFallStartY - party_new_Z > 512 && !bFeatherFall
+			&& party_new_Z <= on_ground && !bUnderwater )//Fall to the ground(падение на землю с высоты)
         {
           if ( pParty->uFlags & PARTY_FLAGS_1_LANDING )
             pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
@@ -3991,7 +3842,7 @@
           {
             for ( uint i = 1; i <= 4; ++i )
             {
-              pPlayers[i]->ReceiveDamage((signed int)((pParty->uFallStartY - pZ) * (unsigned __int64)(signed __int64)((double)pPlayers[i]->GetMaxHealth() * 0.1)) / 256,
+              pPlayers[i]->ReceiveDamage((signed int)((pParty->uFallStartY - party_new_Z) * (unsigned __int64)(signed __int64)((double)pPlayers[i]->GetMaxHealth() * 0.1)) / 256,
                 DMGT_PHISYCAL);
               v110 = 20 - pPlayers[i]->GetParameterBonus(pPlayers[i]->GetActualEndurance());
               pPlayers[i]->SetRecoveryTime((signed __int64)((double)v110 * flt_6BE3A4_debug_recmod1 * 2.133333333333333));
@@ -3999,7 +3850,7 @@
             //v73 = pParty->vPosition.z;
           }
         }
-        pParty->uFallStartY = pZ;
+        pParty->uFallStartY = party_new_Z;
       }
       if ( v102 && pParty->vPosition.z < ceiling_height )
       {
@@ -4066,8 +3917,8 @@
 
   //v81 = pZ;
   //v82 = pZ;
-  pParty->vPosition.z = pZ;
-  if ( pZ > 8160 )//опять ограничение высоты
+  pParty->vPosition.z = party_new_Z;
+  if ( party_new_Z > 8160 )//опять ограничение высоты
   {
     //v82 = 8160;
     pParty->uFallStartY = 8160;
@@ -4087,14 +3938,15 @@
     || (EventProcessor(trigger_id, 0, 1),
        pParty->vPosition.x == pX)
     && pParty->vPosition.y == pY
-    && pParty->vPosition.z == pZ )
+    && pParty->vPosition.z == party_new_Z )
   {
     if ( pParty->vPosition.z < v111 )
     {
       //v82 = on_ground;
       pParty->uFallSpeed = 0;
       pParty->vPosition.z = on_ground;
-      if ( pParty->uFallStartY - pZ > 512 && !bFeatherFall && pZ <= on_ground && !bUnderwater )//Fall to the water(падение на воду с высоты)
+      if ( pParty->uFallStartY - party_new_Z > 512
+		  && !bFeatherFall && party_new_Z <= on_ground && !bUnderwater )//Fall to the water(падение на воду с высоты)
       {
         if ( pParty->uFlags & PARTY_FLAGS_1_LANDING )
           pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
@@ -4103,7 +3955,7 @@
           for ( uint i = 1; i <= 4; ++i )
           {
             v110 = pPlayers[i]->GetMaxHealth();
-            pPlayers[i]->ReceiveDamage((signed int)((pParty->uFallStartY - pZ) * (unsigned __int64)(signed __int64)((double)v110 * 0.1)) / 256,
+            pPlayers[i]->ReceiveDamage((signed int)((pParty->uFallStartY - party_new_Z) * (unsigned __int64)(signed __int64)((double)v110 * 0.1)) / 256,
               DMGT_PHISYCAL);
             v110 = 20 - pPlayers[i]->GetParameterBonus(pPlayers[i]->GetActualEndurance());
             pPlayers[i]->SetRecoveryTime((signed __int64)((double)v110 * flt_6BE3A4_debug_recmod1 * 2.133333333333333));
@@ -4111,7 +3963,7 @@
           //v82 = pParty->vPosition.z;
         }
       }
-      pParty->uFallStartY = pZ;
+      pParty->uFallStartY = party_new_Z;
     }
     if ( v102 && pParty->vPosition.z < ceiling_height && (signed int)(pParty->uPartyHeight + pParty->vPosition.z) >= ceiling_height )
     {
--- a/Engine/Graphics/Outdoor.h	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Graphics/Outdoor.h	Mon Feb 09 19:17:12 2015 +0600
@@ -127,13 +127,12 @@
 #pragma pack(pop)
 
 
-
 #pragma pack(push, 1)
 struct OutdoorLocation
 {
   OutdoorLocation();
   void subconstuctor();
-
+  //int New_SKY_NIGHT_ID;
   void ExecDraw(unsigned int bRedraw);
   void PrepareActorsDrawList();
   void CreateDebugLocation();
--- a/Engine/Graphics/Render.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Graphics/Render.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -8641,8 +8641,12 @@
                         - (double)pGame->pIndoorCameraD3D->vPartyPos.z));
   pSkyPolygon.Create_48607B(&stru_8019C8);//заполняется ptr_38
   pSkyPolygon.ptr_38->_48694B_frustum_sky();
-  pSkyPolygon.uTileBitmapID = pOutdoor->sSky_TextureID;//179(original 166)
-  pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->sSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->sSky_TextureID)] : 0);
+
+  //if ( pParty->uCurrentHour > 20 || pParty->uCurrentHour < 5 )
+	//pSkyPolygon.uTileBitmapID = pOutdoor->New_SKY_NIGHT_ID;
+  //else
+	pSkyPolygon.uTileBitmapID = pOutdoor->sSky_TextureID;//179(original 166)
+  pSkyPolygon.pTexture = (Texture *)(pSkyPolygon.uTileBitmapID != -1 ? (int)&pBitmaps_LOD->pTextures[pSkyPolygon.uTileBitmapID] : 0);
   if ( pSkyPolygon.pTexture )
   {
     pSkyPolygon.dimming_level = 0;
@@ -10958,8 +10962,8 @@
 
 	float ray_dx = fov_x / (float)pViewport->uScreenWidth,
 		ray_dy = fov_y / (float)pViewport->uScreenHeight;
-	float party_angle_x = 2 * 3.141592653589 * pParty->sRotationX / 2048.0,
-		party_angle_y = 2 * 3.141592653589 * pParty->sRotationY / 2048.0;
+	float party_angle_x = 2 * pi_double * pParty->sRotationX / 2048.0,
+		party_angle_y = 2 * pi_double * pParty->sRotationY / 2048.0;
 	for (int y = 0; y < pViewport->uScreenHeight; ++y)
 	for (int x = 0; x < pViewport->uScreenWidth; ++x)
 	{
--- a/Engine/Objects/Actor.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Objects/Actor.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -332,7 +332,7 @@
       actorPtr->pActorBuffs[ACTOR_BUFF_HASTE].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v39 << 7) * 0.033333335),
         masteryLevel, 0, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr, 0xFF3C1Eu);
-      pAudioPlayer->PlaySound((SoundID)10040, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Haste, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_FIRE_METEOR_SHOWER:
@@ -479,7 +479,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v44 << 7) * 0.033333335),
         masteryLevel, realPoints + 5, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr,0x5C310Eu);
-      pAudioPlayer->PlaySound((SoundID)13040, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Stoneskin, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_SPIRIT_BLESS:
@@ -495,7 +495,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v42 << 7) * 0.033333335),
         masteryLevel, realPoints + 5, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr,0xC8C805u);
-      pAudioPlayer->PlaySound((SoundID)14010, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Bless, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
       return;
       break;
 
@@ -510,7 +510,7 @@
         v48 = 0;
       actorPtr->pActorBuffs[ACTOR_BUFF_FATE].Apply(pParty->uTimePlayed + 1280, masteryLevel, v48, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr,0xC8C805u);
-      pAudioPlayer->PlaySound((SoundID)14020, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Fate, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_SPIRIT_HEROISM:
@@ -526,7 +526,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v54 << 7) * 0.033333335),
         masteryLevel, realPoints + 5, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr,0xC8C805u);
-      pAudioPlayer->PlaySound((SoundID)14060, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_51heroism03, PID(OBJECT_Actor,uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_BODY_HAMMERHANDS:
@@ -541,7 +541,7 @@
         0,
         0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr, 0xA81376u);
-      pAudioPlayer->PlaySound((SoundID)16060, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_51heroism03, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_BODY_POWER_CURE:
@@ -549,7 +549,7 @@
       if ( actorPtr->sCurrentHP >= (signed int)actorPtr->pMonsterInfo.uHP )
         actorPtr->sCurrentHP = LOWORD(actorPtr->pMonsterInfo.uHP);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr, 0xA81376u);
-      pAudioPlayer->PlaySound((SoundID)14020, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Fate, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_LIGHT_DISPEL_MAGIC:
@@ -592,7 +592,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v96 << 7) * 0.033333335),
         masteryLevel, realPoints, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr, 0xFFFFFFu);
-      pAudioPlayer->PlaySound((SoundID)17070, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_94dayofprotection03, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_LIGHT_HOUR_OF_POWER:
@@ -608,7 +608,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v94 << 7) * 0.033333335),
         masteryLevel, realPoints + 5, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr, 0xFFFFFFu);
-      pAudioPlayer->PlaySound((SoundID)17080, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_9armageddon01, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
 
     case SPELL_DARK_SHARPMETAL:
@@ -674,7 +674,7 @@
         pParty->uTimePlayed + (signed int)(signed __int64)((double)(v68 << 7) * 0.033333335),
         masteryLevel, 0, 0, 0);
       pGame->pStru6Instance->_4A7E89_sparkles_on_actor_after_it_casts_buff(actorPtr,0x7E7E7Eu);
-      pAudioPlayer->PlaySound((SoundID)18060, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_Sacrifice2, PID(OBJECT_Actor, uActorID), 0, -1, 0, 0, 0, 0);
       return;
   }
 }
--- a/Engine/Objects/Chest.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Objects/Chest.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -163,7 +163,7 @@
       pSpellObject.spell_target_pid = 0;
       pSpellObject.uFacing = 0;
       pSpellObject.Create(0, 0, 0, 0);
-      pAudioPlayer->PlaySound(SOUND_Explosion, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
       pSpellObject.ExplosionTraps();
       chest->uFlags &= 0xFEu;
       if ( uActiveCharacter && !_A750D8_player_speech_timer && !OpenedTelekinesis )
@@ -180,7 +180,7 @@
     flag_shout = true;
   }
   pAudioPlayer->StopChannels(-1, -1);
-  pAudioPlayer->PlaySound(SOUND_OpenChest, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_openchest0101, 0, 0, -1, 0, 0, 0, 0);
   if ( flag_shout == true )
   {
     if ( !OpenedTelekinesis )
--- a/Engine/Objects/NPC.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Objects/NPC.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -1682,14 +1682,14 @@
       if (uCurrentlyLoadedLevelType == LEVEL_Indoor)
       {
         ShowStatusBarString(pGlobalTXT_LocalizationStrings[494], 2);//Нельзя применить знание Полет в помещении!
-        pAudioPlayer->PlaySound(SOUND_203, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_fizzle, 0, 0, -1, 0, 0, 0, 0);
       }
       else
       {
         int v19 = pOtherOverlayList->_4418B1(10008, 203, 0, 65536);
         pParty->pPartyBuffs[PARTY_BUFF_FLY].Apply(pParty->uTimePlayed + 60 * (256 * 2), 3, 1, v19, 0);
         pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags |= 1;
-        pAudioPlayer->PlaySound(SOUND_11090, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_21fly03, 0, 0, -1, 0, 0, 0, 0);
       }
     }
     break;
@@ -1699,7 +1699,7 @@
       int v20 = pOtherOverlayList->_4418B1(10005, 201, 0, 65536);
       pParty->pPartyBuffs[PARTY_BUFF_WATER_WALK].Apply(pParty->uTimePlayed + 60 * (256 * (2 + 1)), 3, 0, v20, 0);
       pParty->pPartyBuffs[PARTY_BUFF_WATER_WALK].uFlags |= 1;
-      pAudioPlayer->PlaySound(SOUND_12040, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_WaterWalk, 0, 0, -1, 0, 0, 0, 0);
     }
     break;
 
--- a/Engine/Objects/Player.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Objects/Player.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -235,7 +235,7 @@
     return true;
   }
 
-  pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
   return false;
 }
 
@@ -2313,97 +2313,97 @@
     {
       case SPECIAL_ATTACK_CURSE:
         SetCondition(Condition_Cursed, 1);
-        pAudioPlayer->PlaySound(SOUND_221, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_star1, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_WEAK:
         SetCondition(Condition_Weak, 1);
-        pAudioPlayer->PlaySound(SOUND_221, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star1, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_SLEEP:
         SetCondition(Condition_Sleep, 1);
-        pAudioPlayer->PlaySound(SOUND_221, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star1, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_DRUNK:
         SetCondition(Condition_Drunk, 1);
-        pAudioPlayer->PlaySound(SOUND_221, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star1, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_INSANE:
         SetCondition(Condition_Insane, 1);
-        pAudioPlayer->PlaySound(SOUND_224, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star4, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_POISON_WEAK:
         SetCondition(Condition_Poison_Weak, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_POISON_MEDIUM:
         SetCondition(Condition_Poison_Medium, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_POISON_SEVERE:
         SetCondition(Condition_Poison_Severe, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_DISEASE_WEAK:
         SetCondition(Condition_Disease_Weak, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_DISEASE_MEDIUM:
         SetCondition(Condition_Disease_Medium, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_DISEASE_SEVERE:
         SetCondition(Condition_Disease_Severe, 1);
-        pAudioPlayer->PlaySound(SOUND_222, 0, 0, -1, 0, 0, 0, 0);
-        pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
+        pAudioPlayer->PlaySound(SOUND_star2, 0, 0, -1, 0, 0, 0, 0);
+        pGame->pStru6Instance->SetPlayerBuffAnim(0x99, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_PARALYZED:
         SetCondition(Condition_Paralyzed, 1);
-        pAudioPlayer->PlaySound(SOUND_224, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_star4, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_UNCONSCIOUS:
         SetCondition(Condition_Unconcious, 1);
-        pAudioPlayer->PlaySound(SOUND_224, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_star4, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_DEAD:
         SetCondition(Condition_Dead, 1);
-        pAudioPlayer->PlaySound(SOUND_225, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_eradicate, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_PETRIFIED:
         SetCondition(Condition_Pertified, 1);
-        pAudioPlayer->PlaySound(SOUND_225, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_eradicate, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_ERADICATED:
         SetCondition(Condition_Eradicated, 1);
-        pAudioPlayer->PlaySound(SOUND_225, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_eradicate, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
@@ -2414,7 +2414,7 @@
         {
           PlaySound(SPEECH_40, 0);
           v48->SetBroken();
-          pAudioPlayer->PlaySound(SOUND_47, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_metal_vs_metal03h, 0, 0, -1, 0, 0, 0, 0);
         }
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
@@ -2433,27 +2433,27 @@
         }
         memcpy(v27, &this->pInventoryItemList[this->pInventoryMatrix[v47]-1], 0x24u);
         RemoveItemAtInventoryIndex(v47);
-        pAudioPlayer->PlaySound(SOUND_47, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_metal_vs_metal03h, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_AGING:
         PlaySound(SPEECH_42, 0);
         ++this->sAgeModifier;
-        pAudioPlayer->PlaySound(SOUND_226, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_eleccircle, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_MANA_DRAIN:
         PlaySound(SPEECH_41, 0);
         this->sMana = 0;
-        pAudioPlayer->PlaySound(SOUND_226, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_eleccircle, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
       case SPECIAL_ATTACK_FEAR:
         SetCondition(Condition_Fear, 1);
-        pAudioPlayer->PlaySound(SOUND_221, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_star1, 0, 0, -1, 0, 0, 0, 0);
         pGame->pStru6Instance->SetPlayerBuffAnim(0x99u, v3);
         return 1;
         break;
@@ -4325,7 +4325,7 @@
       pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0, 0, 0);
       return;
     }
-    pAudioPlayer->PlaySound(SOUND_EatApple, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_eat, 0, 0, -1, 0, 0, 0, 0);
 
     if ( pGUIWindow_CurrentMenu && pGUIWindow_CurrentMenu->eWindowType != WINDOW_null)
     {
@@ -4617,7 +4617,7 @@
           pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0, 0, 0);
           return;
       }
-      pAudioPlayer->PlaySound(SOUND_210, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_drink, 0, 0, -1, 0, 0, 0, 0);
       if ( pGUIWindow_CurrentMenu && pGUIWindow_CurrentMenu->eWindowType != WINDOW_null)
       {
 //         if ( !v73 )                                            v73 is always 1 at this point
@@ -4868,49 +4868,49 @@
       pMouse->RemoveHoldingItem();
       pGame->pStru6Instance->SetPlayerBuffAnim(SPELL_QUEST_COMPLETED, player_num - 1);
       playerAffected->PlaySound(SPEECH_93, 0);
-      pAudioPlayer->PlaySound(SOUND_219, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_chimes, 0, 0, -1, 0, 0, 0, 0);
       if ( pParty->uDaysPlayed == 6 || pParty->uDaysPlayed == 20 )
       {
         playerAffected->SetCondition(Condition_Eradicated, 0);
-        pAudioPlayer->PlaySound(SOUND_215, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_gong, 0, 0, -1, 0, 0, 0, 0);
       }
       else if ( pParty->uDaysPlayed == 12 || pParty->uDaysPlayed == 26 )
       {
         playerAffected->SetCondition(Condition_Dead, 0);
-        pAudioPlayer->PlaySound(SOUND_215, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_gong, 0, 0, -1, 0, 0, 0, 0);
       }
       else  if ( pParty->uDaysPlayed == 4 || pParty->uDaysPlayed == 25 )
       {
         playerAffected->SetCondition(Condition_Pertified, 0);
-        pAudioPlayer->PlaySound(SOUND_215, 0, 0, -1, 0, 0, 0, 0);                 
+        pAudioPlayer->PlaySound(SOUND_gong, 0, 0, -1, 0, 0, 0, 0);                 
       }
       return;
       }
       else if ( pParty->pPickedItem.uItemID == 630 ) //Red Apple
       {
           Party::GiveFood(1);
-          pAudioPlayer->PlaySound(SOUND_EatApple, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_eat, 0, 0, -1, 0, 0, 0, 0);
       }
       else if ( pParty->pPickedItem.uItemID == 632 ) //Lute
       {
-        pAudioPlayer->PlaySound(SOUND_PlayLute,  0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_luteguitar,  0, 0, -1, 0, 0, 0, 0);
         return;
       }
       else if ( pParty->pPickedItem.uItemID == 633 ) //Faerie Pipes
       {
-        pAudioPlayer->PlaySound(SOUND_PlayFaeriePipes,  0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_panflute,  0, 0, -1, 0, 0, 0, 0);
         return;
       }
       else if ( pParty->pPickedItem.uItemID == 634 ) //Gryphonheart's Trumpet
       {
-        pAudioPlayer->PlaySound(SOUND_PlayGryphonheartsTrumpet,  0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_trumpet,  0, 0, -1, 0, 0, 0, 0);
         return;
       }
       else if ( pParty->pPickedItem.uItemID == 646 ) //Horseshoe
       {
         pGame->pStru6Instance->SetPlayerBuffAnim(SPELL_QUEST_COMPLETED, player_num - 1);
         v5 = PID(OBJECT_Player, player_num + 49);
-        pAudioPlayer->PlaySound(SOUND_20001, v5, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_quest, v5, 0, -1, 0, 0, 0, 0);
         playerAffected->AddVariable(VAR_NumSkillPoints, 2);
       }
       else if ( pParty->pPickedItem.uItemID == 650 ) //Temple in a Bottle
@@ -5920,7 +5920,7 @@
   int playerIndex = GetPlayerIndex();
   signed int v25 = 8 * playerIndex + 400;
   LOBYTE(v25) = PID(OBJECT_Player,playerIndex - 112);
-  pAudioPlayer->PlaySound(SOUND_20001, v25, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_quest, v25, 0, -1, 0, 0, 0, 0);
 }
 
 //----- (new function) --------------------------------------------------------
@@ -8131,14 +8131,14 @@
 
   switch (v34)
   {
-    case 0: pAudioPlayer->PlaySound(SOUND_81, 0, 0, -1, 0, 0, 0, 0); break;
-    case 1: pAudioPlayer->PlaySound(SOUND_84, 0, 0, -1, 0, 0, 0, 0); break;
-    case 2: pAudioPlayer->PlaySound(SOUND_85, 0, 0, -1, 0, 0, 0, 0); break;
-    case 3: pAudioPlayer->PlaySound(SOUND_78, 0, 0, -1, 0, 0, 0, 0); break;
-    case 4: pAudioPlayer->PlaySound(SOUND_80, 0, 0, -1, 0, 0, 0, 0); break;
-    case 5: pAudioPlayer->PlaySound(SOUND_71, 0, 0, -1, 0, 0, 0, 0); break;
-    case 6: pAudioPlayer->PlaySound(SOUND_83, 0, 0, -1, 0, 0, 0, 0); break;
-    case 7: pAudioPlayer->PlaySound(SOUND_67, 0, 0, -1, 0, 0, 0, 0); break;
+    case 0: pAudioPlayer->PlaySound(SOUND_swing_with_blunt_weapon01, 0, 0, -1, 0, 0, 0, 0); break;
+    case 1: pAudioPlayer->PlaySound(SOUND_swing_with_sword01, 0, 0, -1, 0, 0, 0, 0); break;
+    case 2: pAudioPlayer->PlaySound(SOUND_swing_with_sword02, 0, 0, -1, 0, 0, 0, 0); break;
+    case 3: pAudioPlayer->PlaySound(SOUND_swing_with_axe01, 0, 0, -1, 0, 0, 0, 0); break;
+    case 4: pAudioPlayer->PlaySound(SOUND_swing_with_axe03, 0, 0, -1, 0, 0, 0, 0); break;
+    case 5: pAudioPlayer->PlaySound(SOUND_shoot_bow01, 0, 0, -1, 0, 0, 0, 0); break;
+    case 6: pAudioPlayer->PlaySound(SOUND_swing_with_blunt_weapon03, 0, 0, -1, 0, 0, 0, 0); break;
+    case 7: pAudioPlayer->PlaySound(SOUND_shoot_blaster01, 0, 0, -1, 0, 0, 0, 0); break;
   }
 }
 
--- a/Engine/Objects/SpriteObject.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Objects/SpriteObject.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -1082,7 +1082,7 @@
   {
     v9 = 8 * v8;
     LOBYTE(v9) = v9 | 2;
-    pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|0x14), v9, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound((SoundID)SOUND_splash, v9, 0, -1, 0, 0, 0, 0);
   }
 }
 
@@ -1245,7 +1245,7 @@
 				 pSpriteObjects[uLayingItemID].uSpriteFrameID = 0;
 				 v13 = 8 * uLayingItemID;
 				 LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
-				 pAudioPlayer->PlaySound(SOUND_Explosion, v13, 0, -1, 0, 0, 0, 0);
+				 pAudioPlayer->PlaySound(SOUND_fireBall, v13, 0, -1, 0, 0, 0, 0);
 				 return 0;
 	}
 
@@ -1279,7 +1279,7 @@
 				{
 					v13 = 8 * uLayingItemID;
 					LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
-					pAudioPlayer->PlaySound(SOUND_Explosion, v13, 0, -1, 0, 0, 0, 0);
+					pAudioPlayer->PlaySound(SOUND_fireBall, v13, 0, -1, 0, 0, 0, 0);
 				}
 				return 0;
 	}
@@ -1339,7 +1339,7 @@
 				{
 					v13 = 8 * uLayingItemID;
 					LOBYTE(v13) = PID(OBJECT_Item, uLayingItemID);
-					pAudioPlayer->PlaySound(SOUND_Explosion, v13, 0, -1, 0, 0, 0, 0);
+					pAudioPlayer->PlaySound(SOUND_fireBall, v13, 0, -1, 0, 0, 0, 0);
 					return 0;
 				}
 				return 0;
@@ -1370,7 +1370,7 @@
 				AttackerInfo.Add(v38, 512, v40, v39, v37, 0, 0);
 				if (object->uFlags & OBJECT_DESC_TRIAL_PARTICLE)
 					trail_particle_generator.GenerateTrailParticles(pSpriteObjects[uLayingItemID].vPosition.x, pSpriteObjects[uLayingItemID].vPosition.y, pSpriteObjects[uLayingItemID].vPosition.z, object->uParticleTrailColor);
-				pAudioPlayer->PlaySound(SOUND_Explosion, v147, 0, -1, 0, 0, 0, 0);
+				pAudioPlayer->PlaySound(SOUND_fireBall, v147, 0, -1, 0, 0, 0, 0);
 				return 0;
 	}
 
--- a/Engine/OurMath.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/OurMath.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -15,7 +15,7 @@
   this->pInvCosTable[0] = 65536;
   for(int i = 1; i < (signed int)this->uIntegerHalfPi; i++)
   {
-    v3 = (double)i * 3.141592653589793 / (double)uIntegerPi;
+    v3 = (double)i * pi_double / (double)uIntegerPi;
     pTanTable[i] = (signed __int64)(tan(v3) * (double)this->pCosTable[0] + 0.5);
     pCosTable[i] = (signed __int64)(cos(v3) * (double)this->pCosTable[0] + 0.5);
     pInvCosTable[i] = (signed __int64)(1.0 / cos(v3) * (double)this->pCosTable[0] + 0.5);
--- a/Engine/OurMath.h	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/OurMath.h	Mon Feb 09 19:17:12 2015 +0600
@@ -2,7 +2,7 @@
 
 #include <cassert>
 #include <limits>
-
+#define pi_double 3.14159265358979323846
 /*  186 */
 #pragma pack(push, 1)
 struct stru193_math
--- a/Engine/Party.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Party.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -248,7 +248,7 @@
   pParty->uNumGold = uNumGold;
   pUIAnim_Gold->uAnimTime = 0;
   pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Gold->uIconID].uAnimLength;
-  pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_gold01, 0, 0, -1, 0, 0, 0, 0);
 }
 
 //----- (00492BB6) --------------------------------------------------------
@@ -260,7 +260,7 @@
     pParty->uNumGold = 0;
   pUIAnim_Gold->uAnimTime = 0;
   pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[pUIAnim_Gold->uIconID].uAnimLength;
-  pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_gold01, 0, 0, -1, 0, 0, 0, 0);
 }
 
 //----- (0049135E) --------------------------------------------------------
@@ -1014,7 +1014,7 @@
   pUIAnim_Gold->uAnimLength = 8 * pIconsFrameTable->pIcons[(signed __int16)pUIAnim_Gold->uIconID].uAnimLength;
   if ( pTmpBuf2[0] )
     ShowStatusBarString(pTmpBuf2.data(), 2u);
-  pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_gold01, 0, 0, -1, 0, 0, 0, 0);
 }
 //----- (00421B2C) --------------------------------------------------------
 void Party::sub_421B2C_PlaceInInventory_or_DropPickedItem()
@@ -1129,7 +1129,7 @@
       {
         memcpy(&v9->pInventoryItemList[v10-1], pItem, 0x24u);
         pItem->Reset();
-        pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_gold01, 0, 0, -1, 0, 0, 0, 0);
         v9->PlaySound(SPEECH_60, 0);
         if ( !v21 )
         {
--- a/Engine/Spells/CastSpellInfo.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Spells/CastSpellInfo.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -251,7 +251,7 @@
         pTurnEngine->ApplyPlayerAction();
       }
       ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // "Spell failed"
-      pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
       pCastSpellInfo[n].uSpellID = 0;
       pPlayer->sMana -= uRequiredMana;
       return;
@@ -369,7 +369,7 @@
         if ( _v733 > amount )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -407,7 +407,7 @@
         if (!a2)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -499,7 +499,7 @@
         if ( !MonsterStats::BelongsToSupertype(pActors[PID_ID(a2)].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD) )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -589,7 +589,7 @@
           || uCurrentlyLoadedLevelType == LEVEL_Outdoor && (pParty->uCurrentHour < 5 || pParty->uCurrentHour >= 21) )//только в дневное время
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -765,7 +765,7 @@
         _50C9D4_AfterEnchClickEventSecondParam = 0;
         _50C9D8_AfterEnchClickEventTimeout = 1;
         ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-        pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
         pCastSpell->uSpellID = 0;
         continue;
       }
@@ -937,7 +937,7 @@
           else
           {
             ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2);//"Не получилось!!!"
-            pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
             pCastSpell->uSpellID = 0;
           }
         }
@@ -1014,7 +1014,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[491], 2);  // Can't cast Meteor Shower indoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1084,7 +1084,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[492], 2); // Can't cast Inferno outdoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1206,7 +1206,7 @@
         if ( pParty->uFlags & PARTY_FLAGS_1_FALLING)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[493], 2);  // Can't cast Jump while airborne!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           break;
         }
         if ( !pPlayer->CanCastSpell(uRequiredMana) )
@@ -1232,7 +1232,7 @@
         if (pParty->uFlags & (PARTY_FLAGS_1_ALERT_RED | PARTY_FLAGS_1_ALERT_YELLOW))
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[638], 2);  // There are hostile creatures nearby!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1253,13 +1253,13 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[494], 2);  // Can not cast Fly indoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           break;
         }
         if ( !pPlayers[pCastSpell->uPlayerID + 1]->GetMaxMana() )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2);  // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           break;
         }
         if ( skill_level == 1 || skill_level == 2 || skill_level == 3 )
@@ -1281,7 +1281,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[495], 2);  // Can't cast Starburst indoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1458,7 +1458,7 @@
         if ( !pPlayers[pCastSpell->uPlayerID + 1]->GetMaxMana() )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2);  // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           break;
         }
         switch (skill_level)
@@ -1495,7 +1495,7 @@
           _50C9D4_AfterEnchClickEventSecondParam = 0;
           _50C9D8_AfterEnchClickEventTimeout = 1;
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2);  // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1519,7 +1519,7 @@
           _50C9D4_AfterEnchClickEventSecondParam = 0;
           _50C9D8_AfterEnchClickEventTimeout = 1;
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2);//Не получилось!!!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           spell_level = v723;
           continue;
@@ -1682,7 +1682,7 @@
           if ( item_not_broken == false )
             v317 = pGlobalTXT_LocalizationStrings[585];//Предмет недостаточно высокого качества
           ShowStatusBarString(v317, 2);
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           //v318 =  &pParty->pPlayers[pCastSpell->uPlayerID_2];
           pCastSpell->uSpellID = 0;
           pParty->pPlayers[pCastSpell->uPlayerID_2].PlaySound(SPEECH_43, 0);
@@ -1698,7 +1698,7 @@
           || rand() % 100 >= amount && skill_level != 4 )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1712,7 +1712,7 @@
         if ( !_stricmp(pCurrentMapName, "d05.blv") ) // Arena
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -1791,7 +1791,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2647,7 +2647,7 @@
         if ( mon_num >= amount )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[648], 2);  // This character can't summon any more monsters!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2684,7 +2684,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[497], 2);  // Can't cast Prismatic Light outdoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2800,7 +2800,7 @@
         if ( pPlayer->uNumDivineInterventionCastsThisDay >= 3 )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2851,7 +2851,7 @@
         if ( mon_id == -1 )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[496], 2);  // No valid target exists!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2859,7 +2859,7 @@
          ||  pActors[mon_id].uAIState != Dead && pActors[mon_id].uAIState != Dying )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -2926,7 +2926,7 @@
           _50C9D4_AfterEnchClickEventSecondParam = 0;
           _50C9D8_AfterEnchClickEventTimeout = 1;
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -3012,7 +3012,7 @@
           if ( !pActors[mon_id].DoesDmgTypeDoDamage((DAMAGE_TYPE)10) )
           {
             ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-            pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
             pCastSpell->uSpellID = 0;
             continue;
           }
@@ -3074,7 +3074,7 @@
            || achieved_awards[pCastSpell->uPlayerID_2 - 4] <= 0 || achieved_awards[pCastSpell->uPlayerID_2 - 4] >= 3 )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -3188,7 +3188,7 @@
         if ( uCurrentlyLoadedLevelType == LEVEL_Indoor)
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[499], 2);  // Can't cast Armageddon indoors!
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
@@ -3199,7 +3199,7 @@
         if ( pPlayer->uNumArmageddonCasts >= amount || pParty->armageddon_timer > 0 )
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[428], 2); // Spell failed
-          pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, 0, 0, -1, 0, 0, 0, 0);
+          pAudioPlayer->PlaySound(SOUND_spellfail0201, 0, 0, -1, 0, 0, 0, 0);
           pCastSpell->uSpellID = 0;
           continue;
         }
--- a/Engine/Tables/TileFrameTable.h	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/Tables/TileFrameTable.h	Mon Feb 09 19:17:12 2015 +0600
@@ -27,10 +27,10 @@
   Tileset_Grass = 0,
   Tileset_Snow = 1,
   Tilset_Desert = 2,
-  Tileset_3 = 3,
+  Tileset_CooledLava = 3,
   Tileset_Dirt = 4,
   Tileset_Water = 5,
-  Tileset_6 = 6,
+  Tileset_Badlands = 6,
   Tileset_Swamp = 7,
   Tileset_8 = 8,
   Tileset_9 = 9,
--- a/Engine/TurnEngine/TurnEngine.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Engine/TurnEngine/TurnEngine.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -125,7 +125,7 @@
   pTurnEngine->field_18 &= ~TE_HAVE_PENDING_ACTIONS;
   pEventTimer->TrackGameTime();
   pAudioPlayer->StopChannels(-1, -1);
-  pAudioPlayer->PlaySound(SOUND_207, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_batllest, 0, 0, -1, 0, 0, 0, 0);
   //pPlayer = pParty->pPlayers.data();
   dword_50C998_turnbased_icon_1A = 8 * pIconsFrameTable->pIcons[uIconID_TurnStart].uAnimLength;
   dword_50C994 = 0;
@@ -252,7 +252,7 @@
   }
   pAudioPlayer->StopChannels(-1, -1);
   if ( bPlaySound != 0 )
-    pAudioPlayer->PlaySound(SOUND_206, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_batlleen, 0, 0, -1, 0, 0, 0, 0);
   pTurnEngine->field_18 &= ~TE_HAVE_PENDING_ACTIONS;
   pEventTimer->StopGameTime();
   dword_50C994 = 0;
--- a/GUI/UI/Books/UINotesBooks.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/Books/UINotesBooks.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -132,13 +132,13 @@
   questbook_window.uFrameW = 333;
   if ( BtnDown_flag && books_primary_item_per_page + num_achieved_awards < full_num_items_in_book )//Click Bookmark Down(нажатие закладки вниз)
   {
-    pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
     books_primary_item_per_page += num_achieved_awards;
     books_num_items_per_page[books_page_number++] = num_achieved_awards;
   }
   if ( BtnUp_flag && books_page_number )//Click Bookmark Up(Нажатие закладки вверх)
   {
-    pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
     --books_page_number;
     books_primary_item_per_page -= (unsigned __int8)books_num_items_per_page[books_page_number];
   }
@@ -341,14 +341,14 @@
       {
         books_num_items_per_page[books_page_number++] = num_achieved_awards;
         books_primary_item_per_page = num_achieved_awards + books_primary_item_per_page;
-        pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
       }
     }
     if ( BtnUp_flag && books_page_number )// press Up bookmark(нажатие закладки пролистать назад)
     {
       --books_page_number;
       books_primary_item_per_page -= (unsigned __int8)books_num_items_per_page[books_page_number];
-      pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
     }
     if ( !num_achieved_awards || !books_primary_item_per_page )//количество записей 0 или номер первой страницы 0
     {
@@ -416,13 +416,13 @@
   journal_window.uFrameW = journal_window.uFrameHeight + 69;
   if ( BtnDown_flag && books_primary_item_per_page + num_achieved_awards < full_num_items_in_book )//Press bookmark next page
   {
-    pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
     books_primary_item_per_page += num_achieved_awards;
     books_num_items_per_page[books_page_number++] = num_achieved_awards;
   }
   if ( BtnUp_flag && books_page_number )//Press bookmark previous page
   {
-    pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
     --books_page_number;
     books_primary_item_per_page -= (unsigned __int8)books_num_items_per_page[books_page_number];
   }
--- a/GUI/UI/Books/UISpellBook.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/Books/UISpellBook.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -50,7 +50,7 @@
   free(pAutonoteFont);
   pAutonoteFont = nullptr;
   pTexture_mapbordr->Release();
-  pAudioPlayer->PlaySound(SOUND_CloseBook, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_closebook, 0, 0, -1, 0, 0, 0, 0);
   pIcons_LOD->RemoveTexturesPackFromTextureList();
   dword_506364 = 0;
 }
--- a/GUI/UI/UIArena.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/UIArena.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -75,7 +75,7 @@
         for ( uint i= 0; i < 4; i++ )
           pParty->pPlayers[i].SetVariable(VAR_Award, (unsigned __int8)pParty->field_7B5_in_arena_quest + 3);
         pParty->PartyFindsGold(gold_transaction_amount, 0);
-        pAudioPlayer->PlaySound(SOUND_Arena_Welcome, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_51heroism03, 0, 0, -1, 0, 0, 0, 0);
         pParty->field_7B5_in_arena_quest = -1;
       }
       else
@@ -88,7 +88,7 @@
         pParty->sRotationY = 512;
         pParty->sRotationX = 0;
         pParty->uFallSpeed = 0;
-        pAudioPlayer->PlaySound(SOUND_Arena_Welcome, 0, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound(SOUND_51heroism03, 0, 0, -1, 0, 0, 0, 0);
       }
     }
   }
@@ -310,5 +310,5 @@
   gold_transaction_amount = v26 * v13;
   for ( i = 0; i < v14; ++i )
     Actor::Arena_summon_actor(monster_ids[rand() % num_monsters], pMonsterArenaPlacements[i].x, pMonsterArenaPlacements[i].y, 1);
-  pAudioPlayer->PlaySound(SOUND_Arena_Welcome, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_51heroism03, 0, 0, -1, 0, 0, 0, 0);
 }
\ No newline at end of file
--- a/GUI/UI/UIBooks.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/UIBooks.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -37,7 +37,7 @@
   ++pIcons_LOD->uTexturePacksCount;
   if ( !pIcons_LOD->uNumPrevLoadedFiles )
     pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-  pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
   pSpellBookPagesTextr_9 = pIcons_LOD->LoadTexturePtr("book", TEXTURE_16BIT_PALETTE);
   pTexture_pagemask = pIcons_LOD->LoadTexturePtr("pagemask", TEXTURE_16BIT_PALETTE);
   pSpellBookCloseBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m5-u", TEXTURE_16BIT_PALETTE);
@@ -68,7 +68,7 @@
   ++pIcons_LOD->uTexturePacksCount;
   if ( !pIcons_LOD->uNumPrevLoadedFiles )
     pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-  pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
   pTexture_mapbordr = pIcons_LOD->LoadTexturePtr("mapbordr", TEXTURE_16BIT_PALETTE);
   pBookFont = LoadFont("book.fnt", "FONTPAL", NULL);
   pBook2Font = LoadFont("book2.fnt", "FONTPAL", NULL);
@@ -113,6 +113,6 @@
     pTextures_tabs[i][0]->Release();
     pTextures_tabs[i][1]->Release();
   }
-  pAudioPlayer->PlaySound(SOUND_CloseBook, 0, 0, -1, 0, 0, 0, 0);
+  pAudioPlayer->PlaySound(SOUND_openbook, 0, 0, -1, 0, 0, 0, 0);
   pIcons_LOD->RemoveTexturesPackFromTextureList();
 }
--- a/GUI/UI/UIHouses.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/UIHouses.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -2302,7 +2302,7 @@
         pPlayers[uActiveCharacter]->uVoiceID = pPlayers[uActiveCharacter]->uPrevVoiceID;
         ReloadPlayerPortraits(uActiveCharacter - 1, pPlayers[uActiveCharacter]->uPrevFace);
       }
-      pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|0x2), -1, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound((SoundID)SOUND_heal, -1, 0, -1, 0, 0, 0, 0);
       pPlayers[uActiveCharacter]->PlaySound(SPEECH_82, 0);
       pOtherOverlayList->_4418B1(20, uActiveCharacter + 99, 0, 65536);
       pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
@@ -2315,7 +2315,7 @@
       if ( !pPlayers[uActiveCharacter]->pConditions[Condition_Eradicated]
         && !pPlayers[uActiveCharacter]->pConditions[Condition_Pertified] && !pPlayers[uActiveCharacter]->pConditions[Condition_Dead] )
       {
-        pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|0x2), -1, 0, -1, 0, 0, 0, 0);
+        pAudioPlayer->PlaySound((SoundID)SOUND_heal, -1, 0, -1, 0, 0, 0, 0);
         pPlayers[uActiveCharacter]->PlaySound(SPEECH_82, 0);
         pOtherOverlayList->_4418B1(20, uActiveCharacter + 99, 0, 65536);
         pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
@@ -2332,7 +2332,7 @@
     }
     //HIDWORD(pPlayers[uActiveCharacter]->pConditions[Condition_Zombie]) = (int)v39;
     pPlayers[uActiveCharacter]->pConditions[Condition_Zombie] = pParty->uTimePlayed;
-    pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|0x2), -1, 0, -1, 0, 0, 0, 0);
+    pAudioPlayer->PlaySound((SoundID)SOUND_heal, -1, 0, -1, 0, 0, 0, 0);
     pPlayers[uActiveCharacter]->PlaySound(SPEECH_82, 0);
     pOtherOverlayList->_4418B1(20, uActiveCharacter + 99, 0, 65536);
     pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 1, 0);
--- a/GUI/UI/UIPartyCreation.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/UIPartyCreation.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -452,14 +452,17 @@
   pCreationUI_BtnPressLeft[1]   = pGUIWindow_CurrentMenu->CreateButton(169,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev,  1, 0, "", pTexture_presleft, 0);
   pCreationUI_BtnPressLeft[2]   = pGUIWindow_CurrentMenu->CreateButton(327,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev,  2, 0, "", pTexture_presleft, 0);
   pCreationUI_BtnPressLeft[3]   = pGUIWindow_CurrentMenu->CreateButton(486,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FacePrev,  3, 0, "", pTexture_presleft, 0);
+
   pCreationUI_BtnPressRight[0]  = pGUIWindow_CurrentMenu->CreateButton( 74,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FaceNext,  0, 0, "", pTexture_pressrigh, 0);
   pCreationUI_BtnPressRight[1]  = pGUIWindow_CurrentMenu->CreateButton(233,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FaceNext,  1, 0, "", pTexture_pressrigh, 0);
   pCreationUI_BtnPressRight[2]  = pGUIWindow_CurrentMenu->CreateButton(391,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FaceNext,  2, 0, "", pTexture_pressrigh, 0);
   pCreationUI_BtnPressRight[3]  = pGUIWindow_CurrentMenu->CreateButton(549,  32, 11, 13, 1, 0, UIMSG_PlayerCreation_FaceNext,  3, 0, "", pTexture_pressrigh, 0);
+
   pCreationUI_BtnPressLeft2[0]  = pGUIWindow_CurrentMenu->CreateButton( 10, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoicePrev, 0, 0, "", pTexture_presleft, 0);
   pCreationUI_BtnPressLeft2[1]  = pGUIWindow_CurrentMenu->CreateButton(169, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoicePrev, 1, 0, "", pTexture_presleft, 0);
   pCreationUI_BtnPressLeft2[2]  = pGUIWindow_CurrentMenu->CreateButton(327, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoicePrev, 2, 0, "", pTexture_presleft, 0);
   pCreationUI_BtnPressLeft2[3]  = pGUIWindow_CurrentMenu->CreateButton(486, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoicePrev, 3, 0, "", pTexture_presleft, 0);
+
   pCreationUI_BtnPressRight2[0] = pGUIWindow_CurrentMenu->CreateButton( 74, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 0, 0, "", pTexture_pressrigh, 0);
   pCreationUI_BtnPressRight2[1] = pGUIWindow_CurrentMenu->CreateButton(233, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 1, 0, "", pTexture_pressrigh, 0);
   pCreationUI_BtnPressRight2[2] = pGUIWindow_CurrentMenu->CreateButton(391, 103, 11, 13, 1, 0, UIMSG_PlayerCreation_VoiceNext, 2, 0, "", pTexture_pressrigh, 0);
--- a/GUI/UI/UIPopup.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/GUI/UI/UIPopup.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -1861,7 +1861,7 @@
     {
       pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
       pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 11 + 10, DMGT_FIRE);
-      pAudioPlayer->PlaySound(SOUND_Explosion, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
       pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
       v39.z = pParty->vPosition.z + pParty->sEyelevel;
       v39.x = pParty->vPosition.x;
@@ -1886,7 +1886,7 @@
       pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
       pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 71 + 30, DMGT_FIRE);
       pPlayers[uActiveCharacter]->ItemsEnchant(1);
-      pAudioPlayer->PlaySound(SOUND_Explosion, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
       pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
 
       v39.z = pParty->vPosition.z + pParty->sEyelevel;
@@ -1912,7 +1912,7 @@
       pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
       pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 201 + 50, DMGT_FIRE);
       pPlayers[uActiveCharacter]->ItemsEnchant(5);
-      pAudioPlayer->PlaySound(SOUND_Explosion, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
 
       pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
 
@@ -1939,7 +1939,7 @@
       pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
       pPlayers[uActiveCharacter]->SetCondition(Condition_Eradicated, 0);
       pPlayers[uActiveCharacter]->ItemsEnchant(0);
-      pAudioPlayer->PlaySound(SOUND_Explosion, 0, 0, -1, 0, 0, 0, 0);
+      pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
 
       pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
 
--- a/IO/Mouse.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/IO/Mouse.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -619,7 +619,7 @@
           pWindowList[v3].pCurrentPosActiveItem -= v12;
           if ( v8 )
           {
-            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
             //v2 = pMessageQueue_50CBD0->uNumMessages;
           }
         }
@@ -650,7 +650,7 @@
           pWindowList[v3].pCurrentPosActiveItem = v7;
           if ( v8 )
           {
-            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_SelectingANewCharacter, 0, 0, -1, 0, 0, 0, 0);
             //v2 = pMessageQueue_50CBD0->uNumMessages;
           }
         }
--- a/Media/Audio/AudioPlayer.cpp	Mon Jan 19 23:10:30 2015 +0600
+++ b/Media/Audio/AudioPlayer.cpp	Mon Feb 09 19:17:12 2015 +0600
@@ -87,8 +87,6 @@
   {
     for ( uint i = 1; i < pSoundList->sNumSounds; ++i )
     {
-		//if ( i == 41 )
-			//__debugbreak();
       sprintf(pSoundName, "%s", pSL_Sounds[i].pSoundName);
       pSoundDesc = &pSoundList->pSL_Sounds[i];
 	  //if ( pSL_Sounds[i].uSoundID == 75 )
@@ -445,10 +443,11 @@
     if ( use_music_folder )
     {
       alSourceStop(mSourceID);
+
       sprintf(string, "Music\\%d.mp3", eTrack);
       if (!FileExists(string))
       {
-        Log::Warning(L"File 14.mp3 in Music\\ folder not found");
+        Log::Warning(L"Music\\%d.mp3 not found", eTrack);
         return;
       }
       LPWSTR wStr = new WCHAR[255];
@@ -2099,7 +2098,7 @@
   dir_y = abs(y - pParty->vPosition.y);
   dir_x = abs(x - pParty->vPosition.x);
   length = int_get_vector_length(dir_x, dir_y, dir_z);
-  if ( length <= 8192 )
+  if ( length <= 0x2000 )
     return 114 - (unsigned __int64)(signed __int64)((double)length * 0.0001220703125 * 100.0);
   else
     return 0;
@@ -2296,7 +2295,7 @@
       {
         strcpy(pAudioPlayer->pDeviceNames[v5], "Device: ");
         v2 = strlen(pAudioPlayer->pDeviceNames[v5]);
-        AIL_digital_configuration(hDrv, (int *)pAudioPlayer->array_000BF0 + v5, (int *)pAudioPlayer->array_000C30 + v5, (char *)pAudioPlayer->pDeviceNames + v2 + v5 * 32);
+        AIL_digital_configuration(hDrv, (int *)pAudioPlayer->pFrequency + v5, (int *)pAudioPlayer->array_000C30 + v5, (char *)pAudioPlayer->pDeviceNames + v2 + v5 * 32);
         ++pNum_devices;
         v5++;
         pAudioPlayer->uNumDevices = pNum_devices;
@@ -2524,11 +2523,11 @@
 //----- (004ABFDB) --------------------------------------------------------
 void PlayLevelMusic()
 {
-  unsigned int v0; // eax@1
+  unsigned int map_id; // eax@1
 
-  v0 = pMapStats->GetMapInfo(pCurrentMapName);
-  if ( v0 )
-    pAudioPlayer->PlayMusicTrack((MusicID)pMapStats->pInfos[v0].uRedbookTrackID);
+  map_id = pMapStats->GetMapInfo(pCurrentMapName);
+  if ( map_id )
+    pAudioPlayer->PlayMusicTrack((MusicID)pMapStats->pInfos[map_id].uRedbookTrackID);
 }
 
 //----- (004AC004) --------------------------------------------------------
@@ -2740,7 +2739,6 @@
     zlib::MemUnzip(pOutBuff->pData, &pAudioPlayer->pSoundHeaders[uFindSound_BinSearch_ResultID].uDecompressedSize, (const void *)uID, pAudioPlayer->pSoundHeaders[uFindSound_BinSearch_ResultID].uCompressedSize);
     free((void *)uID);
   }
-
   if ( pOutBuff )
   {
     pOutBuff->uDataSize = pAudioPlayer->pSoundHeaders[uFindSound_BinSearch_ResultID].uDecompressedSize;
--- a/Media/Audio/AudioPlayer.h	Mon Jan 19 23:10:30 2015 +0600
+++ b/Media/Audio/AudioPlayer.h	Mon Feb 09 19:17:12 2015 +0600
@@ -74,74 +74,102 @@
 enum SoundID
 {
   SOUND_Invalid = 0,
-  SOUND_EnteringAHouse = 6,
-  SOUND_WoodDRClose = 7,
-  SOUND_Explosion = 0x8,
-  SOUND_20 = 0x14,
-  SOUND_21 = 0x15,
-  SOUND_23 = 0x17,
-  SOUND_24 = 0x18,
+  SOUND_enter = 6,
+  SOUND_wooddrclose = 7,
+  SOUND_fireBall = 0x8,
+  SOUND_ClickMinus = 0x14,//20
+  SOUND_ClickMovingSelector = 0x15,//21
+  SOUND_ClickPlus = 0x17,//23
+  SOUND_ClickSkill = 0x18,//24
   SOUND_error = 27,
-  SOUND_47 = 0x2F,
+  SOUND_metal_vs_metal03h = 47,
   SOUND_48 = 0x30,
-  SOUND_50 = 50,
-  SOUND_RunAlongWater = 63,
-  SOUND_RunAlong3DModel = 64,
-  SOUND_Button = 66,
-  SOUND_67 = 67,
-  SOUND_71 = 71,
+  SOUND_RunBadlands = 49,
+  SOUND_RunCarpet = 50,
+  SOUND_RunCooledLava = 51,
+  SOUND_RunDesert = 52,
+  SOUND_RunDirt = 53,
+  SOUND_RunGrass = 54,
+  SOUND_RunRoad = 57,
+  SOUND_RunSnow = 58,
+  SOUND_RunSwamp = 61,
+  SOUND_RunWater = 62,
+  SOUND_RunWaterIndoor = 63,
+  SOUND_RunWood = 64,
+  SOUND_SelectingANewCharacter = 66,
+  SOUND_shoot_blaster01 = 67,
+  SOUND_shoot_bow01 = 71,
   SOUND_StartMainChoice02 = 75,
-  SOUND_78 = 78,
-  SOUND_80 = 80,
-  SOUND_81 = 81,
-  SOUND_83 = 83,
-  SOUND_84 = 84,
-  SOUND_85 = 85,
-  SOUND_89 = 89,
-  SOUND_WalkAlongWater = 102,
-  SOUND_WalkAlong3DModel = 103,
-  SOUND_Arcomage_LoseResources = 0x78,
-  SOUND_Arcomage_AddResources = 0x79,
-  SOUND_Arcomage_TowerWallDamage = 0x7A,
-  SOUND_Arcomage_DrawCard = 0x7B,
-  SOUND_Arcomage_124 = 0x7C,
-  SOUND_Arcomage_ProductionDamage = 0x7D,
-  SOUND_Arcomage_ProductionUpgrade = 0x7E,
-  SOUND_Arcomage_127 = 0x7F,
-  SOUND_Arcomage_128 = 0x80,
-  SOUND_Arcomage_TowerUpgrade = 0x81,
-  SOUND_Arcomage_130 = 0x82,
-  SOUND_Arcomage_131 = 0x83,
-  SOUND_Arcomage_WallUpgrade = 0x84,
-  SOUND_PlayLute = 133, // 85
-  SOUND_PlayFaeriePipes = 134, // 86
-  SOUND_PlayGryphonheartsTrumpet = 135, // 87
-  SOUND_GoldReceived = 0xC8,
-  SOUND_203 = 203,
-  SOUND_204 = 204,
-  SOUND_206 = 206,
-  SOUND_207 = 207,
-  SOUND_OpenChest = 208,
-  SOUND_PlayerCantCastSpell = 0xD1,
-  SOUND_210 = 0xD2,
-  SOUND_EatApple = 211, // D3
-  SOUND_215 = 0xD7,
-  SOUND_Bell = 0xD9,
-  SOUND_shurch = 0xDA, //218
-  SOUND_219 = 0xDB,
-  SOUND_221 = 0xDD,
-  SOUND_222 = 0xDE,
-  SOUND_224 = 0xE0,
-  SOUND_225 = 0xE1,
-  SOUND_226 = 0xE2,
-  SOUND_227 = 0xE3,
-  SOUND_OpenBook = 230,
-  SOUND_CloseBook = 231,
-  SOUND_hf445a = 0x169C,
-  SOUND_11090 = 11090,
-  SOUND_12040 = 12040,
-  SOUND_Arena_Welcome = 14060,
-  SOUND_20001 = 0x4E21,
+  SOUND_swing_with_axe01 = 78,
+  SOUND_swing_with_axe03 = 80,
+  SOUND_swing_with_blunt_weapon01 = 81,
+  SOUND_swing_with_blunt_weapon03 = 83,
+  SOUND_swing_with_sword01 = 84,
+  SOUND_swing_with_sword02 = 85,
+  SOUND_WalkBadlands = 88,
+  SOUND_WalkCarpet = 89,
+  SOUND_WalkCooledLava = 90,
+  SOUND_WalkDesert = 91,
+  SOUND_WalkDirt = 92,
+  SOUND_WalkGrass = 93,
+  SOUND_WalkRoad = 96,
+  SOUND_WalkSnow = 97,
+  SOUND_WalkSwamp = 100,
+  SOUND_WalkWater = 101,
+  SOUND_WalkWaterIndoor = 102,
+  SOUND_WalkWood = 103,
+  SOUND_bricks_down = 0x78,//120
+  SOUND_bricks_up = 0x79,
+  SOUND_damage = 0x7A,
+  SOUND_deal = 0x7B,
+  SOUND_defeat = 0x7C,
+  SOUND_querry_up = 0x7D,
+  SOUND_querry_down = 0x7E,
+  SOUND_shuffle = 0x7F,
+  SOUND_title = 0x80,
+  SOUND_tower_up = 0x81,
+  SOUND_typing = 0x82,
+  SOUND_victory = 0x83,
+  SOUND_wall_up = 0x84,
+  SOUND_luteguitar = 133, // 85
+  SOUND_panflute = 134, // 86
+  SOUND_trumpet = 135, // 87
+  SOUND_gold01 = 0xC8,//200
+  SOUND_heal = 202,
+  SOUND_fizzle = 203,
+  SOUND_TurnPageU = 204,
+  SOUND_batlleen = 206,
+  SOUND_batllest = 207,
+  SOUND_openchest0101 = 208,
+  SOUND_spellfail0201 = 0xD1,
+  SOUND_drink = 0xD2,
+  SOUND_eat = 211, // D3
+  SOUND_gong = 0xD7,
+  SOUND_hurp = 0xD9,
+  SOUND_church = 0xDA, //218
+  SOUND_chimes = 0xDB,
+  SOUND_splash = 220,
+  SOUND_star1 = 0xDD,
+  SOUND_star2 = 0xDE,
+  SOUND_star4 = 0xE0,
+  SOUND_eradicate = 0xE1,
+  SOUND_eleccircle = 0xE2,
+  SOUND_encounter = 0xE3,
+  SOUND_openbook = 230,
+  SOUND_closebook = 231,
+  SOUND_hf445a = 5788,
+  SOUND_Haste = 10040,
+  SOUND_21fly03 = 11090,
+  SOUND_WaterWalk = 12040,
+  SOUND_Stoneskin = 13040,
+  SOUND_Bless = 14010,
+  SOUND_Fate = 14020,
+  SOUND_51heroism03 = 14060,
+  SOUND_94dayofprotection03 = 17070,
+  SOUND_9armageddon01 = 17080,
+  SOUND_Sacrifice2 = 18060,
+  SOUND_quest = 20001,
+  
 };
 
 
@@ -234,7 +262,7 @@
   int uMixerChannels;
   int field_3EC;
   char pDeviceNames[16][128];
-  int array_000BF0[16];
+  int pFrequency[16];
   int array_000C30[16];
   unsigned int uNumDevices;
   struct _STREAM *hStream;