Exemple #1
0
        public bool ShareStashRemoveItemPatch(On.ItemContainer.orig_RemoveItem original, ItemContainer container, Item item)
        {
            FieldInfo m_interactionTrigger = typeof(InteractionOpenContainer).GetField("m_interactionTrigger", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            InteractionOpenContainer interactionTrigger = (InteractionOpenContainer)m_interactionTrigger.GetValue(instance);

            if (container.SpecialType == ItemContainer.SpecialContainerTypes.Stash && !NetworkLevelLoader.Instance.IsSceneLoading and !interactionTrigger.IsBusy)
            {
                Debug.Log("remove item used");
                if (itemData.itemList.Contains(item.ItemID + ":" + item.UID))
                {
                    itemData.itemList.Remove(item.ItemID + ":" + item.UID);
                    initializer.SaveItems(itemData);
                    Debug.Log("item removed" + item.UID);
                }
            }
            return(original.Invoke(container, item));
        }
Exemple #2
0
        public void ShareStashOnActivationDonePatch(On.InteractionOpenContainer.orig_OnActivationDone original, InteractionOpenContainer instance)
        {
            FieldInfo     m_container = typeof(InteractionOpenContainer).GetField("m_container", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            ItemContainer container   = (ItemContainer)m_container.GetValue(instance);

            if (container.SpecialType == ItemContainer.SpecialContainerTypes.Stash)
            {
                container.ClearPouch();
                for (int i = 0; i < itemData.itemList.Count; i++)
                {
                    string localitemID  = itemData.itemList[i].Substring(0, itemData.itemList[i].IndexOf(":"));
                    string localitemUID = itemData.itemList[i].Substring(itemData.itemList[i].IndexOf(":") + 1);
                    Debug.Log("Item in container? " + container.Contains(localitemUID));
                    if (!container.Contains(localitemUID))
                    {
                        Debug.Log("item add start " + localitemUID);
                        Item localItem = ItemManager.Instance.GetItem(localitemUID);
                        if (localItem == null)
                        {
                            localItem = ItemManager.Instance.GenerateItemNetwork(Int32.Parse(localitemID));
                        }
                        itemData.itemList.RemoveAt(i);
                        localItem.Store(container);
                        localItem.ChangeParent(container.transform);
                        Debug.Log("item add finish " + localitemUID);
                    }
                }
                m_container.SetValue(instance, container);
            }
            original.Invoke(instance);
        }