protected IEnumerator MateRoutine(float duration, Consumer mate) { hasMated = true; GameObject matingEffectGo = null; Vector3 spawnPos = (mateTarget.transform.position + transform.position) / 2; if (MatingEffect) { matingEffectGo = Instantiate(MatingEffect, spawnPos, Quaternion.Euler(-90, 0, 0)); } yield return(new WaitForSeconds(duration)); for (int i = 0; i < consumerSettings.GetRandomOffspringCount(); i++) { Consumer offspring = Instantiate(Offspring, spawnPos, Quaternion.identity); offspring.IsOffspring = true; if (i % 2 == 0) { offspring.Gender = Gender.Female; } else { offspring.Gender = Gender.Male; } } if (Environment.Instance.currentYear > 2015) { StarfishManager.Instance.SpawnStarfish(AchievementTypes.ODD_OFFSPRING, spawnPos); } var matingPS = MatingEffect.GetComponent <ParticleSystem>(); matingPS.Stop(); if (matingPS.isStopped) { Destroy(matingEffectGo); } CurrentAction = CreatureAction.Exploring; mate.CurrentAction = CreatureAction.Exploring; yield return(new WaitForSeconds(5f)); MateFound = false; mate.MateFound = false; hasMated = false; mate.hasMated = false; }