private static IEnumerator onStrawberryCollect(On.Celeste.Strawberry.orig_CollectRoutine orig, Strawberry self, int collectIndex) { Scene scene = self.Scene; yield return(new SwapImmediately(orig(self, collectIndex))); if (self is SecretBerry berry) { // reskin the strawberry points. StrawberryPoints points = scene.Entities.ToAdd.OfType <StrawberryPoints>().First(); GFX.SpriteBank.CreateOn(points.Get <Sprite>(), berry.strawberrySprite); } }
private static IEnumerator onStrawberryCollectRoutine(On.Celeste.Strawberry.orig_CollectRoutine orig, Strawberry self, int collectIndex) { Scene scene = self.Scene; IEnumerator origEnum = orig(self, collectIndex); while (origEnum.MoveNext()) { yield return(origEnum.Current); } if (self is RainbowBerry) { // remove the strawberry points StrawberryPoints points = scene.Entities.ToAdd.OfType <StrawberryPoints>().First(); Vector2 position = points.Position; scene.Entities.ToAdd.Remove(points); // spawn a perfect effect instead scene.Add(new RainbowBerryPerfectEffect(position)); } }