anchor.diff:  
   procedure TKMSoundPlayer.PlayCitizen(aUnitType: TKMUnitType; aSound: TWarriorSpeech; const aLoc: TKMPointF);
   var
  -  Wave: UnicodeString;
  -  HasLoc: Boolean;
  +  wave: UnicodeString;
  +  hasLoc: Boolean;
   begin
     if SKIP_SOUND or not fIsSoundInitialized then Exit;
     if not (aUnitType in [CITIZEN_MIN..CITIZEN_MAX]) then Exit;
   
  -  HasLoc := not KMSamePointF(aLoc, KMPOINTF_ZERO);
  -  Wave := gRes.Sounds.FileOfCitizen(aUnitType, aSound);
  -  if FileExists(Wave) then
  -    PlayWave(Wave, aLoc, gRes.Sounds.GetSoundType(aSound), HasLoc, 1 + 3*byte(HasLoc)); //Attenuate sounds when aLoc is valid
  +  hasLoc := not KMSamePointF(aLoc, KMPOINTF_ZERO);
  +  wave := gRes.Sounds.FileOfCitizen(aUnitType, aSound);
  +  if FileExists(wave) then
  +    PlayWave(wave, aLoc, gRes.Sounds.GetSoundType(aSound), hasLoc, 1 + 3*byte(hasLoc)); //Attenuate sounds when aLoc is valid
   end;
   
   
   procedure TKMSoundPlayer.PlayNotification(aSound: TAttackNotification);
   var
  -  Wave: UnicodeString;
  -  Count: Byte;
  -begin
  -  if SKIP_SOUND or not fIsSoundInitialized then Exit;
  -
  -  Count := gRes.Sounds.NotificationSoundCount[aSound];
  -
  -  Wave := gRes.Sounds.FileOfNotification(aSound, Random(Count));
  -  if FileExists(Wave) then
  -    PlayWave(Wave, KMPOINTF_ZERO, gRes.Sounds.GetSoundType(aSound), False, 1);
  +  wave: UnicodeString;
  +  count: Byte;
  +begin
  +  if SKIP_SOUND or not fIsSoundInitialized then Exit;
  +
  +  count := gRes.Sounds.NotificationSoundCount[aSound];
  +
  +  wave := gRes.Sounds.FileOfNotification(aSound, Random(count));
  +  if FileExists(wave) then
  +    PlayWave(wave, KMPOINTF_ZERO, gRes.Sounds.GetSoundType(aSound), False, 1);
   end;
   
   
  
positive.code: const
    ERROR_EXIT_CODE = -1;
  var
    NewIndex: Integer;
    S: TKMScriptSound;
  begin
    if Self = nil then Exit(ERROR_EXIT_CODE);
  
negative.code:   S.Radius := aRadius;
    S.HandIndex := aHandIndex;
  
    newIndex := fScriptSounds.Add(S);
  
    //Return -1 if sound (not looped) did not start successfully
    Result := ERROR_EXIT_CODE;
    if (StartSound(newIndex) <> -1) or aLooped then
      Result := fLastScriptUID; //Return ScriptSoundUID if all is OK, or for Looped sound, since we could start it later
  end;
  
  