New Content - Implemented September IotM - bagged Cargo Cultist Shorts

Landamus

New member
I encountered this item and didn't notice acquiring it at the time. I'm not even sure I acquired it from the combat, maybe it was somewhere else, or some other method. My session log follows if it helps.

I don't see anything on the wiki, or a cursory search of the KoL forums. Has anyone else encountered this or some other "bagged" items?

Code:
[218] The Goo-Bedecked Beanstalk
Encounter: 133 odd foot of stalk
Round 0: landamus wins initiative!
Round 1: Your opponent gets its arm stuck in Squuush, which dissolves it down to the bone. Your foe is somewhat weaker now, but on the bright side, sweet skeleton arm, dude.
Round 1: goo-covered beanstalk segment drops 17 attack power.
Round 1: goo-covered beanstalk segment drops 17 defense.
> WHAM: Running SmartStasis
> WHAM: Starting evaluation and performing of attack
> WHAM: We are going to 1-shot with Spittoon Monsoon.
Round 1: landamus executes a macro!
Round 1: landamus casts SPITTOON MONSOON!
Round 2: goo-covered beanstalk segment takes 218 damage.
Round 2: landamus wins the fight!
After Battle: Squuush slurps around, picking up discarded trash and bits.
After Battle: You gain 14 Beefiness
After Battle: You gain 49 Magicalness
You gain a Mysticality point!
You gain a Level!
After Battle: You gain 22 Roguishness

Visiting Gorgonzola, the Chief Chef

Visiting Asiago, the Pastamancer

Visiting Edam, the Sauceror

Visiting Blaine

Visiting Brie, the Trainer
--------------------
10636    Cargo Cultist Shorts    749790865    cultistshorts.gif    pants        0
Cargo Cultist Shorts    100    none
# Item Cargo Cultist Shorts: 666 Pockets to Explore
Item    Cargo Cultist Shorts    Muscle: +6, Mysticality: +6, Moxie: +6, Monster Level: +6, Initiative: +66, Food Drop: +66, Maximum HP Percent: +66, Maximum MP Percent: +66, Free Pull
--------------------
--------------------
10635    bagged Cargo Cultist Shorts    190234623    cultistshortsbag.gif    usable    t    0
Item    bagged Cargo Cultist Shorts    Free Pull
--------------------

guild.php?action=buyskill&skillid=29
 
(posting from session log as I believe the formatting is not as it should be when pasting from the CLI)

Code:
--------------------
10636	Cargo Cultist Shorts	749790865	cultistshorts.gif	pants		0
Cargo Cultist Shorts	100	none
# Item Cargo Cultist Shorts: 666 Pockets to Explore
Item	Cargo Cultist Shorts	Muscle: +6, Mysticality: +6, Moxie: +6, Monster Level: +6, Initiative: +66, Food Drop: +66, Maximum HP Percent: +66, Maximum MP Percent: +66, Free Pull
--------------------
--------------------
10635	bagged Cargo Cultist Shorts	190234623	cultistshortsbag.gif	usable	t	0
Item	bagged Cargo Cultist Shorts	Free Pull
--------------------

use 1 bagged Cargo Cultist Shorts
You acquire an item: Cargo Cultist Shorts

use 1 Cargo Cultist Shorts
Preference lastEncounter changed from Daily Loathing Ballot to What has it got in its pocketses?
Encounter: What has it got in its pocketses?
Took choice 1420/2: Nevermind
choice.php?whichchoice=1420&pwd&option=2

The choice has 666 options. I have yet to click any.

And some new stuff from the mall

Code:
--------------------
10625	onyx rook	720938437	chess9.gif	usable	t,d	6
# Item onyx rook
--------------------
--------------------
10630	alabaster queen	675056992	chess5.gif	usable	t,d	6
# Item alabaster queen
--------------------
--------------------
10629	alabaster king	306987049	chess4.gif	usable	t,d	6
# Item alabaster king
--------------------
--------------------
10631	alabaster rook	124592362	chess3.gif	usable	t,d	6
# Item alabaster rook
--------------------
 
