}
elemmapping[O_PLAYER] = map;
+ elemmapping[O_PLAYER_START] = map;
elemmapping[O_PLAYER_GLUED] = map;
elemdrawing[O_PLAYER] = draw;
+ elemdrawing[O_PLAYER_START] = draw;
elemdrawing[O_PLAYER_GLUED] = draw;
// player with bomb/rocketlauncher does not blink or tap - no graphics drawn for that.
P_GROWING,
"GUYBIRTH3", 0, 34, 34, 34
},
+ {
+ O_PLAYER_START, O_PLAYER_START_scanned, N_("Player start"),
+ P_PLAYER | P_CAN_DIG,
+ "GUYSTART", 0, i_player, i_player, 35, 32
+ }, // has ckdelay
+ {
+ O_PLAYER_START_scanned, O_PLAYER_START, N_("Player start (scanned)"),
+ P_SCANNED,
+ "SCANN_GUYSTART", 0, i_player, i_player, 35
+ },
{
O_PLAYER, O_PLAYER_scanned, N_("Player"),
P_BLOWS_UP_FLIES | P_EXPLODES_BY_HIT | P_PLAYER | P_CAN_DIG,
break;
case O_PLAYER:
+ case O_PLAYER_START:
case O_PLAYER_BOMB:
case O_PLAYER_GLUED:
case O_PLAYER_STIRRING:
// P L A Y E R S
// ======================================================================================
+ case O_PLAYER_START:
+ store(cave, x, y, O_PLAYER);
+ // FALL THROUGH
+
case O_PLAYER:
if (cave->kill_player)
{
// if scanning stopped by a player... start falling!
if (get(cave, x, yy) == O_PLAYER ||
+ get(cave, x, yy) == O_PLAYER_START ||
get(cave, x, yy) == O_PLAYER_GLUED ||
get(cave, x, yy) == O_PLAYER_BOMB)
{
if (!cave->hatched) // no player birth before hatching
break;
cave->player_seen_ago = 0;
- store(cave, x, y, O_PLAYER);
+ store(cave, x, y, O_PLAYER_START); // newly born player invulnerable for one frame
break;
case O_PRE_DIA_1:
O_PRE_PL_1,
O_PRE_PL_2,
O_PRE_PL_3,
+ O_PLAYER_START,
+ O_PLAYER_START_scanned,
O_PLAYER,
O_PLAYER_scanned,
O_PLAYER_BOMB,
int element = *cave->getp(cave, x, y);
if (element == O_PLAYER ||
+ element == O_PLAYER_START ||
element == O_PLAYER_BOMB ||
element == O_PLAYER_STIRRING ||
element == O_PLAYER_PNEUMATIC_LEFT ||
O_PRE_PL_3, FALSE,
EL_BDX_PLAYER, ACTION_GROWING, -1
},
+ {
+ O_PLAYER_START, TRUE,
+ EL_BDX_PLAYER, -1, -1
+ },
{
O_PLAYER, TRUE,
EL_BDX_PLAYER, -1, -1