void freeze(object *monster) { short freeze_percent = 99; short i, n; if (rand_percent(12)) { return; } freeze_percent -= (rogue.str_current + (rogue.str_current / 2)); freeze_percent -= ((rogue.exp + ring_exp) * 4); freeze_percent -= (get_armor_class(rogue.armor) * 5); freeze_percent -= (rogue.hp_max / 3); if (freeze_percent > 10) { monster->m_flags |= FREEZING_ROGUE; message(mesg[203], 1); n = get_rand(4, 8); for (i = 0; i < n; i++) { mv_mons(); } if (rand_percent(freeze_percent)) { for (i = 0; i < 50; i++) { mv_mons(); } killed_by((object *) 0, HYPOTHERMIA); } message(you_can_move_again, 1); monster->m_flags &= (~FREEZING_ROGUE); } }
void take_a_nap(void) { short i; i = get_rand(2, 5); md_sleep(1); while (i--) { mv_mons(); } md_sleep(1); message(you_can_move_again, 0); }