Last edited:

Veracity

Developer
I put in those and more, as scraped from the mall and the spreadsheet, in revisions r20334 and r20335

I'm wondering if this is something deserving of support like the Deck of Every Card of Numberology, where there are 666 pockets, each with an item, effect (or two), or something else.

Initial spading seems to say you can only use a particular pocket once. Per day? Per Ascension? Ever?

I'd like to see a DEBUG log from visiting, the shorts and clicking to open a pocket. You know, to figure out the API for manipulating it programatically.

I'll buy one tomorrow. Forgot to do it today.
 

fredg1

Member
the pockets all reappear on ascension, but you can't use the same pocket more than once per ascension (does it reset once you open all 666, though?)
 
Couple more from searching the mall today

Code:
--------------------
10627	onyx knight	222984309	chess12.gif	usable	t,d	6
# Item onyx knight
--------------------
--------------------
10631	alabaster rook	124592362	chess3.gif	usable	t,d	6
# Item alabaster rook
--------------------
 

matt.chugg

Moderator
I'd like to see a DEBUG log from visiting, the shorts and clicking to open a pocket. You know, to figure out the API for manipulating it programatically.

attached.

I used the shorts
I entered some "not a number" text in the field first, to see what happens
I clicked pocket 416

View attachment DEBUG_20200903.txt

each individual button has the following:

Code:
<form method="post" action="choice.php" style="display: inline">
<input type="hidden" name="whichchoice" value="1420">
<input type="hidden" name="pwd" value="********************">
<input type="hidden" name="option" value="1">
<input type="hidden" name="pocket" value="356">
<input type="submit" value="#356" class="button" style="width: 4em">
</form>
 

lostcalpolydude

Developer
I'm wondering if this is something deserving of support like the Deck of Every Card of Numberology, where there are 666 pockets, each with an item, effect (or two), or something else.

I was thinking of starting on a data file (because such a long list doesn't seem like it needs to go in the code) for this (the grunt work that likely doesn't need much thinking), and was trying to decide on a format. Item/Monster/Effect, tab, then the name of it would be straightforward. But then there are stats from some pockets (just say Stats, or actually have all 3 values somehow?), messages from others (probably just Message and no one will script those anyway), and multiple effects from some. I didn't come up with a good way of handling that yet, so I did nothing so far.
 

Veracity

Developer
Interesting problem.

The spreadsheet is helpful, although not everybody is entering useful information. Quite a few items just have the item name, but no link. Hopefully, that would be a desc_item link, but there are a few cases where people gave a link to a screen shot.

Monster - leads to a fight (like some Deck or Numberology choices do)
(Monster) - pocket drops an item which, when used, leads to a fight. The desk bells, in particular
Item - lots of candy, chess pieces, Yeg Motel stuff, desk bells
Effect 2 - An effect
Effect 2 - (optional) An effect
Meat
Message - puzzle, or a joke - which also gives you Joke-Mad effect
Stas - 1, 2, or 3 stats, not necessarily balanced

Personally, I am focusing on getting the desk bells, first, so I can monster ids and my first factoids.

Chess pieces say "You don't have a full chess set and you know no games which require less than 32 chess pieces", according to Wiki.
That might imply you need 1 king and 1 queen, 2 rooks and bishops and knights, and 8 pawns of both colors before you cann use the set.
And there is a cryptographic puzzle of some sort.

Pretty interesting! There is ascension relevance, so we will want a "cargo" command (or something), like "cheat" or "numberology" or "teatree".

