New Content - Implemented September IotM - bagged Cargo Cultist Shorts

Veracity

Developer
Revision 20400 adds four subcommands to the "cargo" command:

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

Pocket #373: part #1 of a demon name
Pocket #222: part #2 of a demon name = ge_
Pocket #7: part #3 of a demon name = Go
Pocket #602: part #4 of a demon name
Pocket #172: part #5 of a demon name = Yi
Pocket #251: part #6 of a demon name = ya
Pocket #282: part #7 of a demon name

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

Pocket #112: Joke-Mad (20) and a joke: "Q: What is a skeleton's favorite competitive college sport? A: Skeleton crew."
Pocket #119: Joke-Mad (20) and a joke: "Q: How does a skeleton know what's about to happen? A: He feels it in his bones."
Pocket #163: Joke-Mad (20) and a joke: "Q: Why didn't the skeleton go to school? A: His heart wasn't in it."
Pocket #188: Joke-Mad (20) and a joke: "Q: Why do skeletons tell so many jokes? A: Because they're very humerus."
Pocket #209: Joke-Mad (20) and a joke: "Q: What do you call a skeleton who won't go to work? A: Lazy bones."
Pocket #260: Joke-Mad (20) and a joke: "Q: Why didn’t the skeleton cross the road? A: He didn't have the guts."
Pocket #272: Joke-Mad (20) and a joke: "Q: What did the skeleton chef say? A: Bone Apetit!"
Pocket #307: Joke-Mad (20) and a joke: "Q: What instrument does a skeleton play? A: The trombone."
Pocket #370: Joke-Mad (20) and a joke: "Q: Why don't skeletons watch horror movies? A: They don't have the stomach for it."
Pocket #387: Joke-Mad (20) and a joke: "Q: What did the skeleton bring to the picnic? A: Spare ribs."
Pocket #433: Joke-Mad (20) and a joke: "Q: What did the skeleton serve his tea in? A: Bone china."
Pocket #437: Joke-Mad (20) and a joke: "Q: Why do skeletons stay so calm? A: Because nothing gets under their skin."
Pocket #513: Joke-Mad (20) and a joke: "Q: What instruments can a skeleton NOT play? A: His organs."

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

Pocket #577: 118 Meat and a clue: To enrage, anger or annoy
Pocket #149: 245 Meat and a clue: A bittersweet longing for people or things from the past
Pocket #115: 351 Meat and a clue: Perilous or likely to do harm
Pocket #139: 451 Meat and a clue: Overflowing with enthusiasm
Pocket #554: 566 Meat and a clue: An instrument composed of wooden bars played with two small mallets
Pocket #504: 678 Meat and a clue: A larval insect that burrows into and feeds on the internal tissue of the principal photosynthetic organ of plants)
Pocket #54: 725 Meat and a clue: One guilty of the wrongful performance of a normally lawful act
Pocket #484: 872 Meat and a clue: A beating with a cane made of the thin pliable stems of a climbing palm
Pocket #621: 917 Meat and a clue: Being at the level of the narrowest part of the torso

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

