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))); }
public static void ResetData() { itemsToGrabFromStash.Clear(); completeSetDict.Clear(); allItemsDict.Clear(); hasInitializedSets = false; currentItemToGrab = null; chaosRecipeSetsSoldThisCycle = 0; hasOpenedCrStashTabs = false; }
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; }) )); }
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); }