anchor.diff:    //for processing the packet and random variations in ping. It's always better for commands to
     //be slightly delayed than for the game to freeze/lag regularly.
     SetDelay( Ceil(fNetworking.NetPlayers.GetMaxHighestRoundTripLatency/200 + 1.2) );
  +end;
  +
  +
  +//Does Player1 have permission to execute CommandType on Player2's behalf?
  +function TGameInputProcess_Multi.CheckCommandPermission(Player: TPlayerIndex; const aCommand: TGameInputCommand): Boolean;
  +begin
  +  //For now players may only control themselves. Eventually that might change (for certain commands only?)
  +  Result := (Player = aCommand.PlayerIndex);
   end;
   
   
  
positive.code:     begin
        NetplayersIndex := fNetworking.NetPlayers.PlayerIndexToLocal(I);
        // In the case where a player was removed from a save, NetplayersIndex = -1
        if (NetplayersIndex <> -1) and not fNetworking.NetPlayers[NetplayersIndex].Dropped then
        begin
          StoreCommand(fSchedule[Tick, I].Items[K]); //Store the command first so if Exec fails we still have it in the replay
          ExecCommand(fSchedule[Tick, I].Items[K]);
  
negative.code: 
      procedure SetDelay(aNewDelay:integer);
      procedure AdjustDelay;
  
      function CheckCommandPermission(Player: TPlayerIndex; const aCommand: TGameInputCommand): Boolean;
    protected
      procedure TakeCommand(aCommand:TGameInputCommand); override;
    public
  