public void CastAbility(int n)
    {
        if (n >= this.Abilities.Count)
        {
            return;
        }
        if (this.Abilities[n] == null)
        {
            return;
        }
        if (this.Abilities[n].Ability == null)
        {
            return;
        }
        if (this.Abilities[n].AbilityTarget == null)
        {
            return;
        }

        var Ability           = this.Abilities[n].Ability;
        var Target            = this.Abilities[n].AbilityTarget;
        var eventTag          = Ability.Tags.AbilityTags.Added.Count > 0 ? Ability.Tags.AbilityTags.Added[0] : new GameplayTag();
        var gameplayEventData = new GameplayEventData();

        gameplayEventData.EventTag = eventTag;
        gameplayEventData.Target   = Target;

        // If ability can be activated
        if (SelfAbilitySystem.TryActivateAbility(Ability))
        {
            // Send gameplay event to this player with information on target etc
            AbilitySystemStatics.SendGameplayEventToComponent(SelfAbilitySystem, eventTag, gameplayEventData);
        }
    }
    public void CastAbility2()
    {
        var eventTag          = Ability2.Tags.AbilityTags.Count > 0 ? Ability2.Tags.AbilityTags[0] : new GameplayTag();
        var gameplayEventData = new GameplayEventData();

        gameplayEventData.EventTag = eventTag;
        gameplayEventData.Target   = this.Target2;

        // If ability can be activated
        if (SelfAbilitySystem.TryActivateAbility(Ability2))
        {
            // Send gameplay event to this player with information on target etc
            AbilitySystemStatics.SendGameplayEventToComponent(SelfAbilitySystem, eventTag, gameplayEventData);
        }
    }