- case EL_EMPTY:
- case EL_SAND:
- case EL_INVISIBLE_SAND:
- case EL_INVISIBLE_SAND_ACTIVE:
- case EL_TRAP:
- case EL_SP_BASE:
- case EL_SP_BUGGY_BASE:
- case EL_SP_BUGGY_BASE_ACTIVATING:
- RemoveField(x, y);
-#if 1
- if (mode != DF_SNAP && element != EL_EMPTY)
- {
- GfxElement[x][y] = (CAN_BE_CRUMBLED(element) ? EL_SAND : element);
- player->is_digging = TRUE;
- }
-#endif
- PlaySoundLevelElementAction(x, y, element, ACTION_DIGGING);
- break;
-
- case EL_EMERALD:
- case EL_BD_DIAMOND:
- case EL_EMERALD_YELLOW:
- case EL_EMERALD_RED:
- case EL_EMERALD_PURPLE:
- case EL_DIAMOND:
- case EL_SP_INFOTRON:
- case EL_PEARL:
- case EL_CRYSTAL:
- RemoveField(x, y);
-#if 1
- if (mode != DF_SNAP)
- {
- GfxElement[x][y] = element;
- player->is_collecting = TRUE;
- }
-#endif
- local_player->gems_still_needed -= (element == EL_DIAMOND ? 3 :
- element == EL_PEARL ? 5 :
- element == EL_CRYSTAL ? 8 : 1);
- if (local_player->gems_still_needed < 0)
- local_player->gems_still_needed = 0;
- RaiseScoreElement(element);
- DrawText(DX_EMERALDS, DY_EMERALDS,
- int2str(local_player->gems_still_needed, 3), FONT_TEXT_2);
- PlaySoundLevelElementAction(x, y, element, ACTION_COLLECTING);
- break;
-
- case EL_SPEED_PILL:
- RemoveField(x, y);
- player->move_delay_value = MOVE_DELAY_HIGH_SPEED;
- PlaySoundLevel(x, y, SND_SPEED_PILL_COLLECTING);
- break;
-
- case EL_ENVELOPE:
- Feld[x][y] = EL_EMPTY;
- PlaySoundLevel(x, y, SND_ENVELOPE_COLLECTING);
- break;
-
- case EL_EXTRA_TIME:
- RemoveField(x, y);
- if (level.time > 0)
- {
- TimeLeft += 10;
- DrawText(DX_TIME, DY_TIME, int2str(TimeLeft, 3), FONT_TEXT_2);
- }
- PlaySoundStereo(SND_EXTRA_TIME_COLLECTING, SOUND_MIDDLE);
- break;
-
- case EL_SHIELD_NORMAL:
- RemoveField(x, y);
- player->shield_normal_time_left += 10;
- PlaySoundLevel(x, y, SND_SHIELD_NORMAL_COLLECTING);
- break;
-
- case EL_SHIELD_DEADLY:
- RemoveField(x, y);
- player->shield_normal_time_left += 10;
- player->shield_deadly_time_left += 10;
- PlaySoundLevel(x, y, SND_SHIELD_DEADLY_COLLECTING);
- break;
-
- case EL_DYNAMITE:
- case EL_SP_DISK_RED:
- RemoveField(x, y);
- player->dynamite++;
- player->use_disk_red_graphic = (element == EL_SP_DISK_RED);
- RaiseScoreElement(EL_DYNAMITE);
- DrawText(DX_DYNAMITE, DY_DYNAMITE, int2str(local_player->dynamite, 3),
- FONT_TEXT_2);
- PlaySoundLevelElementAction(x, y, element, ACTION_COLLECTING);
- break;
-
- case EL_DYNABOMB_INCREASE_NUMBER:
- RemoveField(x, y);
- player->dynabomb_count++;
- player->dynabombs_left++;
- RaiseScoreElement(EL_DYNAMITE);
- PlaySoundLevel(x, y, SND_DYNABOMB_INCREASE_NUMBER_COLLECTING);
- break;
-
- case EL_DYNABOMB_INCREASE_SIZE:
- RemoveField(x, y);
- player->dynabomb_size++;
- RaiseScoreElement(EL_DYNAMITE);
- PlaySoundLevel(x, y, SND_DYNABOMB_INCREASE_SIZE_COLLECTING);
- break;
-
- case EL_DYNABOMB_INCREASE_POWER:
- RemoveField(x, y);
- player->dynabomb_xl = TRUE;
- RaiseScoreElement(EL_DYNAMITE);
- PlaySoundLevel(x, y, SND_DYNABOMB_INCREASE_POWER_COLLECTING);
- break;
-
- case EL_KEY_1:
- case EL_KEY_2:
- case EL_KEY_3:
- case EL_KEY_4:
- {
- int key_nr = element - EL_KEY_1;
- int graphic = el2edimg(element);
- int element_old, element_new;
- int num_changes;
-
- RemoveField(x, y);
- player->key[key_nr] = TRUE;
- RaiseScoreElement(element);
- DrawMiniGraphicExt(drawto, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS,
- graphic);
- DrawMiniGraphicExt(window, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS,
- graphic);
- PlaySoundLevel(x, y, SND_CLASS_KEY_COLLECTING);
-
- element_old = EL_GATE_1_CLOSED + key_nr;
- element_new = EL_GATE_1_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- element_old = EL_GATE_1_GRAY_CLOSED + key_nr;
- element_new = EL_GATE_1_GRAY_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- if (game.engine_version < VERSION_IDENT(2,2,0))
- {
- element_old = EL_EM_GATE_1_CLOSED + key_nr;
- element_new = EL_EM_GATE_1_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- element_old = EL_EM_GATE_1_GRAY_CLOSED + key_nr;
- element_new = EL_EM_GATE_1_GRAY_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
- }
-
- break;
- }
-
- case EL_EM_KEY_1:
- case EL_EM_KEY_2:
- case EL_EM_KEY_3:
- case EL_EM_KEY_4:
- {
- int key_nr = element - EL_EM_KEY_1;
- int graphic = el2edimg(EL_KEY_1 + key_nr);
- int element_old, element_new;
- int num_changes;
-
- RemoveField(x, y);
- player->key[key_nr] = TRUE;
- RaiseScoreElement(element);
- DrawMiniGraphicExt(drawto, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS,
- graphic);
- DrawMiniGraphicExt(window, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS,
- graphic);
- PlaySoundLevel(x, y, SND_CLASS_KEY_COLLECTING);
-
- element_old = EL_EM_GATE_1_CLOSED + key_nr;
- element_new = EL_EM_GATE_1_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- element_old = EL_EM_GATE_1_GRAY_CLOSED + key_nr;
- element_new = EL_EM_GATE_1_GRAY_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- if (game.engine_version < VERSION_IDENT(2,2,0))
- {
- element_old = EL_GATE_1_CLOSED + key_nr;
- element_new = EL_GATE_1_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
-
- element_old = EL_GATE_1_GRAY_CLOSED + key_nr;
- element_new = EL_GATE_1_GRAY_OPEN + key_nr;
- num_changes = ChangeElementOnPlayfield(element_old, element_new);
- if (num_changes > 0)
- PlaySoundLevelElementAction(x, y, element_old, ACTION_OPENING);
- }
-
- break;
- }
-