private static void PlayerOnRender(On.Celeste.Player.orig_Render orig, Player self) { orig(self); foreach (Follower follower in self.Leader.Followers) { Sprite sprite = follower.Entity.Get <Sprite>(); if (sprite == null) { continue; } EntityID id = default; switch (follower.Entity) { case Strawberry berry: id = berry.ID; break; case Key key: id = key.ID; break; } if (id.Equals(default(EntityID))) { continue; } if (!Settings.TranslucentEnabled || !Settings.Enabled) { if (HasChangedFollowEntities.Contains(id)) { HasChangedFollowEntities.Remove(id); sprite.Color = Color.White; } continue; } float distance = Vector2.Distance(follower.Entity.Position, self.Position) - Settings.TransparentRadius; if (distance < 0) { distance = 0; } Color originalColor = sprite.Color; float alpha = distance / Settings.TranslucentRadius; float approachAlpha = Calc.Approach(originalColor.A, 255 * alpha, 10f); sprite.Color = Color.White * (approachAlpha / 255f); HasChangedFollowEntities.Add(id); } }