fixed Family Crest bug where Dimintheis would give you infinite gauntlets (fixes#257)
fixed Family Crest bug where Dimintheis didn't check equipped gloves or second bank
fixed Family Crest bug where Dimintheis didn't remember which gauntlets you had
changing gauntlet enchantment now authentically costs 25k GP (and free the first time)
added content API function for checking if a player possesses any particular items anywhere
added content API functions for starting and finishing quests
Added a proper mock session that gets used for mock players in unit tests. Allows verifying that certain packets made it to the IoSession (the stage right before sending it to the client)
vials are now purchasable from Jatix
fishing trawler is now playable with supplies from Port Khazard General Store
removed unauthentic bucket of slime from Trader Stan's shop
deleted inaccessible and obsolete "donator store" from pre-2009scape era
Koschei boss fight sessions are now World Pulses instead of player pulses
Refactor TFTInteractionListener to use ContentAPI
Allow Neitiznot items to be equiped after Frem trials
Fixed bug where quests could be repeatedly finished
Fixed bug where ironman status wasn't checked when buying overstocked items
Fixed bug where selling multiple items at a time that weren't listed in a shop would not succeed
Fixed bug where shop restocking would sometimes interrupt if a shop stock item was in a null slot
GE should now favor the buy offer if it's newer than the paired sell offer (buyer gets GP back)
GE should now favor the sell offer if it's newer than the paired buy offer (buyer does NOT get gp back)
GE should now always award bot offers to the highest bidder
Shop restocking now works properly, with per-item-in-shop granularity as well. (Thanos tool update released that allows defining this)
Shops properly restrict ironmen from buying from player stock/overstocked items
Fully functioning individualized player stock support (need to set a server config variable to enable, disabled by default. Specifically, set personalized_shops = true in the world section of the config.)
The shop pricing formula now scales up/down with the authentic ratios based on stock quantity.
Buying or selling, for example, 1000 of an item, now does the proper calculation for each individual item in the purchase/sale rather than exchanging the full 1000 for the initial price at the time. (For example, in the old shops, feather price at full stock was, say, 6gp. You could buy 1000 feathers at once for 6000gp. Authentically, the pricing for each feather should scale as the stock goes down. Now 1000 feathers at once costs a bit over 7k gp, despite the initial price remaining 6gp.)
General store player stock is now shared between all general stores