private void TryAttachToPlayer(Player player)
            {
                ParentCollection.TryAttachToPlayer(player, this);

                if (Slot != null && Slot.Active)
                {
                    Slot.Deactivate();
                    Slot = null;
                }
            }
            private IEnumerator ResetCoroutine()
            {
                Level level = Scene as Level;

                reachedLastPosition = true;
                player = null;

                if (Slot != null)
                {
                    Slot.Deactivate();
                    Slot = null;
                }

                if (tween != null)
                {
                    tween.Stop();
                    tween = null;
                }

                Collidable = false;
                Activating = false;
                Activated  = false;
                Audio.Play("event:/game/general/seed_poof", Position);
                yield return(rng.NextFloat() * 0.025f + 0.025f);

                Visible = false;
                Input.Rumble(RumbleStrength.Medium, RumbleLength.Medium);

                for (int i = 0; i < 6; i++)
                {
                    float dir = Calc.Random.NextFloat((float)Math.PI * 2f);
                    level.ParticlesFG.Emit(requiresDash ? P_Burst : P_BurstNoDash, 1, Position + Calc.AngleToVector(dir, 4f), Vector2.Zero, dir);
                }

                while (ParentCollection.killCircle != null)
                {
                    yield return(null);
                }

                yield return(rng.NextFloat() * 0.2f + 0.3f);

                Position = defaultPosition;
                Audio.Play("event:/game/general/seed_reappear", Position, "count", 1);
                Visible    = true;
                Collidable = true;
                level.Displacement.AddBurst(Position, 0.2f, 8f, 28f, 0.2f);
                sprite.Play(requiresDash ? "idle" : "noDash", true, true);
                ParentCollection.ResetDone(this);
            }