public void PlaceItem(string item, string location)
        {
            if (shopItems.ContainsKey(location))
            {
                shopItems[location].Add(item);
            }
            else
            {
                nonShopItems.Add(location, item);
            }
            UpdateOrder(location);
            unplacedLocations.Remove(location);
            if (LogicManager.GetItemDef(item).progression)
            {
                unplacedProgression.Remove(item);
                UpdateReachableLocations(item);
            }
            else
            {
                unplacedItems.Remove(item);
            }

            if (LogicManager.GetItemDef(item).pool == "Grub")
            {
                pm.AddGrubLocation(location);
            }
            else if (LogicManager.GetItemDef(item).pool == "Essence_Boss" || LogicManager.GetItemDef(item).pool == "Root")
            {
                pm.AddEssenceLocation(location, LogicManager.GetItemDef(item).geo);
            }
            else if (LogicManager.GetItemDef(item).pool == "Flame")
            {
                pm.AddFlameLocation(location);
            }
        }
        public void PlaceItem(string item, string location)
        {
            if (shopItems.ContainsKey(location))
            {
                shopItems[location].Add(item);
            }
            else
            {
                nonShopItems.Add(location, item);
            }

            unplacedLocations.Remove(location);
            if (LogicManager.GetItemDef(item).progression)
            {
                unplacedProgression.Remove(item);
                UpdateReachableLocations(item);
            }
            else
            {
                unplacedItems.Remove(item);
            }

            if (LogicManager.GetItemsByPool("Grub").Contains(item))
            {
                pm.AddGrubLocation(location);
            }
            else if (LogicManager.GetItemsByPool("Root").Contains(item))
            {
                pm.AddEssenceLocation(location, LogicManager.GetItemDef(item).geo);
            }
            Log("Placing " + item + " at " + location + ". There are " + reachableLocations.Count + " reachable locations and " + availableCount + " available locations.");
        }