Mechanics · the hidden multiplier
SkillMod & op codes
The damage formula has a term called SkillMod. It's the part you can't see in a scout report, and it's where every hero skill, joiner skill and widget effect lives. Understanding it is the difference between bringing four copies of the same joiner and bringing four that actually multiply.
1. The four families
Four orthogonal families. Two push your damage up; two push the enemy's resistance down — and they sit on opposite sides of the fraction:
- DamageUp — effects that make your squads deal more (numerator).
- OppDefenseDown — effects that make the enemy take more (numerator).
- OppDamageDown — effects that make the enemy deal less (denominator).
- DefenseUp — effects that make your squads take less (denominator).
When you attack, it's your DamageUp and OppDefenseDown over their OppDamageDown and DefenseUp. When you defend, you swap "your" and "their." Confirmed across multiple in-game tests; this is the formula the working community simulators match against real battle reports.
2. The stacking rule
Inside a family, every effect carries an op code — a number identifying what kind of bonus it is. One rule governs all stacking, and it's the single most important thing on this page:
Effects with the same op code stack additively — sum the values, then apply once. Effects with different op codes stack multiplicatively — each contributes its own (1 + sum/100) factor.
That one rule is why composition beats duplication. Two effects on the same op add and run into diminishing relevance; two effects on different ops multiply.
3. The op-code taxonomy
Twelve op codes across the four families. This is the taxonomy the simulator uses internally.
| Op | Family | Effect |
|---|---|---|
| 101 | DamageUp | Lethality % (own) |
| 102 | DamageUp | Attack % (own) — also generic "Damage Up" |
| 103 | DamageUp | Damage Dealt % (own, multiplicative on top) |
| 104 | DamageUp | Skill Damage % — a 4th distinct op (Triton sk2 only) |
| 111 | DefenseUp | Damage Taken Down (own) |
| 112 | DefenseUp | Defense % (own) |
| 113 | DefenseUp | Health % (own) |
| 201 | OppDamageDown | Damage Dealt Down (enemy, generic) |
| 202 | OppDamageDown | Attack % Down (enemy) |
| 203 | OppDamageDown | Generic enemy damage down (cosmetic "Lethality Down" text) |
| 211 | OppDefenseDown | Damage Taken Up on enemy |
| 212 | OppDefenseDown | Defense % Down on enemy (Ava's Dissolution; added with the Gen 7 heroes) |
Probable A few assignments are reproduced by testing rather than read from the UI — notably op 103 versus 102 disambiguation (in-game "Attack Up" → 102, "Damage Dealt Up" → 103, bare "Damage Up" → 102), and Vivian's "increase enemy damage taken" landing on 211 by symmetry. The simulator lets you re-route any of these per skill if your own testing disagrees.
4. Worked stacking examples
This is where the rule earns its keep. Same total percentage, very different results depending on whether the ops match.
Four Chenkos — all op 101
Two Chenkos + two Amanes — op 101 and op 102
Same eight stars of joiners, same "+100% total," but splitting across two ops buys you a +12.5% damage advantage over stacking one. This is the canonical reason to diversify joiner skills instead of bringing four of your best one. Confirmed.
Three Gordons + one Howard — op 113 and op 111
Four Sauls — op 112 and op 113 in one skill
Saul's first skill grants both Defense and Health, so a single hero already spans two ops and multiplies with itself.
5. Chance skills and expected value
When a chance-based skill rolls successfully at the start of a round, its effect drops into the relevant op bucket for that round only. Next round it's rolled again, independently.
The simulator handles this two ways. In expected mode, a "p% chance of +V%" skill becomes a flat +(p × V / 100)% in its op bucket — the average contribution. In Monte Carlo mode it samples the Bernoulli per round and only adds the full value on a success. Same average, real variance.
Speculative Yang's third skill, Ambush, isn't a flat chance — it's a pity timer. The roll chance accumulates after each failed round and resets on a proc, so a 40% base settles to an effective rate around 58% (average cycle ≈ 1.72 rounds). This mechanic is inferred, not yet experimentally pinned, so the exact effective rate may shift if the counter caps differently.
6. Why four Jabels is still one Jabel
Non-RNG joiner skills stack additively in their op family — four flat +25% Lethality joiners genuinely give +100% on op 101. But chance-based joiner skills do not stack across copies: four Jabels produce a single roll, not four. The first one's roll counts; the rest are wasted skill slots that still bring troops.
Probable Per community testing (Daryl): chance-based skills don't stack for joiners. The Best Counter search uses this directly — it de-duplicates joiners with identical first-skill signatures before it ever simulates, so it never wastes a candidate slot on a redundant copy.
Next: the other channel — the bonuses you can see — Stat bonus aggregation →
Test a joiner combo
Quick Fight shows which skills fired each round, so you can verify the stacking yourself.