// Update is called once per frame
    void Update()
    {
        HandleInput();
        DeathCheck();

        //regens
        if (boots_on == false && shield_on == false)
        {
            sta = Mathf.Min(sta + sta_regen_rate * Time.deltaTime, max_sta);
        }

        if (shield_on == false)
        {
            shield_dmg = Mathf.Max(shield_dmg + shield_regen_rate * Time.deltaTime, 0.0f);
        }


        if (berserk_cooldown_t > 0.0f)
        {
            berserk_cooldown_t -= Time.deltaTime;
        }

        //Berserk on/off.
        if (berserk_on == true)
        {
            berserk_t -= Time.deltaTime;
            if (berserk_t <= 0.0f)
            {
                berserk_on = false;
                //TODO: turn off berserk effect (highlight?)
            }
        }

        //Dodge on/off.
        if (boots_on == true)
        {
            boots_t -= Time.deltaTime;
            if (boots_t <= 0.0f)
            {
                if (dodge_enqueued == true)
                {
                    dodge_enqueued = false;
                    //TODO: refactor
                    if (sta >= boots_sta_cost)
                    {
                        sta      -= boots_sta_cost;
                        boots_dir = dodge_dir;
                        boots_t   = boots_duration;
                    }
                    else
                    {
                        //not enough stamina
                        //do breath ani.
                    }
                }
                else
                {
                    //Turn off
                    boots_on = false;
                    move_controller.move_enabled = true;
                }
            }
            else
            {
                move_controller.Move(new Vector3(boots_dir.x * boots_speed * Time.deltaTime,
                                                 boots_dir.y * boots_speed * Time.deltaTime,
                                                 0.0f));

                //Force Camera to lock onto player
                Camera.main.transform.position = new Vector3(this.gameObject.transform.position.x,
                                                             this.gameObject.transform.position.y,
                                                             Camera.main.transform.position.z);
            }
        }
    }