Joiner Hero Mechanics No One Told You About

To be a good rally leader or joiner, you need to understand how joiner heroes work and how their stats are calculated. They can make a huge difference in battle outcomes. A few good joiners can completely change how your rally performs.

In this article, I’ll explain some joiner mechanics that most people don’t know about.

How Joiner Heroes Work

When you launch a rally, your alliance members can send their troops and heroes. The important part is the first slot hero of each member. That hero is treated as the joiner hero.

For example, if you join with [Chenko] [Howard] [Quinn], then Chenko (the first slot) is counted as the joiner hero. The first skill of that hero (in this case, Chenko’s Stand of Arms) gets added as an extra rally skill. A rally can gain up to 4 extra skills from joiners.

  • Each member can contribute 1 joiner skill.
  • Only the first 4 members who join with a maxed first skill get counted.
  • If one of the early joiners doesn’t have their first skill maxed, then the next player in line can fill the spot.

Basically, maxed joiner skills take priority.

The Damage Formula (Simplified)

Here’s the latest simplified version of the damage formula:

Kills = √Troops × (Attack × Lethality) / (Enemy’s Defense × Enemy’s Health) × SkillMod

I’ve explained this formula in more detail in my article “Lethality, Attack, Defense & Health – What They Actually Do.” For now, what matters for joiners is the SkillMod part.

SkillMod = (DamageUp * OppDefenseDown) / (OppDamageDown * DefenseUp)

In this formula, DefenseUp and OppDamageDown come from the defender, while DamageUp and OppDefenseDown come from the attacker.

When a joiner hero’s first skill boosts Attack or Lethality, it counts as DamageUp. That means Attack and Lethality joiners basically work the same. For example, 4 Amanes = 4 Chenkos in terms of joiner value.

The only difference is in their identifiers (effect_op).

  • Attack = 102
  • Lethality = 101

Because the game treats them as separate identifiers, stacking them works differently. In Python, it looks like this:

damageUp = math.prod((1.0 + val/100.0) for val in stats_dict['DamageUp'].values())
      

Stacking Joiners: Same vs. Different

  • Stacking the same heroes → their buffs just add up.
  • Mixing different heroes → their buffs multiply, which gives more damage.

Example 1: Four of the Same Hero (Amane or Chenko, 25% each)

Four Amanes → bonus_effects['DamageUp'][102] = 25 + 25 + 25 + 25 = 100
      Four Chenkos → bonus_effects['DamageUp'][101] = 25 + 25 + 25 + 25 = 100
      
      damageUp = 1 + 100/100 = 2.0  (100% boost)
      

Example 2: Two Amanes + Two Chenkos (25% each)

Amane = effect_op 102 → total 50
      Chenko = effect_op 101 → total 50
      
      bonus_effects['DamageUp'] = {101: 50, 102: 50}
      
      damageUp = (1 + 50/100) * (1 + 50/100)
      damageUp = 1.5 * 1.5 = 2.25 (125% boost)
      

Result:

  • Four identical heroes → 2.0 (100% boost)
  • Two Amane + Two Chenko → 2.25 (125% boost)

That’s a 12.5% extra damage just from mixing heroes.

Why This Happens

The math.prod function multiplies buffs if they have different effect_op values.

  • Same effect_op → buffs only add.
  • Different effect_op → buffs compound multiplicatively.

Joiner Heroes, Their Effects & Identifiers

Here’s a list of joiner heroes and how their first skills are counted:

  • Chenko: DamageUp (101)
  • Amadeus: DamageUp (101)
  • Yeonwoo: DamageUp (101)
  • Amane: DamageUp (102)
  • Howard: DefenseUp (111)
  • Quinn: DefenseUp (111)
  • Gordon: DefenseUp (113)
  • Fahd: OppDamageDown (201)
  • Saul: DefenseUp / DefenseUp (112 / 113)
  • Hilde: DefenseUp / DamageUp (112 / 102)
  • Eric: OppDamageDown (202)
  • Margot: DamageUp (102)

If you stack joiners with the same effect but different effect_op, you’ll get a stronger SkillMod than if you use heroes with the same effect and same effect_op.

Tests

I ran a few tests on my mini accounts to show how Lethality and Attack joiners stack together. I kept the stats and troops exactly the same for both the attacker and defender — the only thing I changed was the joiners.

In the first test, I used 2 Yeonwoos as joiners, which resulted in 185 defender deaths. In the second test, I kept everything identical (since all accounts were mine) but used Yeonwoo + Amane as joiners instead — this time, the defender had 187 deaths.

The difference is small here, but it can be much bigger when you have 4 joiners (with level 5 skills) and larger troop counts.

Yeonwoo + Yeonwoo as joiners:

Yeonwoo + Amane as joiners:

I kept the stats, troops, and everything else exactly the same in both simulations — the only thing I changed was the joiner heroes.

I also ran the same battles through my battle simulator, which uses the joiner mechanics I explained at the top of this post. The results for both battles matched perfectly, proving that my explanation of the joiner mechanics and damage formula is exactly the same as what the game uses.