Freezing Problems When Getting An Inherited Component

So I’m making a roguelike game, and one of the features is random events. I have a empty gameobject that has all the events in, and when the player enters an event space one is randomly cloned and put into the space, then the event is triggered to start.

So here is the code to make the event:

case 2:
                    if (this.transform.childCount <= 0)
                    {
                        Event = Instantiate(GameObject.FindGameObjectWithTag("Event Pool").transform.GetChild(Random.Range(0, GameObject.FindGameObjectWithTag("Event Pool").transform.childCount - 1)).gameObject);

                        Event.transform.parent = this.transform;
                    }

                    Event.GetComponent<Event>().StartEvent();
                
                    break;

The base class code for event is this:

public class Event : MonoBehaviour
{

    public virtual void StartEvent()
    {  }

    public bool IsActive(bool active)
    {
        if (active)
            return true;
        else
            return false;
    }
}

Finally the override function in my event is this:

public override void StartEvent()
    {
        manager.FadeScreen();

        while (!manager.Isfaded) { }

        Button BTN1 = GameObject.FindGameObjectWithTag("Button 1").GetComponent<Button>();
        Button BTN2 = GameObject.FindGameObjectWithTag("Button 2").GetComponent<Button>();
        Text TB = GameObject.FindGameObjectWithTag("Text Box").GetComponent<Text>();
        player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
        Cost = StartingCost + (manager.HealCount * AdditiveCost);
        RawImage background = GameObject.FindGameObjectWithTag("Background Image").GetComponent<RawImage>();
        Color temp;

        BTN1.gameObject.transform.GetChild(0).GetComponent<Text>().text = "Heal " + Cost + "G";

        if (player.gold < Cost)
        {
            BTN1.gameObject.GetComponent<Image>().color = Color.red;
        }
        else
        {
            temp = BTN1.gameObject.GetComponent<Image>().color;
            temp.a = 1;
            BTN1.gameObject.GetComponent<Image>().color = temp;
            BTN1.onClick.AddListener(HealPlayer);
        }

        BTN2.gameObject.transform.GetChild(0).GetComponent<Text>().text = "Leave";
        BTN2.onClick.AddListener(Leave);
        temp = BTN2.gameObject.GetComponent<Image>().color;
        temp.a = 1;
        BTN2.gameObject.GetComponent<Image>().color = temp;
        TB.text = "You come accross a strange statue of a beautiful woman. Upon getting closer you hear whispers in your ear. Lost soul offer up your coin to heal your wounds.";

        manager.UnFadeScreen();

        while (manager.Isfaded) { }
    }

Problem is when the player enters an event space the whole game just freezes. It seems to be when I call Event.GetComponent().StartEvent(); Any ideas?

This is an infinite loop… unless you are using some Coroutine sorcery somehow, somewhere?

while (manager.Isfaded) { }