Mercenary GenerateMercenary(SpawnableMercenary smerc)
    {
        Mercenary toReturn   = smerc.merc.Copy();
        float     difficulty = SCALING_FACTOR * MarketManager.instance.GetDifficulty();

        toReturn.attack      += Mathf.RoundToInt(difficulty * smerc.atkScaling);
        toReturn.health      += Mathf.RoundToInt(difficulty * smerc.hlthScaling);
        toReturn.attackSpeed += Mathf.RoundToInt(difficulty * smerc.spdScaling);
        return(toReturn);
    }
 IEnumerator SpawningRoutine()
 {
     while (true)
     {
         SpawnableMercenary chosen = ChoseSpawnableMercenary();
         float cost = chosen.cost + chosen.costScaling * SCALING_FACTOR * MarketManager.instance.GetDifficulty();
         while (budget < cost)
         {
             float currentBudget = MarketManager.instance.GetDifficulty();
             if (currentBudget == 0)
             {
                 MarketManager.instance.EndRoundEarly();
                 yield break;
             }
             else
             {
                 budget += Time.deltaTime * currentBudget;
             }
             yield return(0);
         }
         budget -= cost;
         queue.Enqueue(GenerateMercenary(chosen));
     }
 }