/****************************************************************************** * 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; } }