projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20061019-2-src
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index e868babeec2a4318e6b2bda52a740fb436e5c468..2ed1121bab972f1986a5866eee5087d1c103ab7e 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-56,6
+56,8
@@
#define USE_GFX_RESET_ONLY_WHEN_MOVING (USE_NEW_STUFF * 1)
#define USE_GFX_RESET_PLAYER_ARTWORK (USE_NEW_STUFF * 1)
#define USE_GFX_RESET_ONLY_WHEN_MOVING (USE_NEW_STUFF * 1)
#define USE_GFX_RESET_PLAYER_ARTWORK (USE_NEW_STUFF * 1)
+#define USE_FIX_KILLED_BY_NON_WALKABLE (USE_NEW_STUFF * 1)
+
/* for DigField() */
#define DF_NO_PUSH 0
/* for DigField() */
#define DF_NO_PUSH 0
@@
-1932,8
+1934,10
@@
void InitGame()
player->drop_delay = 0;
player->drop_pressed_delay = 0;
player->drop_delay = 0;
player->drop_pressed_delay = 0;
- player->last_jx = player->last_jy = 0;
- player->jx = player->jy = 0;
+ player->last_jx = -1;
+ player->last_jy = -1;
+ player->jx = -1;
+ player->jy = -1;
player->shield_normal_time_left = 0;
player->shield_deadly_time_left = 0;
player->shield_normal_time_left = 0;
player->shield_deadly_time_left = 0;
@@
-2484,7
+2488,7
@@
void InitMovDir(int x, int y)
{ MV_LEFT, MV_RIGHT, MV_UP, MV_DOWN }
};
{ MV_LEFT, MV_RIGHT, MV_UP, MV_DOWN }
};
- switch(element)
+ switch
(element)
{
case EL_BUG_RIGHT:
case EL_BUG_UP:
{
case EL_BUG_RIGHT:
case EL_BUG_UP:
@@
-3918,7
+3922,7
@@
void Bang(int x, int y)
}
}
}
}
- switch(element)
+ switch
(element)
{
case EL_BUG:
case EL_SPACESHIP:
{
case EL_BUG:
case EL_SPACESHIP:
@@
-7713,7
+7717,7
@@
static void ExecuteCustomElementAction(int x, int y, int element, int page)
/* ---------- execute action -------------------------------------------- */
/* ---------- execute action -------------------------------------------- */
- switch(action_type)
+ switch
(action_type)
{
case CA_NO_ACTION:
{
{
case CA_NO_ACTION:
{
@@
-8053,6
+8057,7
@@
static void CreateFieldExt(int x, int y, int element, boolean is_change)
#if USE_NEW_CUSTOM_VALUE
int last_ce_value = CustomValue[x][y];
#endif
#if USE_NEW_CUSTOM_VALUE
int last_ce_value = CustomValue[x][y];
#endif
+ boolean player_explosion_protected = PLAYER_EXPLOSION_PROTECTED(x, y);
boolean new_element_is_player = ELEM_IS_PLAYER(new_element);
boolean add_player_onto_element = (new_element_is_player &&
#if USE_CODE_THAT_BREAKS_SNAKE_BITE
boolean new_element_is_player = ELEM_IS_PLAYER(new_element);
boolean add_player_onto_element = (new_element_is_player &&
#if USE_CODE_THAT_BREAKS_SNAKE_BITE
@@
-8116,6
+8121,15
@@
static void CreateFieldExt(int x, int y, int element, boolean is_change)
/* check if element under the player changes from accessible to unaccessible
(needed for special case of dropping element which then changes) */
/* (must be checked after creating new element for walkable group elements) */
/* check if element under the player changes from accessible to unaccessible
(needed for special case of dropping element which then changes) */
/* (must be checked after creating new element for walkable group elements) */
+#if USE_FIX_KILLED_BY_NON_WALKABLE
+ if (IS_PLAYER(x, y) && !player_explosion_protected &&
+ IS_ACCESSIBLE(old_element) && !IS_ACCESSIBLE(new_element))
+ {
+ Bang(x, y);
+
+ return;
+ }
+#else
if (IS_PLAYER(x, y) && !PLAYER_EXPLOSION_PROTECTED(x, y) &&
IS_ACCESSIBLE(old_element) && !IS_ACCESSIBLE(new_element))
{
if (IS_PLAYER(x, y) && !PLAYER_EXPLOSION_PROTECTED(x, y) &&
IS_ACCESSIBLE(old_element) && !IS_ACCESSIBLE(new_element))
{
@@
-8123,6
+8137,7
@@
static void CreateFieldExt(int x, int y, int element, boolean is_change)
return;
}
return;
}
+#endif
#endif
/* "ChangeCount" not set yet to allow "entered by player" change one time */
#endif
/* "ChangeCount" not set yet to allow "entered by player" change one time */
@@
-12369,7
+12384,7
@@
void RaiseScore(int value)
void RaiseScoreElement(int element)
{
void RaiseScoreElement(int element)
{
- switch(element)
+ switch
(element)
{
case EL_EMERALD:
case EL_BD_DIAMOND:
{
case EL_EMERALD:
case EL_BD_DIAMOND: