thesandvichisaliar/SteamBot-Idle — pull request #5 by thesandvichisaliar (2013-08-01 06:41:00+00:00)
Title: Added CUH, Added BotMode startup option, changed bits of everything.

Sticking this here because it needs some more testing.

Most notable changes are:
* CUH which will collect all crates at the end of a session, as well as trade normal items like a `GivingUserHandler`.
* Crate/Item deletion is finally added.
* Added `IsCrate` and `CrateSeriesNumber` to `Inventory.Item` to make handling inventory much easier.
* F2P accounts will not try to trade. They won't trade because I need more info on which items are different in F2P inventories, and I don't have any to test.
* Also updated SteamTrade to be more in-line if not up-to-date with SteamBot to make future Steam Inventory management easier.
* There is now a startup option `BotMode`
* `BotMode = 0` - ReceivingUserHandler will do nothing on startup
* `BotMode = 1` - Default, Normal item harvesting process
* `BotMode = 2` - Currently Crate Management, but only for Receiving, not fully implemented.
* The order bots are started is based on their UserHandlers so now the order they're placed in settings won't matter. The non-Giving handlers are also indexed for future ease of use when trying to stop, start, or trade with a specific handler.

I haven't had time to thoroughly test all avenues, but basic runs worked for me. A few older issues are still present (which I still plan to write out most of them in the issue-tracker).

Custom settings are still odd to configure since Valve has changed the way new event crates are handled, now being rare-drops instead of deleted. It feels odd grouping them with the Salvaged, but if they somehow become worth something in the future, it is where they should be.

I also don't want to flood the config with a dozen different settings and make it difficult to understand how it will behave, but I'm not sure it's as configurable as it should be.

After this, it is clear my task should be to rewrite the way trades are handled and rewrite `Trade.cs` (or create a slight derivative of it) and make it a mediator between the two trading bots. This would smooth out pretty much all of the trading errors.