It looks like the problem is that the number of days (between now and last played) is treated as a string, and not as a number.
So e.g. 500 days will work, because 365 comes before 500, but it fails for 1100 days, since 1100 comes before 365.
So 1100 is considered to be 'less' than 365.
Perhaps there is an easy solution for that, but I couldn't find it.
(thinking about it, one solution could be to pad all day fields to 5 digits, so 365 becomes 00365 and 1100 becomes 01100. I'm not going to work that out though.)So I concocted something taking a slightly different approach, I think it should work.
$If(<Last Played>="Unknown",{contrast: 70}"not played yet",$If($NumberOfDays($Now(),<Last Played>)>365,$If($Round($Div($NumberOfDays($Now(),<Last Played>),365),0)>1,$Round($Div($NumberOfDays($Now(),<Last Played>),365),0)" years ago "{contrast: 70}$Date(<Last Played>,MMM d yyyy HH:mm),$Round($Div($NumberOfDays($Now(),<Last Played>),365),0)" year ago "{contrast: 70}$Date(<Last Played>,MMM d yyyy HH:mm)),$If($NumberOfDays($Now(),<Last Played>)>1,$Char(200b)$NumberOfDays($Now(),<Last Played>)" days ago "{contrast: 70}$Date(<Last Played>,MMM d yyyy HH:mm),$If($NumberOfDays($Now(),<Last Played>)=1,$Char(200b)$Char(200b)"yesterday "{contrast: 70}$Date(<Last Played>,HH:mm),$Char(200b)$Char(200b)"today "{contrast: 70}$Date(<Last Played>,HH:mm)))))
It's a lot longer, but that is mainly because the version you used would allow output such as '1 days', '1 years', '0 days.
I added some functionality so that it will say '1 day', '1 year' and 'today' instead.
P.S.
I took the liberty to change "This is the first time" to "not played yet", so you should change that if you prefer the first one.