Пример #1
0
 public static Composite GetCrRecipeItemsFromStash()
 {
     //
     return(new Decorator(delegate
     {
         if (hasInitializedSets == false)
         {
             hasInitializedSets = true;
             MapChaosRecipeItems();
             DisableOrEnableLootingOfItems();
             Console.WriteLine("Initializing cr sets data");
         }
         if (itemsToGrabFromStash.Count > 0 && currentItemToGrab == null)
         {
             Console.WriteLine("Finding item to grab");
             currentItemToGrab = itemsToGrabFromStash[0];
             itemsToGrabFromStash.RemoveAt(0);
             return true;
         }
         else if (currentItemToGrab != null)
         {
             Console.WriteLine("Already have an item to grab");
             return true;
         }
         Console.WriteLine("Unable to get cr items from stash");
         return false;
     }, GrabItem(x => currentItemToGrab)));
 }
Пример #2
0
 public static void ResetData()
 {
     itemsToGrabFromStash.Clear();
     completeSetDict.Clear();
     allItemsDict.Clear();
     hasInitializedSets           = false;
     currentItemToGrab            = null;
     chaosRecipeSetsSoldThisCycle = 0;
     hasOpenedCrStashTabs         = false;
 }
Пример #3
0
 public static Composite GrabItem(ItemToGrabFromStashDelegate itemToGrabFromStashDelegate)
 {
     return(new Sequence(
                TownBehavior.OpenStash(),
                StashBehavior.SwitchToTab(x => itemToGrabFromStashDelegate(x).stashIndex),
                MoveItemFromStashToInventory(itemToGrabFromStashDelegate),
                new Action(delegate
     {
         Thread.Sleep(100);
         currentItemToGrab = null;
         return RunStatus.Success;
     })
                ));
 }
Пример #4
0
        public static bool MapChaosRecipeItems()
        {
            completeSetDict.Clear();
            allItemsDict.Clear();
            itemsToGrabFromStash.Clear();
            GetIndexesOfCrStashTabs();
            foreach (var crIndex in chaosRecipeStashTabIndexes)
            {
                var stashItems = GameController.IngameState.IngameUi.StashElement?.AllInventories[crIndex]?.VisibleInventoryItems;
                if (stashItems == null)
                {
                    return(false);
                }
                foreach (var item in stashItems)
                {
                    if (IsCrItem(item) == false)
                    {
                        continue;
                    }
                    var parsedItem = new SellitItem(item, GameController.Files);
                    if (parsedItem.ItemType != ItemTypes.Other && parsedItem.ItemType != ItemTypes.OneHandedWeapon)
                    {
                        Console.WriteLine("Added {0} to dictionary", parsedItem.ItemType.ToString());
                        var itemToGrab = new ItemToGrabFromStash(crIndex, item.GetClientRectCache, parsedItem.ItemType, parsedItem);
                        if (allItemsDict.ContainsKey(parsedItem.ItemType))
                        {
                            allItemsDict[parsedItem.ItemType].Add(itemToGrab);
                        }
                        else
                        {
                            allItemsDict.Add(parsedItem.ItemType, new List <ItemToGrabFromStash>());
                            allItemsDict[parsedItem.ItemType].Add(itemToGrab);
                        }

                        if (completeSetDict.ContainsKey(parsedItem.ItemType))
                        {
                            var numberOfSameItems = completeSetDict[parsedItem.ItemType].Count;
                            if (parsedItem.ItemType == ItemTypes.Ring && numberOfSameItems < 2)
                            {
                                completeSetDict[parsedItem.ItemType].Add(itemToGrab);
                            }
                            else if (numberOfSameItems < 1)
                            {
                                completeSetDict[parsedItem.ItemType].Add(itemToGrab);
                            }
                        }
                        else
                        {
                            completeSetDict.Add(parsedItem.ItemType, new List <ItemToGrabFromStash>());
                            completeSetDict[parsedItem.ItemType].Add(itemToGrab);
                        }
                    }
                }
            }


            var numberOfSets = GetNumberOfCrRecipeSetsInStash();

            if (numberOfSets > 0)
            {
                foreach (var keyValue in completeSetDict)
                {
                    itemsToGrabFromStash.AddRange(keyValue.Value);
                }
                return(true);
            }
            return(false);
        }