anchor.diff:      if Result then
         U.SetActionWalkPushed( fTerrain.GetOutOfTheWay(U.GetPosition,KMPoint(0,0),CanWalk) );
     end;
  +end;
  +
  +
  +procedure TUnitActionGoInOut.WalkOut(aUnit:TKMUnit);
  +begin
  +  aUnit.Direction := KMGetDirection(KMPointRound(fDoor) ,fStreet);
  +  aUnit.UpdateNextPosition(fStreet);
  +  fTerrain.UnitAdd(aUnit.NextPosition, aUnit); //Unit was not occupying tile while inside
  +  if (aUnit.GetHome <> nil)
  +  and (aUnit.GetHome.GetHouseType = ht_Barracks) //Unit home is barracks
  +  and (aUnit.GetHome = fHouse) then //And is the house we are walking from
  +    TKMHouseBarracks(aUnit.GetHome).RecruitsList.Remove(aUnit);
   end;
   
   
  
positive.code:     if (fTerrain.Land[fStreet.Y,fStreet.X].IsUnit = nil) then
      begin
        fWaitingForPush := false;
        KMUnit.Direction := KMGetDirection(KMPointRound(fDoor) ,fStreet);
        KMUnit.UpdateNextPosition(fStreet);
        fTerrain.UnitAdd(KMUnit.NextPosition, KMUnit); //Unit was not occupying tile while inside
        if (KMUnit.GetHome<>nil)and(KMUnit.GetHome.GetHouseType=ht_Barracks) //Unit home is barracks
        and(KMUnit.GetHome = fHouse) then //And is the house we are walking from
          TKMHouseBarracks(KMUnit.GetHome).RecruitsList.Remove(KMUnit);
      end
      else exit; //Wait until my push request is dealt with before we move out
    end;
  
    Assert((fHouse = nil) or KMSamePoint(KMPointRound(fDoor),fHouse.GetEntrance)); //Must always go in/out the entrance of the house
  
negative.code:         KMUnit.IsExchanging := (fHouse.DoorwayUse > 1);
      end;
      
      fHasStarted := true;
    end;
  
  
  