int d_dispel_abil(struct command *c) { int target = c->a; struct char_magic *p; p = rp_magic(target); if (p && p->ability_shroud > 0) { if (!charge_aura(c->who, 3)) return FALSE; wout(c->who, "Dispeled an aura %s ability shroud from %s.", nice_num(p->ability_shroud), box_name(target)); p->ability_shroud = 0; wout(target, "The magical ability shroud has dissipated."); } else { wout(c->who, "%s had no ability shroud.", box_name(target)); } return TRUE; }
static int hinder_med_chance(int who) { struct char_magic *p; p = rp_magic(who); if (p == NULL || p->hinder_meditation < 1) return 0; switch (p->hinder_meditation) { case 1: return 10; case 2: return 25; case 3: return 50; case 4: return 75; case 5: return 90; default: assert(FALSE); } }