// stack version
    private void SpawnOneEnemy()
    {
        if (spawnStack.Count == 0)
        {
            spawnStack = ListUtils.CreateShuffledStack(spawnPoints);
        }

        // RNG for enemy selection
        int rand = UnityEngine.Random.Range(0, 5);
        //Debug.Log(rand);

        var enemy        = new Enemy();
        var reflectEnemy = new ReflectEnemy();

        // Instantiates enemy object
        // 50% passive enemy, 50% other enemies
        if (rand == 1)
        {
            enemy = Instantiate(enemyPrefab, enemyParent.transform);
        }
        else if (rand == 2)
        {
            enemy = Instantiate(enemyPrefab2, enemyParent.transform);
        }
        else if (rand == 3)
        {
            enemy = Instantiate(enemyPrefab2, enemyParent.transform);
        }
        else if (rand == 4)
        {
            reflectEnemy = Instantiate(enemyPrefab3, enemyParent.transform);
        }

        var sp = spawnStack.Pop();

        // uses selected type of enemy
        if (rand == 1 || rand == 2 || rand == 3)
        {
            enemy.transform.position = sp.transform.position;
        }
        else if (rand == 4)
        {
            reflectEnemy.transform.position = sp.transform.position;
        }
    }
 //  Adds passive enemy value to score
 private void OnPassiveEnemyKilledEvent(ReflectEnemy passiveEnemy)
 {
     playerScore += passiveEnemy.ScoreValue;
     UpdateScore();
 }