projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed handling of pushed objects in EM engine for old tapes
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 14c652b7dc98b2c0c40dbc788279fcec206b385d..adfeb9f4466871ba7e437b54b5fa22435852fa80 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-1785,7
+1785,7
@@
static void InitPlayerField(int x, int y, int element, boolean init_game)
player->jy = player->last_jy = y;
}
player->jy = player->last_jy = y;
}
- if (!init_game)
+ // always check if player was just killed and should be reanimated
{
int player_nr = GET_PLAYER_NR(element);
struct PlayerInfo *player = &stored_player[player_nr];
{
int player_nr = GET_PLAYER_NR(element);
struct PlayerInfo *player = &stored_player[player_nr];
@@
-1877,6
+1877,8
@@
static void InitField(int x, int y, boolean init_game)
case EL_MOLE_RIGHT:
case EL_MOLE_UP:
case EL_MOLE_DOWN:
case EL_MOLE_RIGHT:
case EL_MOLE_UP:
case EL_MOLE_DOWN:
+ case EL_SPRING_LEFT:
+ case EL_SPRING_RIGHT:
InitMovDir(x, y);
break;
InitMovDir(x, y);
break;
@@
-2991,6
+2993,15
@@
static void InitGameEngine(void)
game_em.use_old_explosions =
(game.engine_version < VERSION_IDENT(4,1,4,2));
game_em.use_old_explosions =
(game.engine_version < VERSION_IDENT(4,1,4,2));
+ game_em.use_old_android =
+ (game.engine_version < VERSION_IDENT(4,1,4,2));
+
+ game_em.use_old_push_elements =
+ (game.engine_version < VERSION_IDENT(4,1,4,2));
+
+ game_em.use_wrap_around =
+ (game.engine_version > VERSION_IDENT(4,1,4,1));
+
// --------------------------------------------------------------------------
// set maximal allowed number of custom element changes per game frame
// --------------------------------------------------------------------------
// set maximal allowed number of custom element changes per game frame
@@
-4486,6
+4497,12
@@
void InitMovDir(int x, int y)
MovDir[x][y] = direction[2][element - EL_MOLE_LEFT];
break;
MovDir[x][y] = direction[2][element - EL_MOLE_LEFT];
break;
+ case EL_SPRING_LEFT:
+ case EL_SPRING_RIGHT:
+ Feld[x][y] = EL_SPRING;
+ MovDir[x][y] = direction[2][element - EL_SPRING_LEFT];
+ break;
+
default:
if (IS_CUSTOM_ELEMENT(element))
{
default:
if (IS_CUSTOM_ELEMENT(element))
{
@@
-14856,9
+14873,6
@@
void PlayLevelSound_EM(int xx, int yy, int element_em, int sample)
int x = xx - offset;
int y = yy - offset;
int x = xx - offset;
int y = yy - offset;
- x = correctLevelPosX_EM(x);
- y = correctLevelPosY_EM(y);
-
switch (sample)
{
case SOUND_blank:
switch (sample)
{
case SOUND_blank: