New Content - Implemented Hot Dog Stand

Darzil

Developer
Probably early days to work out everything that'll be wanted, but to start things off, there are some changes to existing non-combats. Gathering detail from wiki :

Choice Adventure in Nook (155) now has a chance (unknown trigger) to have a button 4 that gives an item (debonair deboner, unknown Item ID). More importantly, Leave the Skulls Alone is now button 5.

Duffel Choice Adventure in Extreme Slope (575) now has a chance (unknown trigger) to have a button 2 that gives an item (Jar of frostigkraut, unknown Item ID). Move importantly, Scram is now button 3.

There is probably an item given by visiting Jackass Plumber (href=arcade.php?action=plumber) which can be done once per day. I can imagine that going once per day will be a good daily deed / potential breakfast action).

I've not actually managed to get any of the items, but the following have known IDs :

Item 6584 - Ancient Hot Dog Wrapper - Offhand, 35 Myst needed, 5 meat sell price, Regen 30-40 HP and MP per adv. (Rare drop in basement)
Item 6588 - gnawed-up dog bone - 1H Club, 5-10 damage, 10 mus needed, 66 meat sell price, +5 familiar weight, +1 familiar xp per combat. (rare drop from skeletal cat)
Item 6589 - Grey Guanon - Offhand, 15 Myst needed, 35 meat sell price, +5 stench damage, deals stench damage every round. (Rare non-combat, Guan-Yes! in Guano Junction)
Item 6591 - Dream of a dog - Epic Booze, 2 Drunk, level 8 required, 100 meat sell price, +10 Adv, +20 all stats.

Unknown ones are :

vicious spiked collar - familiar equipment, 75 meat sell price, +20 familiar damage (unknown origin)
debonair deboner - 1H Club, 9-18 damage, 30 mus needed, 180 meat sell price, +10 Moxie, +25 Damage vs Skeletons (from Nook non-combat, rarely)
chicle de salchicha - potion, 40 meat sell price, gives 20 turns of Here to Kick Ass (+50% muscle, +50% weapon damage) (from rare non-combat in South of the Border)
jar of frostigkraut - Offhand, 35 Myst needed, 70 meat sell price, +10 cold damage, deals cold damage every round (from non combat in Extreme Slope, rarely)
Engorged Sausages and You - Offhand Pasta Spellbook, 35 Myst needed, 75 meat sell price, +15 Spell Damage, All spells are Sleazy, +20% Food drops

Got some text of the Hot Dog, with 3 Hot Dogs unlocked. I imagine the unlocked ones will want to appear in the Food dialog at some point, with a once per day limit. Clearly some spading will still be needed, including whether milk affects them, and how many adventures are gained. Need the effects gained from them all too.

Basic Hot Dog - +1 Adv, +1 Fullness if not full. -2^(n-1) each stat if full and won't take stats below 0, where n is the number eaten today.

