anchor.diff:  procedure TKMUnitActionWalkTo.Save(SaveStream: TKMemoryStream);
   begin
     inherited;
  +
     SaveStream.PlaceMarker('UnitActionWalkTo');
     SaveStream.Write(fWalkFrom);
     SaveStream.Write(fWalkTo);
  
positive.code:   begin
      if CanWalkToTarget(fUnit.Position, GetEffectivePassability) then
      begin
        AllTilesAroundLocked := CheckAllTilesAroundHouseLocked;
  
        if AllTilesAroundLocked then
          // Keep on walking. Some spot may free up.
          // Also, "greedy" warriors look and feel better.
          Exit(ocNoObstacle)
  
negative.code: function TKMUnitActionWalkTo.CheckAllTilesAroundHouseLocked: Boolean;
  var
    I: Integer;
    cellsAround: TKMPointDirList;
  begin
    Result := (fTargetHouse <> nil) and not fTargetHouse.IsDestroyed;
    if not Result then
      Exit;
  
    cellsAround := TKMPointDirList.Create;
    try
      fTargetHouse.GetListOfCellsAround(cellsAround, fPass);
  
      for I := 0 to cellsAround.Count - 1 do
        if not gTerrain.TileIsLocked(cellsAround[I].Loc) then
          Exit(False);
    finally
      cellsAround.Free;
    end;
  end;
  
  