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;
    }
}
Exemple #2
0
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;
    }
}
Exemple #4
0
/******************************************************************************
 * Cyberdemon
 ******************************************************************************/
static int _rocket_amount(void)
{
    int pct = 15 + py_prorata_level(30);
    return 25 + p_ptr->chp * pct / 100;
}
Exemple #5
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;
        }
    }
}
static int _breath_amount(void)
{
    int pct = 15 + py_prorata_level(15);
    return MAX(5, p_ptr->chp * pct / 100);
}