The difference to the already existing change action "move player" is
that "move player new" only moves the player if this starts a "new"
movement (that is, the player is either not moving at all yet, or has
just finished moving to the next tile).
This is useful to prevent the case of an apparent "two-step movement"
caused by moving the player right after a movement has just started,
which then adds a "second" movement after the "first" movement.
{ CA_SET_LEVEL_SCORE, "set score" },
{ CA_SET_LEVEL_GEMS, "set gems" },
{ CA_SET_LEVEL_WIND, "set wind dir." },
{ CA_SET_LEVEL_SCORE, "set score" },
{ CA_SET_LEVEL_GEMS, "set gems" },
{ CA_SET_LEVEL_WIND, "set wind dir." },
- { CA_SET_LEVEL_RANDOM_SEED, "set rand. seed" },
+ { CA_SET_LEVEL_RANDOM_SEED, "set random seed" },
{ CA_UNDEFINED, " " },
{ CA_HEADLINE_PLAYER_ACTIONS, "[player]" },
{ CA_MOVE_PLAYER, "move player" },
{ CA_UNDEFINED, " " },
{ CA_HEADLINE_PLAYER_ACTIONS, "[player]" },
{ CA_MOVE_PLAYER, "move player" },
+ { CA_MOVE_PLAYER_NEW, "move player new" },
{ CA_EXIT_PLAYER, "exit player" },
{ CA_KILL_PLAYER, "kill player" },
{ CA_SET_PLAYER_KEYS, "set keys" },
{ CA_EXIT_PLAYER, "exit player" },
{ CA_KILL_PLAYER, "kill player" },
{ CA_SET_PLAYER_KEYS, "set keys" },
{ CA_EXIT_PLAYER, 0, options_action_arg_player, },
{ CA_KILL_PLAYER, 0, options_action_arg_player, },
{ CA_MOVE_PLAYER, 0, options_action_arg_direction, },
{ CA_EXIT_PLAYER, 0, options_action_arg_player, },
{ CA_KILL_PLAYER, 0, options_action_arg_player, },
{ CA_MOVE_PLAYER, 0, options_action_arg_direction, },
+ { CA_MOVE_PLAYER_NEW, 0, options_action_arg_direction, },
{ CA_RESTART_LEVEL, 0, options_action_arg_none, },
{ CA_SHOW_ENVELOPE, 0, options_action_arg_envelope, },
{ CA_SET_LEVEL_TIME, 3, options_action_arg_number, },
{ CA_RESTART_LEVEL, 0, options_action_arg_none, },
{ CA_SHOW_ENVELOPE, 0, options_action_arg_envelope, },
{ CA_SET_LEVEL_TIME, 3, options_action_arg_number, },
{
ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
GADGET_ID_ACTION_TYPE, GADGET_ID_NONE,
{
ED_ELEMENT_SETTINGS_XPOS(1), ED_ELEMENT_SETTINGS_YPOS(13),
GADGET_ID_ACTION_TYPE, GADGET_ID_NONE,
options_action_type,
&custom_element_change.action_type,
NULL, NULL, NULL, "action on specified condition"
options_action_type,
&custom_element_change.action_type,
NULL, NULL, NULL, "action on specified condition"
// ---------- player actions ---------------------------------------------
case CA_MOVE_PLAYER:
// ---------- player actions ---------------------------------------------
case CA_MOVE_PLAYER:
+ case CA_MOVE_PLAYER_NEW:
{
// automatically move to the next field in specified direction
for (i = 0; i < MAX_PLAYERS; i++)
if (trigger_player_bits & (1 << i))
{
// automatically move to the next field in specified direction
for (i = 0; i < MAX_PLAYERS; i++)
if (trigger_player_bits & (1 << i))
- stored_player[i].programmed_action = action_arg_direction;
+ if (action_type == CA_MOVE_PLAYER ||
+ stored_player[i].MovPos == 0)
+ stored_player[i].programmed_action = action_arg_direction;
#define CA_SET_PLAYER_INVENTORY 18
#define CA_SET_CE_ARTWORK 19
#define CA_SET_LEVEL_RANDOM_SEED 20
#define CA_SET_PLAYER_INVENTORY 18
#define CA_SET_CE_ARTWORK 19
#define CA_SET_LEVEL_RANDOM_SEED 20
+#define CA_MOVE_PLAYER_NEW 21
#define CA_HEADLINE_LEVEL_ACTIONS 250
#define CA_HEADLINE_PLAYER_ACTIONS 251
#define CA_HEADLINE_LEVEL_ACTIONS 250
#define CA_HEADLINE_PLAYER_ACTIONS 251