KGBriefcase

It is possible to display the "help" information when the script is first run. I've sent notification to ezandora about this. It would be great if she implemented it!

I tried this, but it seemed a bit spammy when you're running commands? Just "briefcase" plus enter at the dialog that pops up outputs help, so...

Along those lines, I have another request: when "solve"ing the briefcase, if the third pair of buttons' enchantment isn't +5 Adventures, stop attempting to solve the briefcase with enough clicks left to change the enchantment to +adventures. Or throw up a warning confirmation asking whether you would like to sacrifice your rollover adventures to continue.

Hmm. You can, of course, do "briefcase e adventures" before trying anything else. I suppose I could add a "briefcase reserve adventures" command, which saves clicks for later? Would that work?

Feature request- How hard would it be to acquire 50 turns of a (specified) buff, using the least amount of clicks?

I think it's possible? It would take quite a few clicks to identify each buff. I'll look into it.

This is what i get every day. Regardless of if it's a new ascension or not. Has anyone else run into this?
Try "svn update" in the graphical CLI. Also, enable Preferences>SVN>Update installed SVN projects on login.

AFAIK, every time you use a click, the words 'Click' appear in the results box. You could (or Ezandora could) update the briefcase relay script to check for that and then decrement the click count number, which I believe is stored in a mafia data file somewhere.
Oh, that's a good idea, I hadn't thought of that. Done. (of course, mafia has tracking as well, now)
 
Hello,

Thanks for the script!

After updating mafia from 18108 to 18110 I'm getting an error message everytime I call briefcase. However, everything is still working fine, so that's nice.

EDIT: I have run svn update, (which updated briefcase.ash from r37 to r40,) and still receive the same error.

This is what's in the Graphical CLI:

> briefcase e

Loading briefcase...
Toggling handle...
Unexpected error, debug log printed.
Viewing briefcase enchantments.
The enchantment command lets you modify the enchantment on the briefcase. This costs daily clicks, and resets upon ascending.
Available enchantment slots:

... (continues on as normal)

And here is the debug log.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
KoLmafia v17.6 r18110, Windows 7, Java 1.8.0_111
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Please note: do not post this log in the KoLmafia thread of KoL's
Gameplay-Discussion forum. If you would like the KoLmafia dev team
to look at it, please write a bug report at kolmafia.us. Include
specific information about what you were doing when you made this
and include this log as an attachment.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Timestamp: Tue Jun 20 14:45:19 EDT 2017
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Unexpected error, debug log printed.
class java.lang.StringIndexOutOfBoundsException: String index out of range: -4
java.lang.StringIndexOutOfBoundsException: String index out of range: -4
at java.lang.String.substring(Unknown Source)
at net.sourceforge.kolmafia.request.KGBRequest.countClicks(KGBRequest.java:74)
at net.sourceforge.kolmafia.request.KGBRequest.parseResponse(KGBRequest.java:62)
at net.sourceforge.kolmafia.request.PlaceRequest.parseResponse(PlaceRequest.java:154)
at net.sourceforge.kolmafia.session.ResponseTextParser.externalUpdate(ResponseTextParser.java:706)
at net.sourceforge.kolmafia.session.ResponseTextParser.externalUpdate(ResponseTextParser.java:262)
at net.sourceforge.kolmafia.request.GenericRequest.processResults(GenericRequest.java:2852)
at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2580)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2471)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2054)
at net.sourceforge.kolmafia.request.GenericRequest.externalExecute(GenericRequest.java:1618)
at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1601)
at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1321)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:286)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:249)
at net.sourceforge.kolmafia.textui.RuntimeLibrary.visit_url(RuntimeLibrary.java:2466)
at net.sourceforge.kolmafia.textui.RuntimeLibrary.visit_url(RuntimeLibrary.java:2428)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.execute(LibraryFunction.java:104)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:102)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.Else.execute(Else.java:65)
at net.sourceforge.kolmafia.textui.parsetree.If.execute(If.java:82)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.Conditional.execute(Conditional.java:96)
at net.sourceforge.kolmafia.textui.parsetree.If.execute(If.java:68)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.Assignment.execute(Assignment.java:103)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.Conditional.execute(Conditional.java:96)
at net.sourceforge.kolmafia.textui.parsetree.If.execute(If.java:68)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:151)
at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:417)
at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:142)
at net.sourceforge.kolmafia.textui.Interpreter.executeScope(Interpreter.java:401)
at net.sourceforge.kolmafia.textui.Interpreter.execute(Interpreter.java:325)
at net.sourceforge.kolmafia.textui.Interpreter.execute(Interpreter.java:318)
at net.sourceforge.kolmafia.textui.command.CallScriptCommand.call(CallScriptCommand.java:256)
at net.sourceforge.kolmafia.KoLmafiaCLI.doExecuteCommand(KoLmafiaCLI.java:606)
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:187)
at net.sourceforge.kolmafia.swingui.CommandDisplayFrame$CommandQueueHandler.run(CommandDisplayFrame.java:163)

Again, everything seems to be working fine thus far, just thought I'd share. Not sure if I should be posting this to a more general KoL Mafia debug thread, but I figured I'd start here!

Let me know if I'm posting something in the wrong place.

Thanks again.
 
Last edited:
Feature request- How hard would it be to acquire 50 turns of a (specified) buff, using the least amount of clicks?

Another vote for this. This script has already saved me an enormous of fiddling around but some way to specify type and length of buff, once known, would be a huge help.
 
