コード例 #1
0
        // generates a random item from given type category.
        // we can also set a difficulty mode parameter here, but it seems current db doesnt have nightmare or hell-mode items with valid snoId's /raist.
        public static Item GenerateRandom(NullD.Core.GS.Actors.Actor player, ItemTypeTable type)
        {
            var itemDefinition = GetRandom(Items.Values
                                           .Where(def => ItemGroup
                                                  .HierarchyToHashList(ItemGroup.FromHash(def.ItemType1)).Contains(type.Hash)).ToList(), (player as Player));

            return(CreateItem(player, itemDefinition));
        }
コード例 #2
0
 private static void SetAllowedTypes()
 {
     foreach (int hash in ItemGroup.SubTypesToHashList("Weapon"))
     {
         AllowedWeaponTypes.Add(hash);
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in ItemGroup.SubTypesToHashList("Armor"))
     {
         AllowedArmorTypes.Add(hash);
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in ItemGroup.SubTypesToHashList("Offhand"))
     {
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in ItemGroup.SubTypesToHashList("Jewelry"))
     {
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in ItemGroup.SubTypesToHashList("Utility"))
     {
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in ItemGroup.SubTypesToHashList("CraftingPlan"))
     {
         AllowedItemTypes.Add(hash);
     }
     foreach (int hash in TypeHandlers.Keys)
     {
         if (AllowedItemTypes.Contains(hash))
         {
             // already added structure
             continue;
         }
         foreach (int subhash in ItemGroup.SubTypesToHashList(ItemGroup.FromHash(hash).Name))
         {
             if (AllowedItemTypes.Contains(subhash))
             {
                 // already added structure
                 continue;
             }
             AllowedItemTypes.Add(subhash);
         }
     }
 }
コード例 #3
0
ファイル: Item.cs プロジェクト: realTobby/NullD
 private void SetInitialValues(ItemTable definition)
 {
     this.ItemDefinition    = definition;
     this.ItemLevel         = definition.ItemLevel;
     this.GBHandle.Type     = (int)GBHandleType.Gizmo;
     this.GBHandle.GBID     = definition.Hash;
     this.ItemType          = ItemGroup.FromHash(definition.ItemType1);
     this.EquipmentSlot     = 0;
     this.InventoryLocation = new Vector2D {
         X = 0, Y = 0
     };
     this.Scale     = 1.0f;
     this.RotationW = 0.0f;
     this.RotationAxis.Set(0.0f, 0.0f, 1.0f);
     this.CurrentState = ItemState.Normal;
     this.Field2       = 0x00000000;
     this.Field7       = 0;
     this.NameSNOId    = -1;   // I think it is ignored anyways - farmy
     this.Field10      = 0x00;
 }
コード例 #4
0
        public static Type GetItemClass(ItemTable definition)
        {
            Type type = typeof(Item);

            if (GBIDHandlers.ContainsKey(definition.Hash))
            {
                type = GBIDHandlers[definition.Hash];
            }
            else
            {
                foreach (var hash in ItemGroup.HierarchyToHashList(ItemGroup.FromHash(definition.ItemType1)))
                {
                    if (TypeHandlers.ContainsKey(hash))
                    {
                        type = TypeHandlers[hash];
                        break;
                    }
                }
            }

            return(type);
        }
