Merry Christmas pushedx,
Yeah, the monster is dead by the time the rarity is attempted cached. I presume it is possible to happen on the other 'cachings' but rarity is the only one I noted.
I solved it with:
var cachedRarity = Rarity.Normal;
try
{
cachedRarity = bestTarget.Rarity;
}...