Combat
Combat is fully automatic turn-based simulation. You pick the squad; the engine resolves the fight (max 100 turns safety limit). The same core powers campaign, tower, and — via a team-vs-team variant — the Arena.
battle-types).
Turn order
Units act in speed order each round. Speed = effective SPD + gear/Famion bonuses + class speed bonus (Striker +10, Reaper +5, Esper/Enforcer 0, Healer −10). Status effects like haste / slow shift it. Famions are slow (scale with affection) and generally act last.
The damage formula
Each normal attack runs this pipeline (calculateDamage):
- Stun → skip turn. Blind → 30% chance to miss.
- Attack type: Espers and Healers deal special damage (use SP.ATK vs SP.DEF); everyone else deals physical (ATK vs DEF).
- Base + variance:
attackStat × (0.8–1.2)— ±20% random spread. - Attacker passives/actives (see below) multiply damage.
- Crit: base 15% chance, ×1.5 damage. (Reaper passive adds +10% chance / +25% crit damage.)
- Element advantage: ×1.25 strong / ×0.75 weak / ×1.25 rival / ×1.15 mirror.
- Attack buffs:
attack_up×1.25,attack_down×0.75. - Defense mitigation — the target's effective DEF (or SP.DEF) is modified by:
- Enforcer Iron Will: +30% DEF when below 50% HP
- Healer Blessed Aura: +15% DEF to all allies (incl. the healer)
- Esper Arcane Mastery: attacker ignores 30% of DEF
defense_up×1.3 /defense_down×0.7- Reduction applied as
DEF / (DEF + 100)(diminishing returns)
- Element damage-taken reduction (the 0.85 / 1.15 side of the matchup).
- Shield absorbs remaining damage before HP.
- Damage floored to a minimum of 1.
Class passives & actives
| Class | Ability | Effect |
|---|---|---|
| Striker | Bloodlust (passive) | +15% damage per kill this battle (stacks) |
| Striker | Execute (active) | +50% damage vs targets below 25% HP |
| Reaper | Precision (passive) | +10% crit chance, +25% crit damage |
| Reaper | Assassinate (active) | Special hit every 3rd attack |
| Esper | Arcane Mastery (passive) | Ignores 30% of the target's DEF |
| Esper | Mind Blast (active) | AoE hit every 4th ability (replaces normal attack) |
| Enforcer | Iron Will (passive) | +30% DEF below 50% HP |
| Enforcer | Taunt (active) | Forces enemies to target it when below 50% HP |
| Healer | Blessed Aura (passive) | +15% DEF to the whole team |
| Healer | Restoration (active) | Heals the lowest-HP ally |
Rage & Ultimates
Every unit builds Rage (0–100) and fires its Ultimate at 100.
| Event | Rage gained |
|---|---|
| Deal damage | +5 |
| Land a crit | +5 (bonus) |
| Take damage | +10 |
| Score a kill | +15 |
| Starting rage | 10 |
- Rage caps at 100.
- Bosses gain 50% less rage — their ultimates come out slower.
- Ultimates are data-driven per hero (
hero.ultimate): atype(damage/heal/buff/debuff/ utility), atarget(single / all_enemies / all_allies / self / lowest_hp_ally / lowest_hp_enemy), and a list ofeffects(damage, heal, apply_buff, apply_debuff, cleanse, dispel). Enemies use class-archetype ultimates (getEnemyUltimate), stronger for bosses.
Status effects
| Effect | Type | Behaviour |
|---|---|---|
poison |
debuff | 5% max HP damage/turn |
burn |
debuff | 8% max HP damage/turn |
regen |
buff | Heals 5% max HP/turn |
curse |
debuff | Blocks all healing |
shield |
buff | Absorbs incoming damage (value-based) |
stun |
debuff | Skip turn |
blind |
debuff | 30% miss chance |
haste / slow |
buff/debuff | Shift turn order |
attack_up/down, defense_up/down |
buff/debuff | ±25% damage / ±30% DEF |
immunity |
buff | Blocks new debuffs |
Effects stack by extending duration, not intensity. Bosses resist debuff duration by 50% (rounded up).
Famions in battle
Bonded Famions join the fight as targetable units beside their hero (front = targeted first, behind = last). They attack for low power, carry their own element, and — critically — if a Famion dies, its stat buff is stripped from the bonded hero. Protecting your Famion keeps the buff alive.