I get script constantly pressing Button 6 until out of clicks :( Updated mafia and SVN - doesn't helps...
What command? Do you have a copy of the graphical CLI log?

I did just fix a loop bug with the splendid martinis command, under the edge case of moving tabs. It may have been that.
 
I also just encountered a loop in 1.0.15 where it kept clicking button 3 on the "drink" command.

Hmm. You can, of course, do "briefcase e adventures" before trying anything else. I suppose I could add a "briefcase reserve adventures" command, which saves clicks for later? Would that work?

I want to unlock stuff and get martinis before/while adventuring (usually with -combat in that slot), but then I also want my +adventures at the end of the day. I'm greedy like that!

I'd suggest either

1) A variable/setting/property we could adjust determining whether all commands reserve clicks for +Adventures.
b) A flag we could add to any command which would reserve clicks for +Adventures, a la "briefcase solve reserveadventures".

I like b) myself.

Perhaps also add information about clicks for adventures to "status":

**Clicks used: 15 (7? remaining, 2 needed for rollover adventures)
 
What command? Do you have a copy of the graphical CLI log?

I did just fix a loop bug with the splendid martinis command, under the edge case of moving tabs. It may have been that.

Yes, I ask "briefcase drink" and get 1 martini and out of clicks
 
Still get no martini and Button 6 clicks when asking for drinks :( First command was solve, second - drink

Code:
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_handleup
place.php?whichplace=kgb&action=kgb_actuator1
place.php?whichplace=kgb&action=kgb_handledown
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_crank
place.php?whichplace=kgb&action=kgb_handleup
place.php?whichplace=kgb&action=kgb_handledown
place.php?whichplace=kgb&action=kgb_actuator1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_dial3
place.php?whichplace=kgb&action=kgb_actuator1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial4
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_actuator2
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial1
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial2
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial5
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_dial6
place.php?whichplace=kgb&action=kgb_actuator1
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button6
place.php?whichplace=kgb&action=kgb_button1
place.php?whichplace=kgb&action=kgb_button2
place.php?whichplace=kgb&action=kgb_button3
place.php?whichplace=kgb&action=kgb_button4
place.php?whichplace=kgb&action=kgb_button2
place.php?whichplace=kgb&action=kgb_button2
place.php?whichplace=kgb&action=kgb_button3
place.php?whichplace=kgb&action=kgb_button4
place.php?whichplace=kgb&action=kgb_button4
place.php?whichplace=kgb&action=kgb_button4

place.php?whichplace=kgb&action=kgb_drawer2
You acquire exploding cigar (3)
place.php?whichplace=kgb&action=kgb_drawer1
You acquire exploding cigar (3)
> Done.

place.php?whichplace=kgb&action=kgb_button6

place.php?whichplace=kgb&action=kgb_button6

place.php?whichplace=kgb&action=kgb_button6
> Done.
 
Last edited:
Still get no martini and Button 6 clicks when asking for drinks :( First command was solve, second - drink[/CODE]
Yes. If you're working from a reset briefcase, the "solve" command will take multiple days of clicks to complete, because the puzzles are complex and take time.
What you want is the "unlock" command. The puzzles are more or less only relevant to spades, at the moment.

Changing the solve command to require confirmation.
 
Oh, thanks. So to use it in run it's "solve", than "drink" and then tune "enchantments", right? Is there any way to get buffs from top buttons through script?
 
Wooo! How "buff" command works? It asks "Buff command disabled while tabs are moving. Reset the briefcase? Or wind down the tabs?"
 
1.1 adds the "buff" command. Note that it will take quite a few clicks to discover tabs, at first, so only use it after you've done everything else for the day. Example commands:

briefcase buff meat
briefcase b item

Wooo! How "buff" command works? It asks "Buff command disabled while tabs are moving. Reset the briefcase? Or wind down the tabs?"
The buff command is disabled if your tabs are moving, which is part of puzzle solving.

If you want to use the buff command, use "briefcase stop" first. Avoid using the "solve" command until the puzzle solution has been discovered, or you want to spade.
 
Code:
> Briefcase identify

Loading briefcase...
Toggling handle...
Briefcase v1.0.17 status:
*****Dials: 222-333
*****Horizontal lights: 111000
*****Tab configuration: 222222
*****Mastermind lights: 111
*****Unlocked: crank, left drawer, right drawer, martini hose, antennae, and buttons
*****Handle: UP
*****Antennae charge: 0
*****Last action results: You flip the handle up.
*****Clicks used: 0 (22? remaining)
*****Flywheel charged.
Clicking button 6.
Clicking button 5.
Clicking button 4.
Clicking button 6.
Clicking button 4. (-10)
Clicking button 6.
Clicking button 4. (-10)
Clicking button 6.
Clicking button 4. (-10)
Clicking button 6.
KoLmafia declares world peace.

(I know that my buttons are -1 -100 +10 -10 +1 +100 - therefore, pressing button 6 could not tell if it's +10 or +100)

When starting from 222222, this step should probably skip all known buttons until all -### buttons are known, or something?

--

then I manually pressed -100 twice, but:

Code:
> Briefcase identify

Loading briefcase...
Briefcase v1.0.17 status:
*****Dials: 222-333
*****Horizontal lights: 111000
*****Tab configuration: 102021
*****Mastermind lights: 111
*****Unlocked: crank, left drawer, right drawer, martini hose, antennae, and buttons
*****Handle: UP
*****Antennae charge: 0
*****lightrings: lightrings3.gif
*****Clicks used: 12 (10? remaining)
*****Flywheel charged.
*****Buttons: B4: -10
Clicking button 6.
Clicking button 6. (+100)
Clicking button 4. (-10)
Clicking button 6. (+100)
Clicking button 4. (-10)

Still infinicycled ...
 
Back
Top