LOL i tracked down what was causing it because i was too curious. it is a frontend issue, it only happens in the day after switching between winter/summer time for people in the east hemisphere, and if it doesn't get fixed by march, we're gonna get negative times
so the startRefreshTimer() function has this variable
fullDaysRemaining = Math.floor((timerEndUTC.getTime() - nowLocalTimezone.getTime()) / 864e5)
if you're east enough that your current local time is higher than timer ending time in UTC, it equals to -1 (negative 1 day)
and when the same function checks your difference with UTC to convert current time to UTC later*
var timezoneOffset = (new Date).addDays(fullDaysRemaining).getTimezoneOffset()
it gets the timezone offset of the previous day. which had a different timezone
* which it
- doesn't actually need to add any days for, it's literally current time
- doesn't need to do at all, you could just use Date.parse() properly to convert everything to local timezone, or you know, timestamps
current time in utc even gets sent from the server in the timer element's attributes, i guess that wasn't the case when the function was written
hunt cooldown isn't affected because it's updated by a different function[why?] which uses the utc current time attribute and doesn't have this problem