Combat mechanics
The battle is a timeline, and SPD only sets how often you come up on it. A capped fight is a fixed pool of actions that the timeline shares out. Enter your speed and the opponent's and this works out who acts first, how much of the pool is yours, and exactly how much more SPD buys the next turn.
| Your SPD | First to act | Your turns | Their turns | Turn rate | One more turn at | You lose a turn below |
|---|
Every unit sits in a queue ordered by the moment it will next act. The engine takes whoever is earliest, lets
them act, then puts them back at now + interval. FightRoundComponent computes that
interval as
interval = 100000 / sqrt(SPD x rankSpeedScale)
so the number of turns you take while the opponent takes one is sqrt(your SPD / their SPD)
at the same promotion. Whoever's first interval is shorter acts first. An exact tie is a coin flip.
A round is not one turn each. The server keeps a single counter for the whole fight. Every action by a player,
a monster or an NPC adds one, and the round advances each time the counter reaches the number of such
participants. Pets act inside their owner's turn and summoned objects have their own place in the queue, and
neither adds to the counter. A fight capped at R rounds with N participants is therefore a pool of
R x N actions. SPD decides how that pool is split, not how big it is.
Between two fighters at the same promotion, with r = sqrt(your SPD / their SPD):
your turns = 2R x r / (1 + r)
their turns = 2R / (1 + r)
Read from a recorded fight (26 September 2026, a 10-round damage test on the Boss stage). A 742,236 SPD player, queue interval 116.1, faced a boss whose interval of 463.3 implies 46,588 SPD. The player took 16 turns and the boss 4. The round counter stepped at counted actions 2, 4, 6 and 8 (all the player's), 10 (the boss's), 12, 14, 16 and 18, and the fight ended on the 20th. The player's pet acted 16 times and the summoned orbs dozens of times without moving it. Two of the player's turns were pulled forward by a turn-advance effect worth 20% of an interval each. A plain merge of the two intervals gives the same 16 and 4, and with those two advances folded in it reproduces the recorded order action for action. One caution from the same session: the SPD the tap panel had shown for that boss in an earlier run did not match the interval the server used, so trust intervals over panels.
In a capped duel the pool is fixed, so an extra turn for you is one fewer for them. Moving from an even split
to R+k turns against R−k needs r = (R+k)/(R−k), a SPD ratio of
((R+k)/(R−k))². The table is the SPD you need above the opponent's at the same promotion.
The exact merge of two timelines can land one turn either side of it, so use the calculator for a specific pair.
| Round cap | +1 turn | +2 | +3 | +4 |
|---|---|---|---|---|
| 10 rounds | +49% | +125% | +245% | +444% |
| 15 rounds | +31% | +71% | +125% | +198% |
| 20 rounds | +22% | +49% | +83% | +125% |
| 30 rounds | +14% | +31% | +49% | +71% |
Every extra participant adds a whole cap's worth of actions to the pool but only its own slice of the timeline rate, so most of those actions go to whoever is fastest. Against M enemies of one SPD:
your turns = R x (1 + M) x sqrt(S) / (sqrt(S) + M x sqrt(S_enemy))
At 742,000 SPD against 139,000 SPD enemies over 10 rounds, merged exactly:
| Enemies | Pool | Your turns | Turns each of them, at most |
|---|---|---|---|
| 1 | 20 | 14 | 6 |
| 2 | 30 | 16 | 7 |
| 3 | 40 | 18 | 8 |
| 4 | 50 | 18 | 8 |
| 8 | 90 | 20 | 9 |
rankSpeedScale comes from fight_rank_offset_damage by rank family. It is constant
within a band, so it cancels in same-band fights and only matters across bands, where it is large.
| Promotion band | Scale | Effect |
|---|---|---|
| No Rank → Master III | 1 | baseline |
| Paragon I → Paragon III | 10 | ×3.16 turn rate |
| Saint I → Void III | 150 | ×12.25 turn rate |
Status effects can move a unit's next action time directly, bypassing the stat: a positive
RoundIntervalPercent advances the turn, a negative one delays it, and zero makes the unit act
immediately. The recorded fight shows this as Advance updates on the queue, each cutting the next time
by 20% of an interval. Cooldowns count the caster's own turns and SPD does not reduce them. It only brings the
turns round faster.