Pocket #82: encrypted half-line #1 of a poem: FORPL QDL QDMOQLLV XRMZJOX ALOL
Pocket #531: encrypted half-line #2 of a poem: QDJKTD ALQ FLDMVC QDL LROX
Pocket #246: encrypted half-line #3 of a poem: LGFROUMVT JV QDRQ QKLXCRI HJO
Pocket #108: encrypted half-line #4 of a poem: R PJIRTL JH QAJ ILROX
Pocket #632: encrypted half-line #5 of a poem: VJ FZRSU SRQ SOJXXLC QDL TOLRQ XDMW'X WRQD
Pocket #245: encrypted half-line #6 of a poem: VJ CMOL SOJA SRALC MQX VRGL,
Pocket #45: encrypted half-line #7 of a poem: QDL XQROX ALOL OMTDQ, QDL DJZC ARX QMTDQ
Pocket #640: encrypted half-line #8 of a poem: QDL XLR KVSJGGJV QRGL
Pocket #623: encrypted half-line #9 of a poem: DJA HJOQKVLX XDMHQ, HJO QDKOXCRI'X TMHQ:
Pocket #444: encrypted half-line #10 of a poem: QDL QJA'OMVT GRXQ XQJOG-DLAV
Pocket #628: encrypted half-line #11 of a poem: M CJ VJQ, XRMC QDL VRPMTRQJO
Pocket #561: encrypted half-line #12 of a poem: OLSJTVMYL QDRQ GJJV
Pocket #457: encrypted half-line #13 of a poem: SJGWRXX ADMOZMVT, XRMZX KVHKOZMVT
Pocket #658: encrypted half-line #14 of a poem: GRMV CLSU XZMSU AMQD ARPLX
Pocket #502: encrypted half-line #15 of a poem: XQORVTL XLRX, MQ XLLGX, QDL SRWQRMV ADLLYLC
Pocket #375: encrypted half-line #16 of a poem: ROL RWQ QJ FL JKO TORPLX
Pocket #181: encrypted half-line #17 of a poem: QDL XUI RVC ARQLO XDROLC JVL HRSL
Pocket #520: encrypted half-line #18 of a poem: QDRQ XVLLOLC AMQD ZMTDQVMVT QLLQD
Pocket #405: encrypted half-line #19 of a poem: R ORTMVT SISZJVL GMOOJOMVT
Pocket #540: encrypted half-line #20 of a poem: QDL XAMOZMVT WJJZ FLVLRQD
Pocket #153: encrypted half-line #21 of a poem: OLLU JH JYJVL, FOMGXQJVL XQMVUMVT
Pocket #330: encrypted half-line #22 of a poem: [WJLG SKQ JHH FI XDMW XMVUMVT]
The first one gets your saved values from the cargoPocketScraps property.
The others are constant for everybody.
 

Rinn

Developer
Ran cargo scraps with none of those pockets opened and got an error
Code:
Unexpected error, debug log printed.
class java.lang.ArrayIndexOutOfBoundsException: 1
java.lang.ArrayIndexOutOfBoundsException: 1
	at net.sourceforge.kolmafia.request.CargoCultistShortsRequest.knownScrapPockets(CargoCultistShortsRequest.java:368)
	at net.sourceforge.kolmafia.textui.command.CargoCultCommand.run(CargoCultCommand.java:120)
	at net.sourceforge.kolmafia.KoLmafiaCLI.doExecuteCommand(KoLmafiaCLI.java:596)
	at net.sourceforge.kolmafia.KoLmafiaCLI.executeCommand(KoLmafiaCLI.java:549)
	at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:450)
	at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:318)
	at net.sourceforge.kolmafia.swingui.CommandDisplayFrame$CommandQueueHandler.handleQueue(CommandDisplayFrame.java:199)
	at net.sourceforge.kolmafia.swingui.CommandDisplayFrame$CommandQueueHandler.run(CommandDisplayFrame.java:168)
 

Veracity

Developer
think anything else depends on finishing lost's cultshorts.txt and loading it into a cargo pocket database of some sort.
- souping up the "cargo" command
- adding appropriate "cargo" commands to the new effects in statuseffects.txt
- supporting "cargo" in the Maximizer
- removing "temporary" code from the Request class in favor of using the pockets database
We have PocketDatabase now and it is time to think about how ro use it.

- I removed all the "temporary" code: if you use the "cargo" command, we'll do restoration first - only if the pocket has a monster, per the PocketDatabase.
- I made the code that assembles a demon name use the PocketDatabase to look at the scraps in the correct order, rather than having that hardcoded.

1) I'd like there to be a way to list pockets of a specific type - and tell you if you've used them yet. Chess pieces, desk bells, maybe chocolates for items.
Do you want to see all the fruits? Avatar potions? Yeg Motel items? A suitable command to list pockets by item categories would be easy enough.

2) There are a ton of effects that have a single source pocket: (many) of the Effect pockets, Buff, Candy1, Candy1 Chips1, Gum1, Lens1, Needle1, and Teeth1
Those could added to statuseffects.txt via "cargo XXX". Or:

