Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
            }
        }