/********************************************************************** * Attacks **********************************************************************/ static void _calc_innate_attacks(void) { int r = _rank(); /* Bite */ { innate_attack_t a = {0}; a.dd = 1; a.ds = 3 + r; a.to_h = p_ptr->lev/3; a.to_d = 2*r; a.weight = 70; a.effect[0] = GF_MISSILE; a.blows = 100; a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } /* Sting */ { innate_attack_t a = {0}; a.dd = 1; a.ds = 2 + r; a.to_h = p_ptr->lev/3; a.to_d = 2*r; a.weight = 70; a.effect[0] = GF_MISSILE; if (r >= 5) a.effect[1] = GF_POIS; a.blows = 100; a.msg = "You sting."; a.name = "Sting"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } /* Crawl */ { innate_attack_t a = {0}; a.dd = 1; a.ds = 3 + r; if (r >= 5) a.ds += 7; a.to_h = p_ptr->lev/3; a.to_d = 2*r; a.weight = 70; a.effect[0] = GF_MISSILE; calc_innate_blows(&a, 100 + 50*r); a.msg = "You crawl."; a.name = "Crawl"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
void hound_calc_innate_attacks(void) { int l = p_ptr->lev; int to_d = l/10 + l*l/500 + l*l*l/25000; 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 %s."; 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 %s."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
static void _cave_spider_calc_innate_attacks(void) { innate_attack_t a = {0}; a.dd = 1; a.ds = 5; a.weight = 70; calc_innate_blows(&a, 200); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
/* Giant Spider */ static void _giant_spider_calc_innate_attacks(void) { innate_attack_t a = {0}; a.dd = 1; a.ds = 10; a.to_d = p_ptr->lev / 5; a.weight = 70; a.effect[0] = GF_MISSILE; a.effect[1] = GF_POIS; calc_innate_blows(&a, 400); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
/**************************************************************** * Bat ****************************************************************/ static void _bat_calc_innate_attacks(void) { innate_attack_t a = {0}; a.dd = 1 + p_ptr->lev/12; a.ds = 4 + p_ptr->lev/15; a.weight = 50; a.to_h = p_ptr->lev/5; a.effect[0] = GF_OLD_DRAIN; calc_innate_blows(&a, 400); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
static void _phase_spider_calc_innate_attacks(void) { innate_attack_t a = {0}; a.dd = 2 + p_ptr->lev / 15; a.ds = 5 + p_ptr->lev / 16; a.to_h = p_ptr->lev/5; a.weight = 70; a.effect[0] = GF_MISSILE; a.effect[1] = GF_POIS; a.effect[2] = GF_OLD_SLEEP; calc_innate_blows(&a, 500); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
/* Elder Aranea */ static void _elder_aranea_calc_innate_attacks(void) { innate_attack_t a = {0}; a.dd = 2 + p_ptr->lev / 14; a.ds = 7 + p_ptr->lev / 16; a.to_h = p_ptr->lev/2; a.to_d = p_ptr->lev/5; a.weight = 200; a.effect[0] = GF_MISSILE; a.effect[1] = GF_POIS; a.effect[2] = GF_PARALYSIS; a.effect_chance[2] = 25 + 5*(p_ptr->lev - 40); calc_innate_blows(&a, 550); a.msg = "You bite."; a.name = "Bite"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
/********************************************************************** * Innate Attacks **********************************************************************/ static void _calc_innate_attacks(void) { if (!p_ptr->blind) { innate_attack_t a = {0}; int l = p_ptr->lev; a.dd = 1 + (l + 5)/12; a.ds = 6 + l/15; a.weight = 250; a.to_h = p_ptr->lev/5; a.effect[0] = GF_MISSILE; a.effect[1] = GF_DRAIN_MANA; a.effect_chance[1] = 50+l; a.effect[2] = GF_OLD_CONF; a.effect_chance[2] = 40+l; if (p_ptr->lev >= 45) { a.effect[3] = GF_STASIS; a.effect_chance[3] = 15 + l/2; } else { a.effect[3] = GF_OLD_SLEEP; a.effect_chance[3] = 30+l; } if (p_ptr->lev >= 35) { a.effect[4] = GF_STUN; a.effect_chance[4] = 15 + l/2; } calc_innate_blows(&a, 400); a.msg = "You gaze."; a.name = "Gaze"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
static void _centaur_calc_innate_attacks(void) { int l = p_ptr->lev; int to_d = l/10 + l*l/500 + l*l*l/25000; int to_h = l/2; innate_attack_t a = {0}; a.dd = 1 + l / 16; a.ds = 4 + l / 21; a.to_d += to_d; a.to_h += to_h; a.weight = 150; calc_innate_blows(&a, 200); a.msg = "You kick %s."; a.name = "Hooves"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; }
static void _jelly_calc_innate_attacks(void) { if (equip_is_empty_hand(0)) { innate_attack_t a = {0}; int l = p_ptr->lev; a.dd = 2 + l / 10; a.ds = 6 + l / 12; a.to_h += l/2; a.to_d += l/5; a.to_d += l*l/250; a.weight = 100; a.effect[0] = GF_ACID; calc_innate_blows(&a, 600); a.msg = "You shoot acid."; a.name = "Pseudopod"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
/********************************************************************** * Innate Attacks **********************************************************************/ static void _calc_innate_attacks(void) { if (p_ptr->weapon_ct == 0 && equip_find_empty_hand()) { innate_attack_t a = {0}; int l = p_ptr->lev; a.dd = 1; a.ds = 3 + l / 15; a.weight = 2; a.to_h = p_ptr->lev/5; a.effect[1] = GF_STEAL; calc_innate_blows(&a, 300); a.msg = "You pilfer."; a.name = "Greedy Hands"; p_ptr->innate_attacks[p_ptr->innate_attack_ct++] = a; } }
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; } } }