static void _seal_of_mirror_fn(int y, int x) { int dam = spell_power(p_ptr->lev*4 + 100); if (project_m(0, 0, y, x, dam, GF_GENOCIDE, PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP,TRUE)) { if(!cave[y][x].m_idx) remove_mirror(y,x); } }
/* * Remove all mirrors in this floor */ void remove_all_mirrors(bool explode) { int x, y; for (x = 0; x < cur_wid; x++) { for (y = 0; y < cur_hgt; y++) { if (is_mirror_grid(&cave[y][x])) { remove_mirror(y, x); if (explode) project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1); } } } }
static void _explode_fn(int y, int x) { remove_mirror(y, x); project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI, -1); }