- return (!IN_LEV_FIELD(xx, yy) || IS_SOLID(Feld[xx][yy]));
-#else
-
- if (real_dx && real_dy) /* diagonal direction input => do check */
- {
- /* diagonal direction: check alternative direction */
- int jx = player->jx, jy = player->jy;
- int dx = x - jx, dy = y - jy;
- int xx = jx + (dx == 0 ? real_dx : 0);
- int yy = jy + (dy == 0 ? real_dy : 0);
-
- if (IN_LEV_FIELD(xx, yy))
- {
- int element = Feld[xx][yy];
-
- if (game.engine_version < VERSION_IDENT(2,2,0))
- return IS_HISTORIC_SOLID(element);
- else
- return !(IS_WALKABLE(element) ||
- IS_DIGGABLE(element) ||
- IS_COLLECTIBLE(element));
- }
- }
-
- return TRUE; /* no diagonal direction input => push object */
-#endif