anchor.diff:        U := fTerrain.UnitsHitTest(GameCursor.Cell.X, GameCursor.Cell.Y);
         H := fPlayers.HousesHitTest(GameCursor.Cell.X, GameCursor.Cell.Y);
         if ((U = nil) or U.IsDeadOrDying or (fPlayers.CheckAlliance(MyPlayer.PlayerIndex, U.Owner) = at_Ally)) and
  -         ((H = nil) or (fPlayers.CheckAlliance(MyPlayer.PlayerIndex, H.Owner) = at_Ally)) and
  -        Group.CanWalkTo(GameCursor.Cell, 0) then
  +         ((H = nil) or (fPlayers.CheckAlliance(MyPlayer.PlayerIndex, H.Owner) = at_Ally)) then
         begin
  -        SelectingTroopDirection := True; //MouseMove will take care of cursor changing
  -        //Restrict the cursor to inside the main panel so it does not get jammed when used near the edge of the window in windowed mode
  -        {$IFDEF MSWindows}
  -        MyRect := fMain.ClientRect;
  -        ClipCursor(@MyRect);
  -        {$ENDIF}
  -        //Now record it as Client XY
  -        SelectingDirPosition.X := X;
  -        SelectingDirPosition.Y := Y;
  -        SelectedDirection := dir_NA;
  -        DirectionCursorShow(X, Y, SelectedDirection);
  -        fResource.Cursors.Cursor := kmc_Invisible;
  +        if Group.CanWalkTo(GameCursor.Cell, 0) then
  +        begin
  +          SelectingTroopDirection := True; //MouseMove will take care of cursor changing
  +          //Restrict the cursor to inside the main panel so it does not get jammed when used near the edge of the window in windowed mode
  +          {$IFDEF MSWindows}
  +          MyRect := fMain.ClientRect;
  +          ClipCursor(@MyRect);
  +          {$ENDIF}
  +          //Now record it as Client XY
  +          SelectingDirPosition.X := X;
  +          SelectingDirPosition.Y := Y;
  +          SelectedDirection := dir_NA;
  +          DirectionCursorShow(X, Y, SelectedDirection);
  +          fResource.Cursors.Cursor := kmc_Invisible;
  +        end
  +        else
  +          fSoundLib.Play(sfx_CantPlace, GameCursor.Cell, False, 4.0);
         end;
       end;
     end;
  
positive.code:                   end
                end;
      mbRight:  begin
                  //Select direction
                  ReleaseDirectionSelector;
  
                  //Cancel build/join
                  if Panel_Build.Visible then
                    SwitchPage(Button_Back);
  
negative.code:                         fSoundLib.PlayWarrior(Group.UnitType, sp_Attack);
                        end
                        else //If there's no house - Walk to spot
                          //Ensure down click was successful (could have been over a mountain, then dragged to a walkable location)
                          if SelectingTroopDirection and Group.CanWalkTo(P, 0) then
                          begin
                            fGame.GameInputProcess.CmdArmy(gic_ArmyWalk, Group, P, SelectedDirection);
                            fSoundLib.PlayWarrior(Group.UnitType, sp_Move);
  