rendered paste body /* Skills */ skillWindow = maxSkill - minSkill; for (i = ABILITY_NUM_TYPES; i < SKILL_NUM_TYPES; i++) { seed = frand(); training = (seed * skillWindow) + minSkill; if (TRAINING_SCALAR > 0){ switch (i) { case SKILL_CLOSE: ability1 = chr->skills[ABILITY_POWER]; ability2 = chr->skills[ABILITY_SPEED]; break; case SKILL_HEAVY: ability1 = chr->skills[ABILITY_POWER]; ability2 = chr->skills[ABILITY_ACCURACY]; break; case SKILL_ASSAULT: ability1 = chr->skills[ABILITY_ACCURACY]; ability2 = chr->skills[ABILITY_SPEED]; break; case SKILL_SNIPER: ability1 = chr->skills[ABILITY_MIND]; ability2 = chr->skills[ABILITY_ACCURACY]; break; case SKILL_EXPLOSIVE: ability1 = chr->skills[ABILITY_MIND]; ability2 = chr->skills[ABILITY_SPEED]; break; default: ability1 = training; ability2 = training; } //scale the abilitiy window to the skill window. windowScalar = skillWindow / abilityWindow; ability1 = ((ability1 - minAbility) * windowScalar) + minSkill; ability2 = ((ability2 - minAbility) * windowScalar) + minSkill; chr->skills[i] = ((TRAINING_SCALAR * training) + ability1 + ability2) / (TRAINING_SCALAR + 2); } else chr->skills[i] = training; }