public static void Spawn(Vector2 position) { RecoverBlast recoverBlast = Engine.Pooler.Create <RecoverBlast>(); recoverBlast.Position = position; Engine.Scene.Add(recoverBlast); }
private IEnumerator RegenerateCoroutine() { yield return(1f); shaker.On = true; yield return(0.2f); sprite.Play("pulse"); yield return(0.5f); sprite.Play("recover"); RecoverBlast.Spawn(Position); yield return(0.15f); Collider = pushRadius; Player player = CollideFirst <Player>(); if (player != null && !Scene.CollideCheck <Solid>(Position, player.Center)) { player.ExplodeLaunch(Position, true, false); } Collider = physicsHitbox; Level level = SceneAs <Level>(); level.Displacement.AddBurst(Position, 0.4f, 12f, 36f, 0.5f); level.Displacement.AddBurst(Position, 0.4f, 24f, 48f, 0.5f); level.Displacement.AddBurst(Position, 0.4f, 36f, 60f, 0.5f); for (var i = 0.0f; (double)i < 6.28318548202515; i += 0.1745329f) { Vector2 at = Center + Calc.AngleToVector( i + Calc.Random.Range(-1f * (float)Math.PI / 90f, (float)Math.PI / 90f), Calc.Random.Range(12, 18)); level.Particles.Emit(Seeker.P_Regen, at, i); } shaker.On = false; state.Locked = false; state.State = 0; }