Set up 2 Abilities:
1.) The Charge Ability with a input condition that checks for the charge button and continually loops at the very end, so let’s say its a 2 second charge - the loop would start at 1.75s and end at 2.0s.
2.) When the condition fails and OnAbilityInterrupt/OnAbilityEnd is called, check the Ability Time Ratio (which gives you a value of 0 - 1 on when the Ability failed, timewise), and if its greater than 0.8 or whatever - branch to the full charge shot, otherwise do nothing.