3) The rest of Effect, as well as Element and Joke, have multiple pockets that grant the same effect.

cargo list effect NAME (or effectID)
(List - only unused? - pockets(s) (with duration) that provide the effect

cargo effect NAME (or effectID)
(Select an unused pocket that provides the effect and pick it.)

This could also work with the pockets in part 2 - those with only a single source pocket

4) Do we care about handling Candy, Chips, Gum, Lens, Needle, Teeth? These provide all the combinations of two effects from their various effect sets.
Perhaps "cargo list tag TAG" could list all the pockets with a given tag

5) monsters?

cargo monster NAME

6) stats?

There are 3 pockets which give 250 of a single state - like bastille.

cargo stats STAT

There are numerous pockets that give a lesser number of 2 or 3 stats - adding up to 250 - 300. That is too complicated.

7) Maximizer

-------

I'll probably think about the informational things first.

cargo count tag TAG
cargo list tag TAG
cargo count effect EFFECT
cargo list effect EFFECT

The infrastructure needed for those will probaby make it easier to have "cargo effect EFFECT".
 

Veracity

Developer
Ran cargo scraps with none of those pockets opened and got an error
Thanks. Revision 20403

Not logged in:

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

Pocket 345 is unknown
Pocket 442 is unknown
Pocket 647 has effect duration 0: Cold, Dead Hands (0)
Pockets loaded: 666
Pocket #373: part #1 of a demon name
Pocket #222: part #2 of a demon name
Pocket #7: part #3 of a demon name
Pocket #602: part #4 of a demon name
Pocket #172: part #5 of a demon name
Pocket #251: part #6 of a demon name
Pocket #282: part #7 of a demon nam
 

Veracity

Developer
These are all the so-called "Common Effects":

cargo hot => cargo effect Sizzlin' Hand
cargo cold => cargo effect Frosty Hand
cargo spooky => cargo effect Spooky Hand
cargo stench => cargo effect Foul Hand
cargo sleaze => cargo effect Nasty Hand
cargo items => cargo effect Finding Stuff
cargo +combat => cargo effect Very Attractive
cargo -combat => cargo effect Barely Visible
cargo ML => cargo effect Joke-Mad
cargo init => cargo effect Wary
 

Veracity

Developer
Revision 20407 dramatically simplifies the code in PocketDatabase that maintains maps for pocket types: each pocket type has an internal map which pockets add themselves to, thus obviating all the explicitly defined map variables and the code to add things to them.

Modulo how we want pockets to be sorted when displayed, this will make the code in the "cargo" command to get all the pockets of a particular type completely trivial.
Huh. I be that would be easy to do using Java 8 lambdas...
 

Veracity

Developer
Revision 20408 adds "cargo count type TYPE" command.

Code:
[color=green]> cargo count type element[/color]

Pocket 647 has effect duration 0: Cold, Dead Hands (0)
Pockets loaded: 666
There are 55 element pockets.

[color=green]> cargo count type choco[/color]

There are 6 choco pockets.

[color=green]> cargo count type chess[/color]

There are 12 chess pockets.

[color=green]> cargo count type bell[/color]

There are 5 bell pockets.

[color=green]> cargo count type potion[/color]

There are 87 potion pockets.

[color=green]> cargo count type avatar[/color]

There are 24 avatar pockets.

[color=green]> cargo count type item[/color]

There are 25 item pockets.

[color=green]> cargo count type item2[/color]

There are 3 item2 pockets.

[color=green]> cargo count type candy[/color]

There are 66 candy pockets.

[color=green]> cargo count type monster[/color]

There are 28 monster pockets.
 

Veracity

Developer
Revision 20409 adds "cargo list type TYPE" to list a (sensibly sorted) list of all pockets with that type.

Here are the current types:

