CrimsonCombatText · Lesson 3 of 8

Create the Motion Set & Style Registry

Beginner5 minContent

Before you start

  • Completed: Enable the Plugin
Video coming soon

Chapters

1. Create both assets

Content Browser → right-click → Crimson → Combat Text. Make a Motion Set (DA_CrimsonCombatTextMotions) and a Style Registry (DA_CrimsonCombatTextStyles), then set the registry's MotionSet to the motion asset. The motion set arrives pre-seeded with five editable presets — FloatUp, ArcOut, Burst, CritPunch, Static — so it's usable immediately.

Content Browser → Crimson → Combat Text → Motion Set and Style Registry.
Use those names and setup is zero-config
The shipped DefaultCrimsonCombatText.ini already points at DA_CrimsonCombatTextMotions and DA_CrimsonCombatTextStyles — match the names and you can skip the settings step entirely.

2. Add a style

In the registry, add a row to `Styles` keyed by the tag your gameplay code sends — Damage is the obvious first one. Set its MotionPreset to CrimsonCombatText.Motion.ArcOut and leave the rest at default. DefaultStyle catches anything unmatched.

One row covers a whole tag branch
Styles resolve hierarchically: a hit tagged Damage.Fire.Burn falls back to Damage.Fire, then Damage, then DefaultStyle. You author only the specificity you care about — one Damage row already covers every damage type.

3. Modifiers, not more rows

Conditions that cut across types — Crit, Blocked, Absorbed — go in `Modifiers`, not in Styles. Every modifier whose key is present in the event's tags layers onto whichever style matched, in ApplyOrder: a FormatWrapper can wrap the text ("{0}!" turns 123 into 123!), and a MotionPresetOverride can swap the motion wholesale — point a Crit modifier at CrimsonCombatText.Motion.CritPunch and every crit punches, whatever it hit.

Why this matters
Without modifiers a registry grows as styles × conditions — Damage.Fire.Crit, Damage.Ice.Crit, and so on forever. With them it grows as styles + conditions. If you need a genuine query with priorities, AdvancedRules is still there and wins outright when it matches.