I've just spent a considerable amount of effort refactoring this subsystem to make it easy to add new instances. I tested it by adding Mr. Store and the Traveling Trader and (although the latter is obviously untested), it was about as easy as I'd hoped.
I'm going to take a break from this - possibly for quite a while - but I'd like to put out two future projects associated with this that I think would be good - maybe even for somebody else to do.
- with an eye towards turning them both into Feature Requests after we've discussed them enough to work out the requirements/specification.
1) What about an API - a way to trade tokens for items via the various Coin Masters in CLI and/or ASH scripts without having to hardcode visit_url() calls. I'm pretty sure this has been mentioned elsewhere, but my cursory search did not find it.
- We need a way to visit specific stores
- We need a way to trade - buy or sell - specific items.
- Do we care about specifying which store to get specific items from? They are unambiguous, so far.
- How about "acquire" or "retrieve_item()" integration?
2) Integration with the rest of Item acquisition. Much as we have autoSatisfyWithNPCs and autoSatisfyWithMall, we could have autoSatisfyWithCoinmasters. We have something in this direction already for a specific set of items: coffee pixie sticks, game shoppe items, and the new Lunar Lunch-o-Mat items are all hard-coded into the ConcoctionDatabase and the InventoryManager's "retrieve item" functionality.
I'm thinking those - and all other Coinmaster items - could be done more like NPC items as being marked "creatable" and having a "price". Just like the Food panel has "fortune cookie (40 Meat, 0 current)", a Coinmaster food/booze for which you have the appropriate token in inventory could show up as "bowl of Bounty-Os (1 filthy lucre, 0 current)" or "Saison du Lune (10 lunar isotopes, 0 current)" - IF you have enough tokens of the appropriate sort on hand.
What about Purchases? Right now, we have MallPurchaseRequest which goes either to the Mall or the NPC stores. We should have PurchaseRequest subclassed into MallPurchaseRequest, NPCPurchaseRequest, and CoinMasterPurchaseRequest. If you search for "dolphin whistle", why not show the mall results, as now, but also show "Big Brother (unlimited @ 1 sand dollar)", just like "wad of dough" shows "Degrassi Knoll Bakery (unlimited @50)".
We have all the knowledge about which NPC stores are accessible - zodiac signs, outfits, what have you - built into the NPC Store Database. Currently, all of that for Coin Masters is encapsulated in the Coin Masters Frame - the GUI. It would have to move into the Coin Masters Database (or Request) so that non-GUI uses - Item Manager, Purchases, CLI and ASH scripts - could use it automatically, just like NPC stores.
Given all that, do we want "buy" to go to Coin Masters? I think not; I think that should continue to be Meat-only. So, we'd have "trade" to do the equivalent.
---
Anyway, I throw this open for YOUR thoughts. What do YOU need in an API? How else would YOU like Coin Masters to be integrated with the rest of the system? And, especially, how do you see the new functionality integrating with existing functionality, like "buy", "acquire", "eat", and so on?
I'm going to take a break from this - possibly for quite a while - but I'd like to put out two future projects associated with this that I think would be good - maybe even for somebody else to do.

1) What about an API - a way to trade tokens for items via the various Coin Masters in CLI and/or ASH scripts without having to hardcode visit_url() calls. I'm pretty sure this has been mentioned elsewhere, but my cursory search did not find it.
- We need a way to visit specific stores
- We need a way to trade - buy or sell - specific items.
- Do we care about specifying which store to get specific items from? They are unambiguous, so far.
- How about "acquire" or "retrieve_item()" integration?
2) Integration with the rest of Item acquisition. Much as we have autoSatisfyWithNPCs and autoSatisfyWithMall, we could have autoSatisfyWithCoinmasters. We have something in this direction already for a specific set of items: coffee pixie sticks, game shoppe items, and the new Lunar Lunch-o-Mat items are all hard-coded into the ConcoctionDatabase and the InventoryManager's "retrieve item" functionality.
I'm thinking those - and all other Coinmaster items - could be done more like NPC items as being marked "creatable" and having a "price". Just like the Food panel has "fortune cookie (40 Meat, 0 current)", a Coinmaster food/booze for which you have the appropriate token in inventory could show up as "bowl of Bounty-Os (1 filthy lucre, 0 current)" or "Saison du Lune (10 lunar isotopes, 0 current)" - IF you have enough tokens of the appropriate sort on hand.
What about Purchases? Right now, we have MallPurchaseRequest which goes either to the Mall or the NPC stores. We should have PurchaseRequest subclassed into MallPurchaseRequest, NPCPurchaseRequest, and CoinMasterPurchaseRequest. If you search for "dolphin whistle", why not show the mall results, as now, but also show "Big Brother (unlimited @ 1 sand dollar)", just like "wad of dough" shows "Degrassi Knoll Bakery (unlimited @50)".
We have all the knowledge about which NPC stores are accessible - zodiac signs, outfits, what have you - built into the NPC Store Database. Currently, all of that for Coin Masters is encapsulated in the Coin Masters Frame - the GUI. It would have to move into the Coin Masters Database (or Request) so that non-GUI uses - Item Manager, Purchases, CLI and ASH scripts - could use it automatically, just like NPC stores.
Given all that, do we want "buy" to go to Coin Masters? I think not; I think that should continue to be Meat-only. So, we'd have "trade" to do the equivalent.
---
Anyway, I throw this open for YOUR thoughts. What do YOU need in an API? How else would YOU like Coin Masters to be integrated with the rest of the system? And, especially, how do you see the new functionality integrating with existing functionality, like "buy", "acquire", "eat", and so on?