Character Info Toolbox

Good news!


Updated to 0.7.5.3
  • Fix a few bugs
  • Shorten a line
  • Insert cool stuff (extreme meter, bathtub toys) in a better place.

Since last version only charpane.ash has been changed
Download to /relay directory: View attachment 7346
 
I couldn't make up my mind about purchasing a Snow Suit until the end of the month. Since I have a Moveable Feast it seems kinda unnecessary so I was pretty dubious. I finally decided to get one. Consequently I added support for ChIT to show the correct face instead of always showing the default Snow Suit image.


Updated to 0.7.5.5
  • Snow Suit Support.
  • Lots of useful information in the Familiar Equipment Picker. This includes the current weight of the Snow Suit.

Since last version only charpane.ash has been changed
Download to /relay directory: View attachment 7381


I might eventually get around to adding support for decorating the snow suit. I'm just not that into it since there is only one good face.
 
Would you consider a carrot counter? Might be ugly though, if it gets put with an item dropping familiar. Hm. Maybe a mouseover tooltip (x/3 carrots)?
 
I don't think that mafia counts carrot drops right now. Does it?

PS. I'd consider a carrot counter if mafia supports it. Might as well since I have a snow suit.
 
Got some errors when trying the new version of chit during a Boris run:
Code:
Unexpected error, debug log printed.
[COLOR=red]Script execution      aborted[/COLOR]
[COLOR=red]Expression syntax errors for      'modifier_eval()':
Can't understand[/COLOR]            [TABLE="align: center"]
[TR]
[TD]             [URL="http://kolmafia.us/charsheet.php"][COLOR=red][IMG]http://kolmafia.us/images/otherimages/boris_avatar.gif[/IMG]             [/COLOR][/URL]
[/TD]
[TD="align: center"]                            [URL="http://kolmafia.us/charsheet.php"][COLOR=red][B]The                Conqueror Worm[/B]
Level 12
Avatar of Boris[/COLOR][/URL]               [TABLE="width: 1"]
[TR]
[TD="width: 39, bgcolor: #5A5A5A"][/TD]
[TD="width: 61, bgcolor: white"][/TD]
[/TR]
[/TABLE]
[/TD]
[/TR]
[/TABLE]
       [COLOR=red](charpane.ash, line 875) [/COLOR]         
    
    [1207] Hole in the Sky
