Trying to get Timed button presses within a timed window

I’m trying to have this behave in such a way that pressing button repeatedly performs and action like say flap wings or whatever with time set via a float that sets the time between presses the effect lasts before starting to descend, to avoid insane mashing.
furthermore to have an internal timer that starts on the first press and after a set time it disables the button use entering a tired state with the player falling, with it resetting once grounded.

Now i have it working to a point just everything is inconsistent, in that i press the button too slow it gets tired after one press, if i mash it fast enough i gain infinite height.
i have 2 intended variables. Hover Duration the time between each press, and Hover time being the overall time,
I’ve been trying various things but i’m starting to become lost in my own work and cant see what probably is obvious

 #region Hover Methods
    void Hover_InitialEvents()
    {
        HoverTimer = HoverDurration;
        // Sounds.FlySound();
        isTired = false;

        //Disable Multiple Flights
        SpecialActionAvailiable = false;

        //Set Animator Parameters
        CharacterAnimator.SetTrigger("GenericT");
        CharacterAnimator.SetInteger("Action", 82);
        CharacterAnimator.SetFloat("YSpeed", Player.p_rigidbody.velocity.y);
        CharacterAnimator.SetFloat("GroundSpeed", Player.p_rigidbody.velocity.magnitude);
        CharacterAnimator.SetBool("Grounded", Player.Grounded);
        CharacterAnimator.SetBool("isRolling", false);
        if (HoverTimer <= 0)
        {
            CharacterAnimator.SetBool("isTired", true);
        }
        else
        {
            CharacterAnimator.SetBool("isTired", false);
        }
        CharacterAnimator.SetInteger("Homing End Int", 0);
        //  Sounds.FlySound();

    }
    void Hover_FixedUpdate()
    {
        //Do flight timer countdown
        HoverTimer -= Time.deltaTime;


        if (Player.p_rigidbody.velocity.y < FallSpeed)
        {
            Player.p_rigidbody.velocity = new Vector3(Player.p_rigidbody.velocity.x, FallSpeed, Player.p_rigidbody.velocity.z);
        }
        
       if (Player.Grounded)
        {
            isTired = false;
            Actions.ChangeAction(0);
            Actions.Action06.BounceCount = 0;
            // Sounds.StopAudioLoop();
        }
    
}
    void Hover_Update()
    {
        CharacterAnimator.SetFloat("YSpeed", Player.p_rigidbody.velocity.y);

        HoverTimer -= Time.deltaTime;
        if (HoverTimer < 0 && !isTired)
        {
            HoverTimer = 0f;
            isTired = true;
        }

        //check if player is tapping R1 and isn't tired
        if (InputManager.GetButtonDown("R1-Roll") && !isTired)
        {
            Debug.Log("Testing if tapped key");
            Player.AddVelocity(new Vector3(0, FlyAccell, 0));
        }

        //set animation angle
        if (!Player.Grounded)
        {
            Vector3 VelocityMod = new Vector3(Player.p_rigidbody.velocity.x, 0, Player.p_rigidbody.velocity.z);
            Vector3 RotateMod = new Vector3(Player.RawInput.x, 0, Player.RawInput.y);
            Quaternion GlideRot = Quaternion.LookRotation(RotateMod, transform.up);
            Quaternion CharRot = Quaternion.LookRotation(VelocityMod, transform.up);
            CharacterAnimator.transform.rotation = Quaternion.Lerp(CharacterAnimator.transform.rotation, CharRot, Time.deltaTime * 200);
        }
    }

    #endregion

The only thing stopping repeat wing flapping is the variable isTired = true

And from what I can see you only get tired after the HoverTimer runs out.

I think you’re meaning to set isTired = true immediately after the flap and then set it to false after the timer runs out.

Might help to update the name to something more specific like canFlap or flapOnCooldown