anchor.diff:      Exit;
     end;
   
  -  if (gGameParams.Mode <> gmMultiSpectate)
  -  and gMySpectator.Hand.AI.HasLost
  -  and not (aCommand.CommandType in ALLOWED_AFTER_DEFEAT) then
  +  if not gGameParams.IsSpectatorGame
  +    and gMySpectator.Hand.AI.HasLost
  +    and not (aCommand.CommandType in ALLOWED_AFTER_DEFEAT) then
     begin
       gSoundPlayer.Play(sfxCantPlace);
       Exit;
  
positive.code:   TKMGameInputProcess_Multi = class(TKMGameInputProcess)
    private
      fDelay: Word; //How many ticks ahead the commands are scheduled
      fLastSentCmdsTick: Cardinal; //Needed for resync (last tick, for which commands were sent
  
      fNumberConsecutiveWaits: Word; //Number of consecutive times we have been waiting for network
  
  
negative.code: 
    if not fCommandIssued[tick] then
    begin
      // Clear old data (it was kept in case it was required for resync)
      fSchedule[tick, gNetworking.MyIndex].Clear;
      fCommandIssued[tick] := True;
    end;
    fSchedule[tick, gNetworking.MyIndex].Add(aCommand);
  