This Gameplay Ability is activated by the InputTag.Weapon.Reload, which is an Asset of the Ability.Type.Action.Reload tag. This grants the Event.Movement.Reload tag. While active, it will limit movement options. The reload logic revolves around three gameplay tag stacks on the associated weapon. The Lyra.ShooterGame.Weapon.MagazineSize is the maximum amount of ammo allowed per magazine for the current weapon. Lyra.ShooterGame.Weapon.MagazineAmmo is the remaining amount of ammo in the current magazine. When the amount reaches zero, the weapon must be reloaded to continue firing. Lyra.ShooterGame.Weapon.SpareAmmo is the remaining amount of ammo not in the current magazine. It overrides the K2_CanActivateAbility function, which is a Blueprint implementation of the following activation check logic: Checks if MagazineAmmo is less than MagazineSize. If false, the magazine is full, and reloading should not continue. Checks if SpareAmmo is greater than zero. If false, the player is out of ammo for this weapon. On Activation of the ability: Check for the MagazineAmmo stack count of the associated item. If there's no ammo remaining in the current magazine, it applies a tag to inhibit activation of weapon firing abilities. Plays the weapon reload animation montage, then listens for the GameplayEvent.ReloadDone event. This event is sent through an Animation Notify on the mannequin's montage. When the event is received, checks for authority (server), then performs the reload logic, which is simply changing values for the Lyra.ShooterGame.Weapon.MagazineAmmo and Lyra.ShooterGame.Weapon.SpareAmmo in the associated weapon on the character's inventory. Then ends the ability. If for any reason the event was not processed, the ability ends locally once the montage is stopped or interrupted. On End Ability is called to remove the shooting inhibition tag set on activation if it was set earlier.