public override void OnStashing(CachedItem item) { if (_tabWithGcpSet != null || item.Type.ItemType != ItemTypes.Gem || item.Quality < 1) { return; } var qualities = GemQualitiesInCurrentTab; if (qualities.Count == 0) { return; } var finder = new GemSetFinder(qualities); _gcpSet = finder.BestSet; if (_gcpSet != null) { GlobalLog.Info($"[OnQGemStash] Found gem set for gcp recipe {_gcpSet}"); _tabWithGcpSet = LokiPoe.InGameState.StashUi.TabControl.CurrentTabName; } else { GlobalLog.Info("[OnQGemStash] Gem set for gcp recipe was not found."); } }
private static async Task <bool> TakeGcpSets() { if (!await Inventories.OpenStashTab(_tabWithGcpSet)) { return(false); } while (true) { if (_gcpSet == null) { var qualities = GemQualitiesInCurrentTab; if (qualities.Count == 0) { GlobalLog.Info($"[TakeGcpSets] No quality gems were found in \"{_tabWithGcpSet}\" tab."); _tabWithGcpSet = null; return(true); } var finder = new GemSetFinder(qualities); _gcpSet = finder.BestSet; if (_gcpSet == null) { GlobalLog.Info($"[TakeGcpSets] No more gem sets for gcp recipe were found in \"{_tabWithGcpSet}\" tab."); _tabWithGcpSet = null; return(true); } } if (!_gcpSet.CanFit) { GlobalLog.Warn("[TakeGcpSets] Not enough inventory space for current gcp set."); _gcpSet = null; return(true); } GlobalLog.Warn($"[TakeGcpSets] Now taking gcp set {_gcpSet}"); foreach (int q in _gcpSet.Qualities) { var gem = StashGems.FirstOrDefault(g => QGemFitsForSelling(g) && g.Quality == q); if (gem == null) { GlobalLog.Error($"[TakeGcpSets] Unexpected error. Fail to find gem with quality {q} as a part of {_gcpSet} gcp set."); _tabWithGcpSet = null; _gcpSet = null; return(false); } if (!await Inventories.FastMoveFromStashTab(gem.LocationTopLeft)) { return(false); } } _gcpSet = null; } }