inventory.php?action=pocket
Location: choice.php?forceoption=0
choice.php?forceoption=0
What has it got in its pocketses?
There appear to be 666 pockets on these shorts. Which one do you want to open today? (You've already opened 2 of them.)
(Choice form lists only available pockets)
Take something from a pocket: XXX = 1-666
choice.php?whichchoice=1420&option=1&pocket=XXX
=> That's not a pocket. (If you give a non-number) (leaves you in choice)
=> (same message if you type in an invalid number?)
=> (same message if you type in an already used number?)
=> It seems like the power of the pockets has been exhausted for the day. (leaves you in a choice)
=> (response text) (no longer in choice)
(Nevermind)
choice.php?whichchoice=1420&option=2
(You can walk away from it)

I'll code up CargoShortsRequest to handle the plumbing - logging, property to track already used pockets this ascension, whatever.

The database - text file, read into set of objects - as proposed by lost - should probably go into CargoShortsManager, and the command in CargoCommand.
I'd happily leave the data stuff to lost. :)

Items the spreadhsheet mentions with no descid:

84 Yeg's Motel shower cap
132 Yeg's Motel slippers
587 frost-rimed desk bell

Item number gaps:

10612, 10614 - Yeg Motel items
10618 - desk bell items
10622 - unknown

We have a hot, cold, sleaze, stench, and spooky desk bell. Seems like that could be the complete set.
 

lostcalpolydude

Developer
20341 adds cultshorts.txt. Most of the data isn't in there yet, because I'm adding things manually, partly so I can sanity check along the way. Capitalization in the spreadsheet often does not match KoL for item and monster names. I just discovered that a single pocket can have more than 1 item, so that's another thing to handle.
 

Veracity

Developer
Chess pieces say "You don't have a full chess set and you know no games which require less than 32 chess pieces", according to Wiki.
That might imply you need 1 king and 1 queen, 2 rooks and bishops and knights, and 8 pawns of both colors before you cann use the set.
...
10622 - unknown
That item number immediately precedes the 6 onyx and 6 alabaster chess pieces, which are followed immediately by the bagged and unbagged shorts.

Conjecture: once you collect the 32 chess pieces:

1 (onyx, alabaster) king
1 (onyx, alabaster) queen
2 (onyx, alabaster) rook
2 (onyx, alabaster) knight
2 (onyx, alabaster) bishop
8 (onyx, alabaster) pawn

"using" a chess piece will give you a chess set as item 10622.
Probably consuming the chest pieces, much as 52 lewd playing cards gives you a deck of lewd playing cards.

It will take 8 ascensions to accomplish that.

I'm lingering in aftercore a bit to finish getting my PVP Seasoning reward. I'll get that tommorrow, but no reason not to get a bit more Swagger while collecting 5 desk bells and 2 pawns.
And then into a 7-ascension sequence to collect the rest of the chest set (and more desk bells, to finish my factoids).

I'm on it. :)
 

Veracity

Developer
Revision 20349 is initial support for CargoCultistShortRequest. Sort of hard to test, since I can only make one request a day. :)

- When you visit your shorts, it parses the page and detects which pockets are NOT there. It sets "cargoPocketsEmptied" to a string like this: "517,533,587,590".
- When you take a choice to empty a pocket, it sets "_cargoPocketEmptied" to true. It probably does not do that if it redirects to a fight. I'll try to remember how to do that.
- It should log in the gCLI and session log when you visit your shorts and select a pocket.

With any luck, tomorrow I will see:

[1361] Cargo Cultist Shorts
picking pocket 653
You acquire an item: nasty desk bell

And it's a real Request class with two constructors:

Code:
	public CargoCultistShortsRequest()
	{
		super( "choice.php" );
		this.addFormField( "whichchoice", "1420" );
		this.addFormField( "option", "2" );
		this.pocket = 0;
	}

	public CargoCultistShortsRequest( int pocket )
	{
		super( "choice.php" );
		this.addFormField( "whichchoice", "1420" );
		this.addFormField( "option", "1" );
		this.addFormField( "pocket", String.valueOf( pocket ) );
		this.pocket = pocket;
	}
In both cases, when you run() it, it will first go to "inventory.php?action=pocket" to fire off the choice adventure.

