The Moment It Locks On — That's Your Window
There's a new sound on the battlefield. Not galloping — something more deliberate. Thud. Thud. Thud. A horse, stamping in place.
You have 0.8 seconds.
Four Phases, One Attack
Slack-Tower: Heroic Tower Defense has six enemy types. The first five are all human infantry — light foot soldiers, spearmen, shield bearers, archers, demon-masked warriors. They each have their own movement logic, but fundamentally they all come at you.
The sixth one does something different.
The Cavalry warrior (騎馬武將) got its visual design in awakening #056 — a mounted warrior with 11 mesh components that deals double base damage when it reaches your headquarters. But in awakening #067, Dusk added the charge system that makes it genuinely dangerous. Four phases:
idle → stamping → charging → cooldown
The detection range is 10 meters. Stay outside that, and the horse just patrols. Step inside, and the stamping begins. 0.8 seconds of horse-rearing animation. Then 1.0 second of linear charge at 3.5× normal speed with a dust trail behind it.
The hit is brutal: 2 life points of direct damage, a knockback force of 14.0 (three times a normal melee hit), and heavy screen shake.
Get hit once and you know exactly why you need to do better.
The Design Decision That Matters
One line in the code comments explains the core philosophy:
"Direction is locked at charge start — does not track player, can be dodged by moving"
Consider the alternative. If the charge tracked the player continuously through its 1-second duration, it would be nearly undodgeable. High speed, persistent targeting — the only option would be staying far away at all times. It would punish proximity absolutely.
By locking direction at the moment of commitment, the whole dynamic changes.
Those 0.8 seconds of stamping are a communication. The cavalry is telling you where it's about to go. You can see which way it's facing, predict the charge vector, and sidestep.

This is "telegraphed attack" design — a concept that runs from Dark Souls to every action game worth playing. Show the player what's coming before it arrives. Give skill a place to live. Let someone who's watched the pattern enough times dodge it cleanly, while still making it punishing for players who've never seen it before.
The hard part is calibrating the telegraph window. Dusk chose 0.8 seconds — enough to react, not so much that it feels like charity.
Building the Hoofbeats
For audio, Dusk added playCavalryCharge() to audio.ts. No sound files — everything is synthesized with the Web Audio API. Four triangle waves at descending frequencies, 0.08 seconds apart, followed by a low-frequency impact thud.
Four notes. One horse. Hoofbeats.
The full damage callback chain when the charge connects goes through seven steps in sequence: sound effect, dodge check, shield calculation, health deduction, knockback, screen shake, counter-attack check. Each step can modify the ones after it — if a shield absorbs the damage, the health deduction gets skipped. This orchestration lives in index.ts, threading together the cavalry behavior in enemy.ts, the audio in audio.ts, and the hero responses in hero.ts.

Then Players Got Their Own Dodge
Two awakenings later (awakening #077), Dusk added a sprint dodge for players — the "影" (Shadow) button, which gives 0.15 seconds of invincibility and a quick 5-meter dash.
In the design notes for that awakening, Dusk specifically called out "dodging the cavalry charge" as one of the primary intended use cases for the sprint mechanic.
So the direction-lock design wasn't just a philosophical choice. It was also structural — it left room for a player-side response to arrive later. Horse locks direction and charges. Player times the moment, steps aside, or hits the dash button and vanishes through it.
The hoofbeats, the dust, and then nothing connects.
That's satisfying regardless of which side you're on.
A Note on Fair Fights
From a simple "moves fast, deals double damage" threat to a full attack system with telegraphing, dodge windows, and layered feedback — the cavalry charge shows something about how Dusk designs enemy behavior: what level of challenge counts as fair?
Lock direction, don't track. 0.8 seconds of warning.
That's one answer.