private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     foreach (var shopid in MapTKShop.Bought.Keys)
     {
         if (MapTKShop.GetShop(Plato.ModHelper, shopid) is MapTKShop shop &&
             (shop.Restock == "Daily" || (shop.Restock == "Monthly" && Game1.dayOfMonth == 1) || (shop.Restock == "Yearly" && Game1.dayOfMonth == 1 && Game1.currentSeason.ToLower() == "spring")))
         {
             MapTKShop.Bought.Remove(shopid);
         }
     }
 }
        private void OpenMapTKShop(string shopId)
        {
            if (!string.IsNullOrEmpty(shopId) && MapTKShop.GetShop(Plato.ModHelper, shopId) is MapTKShop shop)
            {
                LastShop = shopId;

                var shopMenu = new ShopMenu(MapTKShop.GetInventory(LastShop, Plato.ModHelper), shop.Currency);

                if (shop.Restock != "Always")
                {
                    shopMenu.onPurchase = SoldItemInCustomShop;
                }

                try
                {
                    if (shop.ShopKeeper != "")
                    {
                        if (Game1.getCharacterFromName(shop.ShopKeeper) is NPC shopkeeper)
                        {
                            shopMenu.setUpShopOwner(shop.ShopKeeper);
                            shopMenu.portraitPerson = shopkeeper;
                        }
                        else
                        {
                            var npc = new NPC(null, Vector2.Zero, "Town", 0, shop.ShopKeeper.Split('.')[0], false, null, Plato.ModHelper.Content.Load <Texture2D>(Path.Combine(ShopPortraitsToken.ShopPortraitsPrefix, shop.ShopKeeper), ContentSource.GameContent));
                            shopMenu.portraitPerson = npc;
                            Game1.removeThisCharacterFromAllLocations(npc);
                        }
                    }
                }
                catch
                {
                }

                if (shop.Message != "")
                {
                    shopMenu.potraitPersonDialogue = Game1.parseText(shop.Message, Game1.dialogueFont, 304);
                }

                Game1.activeClickableMenu = shopMenu;
            }
        }