projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20051210-3-src
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index a78e341f983a3e429518c8e8bff1647f0a96983b..06de1e48621fab80bf5e0595823c6814083eefd2 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-245,8
+245,8
@@
static void InitBeltMovement(void);
static void CloseAllOpenTimegates(void);
static void CheckGravityMovement(struct PlayerInfo *);
static void CheckGravityMovementWhenNotMoving(struct PlayerInfo *);
static void CloseAllOpenTimegates(void);
static void CheckGravityMovement(struct PlayerInfo *);
static void CheckGravityMovementWhenNotMoving(struct PlayerInfo *);
-static void Kill
Hero
UnlessEnemyProtected(int, int);
-static void Kill
Hero
UnlessExplosionProtected(int, int);
+static void Kill
Player
UnlessEnemyProtected(int, int);
+static void Kill
Player
UnlessExplosionProtected(int, int);
static void TestIfPlayerTouchesCustomElement(int, int);
static void TestIfElementTouchesCustomElement(int, int);
static void TestIfPlayerTouchesCustomElement(int, int);
static void TestIfElementTouchesCustomElement(int, int);
@@
-1584,6
+1584,8
@@
void InitGame()
player->move_delay = game.initial_move_delay;
player->move_delay_value = game.initial_move_delay_value;
player->move_delay = game.initial_move_delay;
player->move_delay_value = game.initial_move_delay_value;
+ player->move_delay_value_next = -1;
+
player->move_delay_reset_counter = 0;
player->push_delay = -1; /* initialized when pushing starts */
player->move_delay_reset_counter = 0;
player->push_delay = -1; /* initialized when pushing starts */
@@
-2331,7
+2333,7
@@
void GameWon()
PlayLevelSoundElementAction(ExitX, ExitY, element, ACTION_CLOSING);
}
PlayLevelSoundElementAction(ExitX, ExitY, element, ACTION_CLOSING);
}
- /*
Hero
disappears */
+ /*
player
disappears */
if (ExitX >= 0 && ExitY >= 0)
DrawLevelField(ExitX, ExitY);
if (ExitX >= 0 && ExitY >= 0)
DrawLevelField(ExitX, ExitY);
@@
-2899,7
+2901,7
@@
void RelocatePlayer(int jx, int jy, int el_player_raw)
if (player == local_player) /* only visually relocate local player */
DrawRelocatePlayer(player);
if (player == local_player) /* only visually relocate local player */
DrawRelocatePlayer(player);
- TestIf
Hero
TouchesBadThing(jx, jy);
+ TestIf
Player
TouchesBadThing(jx, jy);
TestIfPlayerTouchesCustomElement(jx, jy);
if (IS_CUSTOM_ELEMENT(element))
TestIfPlayerTouchesCustomElement(jx, jy);
if (IS_CUSTOM_ELEMENT(element))
@@
-3150,7
+3152,7
@@
void Explode(int ex, int ey, int phase, int mode)
if (IS_PLAYER(x, y) && PLAYERINFO(x, y)->present &&
!PLAYER_EXPLOSION_PROTECTED(x, y))
{
if (IS_PLAYER(x, y) && PLAYERINFO(x, y)->present &&
!PLAYER_EXPLOSION_PROTECTED(x, y))
{
- Kill
Hero
UnlessExplosionProtected(x, y);
+ Kill
Player
UnlessExplosionProtected(x, y);
border_explosion = TRUE;
}
else if (CAN_EXPLODE_BY_EXPLOSION(border_element))
border_explosion = TRUE;
}
else if (CAN_EXPLODE_BY_EXPLOSION(border_element))
@@
-3744,7
+3746,7
@@
void Impact(int x, int y)
if (impact && element == EL_AMOEBA_DROP)
{
if (object_hit && IS_PLAYER(x, y + 1))
if (impact && element == EL_AMOEBA_DROP)
{
if (object_hit && IS_PLAYER(x, y + 1))
- Kill
Hero
UnlessEnemyProtected(x, y + 1);
+ Kill
Player
UnlessEnemyProtected(x, y + 1);
else if (object_hit && smashed == EL_PENGUIN)
Bang(x, y + 1);
else
else if (object_hit && smashed == EL_PENGUIN)
Bang(x, y + 1);
else
@@
-3786,7
+3788,7
@@
void Impact(int x, int y)
{
if (CAN_SMASH_PLAYER(element))
{
{
if (CAN_SMASH_PLAYER(element))
{
- Kill
Hero
UnlessEnemyProtected(x, y + 1);
+ Kill
Player
UnlessEnemyProtected(x, y + 1);
return;
}
}
return;
}
}
@@
-5060,7
+5062,7
@@
void StartMoving(int x, int y)
IN_LEV_FIELD(newx, newy) && IS_PLAYER(newx, newy) &&
!PLAYER_ENEMY_PROTECTED(newx, newy))
{
IN_LEV_FIELD(newx, newy) && IS_PLAYER(newx, newy) &&
!PLAYER_ENEMY_PROTECTED(newx, newy))
{
- TestIfBadThingRunsInto
Hero
(x, y, MovDir[x][y]);
+ TestIfBadThingRunsInto
Player
(x, y, MovDir[x][y]);
return;
}
return;
}
@@
-5361,7
+5363,7
@@
void StartMoving(int x, int y)
DrawLevelElementAnimation(x, y, element);
if (DONT_TOUCH(element))
DrawLevelElementAnimation(x, y, element);
if (DONT_TOUCH(element))
- TestIfBadThingTouches
Hero
(x, y);
+ TestIfBadThingTouches
Player
(x, y);
return;
}
return;
}
@@
-5583,7
+5585,7
@@
void ContinueMoving(int x, int y)
if (DONT_TOUCH(element)) /* object may be nasty to player or others */
{
if (DONT_TOUCH(element)) /* object may be nasty to player or others */
{
- TestIfBadThingTouches
Hero
(newx, newy);
+ TestIfBadThingTouches
Player
(newx, newy);
TestIfBadThingTouchesFriend(newx, newy);
if (!IS_CUSTOM_ELEMENT(element))
TestIfBadThingTouchesFriend(newx, newy);
if (!IS_CUSTOM_ELEMENT(element))
@@
-6502,11
+6504,12
@@
static int getSpecialActionElement(int element, int number, int base_element)
static int getModifiedActionNumber(int value_old, int operator, int operand,
int value_min, int value_max)
{
static int getModifiedActionNumber(int value_old, int operator, int operand,
int value_min, int value_max)
{
- int value_new = (operator == CA_MODE_ADD ? value_old + operand :
+ int value_new = (operator == CA_MODE_SET ? operand :
+ operator == CA_MODE_ADD ? value_old + operand :
operator == CA_MODE_SUBTRACT ? value_old - operand :
operator == CA_MODE_MULTIPLY ? value_old * operand :
operator == CA_MODE_DIVIDE ? value_old / MAX(1, operand) :
operator == CA_MODE_SUBTRACT ? value_old - operand :
operator == CA_MODE_MULTIPLY ? value_old * operand :
operator == CA_MODE_DIVIDE ? value_old / MAX(1, operand) :
- operator == CA_MODE_
SET ? operand
:
+ operator == CA_MODE_
MODULO ? value_old % MAX(1, operand)
:
value_old);
return (value_new < value_min ? value_min :
value_old);
return (value_new < value_min ? value_min :
@@
-6629,7
+6632,7
@@
static void ExecuteCustomElementAction(int x, int y, int element, int page)
{
for (i = 0; i < MAX_PLAYERS; i++)
if (action_arg_player_bits & (1 << i))
{
for (i = 0; i < MAX_PLAYERS; i++)
if (action_arg_player_bits & (1 << i))
- Kill
Hero
(&stored_player[i]);
+ Kill
Player
(&stored_player[i]);
break;
}
break;
}
@@
-6724,11
+6727,12
@@
static void ExecuteCustomElementAction(int x, int y, int element, int page)
/* make sure that value is power of 2 */
move_stepsize = (1 << log_2(move_stepsize));
/* make sure that value is power of 2 */
move_stepsize = (1 << log_2(move_stepsize));
- stored_player[i].move_delay_value = TILEX / move_stepsize;
+ /* do no immediately change -- the player might just be moving */
+ stored_player[i].move_delay_value_next = TILEX / move_stepsize;
#if 0
printf("::: move_delay_value == %d [%d]\n",
#if 0
printf("::: move_delay_value == %d [%d]\n",
- stored_player[i].move_delay_value, action_arg_number);
+ stored_player[i].move_delay_value
_next
, action_arg_number);
#endif
}
}
#endif
}
}
@@
-6755,7
+6759,7
@@
static void ExecuteCustomElementAction(int x, int y, int element, int page)
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
- Kill
Hero
(&stored_player[i]);
+ Kill
Player
(&stored_player[i]);
}
break;
}
break;
@@
-6898,7
+6902,7
@@
static void ChangeElementNowExt(struct ElementChangeInfo *change,
Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */
#endif
Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */
#endif
- TestIfBadThingTouches
Hero
(x, y);
+ TestIfBadThingTouches
Player
(x, y);
TestIfPlayerTouchesCustomElement(x, y);
TestIfElementTouchesCustomElement(x, y);
}
TestIfPlayerTouchesCustomElement(x, y);
TestIfElementTouchesCustomElement(x, y);
}
@@
-7070,7
+7074,8
@@
static void ChangeElement(int x, int y, int page)
struct ElementChangeInfo *change = &ei->change_page[page];
#ifdef DEBUG
struct ElementChangeInfo *change = &ei->change_page[page];
#ifdef DEBUG
- if (!CAN_CHANGE(element) && !CAN_CHANGE(Back[x][y]))
+ if (!CAN_CHANGE_OR_HAS_ACTION(element) &&
+ !CAN_CHANGE_OR_HAS_ACTION(Back[x][y]))
{
printf("\n\n");
printf("ChangeElement(): %d,%d: element = %d ('%s')\n",
{
printf("\n\n");
printf("ChangeElement(): %d,%d: element = %d ('%s')\n",
@@
-7081,7
+7086,7
@@
static void ChangeElement(int x, int y, int page)
#endif
/* this can happen with classic bombs on walkable, changing elements */
#endif
/* this can happen with classic bombs on walkable, changing elements */
- if (!CAN_CHANGE(element))
+ if (!CAN_CHANGE
_OR_HAS_ACTION
(element))
{
#if 0
if (!CAN_CHANGE(Back[x][y])) /* prevent permanent repetition */
{
#if 0
if (!CAN_CHANGE(Back[x][y])) /* prevent permanent repetition */
@@
-7095,24
+7100,30
@@
static void ChangeElement(int x, int y, int page)
{
ChangeDelay[x][y] = GET_CHANGE_DELAY(change) + 1;
{
ChangeDelay[x][y] = GET_CHANGE_DELAY(change) + 1;
- ResetGfxAnimation(x, y);
- ResetRandomAnimationValue(x, y);
+ if (change->can_change)
+ {
+ ResetGfxAnimation(x, y);
+ ResetRandomAnimationValue(x, y);
- if (change->pre_change_function)
- change->pre_change_function(x, y);
+ if (change->pre_change_function)
+ change->pre_change_function(x, y);
+ }
}
ChangeDelay[x][y]--;
if (ChangeDelay[x][y] != 0) /* continue element change */
{
}
ChangeDelay[x][y]--;
if (ChangeDelay[x][y] != 0) /* continue element change */
{
- int graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]);
+ if (change->can_change)
+ {
+ int graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]);
- if (IS_ANIMATED(graphic))
- DrawLevelGraphicAnimationIfNeeded(x, y, graphic);
+
if (IS_ANIMATED(graphic))
+
DrawLevelGraphicAnimationIfNeeded(x, y, graphic);
- if (change->change_function)
- change->change_function(x, y);
+ if (change->change_function)
+ change->change_function(x, y);
+ }
}
else /* finish element change */
{
}
else /* finish element change */
{
@@
-7132,11
+7143,17
@@
static void ChangeElement(int x, int y, int page)
return;
}
return;
}
- if (
ChangeElementNow(x, y, element, page)
)
+ if (
change->can_change
)
{
{
- if (change->post_change_function)
- change->post_change_function(x, y);
+ if (ChangeElementNow(x, y, element, page))
+ {
+ if (change->post_change_function)
+ change->post_change_function(x, y);
+ }
}
}
+
+ if (change->has_action)
+ ExecuteCustomElementAction(x, y, element, page);
}
}
}
}
@@
-7191,9
+7208,13
@@
static boolean CheckTriggeredElementChangeExt(int trigger_element,
ChangeEvent[x][y] = trigger_event;
ChangeElement(x, y, p);
}
ChangeEvent[x][y] = trigger_event;
ChangeElement(x, y, p);
}
-
+#if 1
+ else if (change->has_action)
+ ExecuteCustomElementAction(x, y, element, p);
+#else
if (change->has_action)
ExecuteCustomElementAction(x, y, element, p);
if (change->has_action)
ExecuteCustomElementAction(x, y, element, p);
+#endif
}
}
}
}
@@
-7260,9
+7281,13
@@
static boolean CheckElementChangeExt(int x, int y,
change_done = TRUE;
}
change_done = TRUE;
}
-
+#if 1
+ else if (change->has_action)
+ ExecuteCustomElementAction(x, y, element, p);
+#else
if (change->has_action)
ExecuteCustomElementAction(x, y, element, p);
if (change->has_action)
ExecuteCustomElementAction(x, y, element, p);
+#endif
}
}
}
}
@@
-7784,11
+7809,16
@@
void GameActions()
printf("::: ChangeDelay == %d\n", ChangeDelay[x][y]);
#endif
printf("::: ChangeDelay == %d\n", ChangeDelay[x][y]);
#endif
+#if 1
+ ChangeElement(x, y, page);
+#else
if (CAN_CHANGE(element))
ChangeElement(x, y, page);
if (CAN_CHANGE(element))
ChangeElement(x, y, page);
- if (HAS_ACTION(element)
&& ChangeDelay[x][y] == 0
)
+ if (HAS_ACTION(element))
ExecuteCustomElementAction(x, y, element, page);
ExecuteCustomElementAction(x, y, element, page);
+#endif
+
#endif
element = Feld[x][y];
#endif
element = Feld[x][y];
@@
-8032,7
+8062,7
@@
void GameActions()
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
- Kill
Hero
(&stored_player[i]);
+ Kill
Player
(&stored_player[i]);
}
else if (level.time == 0 && !AllPlayersGone) /* level w/o time limit */
DrawGameValue_Time(TimePlayed);
}
else if (level.time == 0 && !AllPlayersGone) /* level w/o time limit */
DrawGameValue_Time(TimePlayed);
@@
-8268,10
+8298,10
@@
boolean MovePlayerOneStep(struct PlayerInfo *player,
InitMovingField(jx, jy, MV_DOWN);
Store[jx][jy] = EL_ACID;
ContinueMoving(jx, jy);
InitMovingField(jx, jy, MV_DOWN);
Store[jx][jy] = EL_ACID;
ContinueMoving(jx, jy);
- Bury
Hero
(player);
+ Bury
Player
(player);
}
else
}
else
- TestIf
Hero
RunsIntoBadThing(jx, jy, player->MovDir);
+ TestIf
Player
RunsIntoBadThing(jx, jy, player->MovDir);
return MF_MOVING;
}
return MF_MOVING;
}
@@
-8291,6
+8321,12
@@
boolean MovePlayerOneStep(struct PlayerInfo *player,
player->jy = new_jy;
StorePlayer[new_jx][new_jy] = player->element_nr;
player->jy = new_jy;
StorePlayer[new_jx][new_jy] = player->element_nr;
+ if (player->move_delay_value_next != -1)
+ {
+ player->move_delay_value = player->move_delay_value_next;
+ player->move_delay_value_next = -1;
+ }
+
player->MovPos =
(dx > 0 || dy > 0 ? -1 : 1) * (TILEX - TILEX / player->move_delay_value);
player->MovPos =
(dx > 0 || dy > 0 ? -1 : 1) * (TILEX - TILEX / player->move_delay_value);
@@
-8486,12
+8522,12
@@
boolean MovePlayer(struct PlayerInfo *player, int dx, int dy)
if (game.engine_version < VERSION_IDENT(3,0,7,0))
{
if (game.engine_version < VERSION_IDENT(3,0,7,0))
{
- TestIf
Hero
TouchesBadThing(jx, jy);
+ TestIf
Player
TouchesBadThing(jx, jy);
TestIfPlayerTouchesCustomElement(jx, jy);
}
if (!player->active)
TestIfPlayerTouchesCustomElement(jx, jy);
}
if (!player->active)
- Remove
Hero
(player);
+ Remove
Player
(player);
return moved;
}
return moved;
}
@@
-8552,21
+8588,21
@@
void ScrollPlayer(struct PlayerInfo *player, int mode)
return;
#if 0
return;
#if 0
-
printf("::: player->MovPos: %d -> %d\n",
-
player->MovPos,
-
player->MovPos + (player->MovPos > 0 ? -1 : 1) * move_stepsize);
+ printf("::: player->MovPos: %d -> %d\n",
+ player->MovPos,
+ player->MovPos + (player->MovPos > 0 ? -1 : 1) * move_stepsize);
#endif
#if USE_NEW_PLAYER_SPEED
#endif
#if USE_NEW_PLAYER_SPEED
-
if (player->MovPos != 0)
-
{
-
player->MovPos += (player->MovPos > 0 ? -1 : 1) * move_stepsize;
-
player->GfxPos = move_stepsize * (player->MovPos / move_stepsize);
+ if (player->MovPos != 0)
+ {
+ player->MovPos += (player->MovPos > 0 ? -1 : 1) * move_stepsize;
+ player->GfxPos = move_stepsize * (player->MovPos / move_stepsize);
-
/* before DrawPlayer() to draw correct player graphic for this case */
-
if (player->MovPos == 0)
-
CheckGravityMovement(player);
-
}
+ /* before DrawPlayer() to draw correct player graphic for this case */
+ if (player->MovPos == 0)
+ CheckGravityMovement(player);
+ }
#else
player->MovPos += (player->MovPos > 0 ? -1 : 1) * move_stepsize;
player->GfxPos = move_stepsize * (player->MovPos / move_stepsize);
#else
player->MovPos += (player->MovPos > 0 ? -1 : 1) * move_stepsize;
player->GfxPos = move_stepsize * (player->MovPos / move_stepsize);
@@
-8604,7
+8640,7
@@
void ScrollPlayer(struct PlayerInfo *player, int mode)
Feld[jx][jy] == EL_SP_EXIT_OPENING) /* <-- special case */
{
DrawPlayer(player); /* needed here only to cleanup last field */
Feld[jx][jy] == EL_SP_EXIT_OPENING) /* <-- special case */
{
DrawPlayer(player); /* needed here only to cleanup last field */
- Remove
Hero
(player);
+ Remove
Player
(player);
if (local_player->friends_still_needed == 0 ||
IS_SP_ELEMENT(Feld[jx][jy]))
if (local_player->friends_still_needed == 0 ||
IS_SP_ELEMENT(Feld[jx][jy]))
@@
-8639,7
+8675,7
@@
void ScrollPlayer(struct PlayerInfo *player, int mode)
if (game.engine_version >= VERSION_IDENT(3,0,7,0))
{
if (game.engine_version >= VERSION_IDENT(3,0,7,0))
{
- TestIf
Hero
TouchesBadThing(jx, jy);
+ TestIf
Player
TouchesBadThing(jx, jy);
TestIfPlayerTouchesCustomElement(jx, jy);
/* needed because pushed element has not yet reached its destination,
TestIfPlayerTouchesCustomElement(jx, jy);
/* needed because pushed element has not yet reached its destination,
@@
-8648,7
+8684,7
@@
void ScrollPlayer(struct PlayerInfo *player, int mode)
TestIfElementTouchesCustomElement(jx, jy); /* for empty space */
if (!player->active)
TestIfElementTouchesCustomElement(jx, jy); /* for empty space */
if (!player->active)
- Remove
Hero
(player);
+ Remove
Player
(player);
}
if (level.use_step_counter)
}
if (level.use_step_counter)
@@
-8668,7
+8704,7
@@
void ScrollPlayer(struct PlayerInfo *player, int mode)
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
if (!TimeLeft && setup.time_limit)
for (i = 0; i < MAX_PLAYERS; i++)
- Kill
Hero
(&stored_player[i]);
+ Kill
Player
(&stored_player[i]);
}
else if (level.time == 0 && !AllPlayersGone) /* level w/o time limit */
DrawGameValue_Time(TimePlayed);
}
else if (level.time == 0 && !AllPlayersGone) /* level w/o time limit */
DrawGameValue_Time(TimePlayed);
@@
-9007,7
+9043,7
@@
void TestIfGoodThingHitsBadThing(int good_x, int good_y, int good_move_dir)
!IS_INDESTRUCTIBLE(bad_element))
Bang(kill_x, kill_y);
else if (!PLAYER_ENEMY_PROTECTED(good_x, good_y))
!IS_INDESTRUCTIBLE(bad_element))
Bang(kill_x, kill_y);
else if (!PLAYER_ENEMY_PROTECTED(good_x, good_y))
- Kill
Hero
(player);
+ Kill
Player
(player);
}
else
Bang(good_x, good_y);
}
else
Bang(good_x, good_y);
@@
-9100,29
+9136,29
@@
void TestIfBadThingHitsGoodThing(int bad_x, int bad_y, int bad_move_dir)
!IS_INDESTRUCTIBLE(bad_element))
Bang(bad_x, bad_y);
else if (!PLAYER_ENEMY_PROTECTED(kill_x, kill_y))
!IS_INDESTRUCTIBLE(bad_element))
Bang(bad_x, bad_y);
else if (!PLAYER_ENEMY_PROTECTED(kill_x, kill_y))
- Kill
Hero
(player);
+ Kill
Player
(player);
}
else
Bang(kill_x, kill_y);
}
}
}
else
Bang(kill_x, kill_y);
}
}
-void TestIf
Hero
TouchesBadThing(int x, int y)
+void TestIf
Player
TouchesBadThing(int x, int y)
{
TestIfGoodThingHitsBadThing(x, y, MV_NO_MOVING);
}
{
TestIfGoodThingHitsBadThing(x, y, MV_NO_MOVING);
}
-void TestIf
Hero
RunsIntoBadThing(int x, int y, int move_dir)
+void TestIf
Player
RunsIntoBadThing(int x, int y, int move_dir)
{
TestIfGoodThingHitsBadThing(x, y, move_dir);
}
{
TestIfGoodThingHitsBadThing(x, y, move_dir);
}
-void TestIfBadThingTouches
Hero
(int x, int y)
+void TestIfBadThingTouches
Player
(int x, int y)
{
TestIfBadThingHitsGoodThing(x, y, MV_NO_MOVING);
}
{
TestIfBadThingHitsGoodThing(x, y, MV_NO_MOVING);
}
-void TestIfBadThingRunsInto
Hero
(int x, int y, int move_dir)
+void TestIfBadThingRunsInto
Player
(int x, int y, int move_dir)
{
TestIfBadThingHitsGoodThing(x, y, move_dir);
}
{
TestIfBadThingHitsGoodThing(x, y, move_dir);
}
@@
-9171,7
+9207,7
@@
void TestIfBadThingTouchesOtherBadThing(int bad_x, int bad_y)
Bang(bad_x, bad_y);
}
Bang(bad_x, bad_y);
}
-void Kill
Hero
(struct PlayerInfo *player)
+void Kill
Player
(struct PlayerInfo *player)
{
int jx = player->jx, jy = player->jy;
{
int jx = player->jx, jy = player->jy;
@@
-9186,22
+9222,22
@@
void KillHero(struct PlayerInfo *player)
player->shield_deadly_time_left = 0;
Bang(jx, jy);
player->shield_deadly_time_left = 0;
Bang(jx, jy);
- Bury
Hero
(player);
+ Bury
Player
(player);
}
}
-static void Kill
Hero
UnlessEnemyProtected(int x, int y)
+static void Kill
Player
UnlessEnemyProtected(int x, int y)
{
if (!PLAYER_ENEMY_PROTECTED(x, y))
{
if (!PLAYER_ENEMY_PROTECTED(x, y))
- Kill
Hero
(PLAYERINFO(x, y));
+ Kill
Player
(PLAYERINFO(x, y));
}
}
-static void Kill
Hero
UnlessExplosionProtected(int x, int y)
+static void Kill
Player
UnlessExplosionProtected(int x, int y)
{
if (!PLAYER_EXPLOSION_PROTECTED(x, y))
{
if (!PLAYER_EXPLOSION_PROTECTED(x, y))
- Kill
Hero
(PLAYERINFO(x, y));
+ Kill
Player
(PLAYERINFO(x, y));
}
}
-void Bury
Hero
(struct PlayerInfo *player)
+void Bury
Player
(struct PlayerInfo *player)
{
int jx = player->jx, jy = player->jy;
{
int jx = player->jx, jy = player->jy;
@@
-9212,10
+9248,10
@@
void BuryHero(struct PlayerInfo *player)
PlayLevelSound(jx, jy, SND_GAME_LOSING);
player->GameOver = TRUE;
PlayLevelSound(jx, jy, SND_GAME_LOSING);
player->GameOver = TRUE;
- Remove
Hero
(player);
+ Remove
Player
(player);
}
}
-void Remove
Hero
(struct PlayerInfo *player)
+void Remove
Player
(struct PlayerInfo *player)
{
int jx = player->jx, jy = player->jy;
int i, found = FALSE;
{
int jx = player->jx, jy = player->jy;
int i, found = FALSE;
@@
-9226,6
+9262,9
@@
void RemoveHero(struct PlayerInfo *player)
if (!ExplodeField[jx][jy])
StorePlayer[jx][jy] = 0;
if (!ExplodeField[jx][jy])
StorePlayer[jx][jy] = 0;
+ if (player->is_moving)
+ DrawLevelField(player->last_jx, player->last_jy);
+
for (i = 0; i < MAX_PLAYERS; i++)
if (stored_player[i].active)
found = TRUE;
for (i = 0; i < MAX_PLAYERS; i++)
if (stored_player[i].active)
found = TRUE;