anchor.diff:  var
     DistanceSqr: Single;
   begin
  -  Result := ((fSounds[aIndex].HandIndex = gMySpectator.HandID) or (fSounds[aIndex].HandIndex = PLAYER_NONE))
  -             and (not fSounds[aIndex].Attenuate
  -                  or (gMySpectator.FogOfWar.CheckTileRevelation(fSounds[aIndex].Loc.X, fSounds[aIndex].Loc.Y) > 0));
  +  Result := ((fScriptSounds[aIndex].HandIndex = gMySpectator.HandID) or (fScriptSounds[aIndex].HandIndex = PLAYER_NONE))
  +             and (not fScriptSounds[aIndex].Attenuate
  +                  or (gMySpectator.FogOfWar.CheckTileRevelation(fScriptSounds[aIndex].Loc.X, fScriptSounds[aIndex].Loc.Y) > 0));
     if not Result then Exit;
   
  -  if fSounds[aIndex].Attenuate then
  -  begin
  -    DistanceSqr := KMDistanceSqr(KMPointF(fSounds[aIndex].Loc), fListener);
  -    Result := Result and (DistanceSqr < Sqr(fSounds[aIndex].Radius));
  +  if fScriptSounds[aIndex].Attenuate then
  +  begin
  +    DistanceSqr := KMDistanceSqr(KMPointF(fScriptSounds[aIndex].Loc), fListener);
  +    Result := Result and (DistanceSqr < Sqr(fScriptSounds[aIndex].Radius));
     end;
   end;
   
  
positive.code:   if fScriptSoundIndex[aIndex] = -1 then Exit;
  
    //Stop previously playing sound and release buffer
    AlSourceStop(fSound[fScriptSoundIndex[aIndex]].ALSource);
    AlSourcei(fSound[fScriptSoundIndex[aIndex]].ALSource, AL_BUFFER, 0);
  
    fSound[fScriptSoundIndex[aIndex]].PlaySince := 0;
    fScriptSoundIndex[aIndex] := -1;
  end;
  
  
negative.code:   FreeBuf := 0;
    for I := 1 to MAX_SOUNDS do
    begin
      alGetSourcei(fALSounds[i].ALSource, AL_SOURCE_STATE, @ALState);
      if ALState<>AL_PLAYING then
      begin
        FreeBuf := I;
  