/* * Summon a creature of the specified type * * XXX XXX XXX This function is rather dangerous */ static void do_cmd_wiz_named(int r_idx, bool slp) { int py = p_ptr->py; int px = p_ptr->px; int i, x, y; cave_type *c_ptr; /* Paranoia */ /* if (!r_idx) return; */ /* Prevent illegal monsters */ if (r_idx >= max_r_idx) return; /* Try 10 times */ for (i = 0; i < 10; i++) { int d = 1; /* Pick a location */ scatter(&y, &x, py, px, d); /* paranoia */ if (!in_bounds2(y, x)) continue; /* Require empty grids */ c_ptr = area(y, x); if (!cave_empty_grid(c_ptr)) continue; /* Place it (allow groups) */ if (place_monster_aux(y, x, r_idx, slp, TRUE, FALSE, FALSE)) break; } }
/* * Hack -- Place some sleeping monsters near the given location */ void vault_monsters(int y1, int x1, int num) { int k, i, y, x; cave_type *c_ptr; /* Try to summon "num" monsters "near" the given location */ for (k = 0; k < num; k++) { /* Try nine locations */ for (i = 0; i < 9; i++) { int d = 1; /* Pick a nearby location */ scatter(&y, &x, y1, x1, d, 0); /* Require "empty" floor grids */ c_ptr = &cave[y][x]; if (!cave_empty_grid(c_ptr)) continue; /* Place the monster (allow groups) */ monster_level = base_level + 2; (void)place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP)); monster_level = base_level; } } }