Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}