public Character() {
        _level = 1;
        _health = 0;
        _initiative = 0;
        _attributes = new Attributes();
        _generator = new NormalSpread();
        _race = new Deva();
        _class = new Ardent();
        _classMap = new Vector<>();
        _setting = new DnD4e();

        BaseGenerator g = new SpecialSpread();
        for (BaseClass bc : _setting.getClasses()) {
            for (BaseRace br : _setting.getRaces()) {
                int[] attributes = g.getAttributes();
                Vector<Integer> bonuses = br.getBonuses();
                Vector<Integer> ranks = bc.getRanks();
                Vector<Integer> preferred = bc.getPreferred();
                int[] sums = {0, 0, 0, 0, 0, 0};
                for (int i = 0; i < 6; i++) {
                    sums[i] += (bonuses.contains(i)) ? 2 : 0;
                    sums[i] += attributes[ranks.elementAt(i)];
                }
                float average = 0;
                for (int index : preferred) {
                    average += sums[index];
                }
                average /= 3;
                ClassMap cm = new ClassMap(bc, br, Math.round(average));
                _classMap.add(cm);
            }
        }
    }