Violet

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:

PropertyTypeDescription
skill_idnumberOption ID
posnumberSlot index (1-3)
gradenumberRarity grade (see table below)
namestringOption name (e.g. "Boss Damage +10%")

Inner Ability Grades

GradeName
0Rare
1Epic
2Unique
3Legendary

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.

lua
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))
end

core.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.

lua
-- 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

lua
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