X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=38cf088dd0f87ef0305e781d012d7b6a6de46ae8;hb=0f40b41943c6442963b3677ce3d18d1f04c61605;hp=7436b1d9ae07ca7823359240c53ea48b72d273a3;hpb=2cbc9d10d5465ab9a168d1fb0af9905a2e56c2a2;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 7436b1d9..38cf088d 100644 --- a/src/game.c +++ b/src/game.c @@ -836,7 +836,7 @@ void InitGame() AllPlayersGone = FALSE; - game.yam_content_nr = 0; + game.yamyam_content_nr = 0; game.magic_wall_active = FALSE; game.magic_wall_time_left = 0; game.light_time_left = 0; @@ -1654,7 +1654,7 @@ void Explode(int ex, int ey, int phase, int mode) Feld[ex][ey] = center_element; } - for (y=ey-1; y<=ey+1; y++) for(x=ex-1; x<=ex+1; x++) + for (y = ey - 1; y <= ey + 1; y++) for(x = ex - 1; x <= ex + 1; x++) { int element; @@ -1734,10 +1734,14 @@ void Explode(int ex, int ey, int phase, int mode) Store[x][y] = EL_BD_DIAMOND; else if (center_element == EL_SP_ELECTRON) Store[x][y] = EL_SP_INFOTRON; - else if (center_element == EL_YAMYAM) - Store[x][y] = level.yam_content[game.yam_content_nr][x-ex+1][y-ey+1]; else if (center_element == EL_AMOEBA_TO_DIAMOND) Store[x][y] = level.amoeba_content; + else if (center_element == EL_YAMYAM) + Store[x][y] = + level.yamyam_content[game.yamyam_content_nr][x - ex + 1][y - ey + 1]; + else if (IS_CUSTOM_ELEMENT(center_element)) + Store[x][y] = + CUSTOM_ELEMENT_INFO(center_element).content[x - ex + 1][y - ey + 1]; else if (element == EL_WALL_EMERALD) Store[x][y] = EL_EMERALD; else if (element == EL_WALL_DIAMOND) @@ -1779,7 +1783,8 @@ void Explode(int ex, int ey, int phase, int mode) } if (center_element == EL_YAMYAM) - game.yam_content_nr = (game.yam_content_nr + 1) % level.num_yam_contents; + game.yamyam_content_nr = + (game.yamyam_content_nr + 1) % level.num_yamyam_contents; return; } @@ -1809,7 +1814,7 @@ void Explode(int ex, int ey, int phase, int mode) if (IS_PLAYER(x, y)) KillHeroUnlessProtected(x, y); - else if (IS_CAN_EXPLODE(element)) + else if (CAN_EXPLODE(element)) { Feld[x][y] = Store2[x][y]; Store2[x][y] = 0; @@ -3247,7 +3252,7 @@ void StartMoving(int x, int y) { int flamed = MovingOrBlocked2Element(xx, yy); - if (IS_ENEMY(flamed) || IS_CAN_EXPLODE(flamed)) + if (IS_ENEMY(flamed) || CAN_EXPLODE(flamed)) Bang(xx, yy); else RemoveMovingField(xx, yy); @@ -6594,7 +6599,8 @@ int DigField(struct PlayerInfo *player, #if 1 if (mode != DF_SNAP) { - GfxElement[x][y] = element; + GfxElement[x][y] = + (CAN_BE_CRUMBLED(element) ? EL_SAND : GFX_ELEMENT(element)); player->is_digging = TRUE; } #endif @@ -6901,17 +6907,26 @@ void RaiseScoreElement(int element) case EL_EMERALD_YELLOW: case EL_EMERALD_RED: case EL_EMERALD_PURPLE: + case EL_SP_INFOTRON: RaiseScore(level.score[SC_EMERALD]); break; case EL_DIAMOND: RaiseScore(level.score[SC_DIAMOND]); break; + case EL_CRYSTAL: + RaiseScore(level.score[SC_CRYSTAL]); + break; + case EL_PEARL: + RaiseScore(level.score[SC_PEARL]); + break; case EL_BUG: case EL_BD_BUTTERFLY: + case EL_SP_ELECTRON: RaiseScore(level.score[SC_BUG]); break; case EL_SPACESHIP: case EL_BD_FIREFLY: + case EL_SP_SNIKSNAK: RaiseScore(level.score[SC_SPACESHIP]); break; case EL_YAMYAM: @@ -6928,8 +6943,18 @@ void RaiseScoreElement(int element) RaiseScore(level.score[SC_NUT]); break; case EL_DYNAMITE: + case EL_DYNABOMB_INCREASE_NUMBER: + case EL_DYNABOMB_INCREASE_SIZE: + case EL_DYNABOMB_INCREASE_POWER: RaiseScore(level.score[SC_DYNAMITE]); break; + case EL_SHIELD_NORMAL: + case EL_SHIELD_DEADLY: + RaiseScore(level.score[SC_SHIELD]); + break; + case EL_EXTRA_TIME: + RaiseScore(level.score[SC_TIME_BONUS]); + break; case EL_KEY_1: case EL_KEY_2: case EL_KEY_3: