private static void HeartGem_OnHoldable(On.Celeste.HeartGem.orig_OnHoldable orig, HeartGem self, Holdable h) { if (self is MultiDashHeartGem gem) { if (h.Dangerous(gem.baseData.Get <HoldableCollider>("holdableCollider"))) { Player player = gem.Scene.Tracker.GetEntity <Player>(); if (!gem.baseData.Get <bool>("collected") && player != null && gem.health > 1) { // Basically just HeartGem.OnPlayer if (gem.baseData.Get <float>("bounceSfxDelay") <= 0f) { Audio.Play(SFX.game_gen_crystalheart_bounce, gem.Position); gem.baseData["bounceSfxDelay"] = 0.1f; } h.PointBounce(self.Center); gem.baseData.Get <Wiggler>("moveWiggler").Start(); gem.ScaleWiggler.Start(); gem.baseData["moveWiggleDir"] = (gem.Center - player.Center).SafeNormalize(Vector2.UnitY); Input.Rumble(RumbleStrength.Medium, RumbleLength.Medium); } else { // Collect normally orig(self, h); } Console.WriteLine(gem.health); TryStartCutscene(gem.cutscenes[3 - gem.health], player); gem.Crack(player); } } else { orig(self, h); } }