anchor.diff:    inherited;
     LoadStream.CheckMarker('TaskBuildHouse');
     LoadStream.Read(fHouse, 4);
  -  LoadStream.Read(BuildID);
  -  LoadStream.Read(BuildFrom);
  -  Cells := TKMPointDirList.Create;
  -  Cells.LoadFromStream(LoadStream);
  +  LoadStream.Read(fBuildID);
  +  LoadStream.Read(fBuildFrom);
  +  fCells := TKMPointDirList.Create;
  +  fCells.LoadFromStream(LoadStream);
   end;
   
   
  
positive.code:           Assert(fHouse <> nil, 'Failed to add wip house');
            fHouse := fHouse.GetPointer; //We need to register a pointer to the house
  
            HouseNeedsWorker := True; //The house placed on the map, if something happens with Worker the house will be removed
            SetActionLockedStay(2, uaWalk);
            Thought := thNone;
          end;
      2:  //The house can become too steep after we flatten one part of it
          if CanWalkTo(CellsToDig[LastToDig], 0) then
            SetActionWalkToSpot(CellsToDig[LastToDig])
          else
          begin
            Result := trTaskDone;
  
negative.code:     fHouse: TKMHouse;
      fHouseType: TKMHouseType;
      fHouseLoc: TKMPoint;
      fBuildID: Integer;
      fHouseNeedsWorker: Boolean;
      fHouseReadyToBuild: Boolean;
      fCellsToDig: array [0..15] of TKMPoint; //max house square is 4*4
      fLastToDig: ShortInt;
      function GetHouseEntranceLoc: TKMPoint;
    public
      constructor Create(aWorker: TKMUnitWorker; aHouseType: TKMHouseType; const aLoc: TKMPoint; aID: Integer);
      constructor Load(LoadStream: TKMemoryStream); override;
      property DigState: ShortInt read fLastToDig;
      procedure SyncLoad; override;
      destructor Destroy; override;
      property House: TKMHouse read fHouse;
  