What It Is

A reusable damage calculation system that plugs into Gameplay Effects. It's the foundation for how damage gets processed and applied to characters in your game.

What It Does

When damage needs to be applied, this execution calculation processes it through a structured pipeline:

  1. Reads the damage value you set on the Gameplay Effect (via SetByCaller with tag Data.Damage)
  2. Applies pre-damage bonuses (buffs, weapon scaling, world context modifiers)
  3. Calculates critical hits if enabled (reads crit chance/power from SetByCaller, applies world context crit modifiers)
  4. Applies mitigation (armor/resistance - handled by child classes)
  5. Applies post-mitigation effects (shields, damage absorption - handled by child classes)
  6. Applies diminishing returns (automatic magnitude reduction for repeated effects)
  7. Applies stack scaling (optional damage multiplier based on GE stack count)
  8. Tracks overflow (overkill damage for finishing blow mechanics)
  9. Applies lifesteal (heals attacker based on damage dealt)
  10. Applies final damage to the Health attribute
  11. Triggers notifications for UI feedback, achievements, and status effect synergies

Its Purpose

Provides a standardized, extensible damage system that works on top of GAS without requiring custom components. Instead of writing damage logic from scratch for every ability, you configure this once and reuse it. Child classes can add complexity (armor, shields) without breaking the core flow.

How It's Used