New Content - Implemented unoccupied sheep suit

Veracity

Developer
Staff member
When used, grows into a familiar - Hobo in Sheep's Clothing
This will drop grubby wool, which when used, takes you to a choice adventure - Woolin' Around, #1490, according to Wiki.
(No, I haven't even tried it yet. :)

This will let you trade wool for items.

I.e., it is a choice.php Coinmaster.

We have a single example of that, near as I can tell.
The Fudge Wand is choice #562

That's quite old at this point, but it could serve as a model for this new Coinmaster.
Before modernization.
 
I believe the metal meteoroid (choice adventure 1264) and the burning newspaper (choice adventure 1277) are implemented as foldables rather than coinmasters, and they seem very mechanically similar to this.
 

Veracity

Developer
Staff member
Obviously we have multiple mechanisms available to us: creation method or Coinmaster.
Previous developers ignored the coinmaster in favor of a creation method.
I don't have a personal preference; I just gave my initial thought.
I am sure whoever implements this will consider the options and make a reasonable choice.
 

Veracity

Developer
Staff member
I believe the metal meteoroid (choice adventure 1264) and the burning newspaper (choice adventure 1277) are implemented as foldables rather than coinmasters, and they seem very mechanically similar to this.
I could have sworn that foldables are items that can be transformed from one item to another to another to another.
Are you saying that the grubby wool items can be created (using a grubby wool) and then "used" to create a different one, and so on?
I was not aware of that.

If that's really how it works, then, sure. They are "foldable".

On the other hand, if you can "use" wool to make an item - and it is what it is thereafter - that is not a "foldable" as I understand it. It is a coinmaster.

That would apply to metal meteoroid and burning newspaper as well. If you can transform the base item into another, unless you can "fold" the new item into another, it is not a "foldable". It is a coinmaster.

I do not see burning newspaper or metal meteoroid items in foldgroups.txt

Are you saying that perhaps those items are incorrectly implemented in terms of KoLmafia internal mechanisms - which already existed (cf. fudge wand) - when we added support for them? Thanks for the bug report.
 

Ryo_Sangnoir

Developer
Staff member
They're a special concoction type -- NEWSPAPER or METEOROID (or XO or SLIEMCE for other cases). They then have their own Request class.
 

gausie

D̰͕̝͚̤̥̙̐̇̑͗̒e͍͔͎͈͔ͥ̉̔̅́̈l̠̪̜͓̲ͧ̍̈́͛v̻̾ͤe͗̃ͥ̐̊ͬp̔͒ͪ
Staff member
I honestly can't tell if i prefer them as a concotion type or a coinmaster
 

Ryo_Sangnoir

Developer
Staff member
I feel like it'd be more aesthetic if "things that are like shops" (like XO Shop, Mad Sliemce) were coinmasters, and "things that are like adventures" (like burning newspaper, meteoroid, fudge, wool) were different concoctions.

Practically it probably doesn't matter, but doing them all as coinmasters might lead to less code duplication?
 

Veracity

Developer
Staff member
A month or two ago, when I did my refactoring of CoinmasterData to simply coding of new Coinmasters, I included some musing in the PR about, perhaps, unifying how we use KoL's shop.php.

Over the years, I observe that KoL itself has settled on a few core mechanisms that it uses for new code (and much, but not all, old code).

place.php?whichplace=xxx (old things like woods.php still exist but redirect)
shop.php?whichshop=xxx
choice.php?whichchoice=xxx&option=yyy (with additional arguments, sometimes).

choice.php may have started as "like adventures", since the large majority of them are accessed by redirecting from adventure.php - but a lot of them are redirects from inv_use.php. That includes things like the combat lover's locket, the deck of every card, the genie bottle, cargo cultist shorts, latte - all of which have extra arguments.

There are also choices that are "like shops", in that you trade items for other items - wool, wax globs, burning newspapers, meteroid, fudge

shop.php is KoL's most common mechanism for trading items or meat for other items.

If they trade nothing but Meat, we use npcstores.txt and NPCPurchaseRequest, and such items appear under Purchases.
If they trade in items - possibly many kinds - including Meat - but one kind per item - we use coinmasters.txt - and CoinmasterData and CoinmasterRequest - but we integrate such as Concoctions and NPCPurchaseRequests as well.

The difficult ones trade more than one kind of item at a time to buy something. We make those into creation methods. Pixels, star chart, XO Shop, Sliemce, Grandma, Spant, and so on.

Here is grep:

Code:
AirportRequest.java10:    super("shop.php", conc);
BeerGardenRequest.java10:    super("shop.php", conc);
Crimbo12Request.java18:    super("shop.php", conc);
Crimbo16Request.java10:    super("shop.php", conc);
FiveDPrinterRequest.java17:    super("shop.php", conc);
GrandmaRequest.java10:    super("shop.php", conc);
JarlsbergRequest.java17:    super("shop.php", conc);
JunkMagazineRequest.java10:    super("shop.php", conc);
KOLHSRequest.java40:    super("shop.php", conc);
KringleRequest.java10:    super("shop.php", conc);
PixelRequest.java12:    super("shop.php", conc);
RumpleRequest.java10:    super("shop.php", conc);
SliemceRequest.java10:    super("shop.php", conc);
SpantRequest.java10:    super("shop.php", conc);
StarChartRequest.java17:    super("shop.php", conc);
StillRequest.java16:    super("shop.php", conc);
SugarSheetRequest.java17:    super("shop.php", conc);
WinterGardenRequest.java10:    super("shop.php", conc);
XOShopRequest.java10:    super("shop.php", conc);

Some of those could be Coinmasters - sugar sheet, Nash Crosby's still, all transform a single ingredient into something else.

Coinmaster items appear both on Purchases and as Creatable and on the Coinmasters Frame
Creation method items appear on Creatable

retrieveItem can use either technique.

Now, I mused on the other PR whether we could/should have a "shop.php" framework (interface?).

Not all Coinmasters are shop.php.
Not all shop.php classes are Coinmasters.
Not all shop.php shops use "rows".

But perhaps we could simplify all sorts of code that uses shop.php by, somehow, abstracting our support for that KoL mechanism and using it in NPC shops, Coinmasters, and Creation methods.

Do we want to things like star chart, pixels, sliemce, XO shop, and so on to be Coinmasters? I dunno.
How about sugar sheets, the still, and the various choice.php things that trade in a single "currency"? I dunno.

"aesthestic" for whom? The codebase, or our users?
As I said, Coinmaster concoctions go on the Purchase frame and also the Coinmasters Frame.
Do sugar sheets or grubby wool feel like items you trade for other items or make into other items?
Probably the latter - which, I guess, makes them creation methods, rather than coinmasters.

Well, shop.php coinmasters inherit from CoinMastersRequest and call methods from that class and shop.php creation methods inherit from CreateItemRequest and call methods from NPCPurchaseRequest. They are both pretty easy to code up, these days.

I still dunno.

I can search for "grubby" on the Purchases frame.
If we made wool a coinmaster, we'd see the various things you can make from it on the search results, too.
(Try searching for "purpleheart" to see what I mean.)

What would be most intuitive and/or useful for users?
 

Ryo_Sangnoir

Developer
Staff member
"aesthestic" for whom? The codebase, or our users?
More codebase than users, but I suppose "by analogy with the game"? So mostly aesthetic for me, instead of the codebase or users.

I expect most users will use something like "acquire grubby wool beerwarmer" which would work just as well for concoctions as for coinmasters. Well, I expect most users will use a script or only interact with this when something like the maximizer suggests they obtain something.
 

adeyke

Member
When I tried to make a nice warm beer, KoLmafia bought an ice-cold Willer as ingredient and then failed to make it. Normally, recipes that use ice-cold beer work with either Willer or Sir Schlitz, but this is an exception that only works with the latter.
 

Veracity

Developer
Staff member
r27180 recognizes that nice war beer requires Sir Schlitz

I think we're done with this familiar now?
 
Top