New Content - Implemented Horadric Pizza Oven

Veracity

Developer
Staff member
I don't think I'm interested in doing anything to support this, but I'll put out some URLs for those who might be.

Visiting workshed:

campground.php?action=workshed

Adding ingredients is all Javascript stuff. Once you have added four ingredients:

campground.php?action=makepizza&pizza=4950%2C9428%2C617%2C9420

%2C is the url_encoded representation of a "," So, that would be:

visit_url( "campground.php?action=makepizza&pizza=4950,9428,617,9420" )

4950 = abominable blubber
9428 = alien animal goo
617 = Angry Farmer candy
9420 = alien plant goo

You acquire an item: medicinal candy farmer and alien plant pizza

Code:
Unknown item found: medicinal candy farmer and alien plant pizza (10336, 820781574)
--------------------
10336	medicinal candy farmer and alien plant pizza	820781574	horadricpizza.gif	food	q	0
medicinal candy farmer and alien plant pizza	3	1		0	0	0	0	Unspaded
# Item medicinal candy farmer and alien plant pizza: (</font><font color=green>?</font><font color=red>?</font><font color=#999999>?</font><font color=blue>)
Item	medicinal candy farmer and alien plant pizza	Lasts Until Rollover, Effect: "Angry like the Wolf", Effect Duration: 15
--------------------
From a different character:

Code:
[color=green]> test newitem 820781574[/color]

--------------------
10336	diabolic pizza	820781574	horadricpizza.gif	food	q	0
diabolic pizza	3	1		0	0	0	0	Unspaded
# Item diabolic pizza: (</font><font color=green>?</font><font color=red>?</font><font color=#999999>?</font><font color=blue>)
Item	diabolic pizza	Lasts Until Rollover
--------------------
That color coding for food quality is weird:

Code:
Type: <b>food <font color=blue>(</font><font color=green>?</font><font color=red>?</font><font color=#999999>?</font><font color=blue>)</font></b>

Type: food (???)
 

ckb

Minion
Staff member
Based on first pass investigation into what can be made into a pizza, I have this:

Code:
if (!is_npc_item(it) && !it.quest && !it.gift && it.tradeable && it.discardable)

However, there is some discrepancy between this list from Mafia and the list from KoL at "campground.php?action=workshed"
Most of these are items that KoL probably considers npc items that Mafia does not (stuff buyable at "stores" or coinmasters).

This is the mismatched items from my inventory:

Jarlsberg's earring
penguin skin
yak skin
hippopotamus skin
white pixel
red pixel potion
purple pixel pie
star crossbow
star pants
star hat
star buckler
star starfish
star shirt
monster bait
bottle of Domesticated Turkey
bottle of Definit
bottle of Calcutta Emerald
bottle of Lieutenant Freeman
bottle of Jorge Sinsonte
boxed champagne
kumquat
tangerine
cocktail onion
raspberry
kiwi
sushi doily
bazooka cozy
scale-mail underwear
junk food
junk yard
bottle of Old Pugilist
snow crab
smudge stick
large tankard of ale
humble pie
regular-size brogurt
French bronilla brogurt
chewable paper
specialty ammo bandolier
initiative shawarma
warm war shawarma
Highest Bitter
invisible potion
pixel banana
iceberg lettuce
viral video
plus one
print screen button
daily dungeon malware
Falcon™ Maltese Liquor
hardboiled egg
glass casserole dish
turkey blaster
glass pie plate
gravy boat
Aldebaran sardines
Centauri fish wine
Hide-rox™ cookie
jug of booze
pair of candy glasses
lucky pill
ginseng
green rocket
bottle of dark rhum
bottle of extra-dark rhum
bottle of super-extra-dark rhum
space chowder
space wine
antique nutcracker figurine
spray paint
 

Veracity

Developer
Staff member
Huh. Those are all available via shop.php. They are not in npcstores.txt because you do not buy them with Meat. In other words, as you observe, they are either Coinmasters (tradeable for one kind of item) or special creation methods (tradeable for multiple different items).

I bet things from Grandma also qualify (although you had none in inventory) because she is shop.php with multiple disparate items traded in.

is_npc_item() uses NPCStoreDatabase.contains to check. Presumably, it could also check if the item is creatable and, if so, the creation method is COINMASTER, KRINGLE, GRANDMA, ...
 

ckb

Minion
Staff member
sushi doily is in that list - that is a Grandma item, so it would confirm your shop.php hypothesis.

I also observed that some Coinmaster items are ok for pizza making. Here is a list of items that qualify from my inventory:
if (is_coinmaster_item(it)) print(it);

seal tooth
hot buttered roll
ketchup
Lockenstock™ sandals
didgeridooka
wicker shield
patchouli oil bomb
ferret bait
exploding hacky-sack
kick-ass kicks
sake bomb
tequila grenade
perforated battle paddle
petrified noodles
chisel
oversized pipe
water pipe bomb
beer bomb
superamplified boom box
fire poi
Gaia beads
hippy medical kit
filthy poultice
keg shield
giant foam finger
energy drink IV
molotov cocktail cocktail
gauze garter
beer-a-pult
dolphin whistle
wasabi pocky
natto pocky
wasabi-infused sake
tobiko-infused sake
natto-infused sake
wasabi marble soda
tobiko marble soda
natto marble soda
pacification grenade
 
Last edited:

Veracity

Developer
Staff member
sushi doily is in that list - that is a Grandma item, so it would confirm your shop.php hypothesis.

I also observed that some Coinmaster items are ok for pizza making. Here is a list of items that qualify from my inventory:
if (is_coinmaster_item(it)) print(it);
seal tooth - hermit.php
ferret bait - bigisland.php
dolphin whistle - monkeycastle.php
natto pocky - gamestore.php
pacification grenade - (BURTs) inv_use.php

Those are coinmasters which are not shop.php.
 

Veracity

Developer
Staff member
Bumping this, since, as of Path of the Plumber, I'm actually using for the first time.

At the very least, we should detect success and remove the consumed ingredients.
And register the request.

I'll put in at least that much. I'll make a new request class, so if we (somebody) wants to make a new CLI command, all the infrastructure will be there.
 

Veracity

Developer
Staff member
Revision 19804 adds PizzaCubeRequest

- logs request in session log
- removes ingredients when created

From my session log (pizza created with Pizza Cube Relay Script):

Code:
> You baked a pizza!
> action => makepizza
> pizza => 9965,9948,9948,9948
> pizzaAdv => 15
> pizzaEffect => Matches:20,Initials considered:[sm]Too many matches!
> pizzaSpecial => none
> pizzaTurn => 12
> Ingredients: {9965,9948,9948,9948}
> [0] surprisingly capacious handbag
> [1] Middle of the Road™ brand whiskey
> [2] Middle of the Road™ brand whiskey
> [3] Middle of the Road™ brand whiskey
> Adventures:
> 15
> Effect turns:
> 12
> Special features:
> none
> Possible effects:
> Matches:20
> Initials considered:[sm]Too many matches!

pizza surprisingly capacious handbag, Middle of the Road™ brand whiskey, Middle of the Road™ brand whiskey, Middle of the Road™ brand whiskey
You acquire an item: diabolic pizza
The lines starting with ">" were from the script.
The subsequent lines were logged by KoLmafia.
The request logging is correct.
The four ingredients were removed from inventory.

Note that there isn't actually a "pizza" command - PizzaCubeRequest provides the infrastructure to make one:

public PizzaCubeRequest( final AdventureResult item1, final AdventureResult item2, final AdventureResult item3, final AdventureResult item4 )
public void run()
public void processResults()

None of which have actually been tested, but which use other methods that WERE tested in order to do the logging and rresult processing this commit provides.
 

Veracity

Developer
Staff member
For what it's worth, that pizza:

You bake up a delicious nutritious artisinal likely edible pizza with a surprisingly capacious handbag, a Middle of the Road™ brand whiskey, a Middle of the Road™ brand whiskey, a Middle of the Road™ brand whiskey, and a little love.

You acquire an item: middle and middle pizza

Code:
eat 1 diabolic pizza
You gain 490 Meat
You gain 16 Adventures
You gain 115 Fortitude
You gain a Muscle point!
You gain 88 Wizardliness
You gain a Mysticality point!
You gain 889 Smarm
You gain some Moxie points!
You acquire an effect: Smoking like a Bandit (12)
You gain 3 Fullness
You ate Special Seasoning with your food
 

Veracity

Developer
Staff member
Would you be willing to add an "eat" link, in the relay browser, when the pizza is created?
Huh. Since a diabolic pizza is "food", it should get one automatically. I wonder if it's because we don't recognize the name KoL gave it to be a "diabolic pizza"?
 

Veracity

Developer
Staff member
We fetch the list of items based on descid - just as we do when processing result. Using a method from ResultProcessor, in fact.
We then verify that the name is the same as in the expected item name - just like result processing used to do but doesn't any more.
We don't need to check that in this instance, either.

Revision 19816 doesn't check the name and should, I hope, work for the diabolic pizza. Untested.
 

Veracity

Developer
Staff member
This might be done as much at will be; the infrastructure to log (and make) requests and handle item usage is in place.

Providing a nice interface to the oven in the Relay Browser is currently provided by a third party script.
Providing a nice script to do it programatically - perhaps with ways to optimize/suggest which ingredients to use to get what desired results - seems like it should also be a script.
From what I can tell, that is complicated and spading/research is still in progress.

I'm marking this done. Which doesn't mean that people won't (correctly) continue to report bugs. :)
 
Top