+
+
+#if 1
+ InitField(jx, jy, FALSE);
+ if (CAN_MOVE(Feld[jx][jy]))
+ InitMovDir(jx, jy);
+
+ new_element = Feld[jx][jy];
+
+ if (IS_CUSTOM_ELEMENT(new_element) && CAN_MOVE(new_element) &&
+ element_info[new_element].move_pattern == MV_PROJECTILE)
+ {
+ int direction, dx, dy, nextx, nexty;
+
+ if (element_info[new_element].move_direction_initial == MV_NO_MOVING)
+ MovDir[jx][jy] = player->MovDir;
+
+ direction = MovDir[jx][jy];
+ dx = (direction == MV_LEFT ? -1 : direction == MV_RIGHT ? +1 : 0);
+ dy = (direction == MV_UP ? -1 : direction == MV_DOWN ? +1 : 0);
+ nextx = jx + dx;
+ nexty = jy + dy;
+
+ if (IN_LEV_FIELD(nextx, nexty) && IS_FREE(nextx, nexty))
+ {
+ InitMovingField(jx, jy, MovDir[jx][jy]);
+ ContinueMoving(jx, jy);
+ }
+ else
+ {
+ Changed[jx][jy] = 0; /* allow another change */
+ CheckElementSideChange(jx, jy, new_element,
+ direction, CE_COLLISION_ACTIVE, -1);
+ }
+ }
+
+#endif
+
+ player->drop_delay = 8 + 8 + 8;
+
+
+