bool _mut_great_pred(int mut_idx) { if (mut_type(mut_idx) == MUT_TYPE_ACTIVATION) return FALSE; if (mut_rating(mut_idx) == MUT_RATING_GREAT) return TRUE; return FALSE; }
bool _mut_avg_plus_pred(int mut_idx) { if (mut_type(mut_idx) == MUT_TYPE_ACTIVATION) return FALSE; if (mut_rating(mut_idx) >= MUT_RATING_AVERAGE) return TRUE; return FALSE; }
bool _mut_good_plus_pred(int mut_idx) { if (mut_type(mut_idx) == MUT_TYPE_ACTIVATION) return FALSE; if (mut_rating(mut_idx) >= MUT_RATING_GOOD) return TRUE; return FALSE; }
int _mut_prob_gain(int i) { int result = _mutations[i].prob; const int racial_odds = 50; if (result == 0) return 0; if (p_ptr->pclass == CLASS_BERSERKER && mut_type(i) & MUT_TYPE_ACTIVATION) return 0; switch (i) { case MUT_CHAOS_GIFT: /* TODO: Birth Chaos Warriors with this mutation */ if (p_ptr->pclass == CLASS_CHAOS_WARRIOR) return 0; break; case MUT_BAD_LUCK: if (mut_locked(MUT_GOOD_LUCK)) return 0; break; case MUT_HYPN_GAZE: if (p_ptr->prace == RACE_VAMPIRE) return racial_odds; break; case MUT_HORNS: if (p_ptr->prace == RACE_IMP) return racial_odds; break; case MUT_SHRIEK: if (p_ptr->prace == RACE_YEEK) return racial_odds; break; case MUT_POLYMORPH: if (p_ptr->prace == RACE_BEASTMAN) return racial_odds; break; case MUT_TENTACLES: if (p_ptr->prace == RACE_MIND_FLAYER) return racial_odds; break; } if ( _mutations[i].rating < MUT_RATING_AVERAGE && mut_present(MUT_GOOD_LUCK) ) { result = 1; } if ( _mutations[i].rating > MUT_RATING_AVERAGE && mut_present(MUT_BAD_LUCK) ) { result = 1; } return result; }