Code:
# Stats		MUSCLE	MYSTICALITY	MOXIE
#
# Monster	MONSTER
#
# Common	EFFECT (DURATION)
# Effect	EFFECT (DURATION)
#
# Buff		EFFECT (DURATION)
# Element	EFFECT (DURATION)
# Joke	 	JOKE    	(implies Joke-Mad (20))
# Restore	EFFECT (DURATION)	(Full HP/MP restore)
#
# Candy1	EFFECT (DURATION)
# Candy2	EFFECT (DURATION)
# Chips1	EFFECT (DURATION)
# Gum1		EFFECT (DURATION)
# Lens1		EFFECT (DURATION)
# Needle1	EFFECT (DURATION)
# Teeth1	EFFECT (DURATION)
#
# Candy		EFFECT (DURATION)	EFFECT (DURATION)
# Chips		EFFECT (DURATION)	EFFECT (DURATION)
# Gum		EFFECT (DURATION)	EFFECT (DURATION)
# Lens		EFFECT (DURATION)	EFFECT (DURATION)
# Needle	EFFECT (DURATION)	EFFECT (DURATION)
# Teeth		EFFECT (DURATION)	EFFECT (DURATION)
#
# Item		ITEM
# Item2		ITEM	ITEM
#
# Avatar	ITEM
# Bell		ITEM
# Booze		ITEM
# Cash		ITEM
# Chess		ITEM
# Choco		ITEM
# Food		ITEM
# Fruit 	ITEM
# Oyster	ITEM
# Potion	ITEM
# Yeg		ITEM
#
# Scrap		NUMBER		(demon name puzzle)
# Poem		NUMBER	MESSAGE	(waterlogged poem)
# Meat		MEAT	CLUE	(meat-wrapped puzzle)
Common is per Wiki - an effect with multiple pocket giving that (single) effect
Effect is per the Wiki's "Rare" effects - a single pocket grants it.

Pockets with a single item sort by the item name.
Pockets with two items sort by the first item name then the second item name.
Similarly for one and two effect pockets.
scraps sort by scrap number, poem sorts by line number, and so on.

I have not figured out a sensible way to sort stats. For now, they are by pocket number.
Similarly for jokes.

I listed Types up above, but you don't need to obey capitalization: "effect" is as good as "Effect".
 

Veracity

Developer
Revision 20410 does this:

Remove "cargo poem" since "cargo list type poem" does the same thing.
Remove "cargo meat" since "cargo list type meat" does the same thing.
Remove "cargo jokes" since "cargo list type joke" does the same thing.
Remove "cargo scraps" since "cargo list type scrap" lists the scraps in order.
Keep "cargo demon", which lists the scraps in order and also shows which values you have collected.

I confirmed that getting the 7th syllable of the demon name learns the demon name.

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

Pocket #373: part #1 of a demon name = Gu
Pocket #222: part #2 of a demon name = ge_
Pocket #7: part #3 of a demon name = Go
Pocket #602: part #4 of a demon name = gu_
Pocket #172: part #5 of a demon name = Yi
Pocket #251: part #6 of a demon name = ya
Pocket #282: part #7 of a demon name = gi

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

Guge Gogu Yiyagi
I also changed the internal pocket maps from TreeMaps to HashMaps, since the only places which iterate over them sort the pockets using something other than pocket #. May as well have O(1) rather than O(log N) efficiency.
 

Veracity

Developer
By the way - I made my fancy chess set on 9/22. I've been playing a chess game each day since them.

Code:
9/22 lost chess game
9/23 won chess game
9/24 lost chess game
9/25 lost chess game
9/26 won chess game
9/27 won chess game
9/28 lost chess game
9/29 lost chess game => unlocked tattoo
Any theories about "you have to win X to unlock the tattoo" are false. I think there's a base percentage each game whether to unlock it.

I ran my tattoo checker script which reads the tattoos from the Wiki and compares to profile and got this:

Code:
[color=green]> call scripts/Utilities/tattoos.ash[/color]

The wiki lists 263 tattoos.
You have 265 tattoos.

You have every non-custom tattoo that is listed in the Wiki.

You have 2 tattoos that the Wiki doesn't know about:
lathetat
yegtat
FWIW, here is the script.

Code:
string wiki = visit_url( "https://kol.coldfront.net/thekolwiki/index.php/Tattoo" );
matcher wm = create_matcher( "thekolwiki/images/.*?/.*?/(.*?).gif", wiki );
boolean [string] wiki_tattoos;
boolean [string] unobtainable_tattoos;

