Why is my bool value being set to true by itself?

using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class TextChangerScript : MonoBehaviour
{
    bool end = true;

    [SerializeField]
    string strTag;

    TextMesh text;

    public TextMesh DeathAnnouncer;

    void Start()
    {
        InvokeRepeating("OutputTime", 0.5f, 0.5f);
        text = gameObject.GetComponent("TextMesh") as TextMesh;
    }
    void OutputTime()
    {
       Debug.log(end);
    }
       
    private void OnCollisionEnter(Collision collision)
    {

        if (end == true)
        {
            if (collision.collider.tag == strTag)
            {
                if (strTag == "Player1")
                {
                    DeathAnnouncer.text = "P2 Wins";
                    end = false;
                }
            }

            if (collision.collider.tag == strTag)
            {
                if (strTag == "Player2")
                {
                    DeathAnnouncer.text = "P1 Wins";
                    end = false;
                }
            }
        }
    }
}

My Issue is that the "end" bool value is being updated to true constantly. This causes it so when player 2 collides with the "Lava", it changes the text, meaning after one player dies first, the other can die and announce the wrong player as the winner. I'm new to Unity, so if someone can help me understand why the bool value is being updated, that would be appreciated.

You’re initially declaring it as a “true” boolean

I accidently applied the script twice to what I needed to apply it to. No issue.