Skill points
Skill points are what the combat skill grid is bought with. There are exactly 72 of them in the game, and the grid holds 125 — so no character can ever fill it.
The two sources
Two sources, and no others. Levelling a character from 1 to 50 pays 49 points, and 22 activities pay a further 23 between them, once each, the first time you finish them. That is 72 points in all, against the 125 the grid can hold, so the grid can never be filled.Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> playerTier -> totalSkillPoints Corroborated
Character levels
Levels 1 to 50 pay one point each after the first — 49 in all. It is the same for every character: the game keeps the running total, not a per-level award.Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> playerTier -> totalSkillPoints
The table
| Level | Points by then |
|---|---|
| 1 | 0 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 4 |
| 6 | 5 |
| 7 | 6 |
| 8 | 7 |
| 9 | 8 |
| 10 | 9 |
| 11 | 10 |
| 12 | 11 |
| 13 | 12 |
| 14 | 13 |
| 15 | 14 |
| 16 | 15 |
| 17 | 16 |
| 18 | 17 |
| 19 | 18 |
| 20 | 19 |
| 21 | 20 |
| 22 | 21 |
| 23 | 22 |
| 24 | 23 |
| 25 | 24 |
| 26 | 25 |
| 27 | 26 |
| 28 | 27 |
| 29 | 28 |
| 30 | 29 |
| 31 | 30 |
| 32 | 31 |
| 33 | 32 |
| 34 | 33 |
| 35 | 34 |
| 36 | 35 |
| 37 | 36 |
| 38 | 37 |
| 39 | 38 |
| 40 | 39 |
| 41 | 40 |
| 42 | 41 |
| 43 | 42 |
| 44 | 43 |
| 45 | 44 |
| 46 | 45 |
| 47 | 46 |
| 48 | 47 |
| 49 | 48 |
| 50 | 49 |
First completions
22 activities pay a further 23 between them. Each of these pays once. The game remembers that you have taken it, so finishing the same thing again pays nothing.Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> activities -> firstCompletionGrantedSkillPoints, awarded once and remembered by the progression flag Flag.CompletionSkillPoints.<id> (ui_src/main/_up/_up/src/missionActivities.js, read by WorldMap.js and DreamstoneShapingMenu.js)
7 campaign bosses · 12 dreamstone bosses · 3 story missions
The 22 activities
Datamined Read from the activity table, which carries the award on the row itself.
| Activity | Where | Points |
|---|---|---|
Zamora the Far-SeeingActivity.EndBoss2.Fight | Campaign boss | 1 |
The Silver MoonActivity.EndBoss3.Fight | Campaign boss | 1 |
First of the GodsmithsActivity.EndBoss4.Fight | Campaign boss | 1 |
The Crucible of SoulsActivity.EndBoss5.Fight | Campaign boss | 1 |
GodfallActivity.EndBoss6.Fight | Campaign boss | 2 |
Kragani the UnstableActivity.Exp1.EndBoss1.Fight | Campaign boss · expansion | 1 |
The Keeper of the NightActivity.Exp1.EndBoss2.Fight | Campaign boss · expansion | 1 |
Solaris AscendantActivity.Dreamstone.Final.1 | Dreamstone boss | 1 |
Macros AscendantActivity.Dreamstone.Final.12 | Dreamstone boss | 1 |
Solaris ExaltedActivity.Dreamstone.Final.13 | Dreamstone boss | 1 |
Zamora ExaltedActivity.Dreamstone.Final.14 | Dreamstone boss | 1 |
Lunara ExaltedActivity.Dreamstone.Final.16 | Dreamstone boss | 1 |
Grieves Sunsteel ExaltedActivity.Dreamstone.Final.18 | Dreamstone boss | 1 |
Gilden Commander ExaltedActivity.Dreamstone.Final.19 | Dreamstone boss | 1 |
Macros ExaltedActivity.Dreamstone.Final.21 | Dreamstone boss | 1 |
Zamora AscendantActivity.Dreamstone.Final.3 | Dreamstone boss | 1 |
Lunara AscendantActivity.Dreamstone.Final.5 | Dreamstone boss | 1 |
Grieves Sunsteel AscendantActivity.Dreamstone.Final.7 | Dreamstone boss | 1 |
Gilden Commander AscendantActivity.Dreamstone.Final.9 | Dreamstone boss | 1 |
Alluvial PlainsActivity.Story.2b | Story mission | 1 |
Leviathan's RestActivity.Story.3b | Story mission | 1 |
Floating RemnantActivity.Story.4b | Story mission | 1 |
| Total | 23 |
Two things in the files that look like the answer
Ascension grants no skill-grid points (Wyatt, 2026-10-03): Ascension points are a separate pool, earned per Ascension level and spent in the Ascension tree. The game's own menu code is a trap here. It has a function that counts one point per Ascension level and carries "skill point" in its name, and what that function counts is the other pool.
Nor from weapon mastery. The menu code has a second function that works out a point total from weapon mastery experience, but that ladder belongs to the weapon mastery trees, which have no interface in the game. Two functions look like the answer and neither is it.
Both are real functions in the menu code with the right-sounding names. What settled it was a player's own numbers refusing to fit either one.
Sources
- Point totals by level:
ui_src/main/_up/_up/src/playerXp.js (getSkillPointCountByPlayerTier), Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> playerTier and -> activities.firstCompletionGrantedSkillPoints - First completions:
Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> activities -> firstCompletionGrantedSkillPoints, awarded once and remembered by the progression flag Flag.CompletionSkillPoints.<id> (ui_src/main/_up/_up/src/missionActivities.js, read by WorldMap.js and DreamstoneShapingMenu.js) - The running total on the save:
ui_src/main/_up/_up/src/playerXp.js -> getUnspentSkillpoints, over the player record's combatMastery.skillPoints - Neither of the two traps:
ui_src/main/_up/_up/src/playerXp.js -> getNewAscensionSkillPointCount,ui_src/main/model/combat_grid_model.js -> CombatGrid.pointsForXP, reading Aperion/Content/Aperion/Data/Gameplay/SourceData/source_data.json -> weaponMastery