Ejemplo n.º 1
0
        public static WowBasicItem BuildSpecificItem(WowBasicItem basicItem)
        {
            if (basicItem == null)
            {
                return(null);
            }

            return((basicItem.Type.ToUpper(CultureInfo.InvariantCulture)) switch
            {
                "ARMOR" => new WowArmor(basicItem),
                "CONSUMABLE" => new WowConsumable(basicItem),
                "CONTAINER" => new WowContainer(basicItem),
                "GEM" => new WowGem(basicItem),
                "KEY" => new WowKey(basicItem),
                "MISCELLANEOUS" => new WowMiscellaneousItem(basicItem),
                "MONEY" => new WowMoneyItem(basicItem),
                "PROJECTILE" => new WowProjectile(basicItem),
                "QUEST" => new WowQuestItem(basicItem),
                "QUIVER" => new WowQuiver(basicItem),
                "REAGENT" => new WowReagent(basicItem),
                "RECIPE" => new WowRecipe(basicItem),
                "TRADE GOODS" => new WowTradegood(basicItem),
                "WEAPON" => new WowWeapon(basicItem),
                _ => basicItem,
            });
Ejemplo n.º 2
0
 public WowRecipe(WowBasicItem wowBasicItem) : base(wowBasicItem)
 {
     Id            = wowBasicItem.Id;
     BagId         = wowBasicItem.BagId;
     BagSlot       = wowBasicItem.BagSlot;
     Type          = wowBasicItem.Type;
     Subtype       = wowBasicItem.Subtype;
     Name          = wowBasicItem.Name;
     ItemLink      = wowBasicItem.ItemLink;
     EquipSlot     = wowBasicItem.EquipSlot;
     ItemQuality   = wowBasicItem.ItemQuality;
     ItemLevel     = wowBasicItem.ItemLevel;
     RequiredLevel = wowBasicItem.RequiredLevel;
     Price         = wowBasicItem.Price;
     Count         = wowBasicItem.Count;
     MaxStack      = wowBasicItem.MaxStack;
     Durability    = wowBasicItem.Durability;
     MaxDurability = wowBasicItem.MaxDurability;
     EquipLocation = wowBasicItem.EquipLocation;
 }
Ejemplo n.º 3
0
        public void TestItemListParsing()
        {
            List <WowBasicItem> items = ItemFactory.ParseItemList(testItemList);

            Assert.IsInstanceOfType(items, typeof(List <WowBasicItem>));
            Assert.IsTrue(items.Count == 3);

            WowBasicItem item0 = ItemFactory.BuildSpecificItem(items[0]);
            WowBasicItem item1 = ItemFactory.BuildSpecificItem(items[1]);
            WowBasicItem item2 = ItemFactory.BuildSpecificItem(items[2]);

            Assert.IsInstanceOfType(item0, typeof(WowMiscellaneousItem));
            Assert.IsInstanceOfType(item1, typeof(WowArmor));
            Assert.IsInstanceOfType(item2, typeof(WowWeapon));

            Assert.AreEqual((int)WowEquipmentSlot.NOT_EQUIPABLE, item0.EquipSlot);

            Assert.AreEqual(WowArmorType.Cloth, ((WowArmor)item1).ArmorType);
            Assert.AreEqual(WowWeaponType.Gun, ((WowWeapon)item2).WeaponType);
        }
Ejemplo n.º 4
0
        private void OnLootRollStarted(long timestamp, List <string> args)
        {
            AmeisenLogger.Instance.Log($"Event OnLootRollStarted: {JsonConvert.SerializeObject(args)}", LogLevel.Verbose);

            if (int.TryParse(args[0], out int rollId))
            {
                string       itemName = HookManager.GetLootRollItemLink(rollId);
                string       json     = HookManager.GetItemByNameOrLink(itemName);
                WowBasicItem item     = ItemFactory.ParseItem(json);
                item = ItemFactory.BuildSpecificItem(item);

                if (CharacterManager.IsItemAnImprovement(item, out IWowItem itemToReplace))
                {
                    AmeisenLogger.Instance.Log($"Would like to replace item {item?.Name} with {itemToReplace?.Name}, rolling need", LogLevel.Verbose);
                    HookManager.RollOnItem(rollId, RollType.Need);
                    return;
                }
            }

            HookManager.RollOnItem(rollId, RollType.Pass);
        }
Ejemplo n.º 5
0
        public void TestItemParsing()
        {
            WowBasicItem item = ItemFactory.ParseItem(testItem);

            Assert.IsInstanceOfType(item, typeof(WowBasicItem));

            item = ItemFactory.BuildSpecificItem(item);
            Assert.IsInstanceOfType(item, typeof(WowMiscellaneousItem));

            Assert.AreEqual(1337, item.Id);
            Assert.AreEqual(1, item.Count);
            Assert.AreEqual((int)WowItemQuality.Common, item.ItemQuality);
            Assert.AreEqual(10, item.Durability);
            Assert.AreEqual(20, item.MaxDurability);
            Assert.AreEqual("TestItem", item.Name);
            Assert.AreEqual("[TestItem]", item.ItemLink);
            Assert.AreEqual(69, item.ItemLevel);
            Assert.AreEqual(64, item.RequiredLevel);
            Assert.AreEqual("NONE", item.Subtype);
            Assert.AreEqual(1, item.MaxStack);
            Assert.AreEqual((int)WowEquipmentSlot.NOT_EQUIPABLE, item.EquipSlot);
            Assert.AreEqual(650, item.Price);
        }
Ejemplo n.º 6
0
 public static WowBasicItem BuildSpecificItem(WowBasicItem basicItem)
 => (basicItem.Type.ToUpper()) switch
 {
     "ARMOR" => new WowArmor(basicItem),
Ejemplo n.º 7
0
        public bool CompleteQuest()
        {
            if (Returned)
            {
                return(true);
            }

            (IWowObject, Vector3)objectPositionCombo = GetEndObject();

            if (objectPositionCombo.Item1 != null)
            {
                // move to unit / object
                if (Bot.Player.Position.GetDistance(objectPositionCombo.Item1.Position) > 5.0)
                {
                    Bot.Movement.SetMovementAction(MovementAction.Move, objectPositionCombo.Item1.Position);
                }
                else
                {
                    // interact with it
                    if (!ActionToggle)
                    {
                        RightClickQuestgiver(objectPositionCombo.Item1);
                    }
                    else if (ActionEvent.Run())
                    {
                        Bot.Wow.SelectQuestByNameOrGossipId(Name, GossipId, false);
                        Thread.Sleep(1000);
                        Bot.Wow.CompleteQuest();
                        Thread.Sleep(1000);

                        bool selectedReward = false;
                        // TODO: This only works for the english locale!
                        if (Bot.Wow.GetQuestLogIdByTitle(Name, out int questLogId))
                        {
                            Bot.Wow.SelectQuestLogEntry(questLogId);

                            if (Bot.Wow.GetNumQuestLogChoices(out int numChoices))
                            {
                                for (int i = 1; i <= numChoices; ++i)
                                {
                                    if (Bot.Wow.GetQuestLogChoiceItemLink(i, out string itemLink))
                                    {
                                        string       itemJson = Bot.Wow.GetItemByNameOrLink(itemLink);
                                        WowBasicItem item     = ItemFactory.BuildSpecificItem(ItemFactory.ParseItem(itemJson));

                                        if (item == null)
                                        {
                                            break;
                                        }

                                        if (item.Name == "0" || item.ItemLink == "0")
                                        {
                                            // get the item id and try again
                                            itemJson = Bot.Wow.GetItemByNameOrLink
                                                       (
                                                itemLink.Split(new string[] { "Hitem:" }, StringSplitOptions.RemoveEmptyEntries)[1]
                                                .Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries)[0]
                                                       );

                                            item = ItemFactory.BuildSpecificItem(ItemFactory.ParseItem(itemJson));
                                        }

                                        if (Bot.Character.IsItemAnImprovement(item, out _))
                                        {
                                            Bot.Wow.SelectQuestReward(i);
                                            Bot.Wow.SelectQuestReward(i);
                                            Bot.Wow.SelectQuestReward(i);
                                            selectedReward = true;
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }

                        if (!selectedReward)
                        {
                            Bot.Wow.SelectQuestReward(1);
                        }

                        Thread.Sleep(250);
                        Returned = true;
                        return(true);
                    }

                    ActionToggle = !ActionToggle;
                }
            }
            else if (objectPositionCombo.Item2 != default)
            {
                // move to position
                if (Bot.Player.Position.GetDistance(objectPositionCombo.Item2) > 5.0)
                {
                    Bot.Movement.SetMovementAction(MovementAction.Move, objectPositionCombo.Item2);
                }
            }

            return(false);
        }