Aha, bit of a weird issue. Here's what's happening...
- The event notifications are set when the education begins, with a timestamp of when the education will complete.
- These notifications are then sent when the timestamp is < the current time, via a minutely cron.
- When using Cutting Corners to reduce the education time, the notification time is updated to the new time. The update changes the notification with the oldest ID, limited to 1 row updated.
So... If a user completes their education course, and before receiving the event notification, starts a new education course, they'll have two pending notifications. If they then immediately go to use Cutting Corners during the short window while they have two pending notifications, it will instead update the oldest one, setting that to the most recent education's new time. They'll then be left with two notifications for the next education course completion, at two different times.
- I have ensured only the most recent delayed notification is updated, instead of the oldest.
- I'm clearing out the unnecessary pending delayed notification when starting a new course, so a player will never have two at the same time
Thanks!