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