*/
/*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
*
- * This software may be copied and distributed for educational, research, and
- * not for profit purposes provided that this copyright and statement are
- * included in all such copies.
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies. Other copyrights may also apply.
*/
#include "angband.h"
{
for (tx = x - width - 1; tx <= x + width + 1; tx++)
{
- if (!in_bounds(ty, tx)) continue;
+ if (!in_bounds2(ty, tx)) continue;
c_ptr = &cave[ty][tx];
/* Lava terrain glows */
if ((feat1 == FEAT_DEEP_LAVA) || (feat1 == FEAT_SHAL_LAVA))
{
- c_ptr->info |= CAVE_GLOW;
+ if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS)) c_ptr->info |= CAVE_GLOW;
}
/* Hack -- don't teleport here */
{
ty = rand_spread(y, d);
tx = rand_spread(x, d);
- if (!in_bounds(ty, tx)) continue;
+ if (!in_bounds2(ty, tx)) continue;
break;
}
c_ptr->mimic = 0;
/* Light area since is open above */
- cave[j][i].info |= (CAVE_GLOW | CAVE_ROOM);
+ if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS)) cave[j][i].info |= (CAVE_GLOW | CAVE_ROOM);
}
}
}
*/
void destroy_level(void)
{
- int y1, x1, y, x, k, t, n;
-
- cave_type *c_ptr;
+ int y1, x1, n;
/* Note destroyed levels */
#ifdef JP
-if (cheat_room) msg_print("Ç˲õ¤µ¤ì¤¿³¬");
+ if (cheat_room) msg_print("Ç˲õ¤µ¤ì¤¿³¬");
#else
if (cheat_room) msg_print("Destroyed Level");
#endif
-
/* Drop a few epi-centers (usually about two) */
for (n = 0; n < randint1(5); n++)
{
x1 = rand_range(5, cur_wid - 1 - 5);
y1 = rand_range(5, cur_hgt - 1 - 5);
- /* Big area of affect */
- for (y = (y1 - 15); y <= (y1 + 15); y++)
- {
- for (x = (x1 - 15); x <= (x1 + 15); x++)
- {
- /* Skip illegal grids */
- if (!in_bounds(y, x)) continue;
-
- /* Extract the distance */
- k = distance(y1, x1, y, x);
-
- /* Stay in the circle of death */
- if (k >= 16) continue;
-
- /* Delete the monster (if any) */
- delete_monster(y, x);
-
- /* Access the grid */
- c_ptr = &cave[y][x];
-
- /* Destroy valid grids */
- if (cave_valid_grid(c_ptr))
- {
- /* Delete objects */
- delete_object(y, x);
-
- /* Wall (or floor) type */
- t = randint0(200);
-
- /* Granite */
- if (t < 20)
- {
- /* Create granite wall */
- place_extra_grid(c_ptr);
- }
-
- /* Quartz */
- else if (t < 70)
- {
- /* Create quartz vein */
- c_ptr->feat = FEAT_QUARTZ;
- }
-
- /* Magma */
- else if (t < 100)
- {
- /* Create magma vein */
- c_ptr->feat = FEAT_MAGMA;
- }
-
- /* Floor */
- else
- {
- /* Create floor */
- place_floor_grid(c_ptr);
- }
-
- /* Clear garbage of hidden trap or door */
- c_ptr->mimic = 0;
-
- /* No longer part of a room or vault */
- c_ptr->info &= ~(CAVE_ROOM | CAVE_ICKY);
-
- /* No longer illuminated or known */
- c_ptr->info &= ~(CAVE_MARK | CAVE_GLOW);
- }
- }
- }
+ (void)destroy_area(y1, x1, 15, TRUE);
}
}