Code:
<center><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center>The hot dog man smiles as you approach, and offers you a piece of unsolicited advice:<p>"Despite what some would have you believe, absence makes the liver grow younger."<p><table><tr><form action=clan_viplounge.php method=post><td><input class=button type=submit value=Eat><input type=hidden name=preaction value=eathotdog><input type=hidden name=whichdog value=-92></td></form><td><img src=http://images.kingdomofloathing.com/itemimages/jarl_regdog.gif width=30 height=30 onclick='descitem("-92_food");'></td><td><span onclick='descitem("-92_food");'><b>basic hot dog</b></td></td><td width=30></td><td colspan=3></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_macho.gif width=30 height=30 onclick='descitem("-93_food");'></td><td><span onclick='descitem("-93_food");'><b>savage macho dog</b></td></td><td width=30></td><td colspan=3>unlocked by <img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/spikycollar.gif' onclick='descitem(981852802)' alt="vicious spiked collar" title="vicious spiked collar"></td><td></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/jarl_deluxedog.gif width=30 height=30 onclick='descitem("-94_food");'></td><td><span onclick='descitem("-94_food");'><b>one with everything</b></td></td><td width=30></td><td colspan=3>unlocked by <img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/wrapper.gif' onclick='descitem(111886283)' alt="ancient hot dog wrapper" title="ancient hot dog wrapper"></td><td></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_sly.gif width=30 height=30 onclick='descitem("-95_food");'></td><td><span onclick='descitem("-95_food");'><b>sly dog</b></td></td><td width=30></td><td colspan=3>unlocked by <img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/deboner.gif' onclick='descitem(582791637)' alt="debonair deboner" title="debonair deboner"></td><td></td></tr><tr><form action=clan_viplounge.php method=post><td><input class=button type=submit value=Eat><input type=hidden name=preaction value=eathotdog><input type=hidden name=whichdog value=-96></td></form><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_hot.gif width=30 height=30 onclick='descitem("-96_food");'></td><td><span onclick='descitem("-96_food");'><b>devil dog</b></td></td><td width=30></td><td><img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/scwad.gif' onclick='descitem(802361695)' alt="hot wad" title="hot wad"></td><td><b>x 25</b></td><td class=tiny>(7,951 in stock)</td><td><a href=clan_viplounge.php?preaction=hotdogsupply&whichdog=-96&quantity=1 class='contribute' rel='9'><font size=2>contribute</font></a></td><script>jQuery(function (_) {
						_('.contribute').click(function (e) {
							var link = _(this);
							e.preventDefault();
							pop_query(link, 'How many of the <b>'+link.attr('rel')+'</b> you have?', 'Contribute', function (num) {
								document.location.href = link.attr('href').replace('quantity=1', 'quantity=' + num);	
							});
						});
					});</script></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_cold.gif width=30 height=30 onclick='descitem("-97_food");'></td><td><span onclick='descitem("-97_food");'><b>chilly dog</b></td></td><td width=30></td><td colspan=3>unlocked by <img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/frostigkraut.gif' onclick='descitem(406876387)' alt="jar of frostigkraut" title="jar of frostigkraut"></td><td></td></tr><tr><form action=clan_viplounge.php method=post><td><input class=button type=submit value=Eat><input type=hidden name=preaction value=eathotdog><input type=hidden name=whichdog value=-98></td></form><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_spooky.gif width=30 height=30 onclick='descitem("-98_food");'></td><td><span onclick='descitem("-98_food");'><b>ghost dog</b></td></td><td width=30></td><td><img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/scwad.gif' onclick='descitem(346006884)' alt="spooky wad" title="spooky wad"></td><td><b>x 25</b></td><td class=tiny>(6,000 in stock)</td><td></td><script>jQuery(function (_) {
						_('.contribute').click(function (e) {
							var link = _(this);
							e.preventDefault();
							pop_query(link, 'How many of the <b>'+link.attr('rel')+'</b> you have?', 'Contribute', function (num) {
								document.location.href = link.attr('href').replace('quantity=1', 'quantity=' + num);	
							});
						});
					});</script></tr><tr><form action=clan_viplounge.php method=post><td><input class=button type=submit value=Eat><input type=hidden name=preaction value=eathotdog><input type=hidden name=whichdog value=-99></td></form><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_stench.gif width=30 height=30 onclick='descitem("-99_food");'></td><td><span onclick='descitem("-99_food");'><b>junkyard dog</b></td></td><td width=30></td><td><img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/scwad.gif' onclick='descitem(546916092)' alt="stench wad" title="stench wad"></td><td><b>x 25</b></td><td class=tiny>(13,375 in stock)</td><td><a href=clan_viplounge.php?preaction=hotdogsupply&whichdog=-99&quantity=1 class='contribute' rel='3'><font size=2>contribute</font></a></td><script>jQuery(function (_) {
						_('.contribute').click(function (e) {
							var link = _(this);
							e.preventDefault();
							pop_query(link, 'How many of the <b>'+link.attr('rel')+'</b> you have?', 'Contribute', function (num) {
								document.location.href = link.attr('href').replace('quantity=1', 'quantity=' + num);	
							});
						});
					});</script></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_sleaze.gif width=30 height=30 onclick='descitem("-100_food");'></td><td><span onclick='descitem("-100_food");'><b>wet dog</b></td></td><td width=30></td><td colspan=3>unlocked by <img style='vertical-align: middle' class=hand src='http://images.kingdomofloathing.com/itemimages/book4.gif' onclick='descitem(866205948)' alt="Engorged Sausages and You" title="Engorged Sausages and You"></td><td></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/spreadsheet.gif width=30 height=30 onclick='descitem("-102_food");'></td><td><span onclick='descitem("-102_food");'><b>optimal dog</b></td></td><td width=30></td><td colspan=3>unlocked by ???<td></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_sleep.gif width=30 height=30 onclick='descitem("-101_food");'></td><td><span onclick='descitem("-101_food");'><b>sleeping dog</b></td></td><td width=30></td><td colspan=3>unlocked by ???<td></td></tr><tr><td><input class=button type=submit value=Eat disabled=disabled style='color: #cccccc'></td><td><img src=http://images.kingdomofloathing.com/itemimages/hotdog_vg.gif width=30 height=30 onclick='descitem("-103_food");'></td><td><span onclick='descitem("-103_food");'><b>video games hot dog</b></td></td><td width=30></td><td colspan=3>unlocked by ???<td></td></tr></table><center><a href="clan_viplounge.php?action=hotdogstand&preaction=dogboard">Hot Dog Leaderboards</a></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table>
 

