示例#1
0
/******************************************************************************
 * Powers
 ******************************************************************************/
static int _bite_amt(void)
{
    return 5 + py_prorata_level_aux(300, 1, 2, 3);
}
static void _calc_bonuses(void) {
    int to_a = py_prorata_level_aux(25, 1, 2, 2);
    int tier = _find_tier(p_ptr->current_r_idx);

    p_ptr->skill_dig += 100;
    p_ptr->to_a += to_a;
    p_ptr->dis_to_a += to_a;

    if (tier > 3)
        p_ptr->pspeed += (tier - 3);

    switch (p_ptr->current_r_idx)
    {
    /* Tier 1 */
    case MON_LIGHT_HOUND:
        res_add(RES_LITE);
        break;
    case MON_SHADOW_HOUND:
        res_add(RES_DARK);
        res_add_vuln(RES_LITE);
        break;
    /* Tier 2 */
    case MON_FIRE_HOUND:
        res_add(RES_FIRE);
        res_add(RES_FIRE);
        res_add_vuln(RES_COLD);
        break;
    case MON_COLD_HOUND:
        res_add(RES_COLD);
        res_add(RES_COLD);
        res_add_vuln(RES_FIRE);
        break;
    case MON_ENERGY_HOUND:
        res_add(RES_ELEC);
        res_add(RES_ELEC);
        break;
    case MON_AIR_HOUND:
        res_add(RES_POIS);
        res_add(RES_POIS);
        break;
    case MON_WATER_HOUND:
        res_add(RES_ACID);
        res_add(RES_ACID);
        break;
    /* Tier 3 */
    case MON_EARTH_HOUND:
        res_add(RES_SHARDS);
        break;
    case MON_VIBRATION_HOUND:
        res_add(RES_SOUND);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_NEXUS_HOUND:
        res_add(RES_NEXUS);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_MULTI_HUED_HOUND:
        p_ptr->pspeed += 3;
        res_add(RES_FIRE);
        res_add(RES_COLD);
        res_add(RES_ACID);
        res_add(RES_ELEC);
        res_add(RES_POIS);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    /* Tier 4 */
    case MON_INERTIA_HOUND:
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_IMPACT_HOUND:
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_NETHER_HOUND:
        p_ptr->pspeed += 5;
        res_add(RES_NETHER);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    /* Tier 5 */
    case MON_GRAVITY_HOUND:
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_TIME_HOUND:
        p_ptr->pspeed += 7;
        res_add(RES_TIME);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_PLASMA_HOUND:
        p_ptr->pspeed += 5;
        res_add(RES_ELEC);
        res_add(RES_FIRE);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_CHAOS_HOUND:
        p_ptr->pspeed += 5;
        res_add(RES_CHAOS);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    /* Tier 6 */
    case MON_HOUND_OF_TINDALOS:
        p_ptr->pspeed += 7;
        res_add(RES_NETHER);
        res_add(RES_TIME);
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        p_ptr->levitation = TRUE;
        p_ptr->pass_wall = TRUE;
        p_ptr->no_passwall_dam = TRUE;
        break;
    case MON_MANA_HOUND:
        p_ptr->pspeed += 10;
        res_add(RES_CONF);
        p_ptr->free_act = TRUE;
        break;
    case MON_AETHER_HOUND:
        p_ptr->pspeed += 5;
        res_add(RES_FIRE);
        res_add(RES_COLD);
        res_add(RES_ACID);
        res_add(RES_ELEC);
        res_add(RES_POIS);
        res_add(RES_LITE);
        res_add(RES_DARK);
        res_add(RES_CONF);
        res_add(RES_NETHER);
        res_add(RES_NEXUS);
        res_add(RES_SOUND);
        res_add(RES_SHARDS);
        res_add(RES_CHAOS);
        res_add(RES_DISEN);
        res_add(RES_TIME);
        p_ptr->sh_cold = TRUE;
        p_ptr->sh_fire = TRUE;
        p_ptr->sh_elec = TRUE;
        p_ptr->free_act = TRUE;
        break;
    }
}