コード例 #5
0
        private static ItemTable GetRandom(List <ItemTable> pool, Player player)
        {
            var       found          = false;
            ItemTable itemDefinition = null;

            //if (player.Toon.Class == ToonClass.Monk)
            while (!found)
            {
                itemDefinition = pool[RandomHelper.Next(0, pool.Count() - 1)];

                if (itemDefinition.SNOActor == -1)
                {
                    continue;
                }

                // if ((itemDefinition.ItemType1 == StringHashHelper.HashItemName("Book")) && (itemDefinition.BaseGoldValue != 0)) return itemDefinition; // testing books /xsochor
                // if (itemDefinition.ItemType1 != StringHashHelper.HashItemName("Book")) continue; // testing books /xsochor
                // if (!ItemGroup.SubTypesToHashList("SpellRune").Contains(itemDefinition.ItemType1)) continue; // testing spellrunes /xsochor

                if (itemDefinition.Name.ToLower().Contains("gold"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("healthglobe"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("_104"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("pvp"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("unique"))
                {
                    if (player != null)
                    {
                        if (player.Attributes[GameAttribute.Skill, 30476] == 1)
                        {
                            int Percent = RandomHelper.Next(0, 1000);
                            if (Percent < 880)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            int Percent = RandomHelper.Next(0, 1000);
                            if (Percent < 980)
                            {
                                continue;
                            }
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                if (itemDefinition.Name.ToLower().Contains("dye"))
                {
                    if (player != null)
                    {
                        if (player.Attributes[GameAttribute.Skill, 30476] == 1)
                        {
                            int Percent = RandomHelper.Next(0, 1000);
                            if (Percent < 880)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            int Percent = RandomHelper.Next(0, 1000);
                            if (Percent < 980)
                            {
                                continue;
                            }
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                if (itemDefinition.Name.ToLower().Contains("crafted"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("test"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("debug"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("missing"))
                {
                    continue;                                                    //I believe I've seen a missing item before, may have been affix though. //Wetwlly
                }
                if ((itemDefinition.ItemType1 == StringHashHelper.HashItemName("Book")) && (itemDefinition.BaseGoldValue == 0))
                {
                    continue;                                                                                                             // i hope it catches all lore with npc spawned /xsochor
                }
                //if (itemDefinition.Name.Contains("Debug"))  continue;
                //if (itemDefinition.Quality == ItemTable.ItemQuality.Invalid) continue;
                if (itemDefinition.Name.Contains("StaffOfCow"))
                {
                    continue;
                }
                if (itemDefinition.Name.Contains("NephalemCube"))
                {
                    continue;
                }
                if (itemDefinition.Name.Contains("BladeoftheAncients"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("book"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("staffofcow"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("angelwings"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("journal"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("lore"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("craftingplan"))
                {
                    continue;
                }
                if (itemDefinition.Name.ToLower().Contains("set"))
                {
                    continue;
                }
                if (itemDefinition.Name.Contains("TalismanUnlock"))
                {
                    continue;
                }
                if (itemDefinition.Name.Contains("StoneOfRecall"))
                {
                    continue;
                }

                if (!GBIDHandlers.ContainsKey(itemDefinition.Hash) &&
                    !AllowedItemTypes.Contains(itemDefinition.ItemType1))
                {
                    continue;
                }

                if (player != null)
                {
                    if (player.Toon.Level <= 60)
                    {
                        if (itemDefinition.RequiredLevel < player.Toon.Level - 3 || itemDefinition.RequiredLevel > player.Toon.Level + 1)
                        {
                            continue;
                        }
                    }

                    if (AllowedArmorTypes.Contains(itemDefinition.Hash) || AllowedWeaponTypes.Contains(itemDefinition.Hash))
                    {
                        ItemTypeTable Type = ItemGroup.FromHash(itemDefinition.ItemType1);
                        switch (player.Toon.Class)
                        {
                        case LogNet.Toons.ToonClass.Barbarian:
                            if (Type.Flags.HasFlag(ItemFlags.Barbarian) & RandomHelper.Next(0, 100) > 40)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }

                        case LogNet.Toons.ToonClass.DemonHunter:
                            if (Type.Flags.HasFlag(ItemFlags.DemonHunter) & RandomHelper.Next(0, 100) > 40)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }

                        case LogNet.Toons.ToonClass.Monk:
                            if (Type.Flags.HasFlag(ItemFlags.Monk) & RandomHelper.Next(0, 100) > 40)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }

                        case LogNet.Toons.ToonClass.WitchDoctor:
                            if (Type.Flags.HasFlag(ItemFlags.WitchDoctor) & RandomHelper.Next(0, 100) > 40)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }

                        case LogNet.Toons.ToonClass.Wizard:
                            if (Type.Flags.HasFlag(ItemFlags.Wizard) & RandomHelper.Next(0, 100) > 40)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }
                        }
                    }
                }
                found = true;
            }

            return(itemDefinition);
        }