Erich

Member
Basic Hot Dog - +1 Adv, +1 Fullness if not full. -2^(n-1) each stat if full and won't take stats below 0, where n is the number eaten today.

It's -2^(n-1) where n is number eaten after reaching max fullness, otherwise theres no stat loss.
 

Ethelred

Member
Probably early days to work out everything that'll be wanted, but to start things off, there are some changes to existing non-combats. Gathering detail from wiki :

Choice Adventure in Nook (155) now has a chance (unknown trigger) to have a button 4 that gives an item (debonair deboner, unknown Item ID). More importantly, Leave the Skulls Alone is now button 5.

Duffel Choice Adventure in Extreme Slope (575) now has a chance (unknown trigger) to have a button 2 that gives an item (Jar of frostigkraut, unknown Item ID). Move importantly, Scram is now button 3.

...

Also, One Nightstand (Wooden) in the Haunted Bedroom (85) now has a chance (again, trigger unknown) to have a 4th choice that gives the Engorged Sausages and You item (item no. 6590) that unlocks the wet dog at the hot dog stand.

All three of these items are proving very elusive to get. Several people in my clan have already spent hundreds of turns without success. If the choice adventure handler for these choices could be upgraded to handle that conditional appearence after the fashion of some of the choice adventures in the new Giant's Castle, it would be a real boon to automating the search.

Thanks for your consideration.
 

lostcalpolydude

Developer
Staff member
After cannonfire40 threw lots of scraps at 1100 attempts at the one in the nook, and apparently people that got stuff from the eXtreme Slope got it on the first occurrence of the noncombat, I'm thinking there's probably no point in throwing lots of turns at trying to get those.

I wanted to simply update the relay browser spoiler text by setting the normally-not-there option to null, but then the drop-down just has a blank line for that number, and that's clearly not the way to go, so it needs special handling that I didn't want to figure out when I was looking at that.
 

Bale

Minion
From eav2:

6592 optimal spreadsheet 389475336 spreadsheet.gif offhand t 0
optimal spreadsheet 0 none
optimal spreadsheet Muscle: +10, Mysticality: +10, Moxie: +10, PvP Fights: +5, Monster Level: +20
--------------------
 

lostcalpolydude

Developer
Staff member
The unlock items should all be added, along with the effects from hot dogs. The plural for Engorged Sausages and You needs adding when it is known.

I don't really know how the stand should be added. It seems like it should be a shop, but NPC and coinmasters both don't really seem to fit. I suppose it could just be a CafeRequest. I'm sure people want a good way of adding ingredients and knowing how many of an ingredient are currently there (ignoring the part where other people can use those ingredients up in between checks).

Once things are implemented, eating an optimal hot dog needs to clear all fortune cookie counters and add one at 0 turns.
 

roippi

Developer
I think it's a Cafe, but one where specific availability can fluctuate from moment to moment. There's definitely a bit of an implementation speedbump in figuring out how to do everything in a server-friendly manner. A reasonable implementation - and the one that we should probably start with - is just to parse availability on login/whenever we look at the stand and update availability. There might need to be more logic when we make the request, updating availabilities if a request fails, etc.

It's probably not necessary to track quantities, just availabilities.
 

Veracity

Developer
Staff member
It would have the same behavior as a Cafe - the hotdogs appear on the Food panel of the Item Manager - but it's not cafe.php which means it's not a CafeRequest.

We already look into the VIP lounge when you log in, but we just visit the top level and notice if there is a Crimbo present waiting. If there is a Hot Dog Stand, we could post an additional request to look at it and parse what hot dogs are available.

ClanLoungeRequest has no support at all for the Hot Dog Stand yet.
 

Veracity

Developer
Staff member
I assume the same thing that happens if you look at the clan stash and then change clans - we forget what we knew about the first clan. If you then look at the new stash, we refresh. I assume that every time we look at the hot dog stand, we refresh.

