Inherits from the GA_AbilityWithWidget. This ability is activated by the InputTag.Ability.Dash, an Asset tag of the Ability.Type.Action.Dash. This grants the Event.Movement.Dash. while active it uses a cooldown effect: GE_HeroDash_Cooldown: On Activation the cooldown: Checks the ability costs. If the costs can be paid, commits them, otherwise ends the ability. Checks for local control, and ends the ability on the server. In the local client, the dash direction is chosen based on input and look direction. If there's no movement input, then the ability ends on the client (dash will only happen if there's a dash direction input). Selects an animation montage to play based on the movement direction and the character's orientation. The character stops crouching if it's crouched. If the ability doesn't have authority (local client), replicates the dash direction and chosen montage through a server RPC. On both the owning client and the server, plays the chosen montage, then applies a root motion force in the dash direction. Sends a message through the messaging subsystem, so the client-side UI can synchronize its cooldown time. On the server, triggers the dash effect gameplay cue, so it is replicated to all clients When the root motion force is completed, delays for a few additional moments then ends the ability. This keeps the granted ability tags for a few extra moments and inhibits other actions such as shooting or jumping.