/// <summary>Checks wether or not the player has all/any parents (depends on <see cref="RequiresAllParents"/>. If this check passes, it executes the <see cref="UnlockRequirements"/> for any specific requirements.</summary>
        /// <param name="player"></param>
        /// <returns>true if the palyer can unlock the transformation; otherwise false.</returns>
        public bool CanPlayerUnlock(MyPlayer player)
        {
            for (int i = 0; i < Parents.Length; i++)
            {
                if (RequiresAllParents & !player.HasTransformation(Parents[i]))
                {
                    return(false);
                }

                if (!RequiresAllParents && player.HasTransformation(Parents[i]))
                {
                    return(true);
                }
            }

            return(UnlockRequirements.Invoke(player));
        }
 /// <summary>The specific transformation requirements, f.e. UI Omen requires the player to be low on health and fighting a boss with substantial health.</summary>
 /// <param name="player"></param>
 /// <returns>true if not overriden or if the player meets the transformation requirements; otherwise false.</returns>
 public virtual bool MeetsTransformationRequirements(MyPlayer player) => UnlockRequirements.Invoke(player);
 public virtual bool MeetsSelectionRequirements(MyPlayer player) => PlayerHasTransformation(player) && UnlockRequirements.Invoke(player);