private static void doRandomSkills(final Creature cr) { int randomskills = i.rng.nextInt(4) + 4; if (cr.age() > 20) { randomskills += randomskills * (cr.age() - 20.0) / 20.0; } else { randomskills -= (20 - cr.age()) / 2; } // RANDOM STARTING SKILLS while (randomskills > 0) { final Skill randomskill = i.rng.randFromArray(Skill.values()); // 95% chance of not allowing some skills for anybody... if (randomskill == Skill.SHOOTINGUP) { continue; // don't automatically give skill in this, it's not useful } if (i.rng.likely(20) && (randomskill == HEAVYWEAPONS || randomskill == SMG || randomskill == SWORD || randomskill == RIFLE || randomskill == AXE || randomskill == CLUB || randomskill == PSYCHOLOGY)) { continue; } // 90% chance of not allowing some skills, other than // for conservatives if (i.rng.likely(10) && cr.alignment() != Alignment.CONSERVATIVE) { if (randomskill == SHOTGUN) { continue; } if (randomskill == PISTOL) { continue; } } if (cr.skill().skillCap(randomskill, true) > cr.skill().skill(randomskill)) { cr.skill().setSkill(randomskill, cr.skill().skill(randomskill) + 1); randomskills--; } while (true) { if (randomskills != 0 && i.rng.likely(2) && cr.skill().skillCap(randomskill, true) > cr.skill().skill(randomskill) && cr.skill().skill(randomskill) < 4) { cr.skill().setSkill(randomskill, cr.skill().skill(randomskill) + 1); randomskills--; } else { break; } } } }