public virtual void Initialize(int points)
        {
            // Melee Component Logic here
            damage      = points / 5;
            attackSpeed = points / 10;

            onHitEffect = SeedManager.Instance.GetOnHitEffect();

            name = "Balthazar's " + ToString();
        }
        public virtual void Initialize(int points)
        {
            name = "Balthazar's " + ToString();
            // Procedural Generation of the Spell Component, Needs Implementation
            manaCost = points / 2;
            range    = points / 5;

            onHitEffect = SeedManager.Instance.GetOnHitEffect();
            projectile  = SeedManager.Instance.GetProjectileComponent();
        }
        public virtual void Attack(int index)
        {
            Vector2 direction = PlayerMovement.Directions[index];
            Slash   temp      = Instantiate(slash, transform.position + PlayerMovement.Origins[index], Quaternion.identity);

            temp.transform.parent = transform;

            EffectComponent tempEffect = Instantiate(onHitEffect, temp.transform.position, Quaternion.identity);

            tempEffect.transform.parent = temp.transform;
        }
        public void HandleProjectile(int handledIndex)
        {
            Vector2    direction = PlayerMovement.Directions[handledIndex];
            Projectile temp      = Instantiate(projectile, transform.position + PlayerMovement.Origins[handledIndex], Quaternion.identity);

            temp.transform.parent = transform;

            EffectComponent tempEffect = Instantiate(onHitEffect, temp.transform.position, Quaternion.identity);

            tempEffect.transform.SetParent(temp.transform);
            temp.Launch(direction);
        }