Encounter: The Astronomer
Round 0: the      conqueror worm wins initiative!
Round 0: the conqueror worm casts      MIGHTY AXING! (auto-attack)
Round 2: astronomer takes 141 damage.
Round      2: astronomer takes 3 damage.
Round 2: astronomer takes 10 damage.
Round      2: astronomer takes 4 damage.
You lose 43 hit points
Round 2: the      conqueror worm wins the fight!
You acquire an item: star chart
You      acquire an item: sticky stardust
You gain 27 Beefiness
You gain 7      Enchantedness
You gain a Mysticality point!
You gain 15 Roguishness
Unexpected      error, debug log printed.
[COLOR=red]Script execution aborted[/COLOR]
The      string "C*2" is not an integer; returning 2 (charpane.ash, line 1383)
[COLOR=red]Expression      syntax errors for 'modifier_eval()':
Expected end, found ], HP Regen      Max: [C*2 (charpane.ash, line 875)[/COLOR]
Unexpected error, debug log      printed.
[COLOR=red]Script execution aborted[/COLOR]
[COLOR=red]Expression      syntax errors for 'modifier_eval()':
Expected end, found ], HP Regen      Max: [C*2 (charpane.ash, line 875)[/COLOR]

[1208] Hole in the Sky
Encounter:      The Beaver
Round 0: the conqueror worm loses initiative!
Round 1:      beaver takes 2 damage.
Round 1: beaver takes 14 damage.
Round 1:      beaver takes 3 damage.
You lose 37 hit points
[COLOR=red]No      match attempted or previous match failed (charpane.ash, line 583)[/COLOR]
[COLOR=red]No      match attempted or previous match failed (charpane.ash, line 1303)[/COLOR]
[COLOR=red]Expression      syntax errors for 'modifier_eval()':
Can't understand [/COLOR]
[SIZE=2][COLOR=gray][[URL="http://kolmafia.us/KoLmafia/sideCommand?cmd=mood+execute&pwd=0c0b4dc90dcb054e351084b775ffd079"]mood      in-run[/URL]][/COLOR][/SIZE]
(charpane.ash, line 875)
Round 1: the conqueror      worm casts MIGHTY AXING!
Round 2: beaver takes 155 damage.
Round 2:      the conqueror worm wins the fight!
You acquire an item: star
You      acquire an item: star
You acquire an item: line
You gain 25      Strengthliness
You gain 8 Magicalness
You gain 14 Roguishness
The relevant part of the debug log, I believe:
Code:
Unexpected error, debug log printed.
class java.lang.IndexOutOfBoundsException: start 17, end 14, s.length() 78
java.lang.IndexOutOfBoundsException: start 17, end 14, s.length() 78
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuffer.append(Unknown Source)
    at java.util.regex.Matcher.appendReplacement(Unknown Source)
    at java.util.regex.Matcher.replaceFirst(Unknown Source)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.replace_first(RuntimeLibrary.java:4376)
    at sun.reflect.GeneratedMethodAccessor45.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:115)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.Assignment.execute(Assignment.java:103)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.Loop.execute(Loop.java:59)
    at net.sourceforge.kolmafia.textui.parsetree.WhileLoop.execute(WhileLoop.java:100)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.Assignment.execute(Assignment.java:103)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.Operator.applyTo(Operator.java:609)
    at net.sourceforge.kolmafia.textui.parsetree.Expression.execute(Expression.java:223)
    at net.sourceforge.kolmafia.textui.parsetree.Operator.applyTo(Operator.java:409)
    at net.sourceforge.kolmafia.textui.parsetree.Expression.execute(Expression.java:223)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:107)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.Loop.execute(Loop.java:59)
    at net.sourceforge.kolmafia.textui.parsetree.ForEachLoop.executeSlice(ForEachLoop.java:172)
    at net.sourceforge.kolmafia.textui.parsetree.ForEachLoop.execute(ForEachLoop.java:111)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.Switch.execute(Switch.java:156)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.Switch.execute(Switch.java:156)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.Loop.execute(Loop.java:59)
    at net.sourceforge.kolmafia.textui.parsetree.ForLoop.execute(ForLoop.java:203)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.Loop.execute(Loop.java:59)
    at net.sourceforge.kolmafia.textui.parsetree.ForEachLoop.executeSlice(ForEachLoop.java:172)
    at net.sourceforge.kolmafia.textui.parsetree.ForEachLoop.execute(ForEachLoop.java:111)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    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:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:169)
    at net.sourceforge.kolmafia.textui.parsetree.Variable.getValue(Variable.java:88)
    at net.sourceforge.kolmafia.textui.parsetree.VariableReference.execute(VariableReference.java:85)
    at net.sourceforge.kolmafia.textui.parsetree.FunctionCall.execute(FunctionCall.java:107)
    at net.sourceforge.kolmafia.textui.parsetree.BasicScope.execute(BasicScope.java:465)
    at net.sourceforge.kolmafia.textui.parsetree.UserDefinedFunction.execute(UserDefinedFunction.java:139)
    at net.sourceforge.kolmafia.textui.Interpreter.executeScope(Interpreter.java:369)
    at net.sourceforge.kolmafia.textui.Interpreter.execute(Interpreter.java:296)
    at net.sourceforge.kolmafia.textui.Interpreter.execute(Interpreter.java:289)
    at net.sourceforge.kolmafia.KoLmafiaASH.getClientHTML(KoLmafiaASH.java:108)
    at net.sourceforge.kolmafia.KoLmafiaASH.getClientHTML(KoLmafiaASH.java:90)
    at net.sourceforge.kolmafia.request.RelayRequest.run(RelayRequest.java:1784)
    at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:222)
    at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:185)
    at net.sourceforge.kolmafia.webui.RelayAgent.readServerResponse(RelayAgent.java:519)
    at net.sourceforge.kolmafia.webui.RelayAgent.performRelay(RelayAgent.java:158)
    at net.sourceforge.kolmafia.webui.RelayAgent.run(RelayAgent.java:131)
 
Got some errors when trying the new version of chit

Heck! I should have known that code wouldn't work. It has nothing to do with Boris. It doesn't work when familiar gear contains more than 1 modifier_eval(). I think the only item which fits that description is a sackbut.

Please download the version attacked to this post and if it works for you I'll make it the new official release. I can't test it myself so I need you to confirm that it works...
 
