Skip to content

Damage Over Time (DOT)

DOT is a debuff that damages the affected fighter near the start of each normal turn. Status durations decrease separately at turn end. DOT is useful for persistent damage that does not depend on a direct attack landing each turn.

DOT bypasses shields and reduces health directly. Every active DOT instance calculates and applies its damage separately.

Damage types

The DOT's damage_type determines which value is multiplied by its configured value:

Damage type Raw damage
flat value
current_health_percent Target's current health × value
maximum_health_percent Target's maximum health × value
attack_percent Caster's effective attack when the DOT deals damage × value
initial_attack_percent Caster's attack captured when the DOT was applied × value

For current_health_percent, each DOT instance uses the health remaining when that instance resolves. Earlier DOT damage during the same turn can therefore reduce the base used by later instances.

Reduction and rounding

After calculating raw damage, Cowculator applies the affected fighter's dot_reduction and rounds the result once using round-half-up:

dot_damage = round_half_up(raw_damage × (1 - target.dot_reduction))

Example

A fighter has 1,000 maximum health and 0.3 DOT reduction. A maximum_health_percent DOT with value: 0.125 resolves as follows:

raw_damage = 1,000 × 0.125 = 125
dot_damage = round_half_up(125 × (1 - 0.3))
           = round_half_up(87.5)
           = 88

Each DOT stack keeps its own duration. At turn start, all active DOT instances resolve as one batch. If an earlier instance reduces health to 0, the remaining DOT instances still produce events with damage_applied: 0. The turn then ends before other statuses, passives, actions, regeneration, or status expiry.

Looking for exact fields?

Use the OpenAPI reference for the complete DOT schema, supported values, and validation rules.