Exemplo n.º 1
0
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);
    }
}
Exemplo n.º 2
0
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);
}