Activities
On this page
Use core.activities to read the current character's boss clear limits and daily and weekly content progress: runs left, reset times, entry requirements and costs, and anything blocking a run right now.
Every function returns nil, error_message when there is no current character.
- Counts come from what the game has recorded for this character and account, so they change as soon as the game records a run. Returned tables don't update afterwards; call again to refresh.
- Boss limits and
get_resets()follow the game's server clock: daily limits reset at the start of the server day, weekly limits on Thursday and monthly limits on the 1st. Content resets on its own schedule, given by itsresets_in. - Boss clears are counted per difficulty the way the game counts them, and some bosses share one clear across their difficulties.
Boss Activity Structure
core.activities.get_bosses() and core.activities.get_boss() return boss difficulties:
| Property | Type | Description |
|---|---|---|
id | number | Boss ID |
name | string | Boss name |
difficulty | string | "easy", "normal", "hard", "chaos" or "extreme" |
period | string | How often the clear limit resets: "daily", "weekly" or "monthly" |
clears | number | Clears counted this period, never more than max_clears |
max_clears | number | Clears allowed per period |
remaining | number | Clears left this period, never negative |
resets_in | number | Seconds until the period resets |
min_level | number | Minimum level to enter |
map_id | number? | Map where the boss is entered; nil when none |
required_item | number? | Item needed to enter (the entry cost); nil when none |
party_limit | number | Largest party allowed |
solo_only | boolean | Whether the boss must be fought alone |
blockers | table<string> | Why it can't be run right now (see Blockers); empty when nothing blocks it |
blocking_quest | number? | A prerequisite quest the character still needs, set only when blockers contains "quest"; nil when the requirement isn't a single quest |
Content Activity Structure
core.activities.get_contents() returns daily and weekly content:
| Property | Type | Description |
|---|---|---|
name | string | Content name, e.g. "Monster Park" |
period | string | "daily" or "weekly" |
count | number | Progress this period: runs, clears or stages, depending on the content |
limit | number | Progress that completes the period |
remaining | number | limit - count, never negative; 0 once completed |
completed | boolean | Whether the period's limit is reached; weekly content can also be completed by a weekly cap on that kind of content, as with Epic Dungeons |
resets_in | number? | Seconds until progress resets; nil when it doesn't reset |
min_level | number | Minimum level |
required_quest | number? | Quest that must be completed first; nil when none |
map_id | number? | Content map; nil when none |
shared | string | Whose runs count toward the progress (see Shared progress) |
blockers | table<string> | As for bosses |
Shared progress
shared | Progress is shared by |
|---|---|
"character" | This character only |
"world" | The account's characters in the current world, e.g. Monster Park, Monster Park Extreme and Maple Tour |
"account" | Every character on the account, across worlds, e.g. Epic Dungeons |
Reset Times Structure
core.activities.get_resets() returns:
| Property | Type | Description |
|---|---|---|
daily | number | Seconds until the next daily reset |
weekly | number | Seconds until the next weekly reset (Thursday) |
monthly | number | Seconds until the next monthly reset (the 1st of the month) |
Blockers
blockers lists every reason a boss or content can't be run right now:
| Blocker | Meaning |
|---|---|
"level" | The character is below the level requirement |
"quest" | A prerequisite quest is not complete |
"item" | Bosses only: the entry item is not in the inventory |
"limit" | No clears left, or the content is completed this period |
"unknown" | Bosses only: the game can't check this right now, such as in the Cash Shop, during a map change, or before this character's boss clears have loaded. Treat it as not available and call again later |
Functions
core.activities.get_bosses() -> table<boss_activity> | nil, string?
Returns every boss difficulty that has a clear limit, in the game's boss list order, with each boss's easiest difficulty first.
core.activities.get_boss(boss: number | string, difficulty: string | number) -> boss_activity | nil, string?
Returns one boss difficulty. boss is a boss ID or a boss name in any letter case, such as "Lucid". difficulty is "easy", "normal", "hard", "chaos" or "extreme" in any letter case, or 0 to 4 in that order.
Returns nil, "no such boss difficulty" when that boss has no such difficulty with a clear limit. Raises an error when boss is not a number or a string, or difficulty is not one of those values.
core.activities.get_contents() -> table<content_activity> | nil, string?
Returns the daily and weekly content the game tracks progress for, such as Monster Park, Monster Park Extreme, Hyperspace Cube, Maple Tour, Epic Dungeons and the Arcane River weekly content like Erda Spectrum. Daily entries come first.
core.activities.get_resets() -> reset_times | nil, string?
Returns the seconds until the next daily, weekly and monthly reset.
Example
for _, content in ipairs(core.activities.get_contents() or {}) do
if content.name == "Monster Park" and content.remaining > 0 then
core.log(("Monster Park: %d runs left"):format(content.remaining))
end
end
local lucid = core.activities.get_boss("Lucid", "hard")
if lucid and #lucid.blockers == 0 then
core.log("Hard Lucid is available")
end