A mode has several identifiers

Arena GUI type, arena bonus type and queue type are separate namespaces. A screen family, reward policy and queue destination need not share one identifier. Choose the identifier used by the rule being investigated rather than comparing raw numbers across namespaces.

The client capability registry is keyed by ARENA_BONUS_TYPE. It describes named features such as XP eligibility for that bonus type, rather than defining every rule of a battle mode.

The same base mode can have contextual overrides

ARENA_BONUS_TYPE_CAPS.get starts with a base capability set and can apply overrides. Omitting specificOverrides selects the global override configuration. Explicitly supplying None or an empty mapping returns the base set instead.

This makes context part of the answer. A bare lookup and a check made through a current arena or result context can legitimately differ when they use different overrides. Preserve the owning context when explaining feature availability.

Any-match and unknown-mode results need interpretation

checkAny accepts individual strings and set/frozenset groups; a group succeeds when it intersects the available capabilities. A set argument does not mean every member is required.

An unknown bonus type produces an empty base set. An uninitialized registry can do the same. An empty result alone does not establish that a recognized live mode deliberately disables a feature.

Availability windows belong to their model

Similar prime-time names do not establish one boundary convention. The periodic-mode model tests start <= query < end. The separate event-board daily-window helper includes both boundaries after aligning the configured hours and minutes to the supplied UTC date, including overnight periods.

The daily helper returns (active, startOffset, endOffset). Its PrimeTime.timeToActive() wrapper exposes the signed start offset, which can be negative during an active window. In fixed-datetime checks, 10:00–11:00 at exactly 11:00 returned (True, -3600, 0); 23:00–01:00 at 00:30 returned (True, -5400, 1800). A zero end offset therefore did not make this helper inactive.

The actual server-information presenter handles active alternative servers before choosing the minimum start offset when none are active. Preserve that caller context instead of treating the signed offset as an always-nonnegative countdown or a standalone admission predicate. These are source and selected-method checks with supplied dates; live schedules, clock alignment, rendered UI and server matchmaking were not tested.

Date-state flags can consume truncated durations

The separate EventSettings date predicates use the numeric value from getTimeStatus, whose sub-hour output truncates elapsed or remaining seconds to whole minutes. They are not direct timestamp comparisons. For a supplied end of 13:00, isFinished() remained false at 13:00:59 and became true at 13:01 in selected-method checks: the signed value changed from zero to minus one.

Keep these event-level date flags separate from the daily periphery-window predicate above. A display-duration helper's sign can lose sub-minute information; its name or unit label does not restore that precision. These fixed-date controls do not establish an observed UI delay or server eligibility rule.

Local eligibility does not prove queue acceptance

A client capability check is one part of local feature gating. It does not establish current server matchmaking rules, tier distribution, queue population or acceptance of a request. Trace the relevant queue submission and server response separately when investigating those questions.

Game files and evidence

These links follow the public repository's default branch. Search each file for the symbols below. They establish client-side calculations and state handling; they do not verify server configuration or live behavior.

Game fileSymbols to inspectWhat it establishes
arena_bonus_type_caps.pyARENA_BONUS_TYPE_CAPS.get; checkAnyBonus-type lookup, override selection and ANY matching.

Use this in a mod

Use Arena Mode Identifiers to select the correct namespace and Modes & Feature Packages to trace optional feature ownership. Decompiled control flow can be misleading; see Source Verification before interpreting an apparent branch defect.