Inner Ability
On this page
Provides read access to the character's Inner Ability lines for the currently active preset.
Line Object Structure
core.inner_ability.get_current() returns an array of line objects with the following properties:
| Property | Type | Description |
|---|---|---|
skill_id | number | Option ID |
pos | number | Slot index (1-3) |
grade | number | Rarity grade (see table below) |
name | string | Option name (e.g. "Boss Damage +10%") |
Inner Ability Grades
| Grade | Name |
|---|---|
0 | Rare |
1 | Epic |
2 | Unique |
3 | Legendary |
Functions
core.inner_ability.get_current() -> table
Returns an array of the active preset's Inner Ability lines (up to 3). Returns an empty table if unavailable.
local lines = core.inner_ability.get_current()
for _, line in ipairs(lines) do
core.log(string.format("Slot %d (Grade %d): %s", line.pos, line.grade, line.name))
endcore.inner_ability.get_active_preset() -> number
Returns the index of the currently active Inner Ability preset (0-based), or -1 if none. This is the preset get_current() reads and the default target of circulate().
core.inner_ability.get_honor_exp() -> number
Returns the character's current Honor EXP — the currency spent circulating Inner Ability (capped at 9,999,999).
core.inner_ability.circulate(preset_index?: number, lock_positions?: table) -> boolean
Re-rolls (circulates) the Inner Ability lines, spending Honor EXP. preset_index (0-based) defaults to the active preset. lock_positions is an optional array of slot numbers (1-3) to keep — the rest are re-rolled. Omit to re-roll all lines. Locking is only allowed once the preset is Unique grade or higher, and at least one slot must be left to re-roll.
-- Re-roll every line of the active preset
core.inner_ability.circulate()
-- Keep slot 1, re-roll the rest
core.inner_ability.circulate(core.inner_ability.get_active_preset(), { 1 })Examples
Print the active Inner Ability setup
local lines = core.inner_ability.get_current()
if #lines == 0 then
core.log("No Inner Ability lines")
return
end
for _, line in ipairs(lines) do
core.log(string.format("[%d] %s (skill %d, grade %d)",
line.pos, line.name, line.skill_id, line.grade))
end