Now, what interface (if any) KoLmafia provides to go look at the current state of the current hot dog stand is open to discussion.

I don't really have an opinion, although that might change, since I do have a WL to a clan which has every single hot dog available - unlike my "home" clan.
 

lostcalpolydude

Developer
Staff member
Then the available status of hot dogs would have to be cleared, which would just be an added call to the list of clan stuff to reset. Removing hot dogs from available Concoctions will take some new code, if that's even the best way to do that.
 

Veracity

Developer
Staff member
I notice that when you visit the hot dog stand - and the pool table, and presumably other VIP lounge furnishings - it shows you a furnishing-specific pane and the VIP lounge in a pane beneath. Seems to me, when we "visit" the VIP lounge to check on the Crimbo tree, we could just "visit" the Hot Dog stand and get the Crimbo tree and other furnishings from the same result page.

I just did an experiment. I went to a clan that has no Mr. Furniture and submitted this: clan_viplounge.php?action=hotdogstand

I got the following (trimming out the "head" section):

HTML:
<body><center><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td></td></tr></table></center></td></tr><tr><td height=4></td></tr></table><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Clan VIP Lounge</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><b><a href="clan_hall.php">Grrl Power!</a></b><p></center><table cellpadding=0 cellspacing=0><tr><td rowspan=4 width=25 height=300><img src="http://images.kingdomofloathing.com/otherimages/clanhall/vipleft.gif" width=25 height=400></td><td colspan=3 width=300 height=100><img src="http://images.kingdomofloathing.com/otherimages/clanhall/viptop.gif" width=300 height=100></td><td rowspan=4 width=25 height=300><img src="http://images.kingdomofloathing.com/otherimages/clanhall/vipright.gif" width=25 height=400></td></tr><tr><td width=100 height=100></td><td width=100 height=100><a href=clan_viplounge.php?action=faxmachine><img src=http://images.kingdomofloathing.com/otherimages/clanhall/faxmachine.gif width=100 height=100 border=0 alt="A Fax Machine" title="A Fax Machine"></a></td><td width=100 height=100></td></tr><tr><td width=100 height=100></td><td width=100 height=100></td><td width=100 height=100></td></tr><tr><td width=100 height=100><a href=clan_viplounge.php?action=hottub><img src="http://images.kingdomofloathing.com/otherimages/clanhall//hottub3.gif" width=100 height=100 border=0 alt="A Relaxing Hot Tub (3 uses left today)" title="A Relaxing Hot Tub (3 uses left today)"></a></td><td width=100 height=100></td><td width=100 height=100><a href=clan_viplounge.php?action=klaw><img src="http://images.kingdomofloathing.com/otherimages/clanhall//mrklaw2.gif" width=100 height=100 border=0 alt="Deluxe Mr. Klaw "Skill" Crane Game" title="Deluxe Mr. Klaw "Skill" Crane Game"></a></td></tr><tr><td colspan=5 width=300 height=93><a href="clan_hall.php"><img src="http://images.kingdomofloathing.com/otherimages/clanhall/rumpbottom.gif" width=350 height=93 border=0></a></td></tr></table><p><Center><A href="clan_hall.php">Back to Clan Hall</a></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></body>
In other words, an empty "Results" section followed by a "Clan VIP Lounge" section.
 

Veracity

Developer
Staff member
Revision 12306 refactors visiting the lounge a bit so that we will parse the furniture any time KoL shows it to us. I also made it tell you the name of the clan you are in and made it recognize a visit to the hotdog stand.

Obviously, a lot more needs to be done here.
 

Veracity

Developer
Staff member
Talk about malformed HTML. Why am I surprised?

Revision 12307 parses the Clan Hot Dog stand whenever you visit it. For each hot dog, it calls:

ClanLoungeRequest.registerHotDog( String name, int id, boolean available, String supply, int needed, int stocked );

"name" is the name of the hotdog
"id" is the food ID - a negative number - for the hot dog
"available" is true if the hot dog is available - it is unlocked and there are sufficient supplies to pay for one
"supply" is null for the "basic hot dog" or any hot dog which is not unlocked yet.
"needed" is how many of "supply" you need
"stocked" is how many of "supply" is in stock.

If available is false and stocked < supply, the hot dog is unlocked, but not enough of the supply is stocked
If available is false and supply == null, the hot dog is not unlocked.

To eat a hot dog:

clan_viplounge.php?preaction=eathotdog&whichdog=xxx

To contribute supplies for a hot dog:

