I propose that the cooldown shouldn’t be tied with the sprite’s frames (Ex: Waiting until the sprite is at its specific frame to shoot again).
It should be a separate cooldown variable that ticks down whenever it goes above 0 (Ex: Shooting will have the cooldown variable at let’s say 30). That way, you can’t shoot until the cooldown variable is at 0, even if you shoot at skinny and then quickly transition to a blimp, the cooldown variable doesn’t reset.