while ( wm.find() ) {
    string tat = wm.group(1).to_lower_case();
    switch ( tat ) {
	// Some Wiki images do not agree with Kol.
    case "guzzlrtattoo":
	tat = "guzzlrtat";
	break;
    case "nobeertat":
	tat = "nobeer";
	break;
    case "martinitat":
	tat = "martini";
	break;
    case "minertat":
	tat = "miner";
	break;
    case "bearclawtat":
	tat = "bearclawta";
	break;
    case "fratboytat":
	tat = "fratboy";
	break;
    case "palette2":
	tat = "palette";
	break;
    case "clowntat":
	tat = "clown";
	break;
    case "c18tattoo":
	tat = "c18tat";
	break;
	// Custom tattoos
    case "bunny":
    case "cutter":
    case "daisytat":
    case "bonertat":
    case "tehclub":
    case "tehclub_f":
    case "tikidemon":
    case "wintat":
    case "platytat":
	continue;
    	// Some tattoos have intemediate stages culminating in a final tattoo:
    case "aol1":
    case "aol2":
    case "aol3":
    case "aol4":
    case "aol5":
	// A. W. O. L. tattoo
	tat = "aol5";
	break;
    case "sspdtat1":
    case "sspdpook2":
    case "sspdfipp3":
    case "sspd4plunk":
    case "sspdfi5if":
	// Saint Sneaky Pete's Day tattoo
	tat = "sspdfi5if";
    	break;
    }

    wiki_tattoos[ tat ] = true;
 }

print( "The wiki lists " + count( wiki_tattoos ) + " tattoos." );

string page = visit_url( "account_tattoos.php", false );
// <img src="https://s3.amazonaws.com/images.kingdomofloathing.com/otherimages/sigils/sourcetat.gif" width=50 height=50>
matcher m = create_matcher( "<img.*?sigils/(.*?).gif", page );
boolean [string] tattoos;

while ( m.find() ) {
    string tat = m.group(1);
    tattoos[ tat ] = true;
}

print( "You have " + count( tattoos ) + " tattoos." );

boolean [string] wiki_only;
boolean [string] player_only;

foreach tat in wiki_tattoos {
    if ( tattoos contains tat ) {
	continue;
    }
    wiki_only[ tat ] = true;
}

foreach tat in tattoos {
    if ( wiki_tattoos contains tat ) {
	continue;
    }
    player_only[ tat ] = true;
}

print( "" );
if ( count( wiki_only ) == 0 ) {
    print( "You have every non-custom tattoo that is listed in the Wiki." );
} else {
    print( "The Wiki lists " + count( wiki_only ) + " tatoos that you do not have:" );
    foreach tat in wiki_only {
	print( tat );
    }
}

print( "" );
if ( count( player_only ) == 0 ) {
    print( "The Wiki lists every tattoo that you have." );
} else {
    print( "You have " + count( player_only ) + " tattoos that the Wiki doesn't know about:" );
    foreach tat in player_only {
	print( tat );
    }
}
Maybe I should publish it in its own thread except I really don't want to put any more work into it.
 

fronobulax

Developer
I'm probably missing something but...

As a Display Case obsessive the first thing I want from my Cargo Pants is any displayable item that I don't already have.

cargo list type item will get me 25 items but it looks like I need 12 or 13 variations on the last parameter to get everything that is "possible" (from which I can capture the output and process as desired).

ashref car doesn't tell me whether there is an ash equivalent or not.

I can script what I want with what I already know about, but I am lazy and definitely have trouble remembering things so is there something there I probably want to know about?

Thanks.
 

Veracity

Developer
As you have noticed, there is no script support yet.
All the items are in an “item1” pocket - or a subclass.

You are the first to suggest a list that collapses the subclasses in with the item1 for “processing” even though there is no scripting support.

If you want just the new items, they are bell, chess, yeg, and the flask of moonshine.
 

Crowther

Active member
I'm looking forward to ash support, but I have no clue what that would look like.

