projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20040422-1-src
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index db3d3cbc661464b646f4d029900c2f0892ede697..0077517dc4f10e01beaa9114fe298556cba1e65f 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-2893,8
+2893,11
@@
void RelocatePlayer(int jx, int jy, int el_player_raw)
Feld[jx][jy] = el_player;
InitPlayerField(jx, jy, el_player, TRUE);
Feld[jx][jy] = el_player;
InitPlayerField(jx, jy, el_player, TRUE);
- Feld[jx][jy] = element; /* player may be set on walkable element */
- InitField(jx, jy, FALSE);
+ if (!ELEM_IS_PLAYER(element)) /* player may be set on walkable element */
+ {
+ Feld[jx][jy] = element;
+ InitField(jx, jy, FALSE);
+ }
#if 1
if (player == local_player) /* only visually relocate local player */
#if 1
if (player == local_player) /* only visually relocate local player */
@@
-7376,6
+7379,7
@@
static boolean ChangeElementNow(int x, int y, int element, int page)
{
struct ElementChangeInfo *change = &element_info[element].change_page[page];
int target_element;
{
struct ElementChangeInfo *change = &element_info[element].change_page[page];
int target_element;
+ int old_element = Feld[x][y];
/* always use default change event to prevent running into a loop */
if (ChangeEvent[x][y] == CE_BITMASK_DEFAULT)
/* always use default change event to prevent running into a loop */
if (ChangeEvent[x][y] == CE_BITMASK_DEFAULT)
@@
-7399,7
+7403,7
@@
static boolean ChangeElementNow(int x, int y, int element, int page)
Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */
Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */
-#if
1
+#if
0
/* !!! indirect change before direct change !!! */
CheckTriggeredElementChangeByPage(x,y,Feld[x][y], CE_OTHER_IS_CHANGING,page);
#endif
/* !!! indirect change before direct change !!! */
CheckTriggeredElementChangeByPage(x,y,Feld[x][y], CE_OTHER_IS_CHANGING,page);
#endif
@@
-7549,6
+7553,11
@@
static boolean ChangeElementNow(int x, int y, int element, int page)
PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING);
}
PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING);
}
+#if 1
+ /* !!! indirect change before direct change !!! */
+ CheckTriggeredElementChangeByPage(x,y,old_element,CE_OTHER_IS_CHANGING,page);
+#endif
+
return TRUE;
}
return TRUE;
}