Im not sure how to explain this, but I'll do my best .
The problem comes from this topic.
As I said there, I was trying to replicate the powered PhoenixRod. You start firing so you spend one rocket, if you immediatly release the altfire key you go back to Ready, but if you keep holding it you go to AltHold as expected. In the "AltHold" state, a cycle begins; this will keep firing until the specified amount of shots have been fired (via jumpifinventory and the check). If that amount wasnt reached and you stop firing, all works normally, you go to Ready. However, if you keep firing and the amount is reached, is goes to "HoldEnd" custom state; if you release the Altfire key at this point, it still works as intended, but if you keep pressing it, it will immediatly go to the AltHold state instead of the AltFire one as expected. I see this as a bug, because I was intentionally telling the weapon to go to "Ready" to restart the firing sequence if the button was held. Is very noticeable the fact that it never enters to the AltFire state because it will no longer consume ammo.
Here is the code for the weapon in case Im doing something terribly wrong
For obvious reasons this is not fixable. All I can do is add a new code pointer, A_ClearReFire. If I changed this in A_WeaponReady it would heavily affect some other weapons.