public static bool CheckForMissedRewards_Prefix( CommunityCenter __instance) { try { Dictionary <int, List <int> > areaNumbersAndBundleNumbers = Reflection.GetField <Dictionary <int, List <int> > > (__instance, "areaToBundleDictionary") .GetValue(); __instance.missedRewardsChest.Value.items.Clear(); bool hasUnclaimedRewards = false; List <Item> rewards = new(); foreach (KeyValuePair <int, List <int> > areaAndBundles in areaNumbersAndBundleNumbers) { int areaNumber = areaAndBundles.Key; bool isRewardUnclaimed = areaAndBundles.Value.Any() && areaAndBundles.Value .All(bundleNumber => __instance.bundleRewards.TryGetValue(bundleNumber, out bool isUnclaimed) && isUnclaimed); if (!isRewardUnclaimed || __instance.areasComplete.Count() <= areaNumber || !__instance.areasComplete[areaNumber]) { continue; } hasUnclaimedRewards = true; rewards.Clear(); JunimoNoteMenu.GetBundleRewards(areaNumber, rewards); foreach (Item item in rewards) { __instance.missedRewardsChest.Value.addItem(item); } } if ((hasUnclaimedRewards && !__instance.missedRewardsChestVisible.Value) || (!hasUnclaimedRewards && __instance.missedRewardsChestVisible.Value)) { if (!hasUnclaimedRewards) { Vector2 missedRewardsChestTile = Reflection.GetField <Vector2> (obj: __instance, name: "missedRewardsChestTile") .GetValue(); Bundles.BroadcastPuffSprites( multiplayer: null, location: __instance, tilePosition: missedRewardsChestTile); } } __instance.showMissedRewardsChestEvent.Fire(arg: hasUnclaimedRewards); __instance.missedRewardsChestVisible.Value = hasUnclaimedRewards; return(false); } catch (Exception e) { HarmonyPatches.ErrorHandler(e); } return(true); }