if (HAS_CHANGE_EVENT(element, CE_DELAY_FIXED))
changing_element[element].change_delay +=
- change->delay_fixed * FRAMES_PER_SECOND;
+ change->delay_fixed * change->delay_frames;
if (HAS_CHANGE_EVENT(element, CE_DELAY_RANDOM));
/* random frame delay added at runtime for each element individually */
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;
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;
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)
}
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;
}
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;
if (phase == delay)
DrawLevelFieldCrumbledSand(x, y);
- if (IS_WALKABLE_OVER(Back[x][y]))
+ if (IS_WALKABLE_OVER(Back[x][y]) && Back[x][y] != EL_EMPTY)
{
DrawLevelElement(x, y, Back[x][y]);
DrawGraphicThruMask(SCREENX(x), SCREENY(y), graphic, frame);
{
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);
{
int element = Feld[x][y];
- if (IS_MOVING(x, y)) /* never change moving elements */
+ if (IS_MOVING(x, y)) /* never change a running system :-) */
return;
if (MovDelay[x][y] == 0) /* initialize element change */
{
int i = element - EL_CUSTOM_START;
int max_random_delay = level.custom_element[i].change.delay_random;
+ int delay_frames = level.custom_element[i].change.delay_frames;
- MovDelay[x][y] += RND(max_random_delay * FRAMES_PER_SECOND);
+ MovDelay[x][y] += RND(max_random_delay * delay_frames);
}
ResetGfxAnimation(x, y);
#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
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:
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: