anchor.diff:    Result := False;
   
     //Find the unit that is in our path
  -  fOpponent := gTerrain.UnitsHitTest(NodeList[NodePos+1].X, NodeList[NodePos+1].Y);
  +  opponent := gTerrain.UnitsHitTest(NodeList[NodePos+1].X, NodeList[NodePos+1].Y);
     //If there's currently no unit in the way but tile is pre-occupied
  -  if fOpponent = nil then
  +  if opponent = nil then
     begin
       //Do nothing and wait till unit is actually there so we can interact with it
       Explanation:='Can''t walk. No Unit in the way but tile is occupied';
  
positive.code:       and TKMUnitWarrior(fOpponent).CheckForEnemy then
        Exit;
  
      OpponentPass := fOpponent.DesiredPassability;
      if OpponentPass = tpWalkRoad then
        OpponentPass := tpWalk;
  
      //We tell opponent, that we were also pushed, so he could avoid unhelpful exchange with us
      //So ipdate fInteractionStatus after that
      fOpponent.SetActionWalkPushed(gTerrain.GetOutOfTheWay(fOpponent, fUnit.Position, OpponentPass, WasPushed));
  
      fInteractionStatus := kisPushing;
  
  
negative.code: 
    //Find a node
    if NodePos+2 > NodeList.Count - 1 then //Tell Terrain about our next position if we can
      found := gTerrain.FindSideStepPosition(fUnit.Position, aPosition, KMPOINT_ZERO, GetEffectivePassability, sideStepTest, NodePos - fLastSideStepNodePos < 2)
    else
      found := gTerrain.FindSideStepPosition(fUnit.Position, aPosition, NodeList[NodePos+2], GetEffectivePassability, sideStepTest, NodePos - fLastSideStepNodePos < 2);
  
    if not found then exit; //It could be 0,0 if all tiles were blocked (return false)
  
    //Otherwise the sidestep is valid so modify our route to go via this tile
    Explanation := 'Sidestepping to a tile next to target';
    ExplanationLogAdd;
    ChangeStepTo(sideStepTest);
    fLastSideStepNodePos := NodePos;
    Result := True; //Means exit DoUnitInteraction, but also means a sidestep has been taken (for use in CheckForObstacle)
  end;
  