/**********************************************************************
 * 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;
    }
}
Example #2
0
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;
    }
}
Example #3
0
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;
}
Example #4
0
/* 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;
}
Example #5
0
/****************************************************************
 * 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;
}
Example #6
0
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;
}
Example #7
0
/* 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;
    }
}
Example #9
0
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;
}
Example #10
0
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;
    }
}
Example #11
0
/**********************************************************************
 * 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;
    }
}
Example #12
0
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;
        }
    }
}