clan_viplounge.php?preaction=hotdogsupply&whichdog=xxx&quantity=yyy

Hot Dog IDs:

// whichdog = xxx
// -92 basic hot dog
// -93 savage macho dog
// -94 one with everything
// -95 sly dog
// -96 devil dog
// -97 chilly dog
// -98 ghost dog
// -99 junkyard dog
// -100 wet dog
// -102 optimal dog
// -101 sleeping dog
// -103 video games hot dog

ClanLoungeRequest.registerHotDog() does nothing, yet, but this should be enough for somebody else to make progress on this. ;)
 

Veracity

Developer
Staff member
OK, I changed what is given to ClanLoungeRequest.registerHotDog() - for a hot dog you have not unlocked yet, "supply" is the item you need to unlock it. So:

If available is false and needed == 0, the hot dog is not unlocked and supply tells you what unlocks it
If available is false and stocked < needed, the hot dog is unlocked, but not enough of the supply is stocked

Here is some debugging printout for Clan 1. Note that some of the hot dogs are not unlocked yet, one is unlocked but is not stocked, and others are unlocked and sufficiently stocked.

basic hot dog (-92)
savage macho dog (-93) requires 10 furry fur (80 in stock)
(unavailable) one with everything (-94) can be unlocked with ancient hot dog wrapper
(unavailable) sly dog (-95) can be unlocked with debonair deboner
devil dog (-96) requires 25 hot wad (150 in stock)
(unavailable) chilly dog (-97) can be unlocked with jar of frostigkraut
ghost dog (-98) requires 25 spooky wad (100 in stock)
junkyard dog (-99) requires 25 stench wad (362 in stock)
(unavailable) wet dog (-100) can be unlocked with Engorged Sausages and You
(unavailable) optimal dog (-102) can be unlocked with (unknown)
(unavailable) sleeping dog (-101) requires 10 gauze hammock (0 in stock)
(unavailable) video games hot dog (-103) can be unlocked with (unknown)

Here is Clan 2, from which every single hot dog is available:

basic hot dog (-92)
savage macho dog (-93) requires 10 furry fur (4493 in stock)
one with everything (-94) requires 10 cranberries (2846 in stock)
sly dog (-95) requires 10 skeleton bone (2160 in stock)
devil dog (-96) requires 25 hot wad (5305 in stock)
chilly dog (-97) requires 25 cold wad (5225 in stock)
ghost dog (-98) requires 25 spooky wad (5227 in stock)
junkyard dog (-99) requires 25 stench wad (5297 in stock)
wet dog (-100) requires 25 sleaze wad (5152 in stock)
optimal dog (-102) requires 25 tattered scrap of paper (12144 in stock)
sleeping dog (-101) requires 10 gauze hammock (52 in stock)
video games hot dog (-103) requires 3 GameInformPowerDailyPro magazine (484 in stock)

Revision 12308
 
Last edited:

Veracity

Developer
Staff member
Revision 12320 adds a bunch of support for this, but still qualifies as experimental - especially since I have actually never eaten a hot dog, either before or after this was written. :) In theory, it does all this:

- Visit the current clan hot dog stand when you log in and parse what's available.
- For each available hot dog, add it to the "usables" list.
- When you change clans, clear available hot dogs
- If you manually visit the hot dog stand, reparse.
- Show all available hot dogs on the Food panel,
- If you successfully eat a hot dog (via GUI, Relay Browser, or visit_url), increase fullness.
- If you successfully eat a fancy hot dog (via GUI, Relay Browser, or visit_url), set _fancyHotDogEaten to true

In theory, currently all available hot dogs appear on your Food menu and if you queue one and eat it, it submits the correct URL to make it happen. As I said, I've never eaten a hot dog, yet, but the HTML told me the URL to submit...

I also expect the "eat" command to work for available hot dogs.

I am sure that there are many refinements - including bug fixes :) - that will become clear as we use this.
 

psly4mne

Member
The current implementation doesn't properly restrict the fancy dogs to 1/day. Is that supposed to be working currently? Even after eating a hot dog, I can queue any number for consumption.
 

Veracity

Developer
Staff member
There is no current code to restrict you from queuing more than one, before you have eaten any, but supposedly, when it detects you have eaten a fancy hot dog, it removes all fancy hot dogs from the list of available food.

Sounds like that is not working.

I'll have to try eating a hot dog, one of these days. :)

What does your session log say when you eat a hot dog? (You are eating via the Food panel of the Item Manager?)
 
Top