As far as I can tell, all the new items are tradable. Prices are dropping pretty quickly too.
 

Veracity

Developer
Revision 20412 adds the "cargo list effect EFFECT" command. (also the "cargo count effect EFFECT" command, FWIW.)

These only work with "single effect" pockets. So, candy1 and candy2, say, but not candy, which gives one from each of those.
The are listed in order of decreasing duration - which only applies, as it happens to 202/20 Vision; every single other effect offers the same duration, from a Single Effect pocket.

If I wanted to add the two-effect pockets, those would sort to the end, since single-effect pocket durations are always longer.

This technology will be used for a forthcoming "cargo effect EFFECT" command, which will get the list of pockets and choose the first one you have not already used this run.

Code:
[color=green]> cargo list effect Cold, Dead Hands[/color]

There is 1 pocket that grants only the 'Cold, Dead Hands' effect.
Pocket #647: a rare effect: Cold, Dead Hands (20)

[color=green]> cargo list effect 20/20 Vision[/color]

There are 2 pockets that grant only the '20/20 Vision' effect.
Pocket #550: a contact lens effect: 20/20 Vision (80)
Pocket #603: a contact lens effect: 20/20 Vision (60)

[color=green]> cargo list effect Help Me[/color]

[color=red]Your shorts do not contain an effect named 'Help Me'.[/color]

[color=green]> cargo list effect Sizzlin' Hand[/color]

There are 11 pockets that grant only the 'Sizzlin' Hand' effect.
Pocket #56: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #72: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #214: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #221: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #231: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #239: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #253: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #371: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #579: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #608: an elemental resistance effect: Sizzlin' Hand (20)
Pocket #652: an elemental resistance effect: Sizzlin' Hand (20)
 
Last edited:

Veracity

Developer
I'm looking forward to ash support, but I have no clue what that would look like.
Neither do I. That's why I'm putting it off to the end.

Presumably "cargo XXX" and "cargo effect EFFECT" would be easy - pick the specific pocket or the first not-yet-picked one that grants an effect.
Also a boolean function to tell you if you've picked a particular pocket this run.

But making all the informative stuff accessible is harder. Sure, getting a list of pocket numbers for an EFFECT, as I just added, would be easy enough. That in conjunction with the "already picked" predicate function would let you know which pocket # to go to to get a particular effect. But "give me details abut pocket #123" - two effects each with a different duration, vs. a single item + count, for example - is non-obvious. Figuring out a suitable and understandable data structure. Huh. I am considering a JSON string - but then you-all would ask for JSON support in ASH. :)
 

fronobulax

Developer
As you have noticed, there is no script support yet.
All the items are in an “item1” pocket - or a subclass.

You are the first to suggest a list that collapses the subclasses in with the item1 for “processing” even though there is no scripting support.

If you want just the new items, they are bell, chess, yeg, and the flask of moonshine.

Thanks.

I am definitely an edge case in more ways than one.

One character with the pants has never ascended and is unlikely to do so. They will spend the next couple of years opening pockets to get a displayable item not gotten otherwise and then in some arbitrary order. Maybe there is a trophy in their future?

The other character also wants displayable items that they don't have, followed by things that lead to fights for factoids. When those are done then useful effects or profitable items will drive the choice.

I can do everything I want using cultshorts.txt so I can support myself once I figure out the map so I can read it from file_to_map.

I can imagine a function which_pocket(item) which returns a zero OR the number of an unopened pocket containing the item. I can then imagine open_pocket(int) which opens the specified pocket. Could probably make it return a boolean as long as we are careful to define what the return means.

I then hardwire a list of pocket items, and iterate over it opening the most needed or most profitable pocket.

I can imagine expanding with a which_pocket(effect) but only if there is not Maximizer support :)
 
Huh. I am considering a JSON string - but then you-all would ask for JSON support in ASH. :)

There's already "to_json", given a suitable map.

From a writing-script perspective, what I'd like is a map from items (or fights, or effects, but mostly items) to pockets, just so I don't have to hardcode the pockets and possibly get them wrong.
 

Veracity

