/** * Try to break a glyph. */ static bool process_monster_glyph(struct chunk *c, struct monster *m_ptr, int nx, int ny) { assert(square_iswarded(c, ny, nx)); /* Break the ward */ if (randint1(z_info->glyph_hardness) < m_ptr->race->level) { /* Describe observable breakage */ if (square_ismark(c, ny, nx)) msg("The rune of protection is broken!"); /* Forget the rune */ sqinfo_off(c->squares[ny][nx].info, SQUARE_MARK); /* Break the rune */ square_remove_ward(c, ny, nx); return TRUE; } /* Unbroken ward - can't move */ return FALSE; }
/** * Try to break a glyph. */ static bool process_monster_glyph(struct chunk *c, struct monster *mon, int nx, int ny) { assert(square_iswarded(c, ny, nx)); /* Break the ward */ if (randint1(z_info->glyph_hardness) < mon->race->level) { /* Describe observable breakage */ if (square_isseen(c, ny, nx)) { msg("The rune of protection is broken!"); /* Forget the rune */ square_forget(c, ny, nx); } /* Break the rune */ square_remove_ward(c, ny, nx); return true; } /* Unbroken ward - can't move */ return false; }