X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame.c;h=f8b9a085891166c4db14cdb306e9546810c87800;hb=013fed105fe1ac6cdd887bac04733a73f66599a3;hp=1a04be1c3b6be86a8cb2786d60b7eee30968fd81;hpb=b1750ae5f6404a4faacc38425e0b31c29ea12c37;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 1a04be1c..f8b9a085 100644 --- a/src/game.c +++ b/src/game.c @@ -5772,10 +5772,19 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) Feld[jx][jy] = el_player; InitPlayerField(jx, jy, el_player, TRUE); + /* "InitPlayerField()" above sets Feld[jx][jy] to EL_EMPTY, but it may be + possible that the relocation target field did not contain a player element, + but a walkable element, to which the new player was relocated -- in this + case, restore that (already initialized!) element on the player field */ if (!ELEM_IS_PLAYER(element)) /* player may be set on walkable element */ { - Feld[jx][jy] = element; + Feld[jx][jy] = element; /* restore previously existing element */ +#if 0 + /* !!! do not initialize already initialized element a second time !!! */ + /* (this causes at least problems with "element creation" CE trigger for + already existing elements, and existing Sokoban fields counted twice) */ InitField(jx, jy, FALSE); +#endif } /* only visually relocate centered player */