This is the mechanism that will be needed for a "cargo" command. That command - and this request - will benefit from a good database of pockets. For example, which pockets redirect to monsters? Which of those monsters are free fights? And so on.

I'll be tweaking this, one pocket at a time, day by day...
 

Veracity

Developer
Revision 20350 adds a trivial "cargo" command

Code:
[color=green]> cargo[/color]

[1361] Cargo Cultist Shorts
You have picked the following pockets during this ascension:
517
533
587
590

[color=green]> get cargoPocketsEmptied[/color]

517,533,587,590

[color=green]> get _cargoPocketEmptied[/color]

true

[color=green]> cargo 653[/color]

[color=red]You've already looted a pocket from your Cargo Cultist Shorts today[/color]

[color=green]> set _cargoPocketEmptied=false[/color]

_cargoPocketEmptied => false

[color=green]> cargo 590

[1361] Cargo Cultist Shorts
[color=red]You've already emptied that pocket this ascension.[/color]

[color]> cargo 653[/color]

[1361] Cargo Cultist Shorts
picking pocket 653

[color=green]> get _cargoPocketEmptied[/color]

true
It's really simple minded, but I can already see a few improvements:

- The command (or request) could look at the list of emptied pockets and decide that you've already picked a pocket, before trying to visit and detecting it then.
(although we do want to handle the property not being up to date, in case you pick a pocket outside of KoLmafia.)
- If we try to pick a pocket and you already picked today, error message in red.

I expect we'll eventually soup up this command to be able to request effects, items, monsters, ...
 

Veracity

Developer
Worked like a charm.

Code:
[color=green]> cargo 653[/color]

[1361] Cargo Cultist Shorts
picking pocket 653
You acquire an item: nasty desk bell
I think the "plumbing" is wired up. There are sure to be tweaks needed to handle preferences when you pick a pocket that redirects to a fight. Does it require you to have a tuen available in order to use - because some fights caost trns? Or are all fights free? Or does it require you to have a turn available even though some fights are free? And is the logging Just As It Should Be?

And there is always the design question of how much checking and error messages goes into the request's run() method, and how much is expected to be checked before calling. If the only caller is the "cargo" command, whatever, but if we added an ASH function which called the request, not through the command, then it's trickier.

I am still hoping to find the descid for the Yeg's Hotel slippers. I will enter them into our database. At that point, we will have all the items and all the effects, and the spreadsheet has all the monsters, and, it will be up to lost's fine start of making a data file with all 666 pockets. Given that, we can improve the command, add commands to get effects in statuseffects.com, teach the maximizer to propose effects, now that we have sources for those effects, and so on.

Speaking for myself, I'd think long and hard about accepting a maximizer suggestion for a once-per-ascension effect, but it's be nice to have it presented to me.

In any case, I'm leaving the data file, the command, and the maximizer to lost. It should be a fun little software engineering design problem, And data entry.

For me, I have what I need: get the bells (and factoids) and chess pieces. Linger a while in this aftercore, as long as I'm doing OK in PVP, picking up chess pieces. And then, dive in for X more ascensions to get the rest of the chess pieces and the fancy chess set. Maybe I will eventually buy some, if they are cheap, and stop ascending. But I think I am now a user, rather than a coder, for this IOTM. :)
 

Veracity

Developer
Minor improvements:

When you log in, load cargoPocketsEmptied property into a set
"cargo" prints the picked pockets from that set.
"cargo inspect" looks at the shorts and refreshes the property and prints the picked pockets.
When you pick a pocket, either via "cargo XXX" or in relay browser or a script, if successfully pick a pocket, updates set and property.

Does not update thae set/property if picking a pocket redirects to a fight.
I'll have to figure out/remember how to handle that situation.
 

Veracity

Developer
Revision 20355 should handle redirecting to a fight. This uses the same mechanism we use to log Genie and Science Tent fights, which are redirections from a choice.
Untested.
 
Top