Developer
Revision 20414 adds "cargo list item ITEM" and "cargo list monster MONSTER".
It also adds the various two-effect pockets to the list of pockets for both effects.
Since those lists sort first by highest duration, the first will always be the pocket producing the single effect.
This is true for the two-item pockets, as well - those that have both stars and lines.

Next up will be:

cargo item ITEM
cargo effect EFFECT
cargo monster MONSTER

Which will get the (sorted) list of pockets as displayed by "list" and pick the first one that has not already been picked.

And then ASH.

And finally the Maximizer.
 

Veracity

Developer
Revision 20415 adds "cargo item ITEM", "cargo effect EFFECT", and "cargo monster MONSTER", which will actually pick the "best" pocket for you that has the thing you were looking for.
It also lets you "check" which pocket that will be by using "cargo?" instead of "cargo".

I guess that means that "cargo pocket NNN" is now the same as "cargo? NNN".

Code:
[color=green]> cargo list type bell[/color]

Pockets loaded: 666
There are 5 bell pockets.
Pocket #587: a desk bell: frost-rimed desk bell (1)
Pocket #533: a desk bell: greasy desk bell (1)
Pocket #653: a desk bell: nasty desk bell (1)
Pocket #517: a desk bell: sizzling desk bell (1)
Pocket #590: a desk bell: uncanny desk bell (1)

[color=green]> cargo list item frost-rimed desk bell[/color]

There is 1 pocket that contains a 'frost-rimed desk bell'.
Pocket #587: a desk bell: frost-rimed desk bell (1)

[color=green]> cargo? item frost-rimed desk bell[/color]

Pocket #587: a desk bell: frost-rimed desk bell (1)

[color=green]> cargo item frost-rimed desk bell[/color]

Inspecting Cargo Cultist Shorts
picking pocket 587
You acquire an item: frost-rimed desk bell

[color=green]> cargo? item frost-rimed desk bell[/color]

[color=red]No unpicked pockets contain 'frost-rimed desk bell'.[/color]
 

Veracity

Developer
Revision 20416 adds:

cargo list stat STAT
cargo count stat STAT
cargo stat STAT
cargo? stat STAT

Code:
[color=green]> cargo list stat muscle[/color]

Pockets loaded: 666
There are 27 pockets that contain 'muscle' stats.
Pocket #161: stats: 250/0/0
Pocket #40: stats: 200/30/25
Pocket #52: stats: 200/50/0
Pocket #545: stats: 200/30/30
Pocket #468: stats: 150/50/50
Pocket #291: stats: 140/70/40
Pocket #515: stats: 140/40/70
Pocket #358: stats: 130/130/0
Pocket #454: stats: 130/0/130
Pocket #69: stats: 120/80/90
Pocket #225: stats: 120/90/80
Pocket #1: stats: 100/100/100
Pocket #500: stats: 90/80/120
Pocket #585: stats: 90/120/90
Pocket #12: stats: 80/80/120
Pocket #459: stats: 80/120/80
Pocket #103: stats: 70/140/40
Pocket #421: stats: 70/40/140
Pocket #133: stats: 50/150/50
Pocket #378: stats: 50/50/150
Pocket #606: stats: 50/0/200
Pocket #205: stats: 40/70/140
Pocket #283: stats: 40/140/70
Pocket #176: stats: 30/200/25
Pocket #182: stats: 30/30/200
Pocket #210: stats: 30/200/30
Pocket #89: stats: 25/25/200

[color=green]> cargo? stat muscle[/color]

Pocket #161: stats: 250/0/0

[color=green]> cargo? stat mysticality[/color]

Pocket #37: stats: 0/250/0

[color=green]> cargo? stat moxie[/color]

Pocket #277: stats: 0/0/250
Unless I get interested in coming up with a way to specify multiple stats, this is probably it for the "cargo" command.

Next up: ASH.

(Some of those stats seem suspect. They are straight from the Wiki, but why do we have the following?)

Pocket #40: stats: 200/30/25
Pocket #176: stats: 30/200/25
Pocket #182: stats: 30/30/200
Pocket #89: stats: 25/25/200
 
Top