From 4ed1ceeff4794df43963f696d87af3c61ee81fd6 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 21 Oct 2016 21:33:55 +0200 Subject: [PATCH] Add MatchEveryting trading preference --- ArchiSteamFarm/BotConfig.cs | 3 ++- ArchiSteamFarm/Trading.cs | 18 ++++++++++++++---- ConfigGenerator/BotConfig.cs | 3 ++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ArchiSteamFarm/BotConfig.cs b/ArchiSteamFarm/BotConfig.cs index f4a0c6bac..e9d1572d2 100644 --- a/ArchiSteamFarm/BotConfig.cs +++ b/ArchiSteamFarm/BotConfig.cs @@ -52,7 +52,8 @@ namespace ArchiSteamFarm { [SuppressMessage("ReSharper", "UnusedMember.Global")] None = 0, AcceptDonations = 1, - SteamTradeMatcher = 2 + SteamTradeMatcher = 2, + MatchEverything = 4 } [JsonProperty(Required = Required.DisallowNull)] diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index 5f44fb0cd..15e12c153 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -186,10 +186,15 @@ namespace ArchiSteamFarm { return null; } - // Accept trades when we're not losing anything - if ((tradeOffer.ItemsToGive.Count == 0) && Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations)) { - // Unless it's steam fuckup and we're dealing with broken trade - return tradeOffer.ItemsToReceive.Count > 0 ? new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithoutItemLose) : new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedTemporarily); + // Check if it's donation trade + if (tradeOffer.ItemsToGive.Count == 0) { + // Temporarily ignore steam fuckups + if (tradeOffer.ItemsToReceive.Count == 0) { + return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedTemporarily); + } + + // Either accept or reject such trade, depending on our preference + return Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.AcceptDonations) ? new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithoutItemLose) : new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.RejectedPermanently); } // Always accept trades from SteamMasterID @@ -229,6 +234,11 @@ namespace ArchiSteamFarm { } } + // If we're matching everything, this is enough for us + if (Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything)) { + return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.AcceptedWithItemLose); + } + // Now check if it's worth for us to do the trade await LimitInventoryRequestsAsync().ConfigureAwait(false); diff --git a/ConfigGenerator/BotConfig.cs b/ConfigGenerator/BotConfig.cs index 0699fffbe..d98b9aeab 100644 --- a/ConfigGenerator/BotConfig.cs +++ b/ConfigGenerator/BotConfig.cs @@ -57,7 +57,8 @@ namespace ConfigGenerator { internal enum ETradingPreferences : byte { None = 0, AcceptDonations = 1, - SteamTradeMatcher = 2 + SteamTradeMatcher = 2, + MatchEverything = 4 } [Category("\t\tCore")]