anchor.diff:  
   
   {Wrapper with fewer options for non-attenuated sounds}
  -procedure TKMSoundPlayer.Play(SoundID: TSoundFX; Volume: Single = 1);
  +procedure TKMSoundPlayer.Play(aSoundID: TSoundFX; aVolume: Single = 1);
   begin
     if SKIP_SOUND or not fIsSoundInitialized then Exit;
   
     // Check for consecutive messageNotices
     // When many warrior groups are hungry at the same time or many houses are not occupied at the same time
     // Sound should not be played N times, 1 is enought
  -  if SoundID = sfxMessageNotice then
  +  if aSoundID = sfxMessageNotice then
     begin
       if (fLastMessageNoticeTime > 0)
         and (GetTimeSince(fLastMessageNoticeTime) < MAX_DURATION_FROM_LAST_SND_MESSAGE_NOTICE) then
  
positive.code:   //Set source properties
    AlSourcei(fALSounds[FreeBuf].ALSource, AL_BUFFER, fALSounds[FreeBuf].ALBuffer);
    AlSourcef(fALSounds[FreeBuf].ALSource, AL_PITCH, 1);
    AlSourcef(fALSounds[FreeBuf].ALSource, AL_GAIN, 1 * Volume * fSoundGain);
    if Attenuated then
    begin
      Dif[1]:=Loc.X; Dif[2]:=Loc.Y; Dif[3]:=0;
      AlSourcefv(fALSounds[FreeBuf].ALSource, AL_POSITION, @Dif[1]);
  
negative.code:   I: Integer;
  begin
    if SKIP_SOUND or not fIsSoundInitialized then Exit;
    fSoundGain := aValue;
    //alListenerf(AL_GAIN, fSoundGain); //Set in source property
  
    //Loop sounds must be updated separately
  