示例#1
0
 private void Start()
 {
     if (this.itemIDs != null && this.itemIDs.Length > 0)
     {
         InvEquipment invEquipment = base.GetComponent <InvEquipment>();
         if (invEquipment == null)
         {
             invEquipment = base.gameObject.AddComponent <InvEquipment>();
         }
         int max = 12;
         int i   = 0;
         int num = this.itemIDs.Length;
         while (i < num)
         {
             int         num2        = this.itemIDs[i];
             InvBaseItem invBaseItem = InvDatabase.FindByID(num2);
             if (invBaseItem != null)
             {
                 invEquipment.Equip(new InvGameItem(num2, invBaseItem)
                 {
                     quality   = (InvGameItem.Quality)UnityEngine.Random.Range(0, max),
                     itemLevel = NGUITools.RandomRange(invBaseItem.minItemLevel, invBaseItem.maxItemLevel)
                 });
             }
             else
             {
                 Debug.LogWarning("Can't resolve the item ID of " + num2);
             }
             i++;
         }
     }
     UnityEngine.Object.Destroy(this);
 }
示例#2
0
        public static bool EquipWeapon_Prefix(InvItem item, bool sfx, InvDatabase __instance)
        {
            if (item == null)
            {
                return(false);
            }

            Agent agent = __instance.agent;

            if (agent.statusEffects.hasTrait(cTrait.DrawNoBlood) && item.Categories.Contains("Piercing"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseSharp, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }
            else if (agent.statusEffects.hasTrait(cTrait.AfraidOfLoudNoises) && item.Categories.Contains("Loud") && !item.contents.Contains("Silencer"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseLoud, "Dialogue");
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }
            else if (agent.statusEffects.hasTrait(cTrait.SharpOnly) && item.Categories.Contains("Blunt"))
            {
                BMHeaderTools.SayDialogue(agent, cDialogue.CantUseBlunt, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }

            return(true);
        }
示例#3
0
        public static bool DetermineIfCanUseWeapon_Prefix(InvItem item, InvDatabase __instance, ref bool __result)
        {
            //TODO: Verify non-equipped items like Time Bomb.

            //logger.LogDebug("InvDatabase_DetermineIfCanUseWeapon");
            //logger.LogDebug("\tItem: " + item.invItemName);
            //logger.LogDebug("\tSharp: " + vItem.piercing.Contains(item.invItemName));
            //logger.LogDebug("\tLoud: " + vItem.loud.Contains(item.invItemName));

            Agent agent = __instance.agent;
            bool  fist  = (item.invItemName == vItem.Fist);

            __result = (
                (!(item.itemType == "WeaponProjectile") || !agent.statusEffects.hasTrait(vTrait.StubbyFingers) ||
                 item.Categories.Contains("NotRealWeapons")) &&
                (fist || item.Categories.Contains("NonViolent") || item.Categories.Contains("NotRealWeapons") ||
                 !agent.statusEffects.hasTrait(vTrait.Pacifist)) &&
                (fist || !agent.statusEffects.hasTrait(vTrait.SausageFingers)) &&
                (fist || !agent.statusEffects.hasTrait(vTrait.Harmless)) &&
                (fist || !agent.statusEffects.hasTrait(vTrait.NearHarmless)) &&
                (!vItem.piercing.Contains(item.invItemName) || !agent.statusEffects.hasTrait(cTrait.DrawNoBlood)) &&
                (!vItem.loud.Contains(item.invItemName) || item.contents.Contains(vItem.Silencer) ||
                 !agent.statusEffects.hasTrait(cTrait.AfraidOfLoudNoises))) ||
                       (agent.isPlayer != 0 && !agent.localPlayer);

            return(false);
        }
示例#4
0
    void Start()
    {
        if (itemIDs != null && itemIDs.Length > 0)
        {
            InvEquipment eq = GetComponent <InvEquipment>();
            if (eq == null)
            {
                eq = gameObject.AddComponent <InvEquipment>();
            }

            int qualityLevels = (int)InvGameItem.Quality._LastDoNotUse;

            for (int i = 0, imax = itemIDs.Length; i < imax; ++i)
            {
                int         index = itemIDs[i];
                InvBaseItem item  = InvDatabase.FindByID(index);

                if (item != null)
                {
                    InvGameItem gi = new InvGameItem(index, item);
                    gi.quality   = (InvGameItem.Quality)Random.Range(0, qualityLevels);
                    gi.itemLevel = NGUITools.RandomRange(item.minItemLevel, item.maxItemLevel);
                    eq.Equip(gi);
                }
                else
                {
                    Debug.LogWarning("Can't resolve the item ID of " + index);
                }
            }
        }
        Destroy(this);
    }
示例#5
0
 private void Start()
 {
     if ((this.itemIDs != null) && (this.itemIDs.Length > 0))
     {
         InvEquipment component = base.GetComponent <InvEquipment>();
         if (component == null)
         {
             component = base.gameObject.AddComponent <InvEquipment>();
         }
         int max    = 12;
         int index  = 0;
         int length = this.itemIDs.Length;
         while (index < length)
         {
             int         num4 = this.itemIDs[index];
             InvBaseItem bi   = InvDatabase.FindByID(num4);
             if (bi != null)
             {
                 InvGameItem item = new InvGameItem(num4, bi)
                 {
                     quality   = (InvGameItem.Quality)UnityEngine.Random.Range(0, max),
                     itemLevel = NGUITools.RandomRange(bi.minItemLevel, bi.maxItemLevel)
                 };
                 component.Equip(item);
             }
             else
             {
                 Debug.LogWarning("Can't resolve the item ID of " + num4);
             }
             index++;
         }
     }
     UnityEngine.Object.Destroy(this);
 }
示例#6
0
 public static void InvDatabase_ThrowWeapon(InvDatabase __instance)
 {
     if (__instance.agent?.agentHitboxScript?.heldItem2?.CurrentSprite?.__RogueLibsCustom is RogueSprite sprite)
     {
         __instance.agent.agentHitboxScript.heldItem2Renderer.sharedMaterial = sprite.Material;
     }
 }
示例#7
0
 private void Start()
 {
     if (itemIDs != null && itemIDs.Length > 0)
     {
         InvEquipment invEquipment = GetComponent <InvEquipment>();
         if (invEquipment == null)
         {
             invEquipment = base.gameObject.AddComponent <InvEquipment>();
         }
         int max = 12;
         int i   = 0;
         for (int num = itemIDs.Length; i < num; i++)
         {
             int         num2        = itemIDs[i];
             InvBaseItem invBaseItem = InvDatabase.FindByID(num2);
             if (invBaseItem != null)
             {
                 InvGameItem invGameItem = new InvGameItem(num2, invBaseItem);
                 invGameItem.quality   = (InvGameItem.Quality)Random.Range(0, max);
                 invGameItem.itemLevel = NGUITools.RandomRange(invBaseItem.minItemLevel, invBaseItem.maxItemLevel);
                 invEquipment.Equip(invGameItem);
             }
             else
             {
                 Debug.LogWarning("Can't resolve the item ID of " + num2);
             }
         }
     }
     Object.Destroy(this);
 }
示例#8
0
        /// <summary>
        ///   <para>Finds an item hook that is assignable to a variable of <typeparamref name="TItem"/> type in the current <paramref name="inventory"/>.</para>
        /// </summary>
        /// <typeparam name="TItem">The type of the item hook to search for.</typeparam>
        /// <param name="inventory">The current inventory.</param>
        /// <returns>An item hook assignable to a variable of <typeparamref name="TItem"/> type, if found; otherwise, <see langword="default"/>.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="inventory"/> is <see langword="null"/>.</exception>
        public static TItem GetItem <TItem>(this InvDatabase inventory)
        {
            if (inventory is null)
            {
                throw new ArgumentNullException(nameof(inventory));
            }
            InvItem item = inventory.InvItemList.Find(i => i.GetHook <TItem>() != null);

            return(item != null?item.GetHook <TItem>() : default);
示例#9
0
    public static InvBaseItem FindByID(int id32)
    {
        InvDatabase database = GetDatabase(id32 >> 0x10);

        if (database != null)
        {
            return(database.GetItem(id32 & 0xffff));
        }
        return(null);
    }
示例#10
0
	/// <summary>
	/// Helper function that sets the index to the index of the specified item.
	/// </summary>

	public static void SelectIndex (InvDatabase db, InvBaseItem item)
	{
		mIndex = 0;

		foreach (InvBaseItem i in db.items)
		{
			if (i == item) break;
			++mIndex;
		}
	}
    // Token: 0x060000F7 RID: 247 RVA: 0x00012110 File Offset: 0x00010310
    public static InvBaseItem FindByID(int id32)
    {
        InvDatabase database = InvDatabase.GetDatabase(id32 >> 16);

        if (!(database != null))
        {
            return(null);
        }
        return(database.GetItem(id32 & 65535));
    }
示例#12
0
    /// <summary>
    /// Find a database given its ID.
    /// </summary>

    static InvDatabase GetDatabase(int dbID)
    {
        for (int i = 0, imax = list.Length; i < imax; ++i)
        {
            InvDatabase db = list[i];
            if (db.databaseID == dbID)
            {
                return(db);
            }
        }
        return(null);
    }
示例#13
0
        public static bool EquipArmorHead_Prefix(InvItem item, bool sfx, InvDatabase __instance)
        {
            if (item.isArmorHead && item != null && __instance.agent.statusEffects.hasTrait(cTrait.FatHead))
            {
                BMHeaderTools.SayDialogue(__instance.agent, cDialogue.CantWearHeadgear, vNameType.Dialogue);
                GC.audioHandler.Play(__instance.agent, "CantDo");

                return(false);
            }

            return(true);
        }
示例#14
0
 public void setItemInfo(bool b)
 {
     if (b)
     {
         itemNameLabel.GetComponent <UILabel> ().text = InvDatabase.FindByName(selectedSlot.getObj().name).name;
         itemInfoLabel.GetComponent <UILabel> ().text = InvDatabase.FindByName(selectedSlot.getObj().name).description;
     }
     else
     {
         itemInfoLabel.GetComponent <UILabel> ().text = "";
         itemNameLabel.GetComponent <UILabel> ().text = "";
     }
 }
示例#15
0
    /// <summary>
    /// Helper function that sets the index to the index of the specified item.
    /// </summary>

    public static void SelectIndex(InvDatabase db, InvBaseItem item)
    {
        mIndex = 0;

        foreach (InvBaseItem i in db.items)
        {
            if (i == item)
            {
                break;
            }
            ++mIndex;
        }
    }
示例#16
0
    /// <summary>
    /// Get the full 32-bit ID of the specified item.
    /// Use this to get a list of items on the character that can get saved out to an external database or file.
    /// </summary>

    static public int FindItemID(InvBaseItem item)
    {
        for (int i = 0, imax = list.Length; i < imax; ++i)
        {
            InvDatabase db = list[i];

            if (db.items.Contains(item))
            {
                return((db.databaseID << 16) | item.id16);
            }
        }
        return(-1);
    }
示例#17
0
    /// <summary>
    /// Draw the custom wizard.
    /// </summary>

    void OnGUI()
    {
        NGUIEditorTools.SetLabelWidth(80f);
        string newItemName = EditorGUILayout.TextField("Search for:", mItemName);

        NGUIEditorTools.DrawSeparator();

        if (GUI.changed || newItemName != mItemName)
        {
            mItemName = newItemName;

            if (string.IsNullOrEmpty(mItemName))
            {
                mResults.Clear();
            }
            else
            {
                FindAllByName(mItemName);
            }
        }

        if (mResults.Count == 0)
        {
            if (!string.IsNullOrEmpty(mItemName))
            {
                GUILayout.Label("No matches found");
            }
        }
        else
        {
            Print3("Item ID", "Item Name", "Path", false);
            NGUIEditorTools.DrawSeparator();
            {
                var __list1      = mResults;
                var __listCount1 = __list1.Count;
                for (int __i1 = 0; __i1 < __listCount1; ++__i1)
                {
                    var fr = (FindResult)__list1[__i1];
                    {
                        if (Print3(InvDatabase.FindItemID(fr.item).ToString(),
                                   fr.item.name, NGUITools.GetHierarchy(fr.db.gameObject), true))
                        {
                            InvDatabaseInspector.SelectIndex(fr.db, fr.item);
                            Selection.activeGameObject = fr.db.gameObject;
                            EditorUtility.SetDirty(Selection.activeGameObject);
                        }
                    }
                }
            }
        }
    }
示例#18
0
    public static int FindItemID(InvBaseItem item)
    {
        int i = 0;

        for (int num = list.Length; i < num; i++)
        {
            InvDatabase invDatabase = list[i];
            if (invDatabase.items.Contains(item))
            {
                return((invDatabase.databaseID << 16) | item.id16);
            }
        }
        return(-1);
    }
示例#19
0
    private static InvDatabase GetDatabase(int dbID)
    {
        int i = 0;

        for (int num = list.Length; i < num; i++)
        {
            InvDatabase invDatabase = list[i];
            if (invDatabase.databaseID == dbID)
            {
                return(invDatabase);
            }
        }
        return(null);
    }
示例#20
0
        /// <summary>
        ///   <para>Adds the specified <paramref name="amount"/> of the <typeparamref name="TItem"/> item to the current <paramref name="inventory"/>.</para>
        /// </summary>
        /// <typeparam name="TItem">The type of the item to add to the <paramref name="inventory"/>.</typeparam>
        /// <param name="inventory">The current inventory.</param>
        /// <param name="amount">The amount of the item to add.</param>
        /// <returns>The added item, if found in the inventory; otherwise, <see langword="null"/>.</returns>
        /// <exception cref="ArgumentNullException"><paramref name="inventory"/> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentOutOfRangeException"><paramref name="amount"/> is less than or equal to 0.</exception>
        public static TItem AddItem <TItem>(this InvDatabase inventory, int amount) where TItem : CustomItem
        {
            if (inventory is null)
            {
                throw new ArgumentNullException(nameof(inventory));
            }
            if (amount <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(amount), amount, $"{nameof(amount)} is less than or equal to 0.");
            }
            InvItem item = inventory.AddItem(ItemInfo.Get <TItem>().Name, amount);

            return(item?.GetHook <TItem>());
        }
示例#21
0
    // Token: 0x06002FA0 RID: 12192 RVA: 0x000E8838 File Offset: 0x000E6C38
    private static InvDatabase GetDatabase(int dbID)
    {
        int i   = 0;
        int num = InvDatabase.list.Length;

        while (i < num)
        {
            InvDatabase invDatabase = InvDatabase.list[i];
            if (invDatabase.databaseID == dbID)
            {
                return(invDatabase);
            }
            i++;
        }
        return(null);
    }
示例#22
0
    // Token: 0x06002FA3 RID: 12195 RVA: 0x000E8924 File Offset: 0x000E6D24
    public static int FindItemID(InvBaseItem item)
    {
        int i   = 0;
        int num = InvDatabase.list.Length;

        while (i < num)
        {
            InvDatabase invDatabase = InvDatabase.list[i];
            if (invDatabase.items.Contains(item))
            {
                return(invDatabase.databaseID << 16 | item.id16);
            }
            i++;
        }
        return(-1);
    }
示例#23
0
    private static InvDatabase GetDatabase(int dbID)
    {
        int index  = 0;
        int length = list.Length;

        while (index < length)
        {
            InvDatabase database = list[index];
            if (database.databaseID == dbID)
            {
                return(database);
            }
            index++;
        }
        return(null);
    }
示例#24
0
    public static int FindItemID(InvBaseItem item)
    {
        int index  = 0;
        int length = list.Length;

        while (index < length)
        {
            InvDatabase database = list[index];
            if (database.items.Contains(item))
            {
                return((database.databaseID << 0x10) | item.id16);
            }
            index++;
        }
        return(-1);
    }
示例#25
0
    /// <summary>
    /// Draw the custom wizard.
    /// </summary>

    void OnGUI()
    {
        EditorGUIUtility.LookLikeControls(80f);
        string newItemName = EditorGUILayout.TextField("Search for:", mItemName);

        NGUIEditorTools.DrawSeparator();

        if (GUI.changed || newItemName != mItemName)
        {
            mItemName = newItemName;

            if (string.IsNullOrEmpty(mItemName))
            {
                mResults.Clear();
            }
            else
            {
                FindAllByName(mItemName);
            }
        }

        if (mResults.Count == 0)
        {
            if (!string.IsNullOrEmpty(mItemName))
            {
                GUILayout.Label("No matches found");
            }
        }
        else
        {
            Print3("Item ID", "Item Name", "Path", false);
            NGUIEditorTools.DrawSeparator();

            foreach (FindResult fr in mResults)
            {
                if (Print3(InvDatabase.FindItemID(fr.item).ToString(),
                           fr.item.name, NGUITools.GetHierarchy(fr.db.gameObject), true))
                {
                    InvDatabaseInspector.SelectIndex(fr.db, fr.item);
                    Selection.activeGameObject = fr.db.gameObject;
                    EditorUtility.SetDirty(Selection.activeGameObject);
                }
            }
        }
    }
示例#26
0
    /// <summary>
    /// Find the item with the specified name.
    /// </summary>

    static public InvBaseItem FindByName(string exact)
    {
        for (int i = 0, imax = list.Length; i < imax; ++i)
        {
            InvDatabase db = list[i];

            for (int b = 0, bmax = db.items.Count; b < bmax; ++b)
            {
                InvBaseItem item = db.items[b];

                if (item.name == exact)
                {
                    return(item);
                }
            }
        }
        return(null);
    }
示例#27
0
    /// <summary>
    /// Helper function that sets the index to the index of the specified item.
    /// </summary>

    public static void SelectIndex(InvDatabase db, InvBaseItem item)
    {
        mIndex = 0;
        {
            var __list1      = db.items;
            var __listCount1 = __list1.Count;
            for (int __i1 = 0; __i1 < __listCount1; ++__i1)
            {
                var i = (InvBaseItem)__list1[__i1];
                {
                    if (i == item)
                    {
                        break;
                    }
                    ++mIndex;
                }
            }
        }
    }
示例#28
0
    public static InvBaseItem FindByName(string exact)
    {
        int i = 0;

        for (int num = list.Length; i < num; i++)
        {
            InvDatabase invDatabase = list[i];
            int         j           = 0;
            for (int count = invDatabase.items.Count; j < count; j++)
            {
                InvBaseItem invBaseItem = invDatabase.items[j];
                if (invBaseItem.name == exact)
                {
                    return(invBaseItem);
                }
            }
        }
        return(null);
    }
示例#29
0
    public static InvBaseItem FindByName(string exact)
    {
        int index  = 0;
        int length = list.Length;

        while (index < length)
        {
            InvDatabase database = list[index];
            int         num3     = 0;
            int         count    = database.items.Count;
            while (num3 < count)
            {
                InvBaseItem item = database.items[num3];
                if (item.name == exact)
                {
                    return(item);
                }
                num3++;
            }
            index++;
        }
        return(null);
    }
示例#30
0
    // Token: 0x06002FA2 RID: 12194 RVA: 0x000E88B0 File Offset: 0x000E6CB0
    public static InvBaseItem FindByName(string exact)
    {
        int i   = 0;
        int num = InvDatabase.list.Length;

        while (i < num)
        {
            InvDatabase invDatabase = InvDatabase.list[i];
            int         j           = 0;
            int         count       = invDatabase.items.Count;
            while (j < count)
            {
                InvBaseItem invBaseItem = invDatabase.items[j];
                if (invBaseItem.name == exact)
                {
                    return(invBaseItem);
                }
                j++;
            }
            i++;
        }
        return(null);
    }
示例#31
0
    private void Start()
    {
        if (itemIDs != null && itemIDs.Length > 0)
        {
            var component = GetComponent <InvEquipment>();
            if (component == null)
            {
                component = gameObject.AddComponent <InvEquipment>();
            }

            var max    = 12;
            var index  = 0;
            var length = itemIDs.Length;
            while (index < length)
            {
                var num4 = itemIDs[index];
                var bi   = InvDatabase.FindByID(num4);
                if (bi != null)
                {
                    var item = new InvGameItem(num4, bi)
                    {
                        quality = (InvGameItem.Quality)Random.Range(0, max), itemLevel = NGUITools.RandomRange(bi.minItemLevel, bi.maxItemLevel)
                    };
                    component.Equip(item);
                }
                else
                {
                    Debug.LogWarning("Can't resolve the item ID of " + num4);
                }

                index++;
            }
        }

        Destroy(this);
    }