Last edited:
Yeah, this one seems to be working better. It doesn't throw any errors, and the charpane looks more or less as I remember it :) Thanks for the quick fix ;)

Couldn't do a lot of in depth playtesting, though, as the character already was overdrunk.
 
Couldn't do a lot of in depth playtesting, though, as the character already was overdrunk.

The relevant improvement is what it will display if you click on Clancy's instrument. Something similar happens for any familiar equipment since it now parses mafia's information on all familiar gear.
 
Is this what you were hoping for?
Clancy_zpsad61f511.png

Apart from mixing HP and MP up a bit, I mean
 
Last edited:
Well it works. That information was pulled straight out of mafia's string_modifier().

What do you mean by mixing HP and MP up? It says, "HP Regen Min: +11, HP Regen Max: +22, MP Regen Min: +11, MP Regen Max: +22" That looks correct to me for a level 11 Clancy. Though I should try to collapse it to "HP Regen: +16.5, MP Regen: +16.5" Yeah, it's not to hard to write up a general case because there might be another familiar item that gives regen. Download the new version below!


Updated to 0.7.5.6
  • Sackbut support! (snicker)

Since last version only charpane.ash has been changed
Download to /relay directory: View attachment 7386
 
Last edited:
I'm glad you like it. I'd wanted to have something like that for a while, but I finally got around implementing it because I really needed to see the current value of the Snow Suit to make an informed choice. Now, anything mafia knows about any familiar equipment will be displayed... if it is more interesting than "Weight +5".
 
Ah, right I missed the commas :p You are indeed right, the information in the box is correct! And I should probably stop posting at 2:30 in the morning :D
 
Updated to 0.7.5.7
  • If you are using a Snow Suit, it will add an option to decorate the Snow Suit
  • A few more improvements to showing the effects of familiar equipment
  • Locking familiar equipment is now an "opt in" feature.
    zlib chit.familiar.showlock = true

Since last version only charpane.ash has been changed
Download to /relay directory: View attachment 7394


Final Snow Suit support! I don't think I need to add anything else to make a snow suit owner happy. If I'm mistaken please tell me.

There is a functional change in this version! If you like the little lock icon on your familiar equipment, it is now controlled by a zlib variable. I never use it since KoLmafia's equipment switching logic was enabled from the charpane and I find it cluttery so I disabled it by default. To enable it you will need to type the following line in the CLI:
zlib chit.familiar.showlock = true​
 
Obviously this script needs a serious update to handle the "familiars" of Jarlsberg. Unfortunately I'm really too busy with other things to do that right now. I promise to do it by Sunday night, but not immediately as I would like. In the meantime, please remember that ChIT can be disabled with the following command:

zlib chit.disable = true
 
I was mistaken. It turns out that I cannot live without ChIT. Fortunately I was able to solve it with a really quick and dirty fix for the problem. I'll probably replace this code, but the solution does have a certain elegance.

Updated to 0.7.5.8
  • First draft for Avatar of Jarlsberg

Since last version only charpane.ash has been changed
Download to /relay directory: View attachment 7402


PS. If ChIT is misreporting your level, that is not a ChIT bug. Mafia doesn't yet know how to tell what level Jarlsberg is. Sorry. Wait for mafia to support Jarlsberg before reporting any problems.
 
Last edited:
Hm... this isn't very important, but there's some weird interaction with the mafia basement thing for me. When I cast a skill, like say Cannelloni Cocoon, and click exec, the top part of chic disappears. I'm not sure why. The attached pictures should show this.


before.jpgafter.jpg
 
In AoB the link on Clancy leads to charpane.ash, instead of to main.php?action=clancy. It leads to nowhere when he doesn't have a quest, and that part seems to work.
 
Hm... this isn't very important, but there's some weird interaction with the mafia basement thing for me. When I cast a skill, like say Cannelloni Cocoon, and click exec, the top part of chic disappears.

I've noticed that. It happens at various odd times. It is extremely unreliable and unpredictable and I have no idea why. Perhaps someone with more understanding of css and web browsers can solve that for us both. I hope.


In AoB the link on Clancy leads to charpane.ash, instead of to main.php?action=clancy. It leads to nowhere when he doesn't have a quest, and that part seems to work.

I'll look at that later. Thanks. It's a shame I cannot test it now.
 
Back
Top