… | |
… | |
784 | } |
784 | } |
785 | |
785 | |
786 | void |
786 | void |
787 | object::roll_stats () |
787 | object::roll_stats () |
788 | { |
788 | { |
789 | int statsort [7]; |
789 | int statsort [NUM_STATS]; |
790 | |
790 | |
791 | for (;;) |
791 | for (;;) |
792 | { |
792 | { |
793 | int sum = 0; |
793 | int sum = 0; |
794 | for (int i = 7; i--; ) |
794 | for (int i = NUM_STATS; i--; ) |
795 | sum += statsort [i] = roll_stat (); |
795 | sum += statsort [i] = roll_stat (); |
796 | |
796 | |
797 | if (sum >= 82 && sum <= 116) |
797 | if (sum >= 82 && sum <= 116) |
798 | break; |
798 | break; |
799 | } |
799 | } |
800 | |
800 | |
801 | // Sort the stats so that rerolling is easier... |
801 | // Sort the stats so that rerolling is easier... |
802 | std::sort (statsort, statsort + 7, std::greater<int>()); |
802 | std::sort (statsort, statsort + NUM_STATS, std::greater<int>()); |
803 | |
803 | |
|
|
804 | for (int i = 0; i < NUM_STATS; ++i) |
804 | stats.Str = statsort[0]; |
805 | stats.stat (i) = statsort [i]; |
805 | stats.Dex = statsort[1]; |
|
|
806 | stats.Con = statsort[2]; |
|
|
807 | stats.Int = statsort[3]; |
|
|
808 | stats.Wis = statsort[4]; |
|
|
809 | stats.Pow = statsort[5]; |
|
|
810 | stats.Cha = statsort[6]; |
|
|
811 | |
806 | |
812 | stats.exp = 0; |
807 | stats.exp = 0; |
813 | stats.ac = 0; |
808 | stats.ac = 0; |
814 | |
809 | |
815 | stats.hp = stats.maxhp; |
810 | stats.hp = stats.maxhp; |