static void _calc_bonuses(void) { int squish = 5 + py_prorata_level(55); p_ptr->spell_cap += 3; /* Squishy */ p_ptr->to_a -= squish; p_ptr->dis_to_a -= squish; if (p_ptr->tim_resist_curses) { p_ptr->skills.sav += 20; if (p_ptr->shero) p_ptr->skills.sav += 20; } }
static void _cyber_calc_bonuses(void) { int to_a = py_prorata_level(75); p_ptr->move_random = TRUE; p_ptr->to_a += to_a; p_ptr->dis_to_a += to_a; p_ptr->pspeed -= 1 + p_ptr->lev/23; res_add(RES_FIRE); res_add(RES_POIS); /* Cyberdemons are vulnerable to confusion. See res_pct_aux() in resist.c res_add_vuln(RES_CONF); */ p_ptr->hold_life = TRUE; p_ptr->no_eldritch = TRUE; p_ptr->free_act = TRUE; }
void hound_calc_innate_attacks(void) { int l = p_ptr->lev; int to_d = py_prorata_level(15); int to_h = l/2; /* Claws */ { innate_attack_t a = {0}; a.dd = 1 + l / 17; a.ds = 3 + l / 21; a.to_d += to_d; a.to_h += to_h; a.weight = 100; calc_innate_blows(&a, 200); a.msg = "You claw."; a.name = "Claw"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } /* Bite */ { innate_attack_t a = {0}; a.dd = 1 + l / 23; a.ds = 4 + l / 5; a.to_d += to_d; a.to_h += to_h; a.weight = 200; a.effect[0] = _bite_effect(); calc_innate_blows(&a, 300); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
/****************************************************************************** * Cyberdemon ******************************************************************************/ static int _rocket_amount(void) { int pct = 15 + py_prorata_level(30); return 25 + p_ptr->chp * pct / 100; }
static void _khorne_calc_innate_attacks(void) { if (p_ptr->current_r_idx == MON_FLESHHOUND_KHORNE) { int to_d = py_prorata_level(15); int to_h = py_prorata_level(30); /* Claws */ { innate_attack_t a = {0}; a.dd = 5; a.ds = 2; a.to_d += to_d; a.to_h += to_h; a.weight = 100; calc_innate_blows(&a, 200); a.msg = "You claw."; a.name = "Claw"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } /* Bite */ { innate_attack_t a = {0}; a.dd = 10; a.ds = 2; a.to_d += to_d; a.to_h += to_h; a.weight = 200; calc_innate_blows(&a, 300); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } } else if (p_ptr->current_r_idx == MON_JUGGERNAUT_KHORNE) { int to_d = py_prorata_level(15); int to_h = py_prorata_level(30); /* Claws */ { innate_attack_t a = {0}; a.dd = 8; a.ds = 6; a.to_d += to_d; a.to_h += to_h; a.weight = 200; calc_innate_blows(&a, 400); a.msg = "You crush."; a.name = "Claw"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } /* Bite */ { innate_attack_t a = {0}; a.dd = 10; a.ds = 6; a.to_d += to_d; a.to_h += to_h; a.weight = 500; calc_innate_blows(&a, 200); a.msg = "You butt."; a.name = "Head"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } } }
static int _breath_amount(void) { int pct = 15 + py_prorata_level(15); return MAX(5, p_ptr->chp * pct / 100); }