public void Add(string item)
        {
            item = LogicManager.RemoveDuplicateSuffix(item);
            if (!LogicManager.progressionBitMask.TryGetValue(item, out (int, int)a))
            {
                RandomizerMod.Instance.LogWarn("Could not find progression value corresponding to: " + item);
                return;
            }
            obtained[a.Item2] |= a.Item1;
            if (temp)
            {
                tempItems.Add(item);
            }
            if (share)
            {
                Share(item);
            }

            // Take into account root essence found; this should only ever happen during helper log generation
            if (RandomizerMod.Instance.Settings.RandomizeWhisperingRoots && concealRandom)
            {
                if (LogicManager.TryGetItemDef(item, out ReqDef itemDef))
                {
                    if (itemDef.pool == "Root")
                    {
                        randomEssence += itemDef.geo;
                    }
                }
            }

            RecalculateGrubs();
            RecalculateEssence();
            RecalculateFlames();
            UpdateWaypoints();
        }