Bug - Confirmed Maximizer didn't equip a weapon

Unusual things which are true for you: you don't have a familiar, and you don't have either a weapon or offhand equipped.

If you equip a familiar, can you still reproduce? If you equip a weapon, does it still recommend nothing, or does it recommend an offhand in that case?

Can you `modtrace item` and `modtrace exp` in the CLI to get a clue as to why it thinks equipping a weapon would lower your score?

I also assume you are https://api.aventuristo.net/av-snapshot?u=Natnit: you are in standard, and you have almost every existing skill.
 
Yup, that's me!

Using maximizer string = "5item,10exp,+200bonus June cleaver,-tie,2 dump"

Case 1 - Default (no familiar, unarmed)​

> modtrace item

typesourceItem DropItem Drop PenaltySporadic Item DropCombat Item Damage Percent
ItemCincho de Mayo+15.00= +15.00
Itemcombat lover's locket+25.00= +40.00
SkillPowers of Observatiogn+10.00= +50.00
SkillNatural Born Scrabbler+5.00= +55.00
Skill20/20 Vision+10.00= +65.00
SkillFruit Recognition+5.00= +70.00
SkillMad Looting Skillz+20.00= +90.00
SkillThief Among the Honorable+5.00= +95.00
SkillDeft Hands+25.00= +25.00

> modtrace exp


typesourceExperienceMuscle ExperienceMysticality ExperienceMoxie ExperienceFamiliar ExperienceMuscle Experience PercentMysticality Experience PercentMoxie Experience Percent
SignOpossum+10.00= +10.00
SkillCrimbo Training: Passenger Greeter+1.00= +1.00
ClassEXP/2+20.97= +20.97
ClassEXP/4+9.08= +9.08+9.08= +9.08

Maximizer suggests: no change, stay unequipped

Maximizer logs:
Code:
Maximizer: 5item,10exp,+200bonus June cleaver,-tie,2 dump
Maximizing...
Outfits    [Eldritch Equipage, Bounty-Hunting Rig, BRICKOfig Outfit, Crimbo Duds,    Furry Suit, Bow Tux]
SLOT HAT
[helmet turtle (1,284), ravioli hat    (1,284), disco mask (1,284), coconut shell (1,284), seal-skull helmet    (1,284), mariachi hat (1,284), Hollandaise helmet (1,284), Apriling band    helmet (1,284)]
[Apriling band helmet]
SLOT WEAPON
[toy accordion    (894), (none) (894)]
[(none)]
SLOT OFFHAND
[hobo code binder    (894), magical ice cubes (894), stuffed spooky gravy fairy (894), stuffed    astral badger (894), stuffed MagiMechTech MicroMechaMech (894), stuffed    snowy owl (894), august scepter (894), Roman Candelabra (894), (none)    (894), unbreakable umbrella (broken) (1,019)]
[unbreakable umbrella    (broken)]
SLOT CONTAINER
[bat wings (1,284)]
[bat wings]
SLOT    SHIRT
[Jurassic Parka (kachungasaur mode) (1,293)]
[Jurassic Parka    (kachungasaur mode)]
SLOT PANTS
[old sweatpants (1,284), tearaway    pants (1,284), designer sweatpants (1,284)]
[designer sweatpants]
SLOT    ACCESSORY1
[spring shoes (1,209), cursed monkey's paw (1,209), Everfull    Dart Holster (1,209), Cincho de Mayo (1,284), astral mask (1,309), combat    lover's locket (1,334)]
[combat lover's locket, astral mask, Cincho de    Mayo, spring shoes]
SLOT ACCESSORY2
[seal-clubbing club (894),    turtle totem (894), pasta spoon (894), saucepan (894), little paper    umbrella (894), candy cane sword cane (894), (none) (894), June cleaver    (1,094)]
[June cleaver]
SLOT ACCESSORY3
[disco ball (894), (none)    (894)]
[(none)]
SLOT STICKER3
[seal-clubbing club (894), turtle    totem (894), pasta spoon (894), saucepan (894), disco ball (894), little    paper umbrella (894), candy cane sword cane (894), (none) (894), June    cleaver (1,094)]
[June cleaver, (none), candy cane sword cane, little    paper umbrella, disco ball, saucepan, pasta spoon, turtle totem,    seal-clubbing club]
168 combinations checked, best score 1,393.20

Case 2 - With familiar (cookbookbat) (but unarmed)​

> familiar cookbookbat

> modtrace item

typesourceItem DropItem Drop PenaltySporadic Item DropCombat Item Damage Percent
ItemCincho de Mayo+15.00= +15.00
Itemcombat lover's locket+25.00= +40.00
SkillPowers of Observatiogn+10.00= +50.00
SkillNatural Born Scrabbler+5.00= +55.00
Skill20/20 Vision+10.00= +65.00
SkillFruit Recognition+5.00= +70.00
SkillMad Looting Skillz+20.00= +90.00
SkillThief Among the Honorable+5.00= +95.00
SkillDeft Hands+25.00= +25.00

> modtrace exp


typesourceExperienceMuscle ExperienceMysticality ExperienceMoxie ExperienceFamiliar ExperienceMuscle Experience PercentMysticality Experience PercentMoxie Experience Percent
SignOpossum+10.00= +10.00
SkillCrimbo Training: Passenger Greeter+1.00= +1.00
ClassEXP/2+20.97= +20.97
ClassEXP/4+9.08= +9.08+9.08= +9.08

Maximizer suggests: no change, stay unequipped

Maximizer logs:
Code:
Maximizer: 5item,10exp,+200bonus June cleaver,-tie,2 dump
Maximizing...
Outfits    [Eldritch Equipage, Bounty-Hunting Rig, BRICKOfig Outfit, Crimbo Duds,    Furry Suit, Bow Tux]
SLOT HAT
[helmet turtle (1,284), ravioli hat    (1,284), disco mask (1,284), coconut shell (1,284), seal-skull helmet    (1,284), mariachi hat (1,284), Hollandaise helmet (1,284), Apriling band    helmet (1,284)]
[Apriling band helmet]
SLOT WEAPON
[toy accordion    (894), (none) (894)]
[(none)]
SLOT OFFHAND
[hobo code binder    (894), magical ice cubes (894), stuffed spooky gravy fairy (894), stuffed    astral badger (894), stuffed MagiMechTech MicroMechaMech (894), stuffed    snowy owl (894), august scepter (894), Roman Candelabra (894), (none)    (894), unbreakable umbrella (broken) (1,019)]
[unbreakable umbrella    (broken)]
SLOT CONTAINER
[bat wings (1,284)]
[bat wings]
SLOT    SHIRT
[Jurassic Parka (kachungasaur mode) (1,293)]
[Jurassic Parka    (kachungasaur mode)]
SLOT PANTS
[old sweatpants (1,284), tearaway    pants (1,284), designer sweatpants (1,284)]
[designer sweatpants]
SLOT    ACCESSORY1
[spring shoes (1,209), cursed monkey's paw (1,209), Everfull    Dart Holster (1,209), Cincho de Mayo (1,284), astral mask (1,309), combat    lover's locket (1,334)]
[combat lover's locket, astral mask, Cincho de    Mayo, spring shoes]
SLOT ACCESSORY2
[seal-clubbing club (894),    turtle totem (894), pasta spoon (894), saucepan (894), little paper    umbrella (894), candy cane sword cane (894), (none) (894), June cleaver    (1,094)]
[June cleaver]
SLOT ACCESSORY3
[disco ball (894), (none)    (894)]
[(none)]
SLOT FAMILIAR
[(none) (1,284), tiny stillsuit    (1,284)]
[tiny stillsuit]
SLOT STICKER3
[seal-clubbing club    (894), turtle totem (894), pasta spoon (894), saucepan (894), disco ball    (894), little paper umbrella (894), candy cane sword cane (894), (none)    (894), June cleaver (1,094)]
[June cleaver, (none), candy cane sword    cane, little paper umbrella, disco ball, saucepan, pasta spoon, turtle    totem, seal-clubbing club]
168 combinations checked, best score 1,393.22

Case 3 - Armed with a 1-hander (June cleaver) (but no familiar)​

> modtrace item



type source Item Drop Item Drop Penalty Sporadic Item Drop Combat Item Damage Percent
Item Cincho de Mayo +15.00 = +15.00
Item combat lover's locket +25.00 = +40.00
Skill Powers of Observatiogn +10.00 = +50.00
Skill Natural Born Scrabbler +5.00 = +55.00
Skill 20/20 Vision +10.00 = +65.00
Skill Fruit Recognition +5.00 = +70.00
Skill Mad Looting Skillz +20.00 = +90.00
Skill Thief Among the Honorable +5.00 = +95.00
Skill Deft Hands +25.00 = +25.00


> modtrace exp



type source Experience Muscle Experience Mysticality Experience Moxie Experience Familiar Experience Muscle Experience Percent Mysticality Experience Percent Moxie Experience Percent
Sign Opossum +10.00 = +10.00
Skill Crimbo Training: Passenger Greeter +1.00 = +1.00
Class EXP/2 +20.97 = +20.97
Class EXP/4 +9.08 = +9.08 +9.08 = +9.08


Maximizer suggests: keeping June cleaver equipped, also equipping "umbrella bucket style" in the offhand

Maximizer logs:
Code:
Maximizer: 5item,10exp,+200bonus June cleaver,-tie,2 dump
Maximizing...
Outfits    [Eldritch Equipage, Bounty-Hunting Rig, BRICKOfig Outfit, Crimbo Duds,    Furry Suit, Mutant Parts Apparel, Bow Tux]
SLOT HAT
[helmet turtle    (1,484), ravioli hat (1,484), disco mask (1,484), coconut shell (1,484),    seal-skull helmet (1,484), mariachi hat (1,484), Hollandaise helmet    (1,484), Apriling band helmet (1,484)]
[Apriling band helmet]
SLOT    WEAPON
[toy accordion (1,284)]
[toy accordion]
SLOT OFFHAND
[hobo    code binder (1,484), magical ice cubes (1,484), stuffed spooky gravy fairy    (1,484), stuffed astral badger (1,484), stuffed MagiMechTech    MicroMechaMech (1,484), stuffed snowy owl (1,484), august scepter (1,484),    Roman Candelabra (1,484), (none) (1,484), unbreakable umbrella (broken)    (1,609)]
[unbreakable umbrella (broken)]
SLOT CONTAINER
[bat    wings (1,484)]
[bat wings]
SLOT SHIRT
[Jurassic Parka    (kachungasaur mode) (1,493)]
[Jurassic Parka (kachungasaur mode)]
SLOT    PANTS
[old sweatpants (1,484), tearaway pants (1,484), designer    sweatpants (1,484)]
[designer sweatpants]
SLOT ACCESSORY1
[spring    shoes (1,409), cursed monkey's paw (1,409), Everfull Dart Holster (1,409),    Cincho de Mayo (1,484), astral mask (1,509), combat lover's locket (1,534)]
[combat    lover's locket, astral mask, Cincho de Mayo, spring shoes]
SLOT    ACCESSORY2
[seal-clubbing club (1,484), turtle totem (1,484), pasta    spoon (1,484), saucepan (1,484), little paper umbrella (1,484), candy cane    sword cane (1,484), (none) (1,484), June cleaver (1,684)]
[June cleaver]
SLOT    ACCESSORY3
[disco ball (1,484), (none) (1,484)]
[(none)]
SLOT    STICKER3
[seal-clubbing club (1,284), turtle totem (1,284), pasta spoon    (1,284), saucepan (1,284), disco ball (1,284), little paper umbrella    (1,284), candy cane sword cane (1,284), June cleaver (1,484)]
[June    cleaver, candy cane sword cane]
48 combinations checked, best score    1,718.20

Case 4 - Back to default (no familiar, unarmed)​

> modtrace item


type source Item Drop Item Drop Penalty Sporadic Item Drop Combat Item Damage Percent
Item Cincho de Mayo +15.00 = +15.00
Item combat lover's locket +25.00 = +40.00
Skill Powers of Observatiogn +10.00 = +50.00
Skill Natural Born Scrabbler +5.00 = +55.00
Skill 20/20 Vision +10.00 = +65.00
Skill Fruit Recognition +5.00 = +70.00
Skill Mad Looting Skillz +20.00 = +90.00
Skill Thief Among the Honorable +5.00 = +95.00
Skill Deft Hands +25.00 = +25.00


> modtrace exp

type source Experience Muscle Experience Mysticality Experience Moxie Experience Familiar Experience Muscle Experience Percent Mysticality Experience Percent Moxie Experience Percent
Sign Opossum +10.00 = +10.00
Skill Crimbo Training: Passenger Greeter +1.00 = +1.00
Class EXP/2 +20.97 = +20.97
Class EXP/4 +9.08 = +9.08 +9.08 = +9.08



Maximizer suggests: no change, stay unequipped

Maximizer logs:

Code:
Maximizer: 5item,10exp,+200bonus June cleaver,-tie,2 dump
Maximizing...
Outfits    [Eldritch Equipage, Bounty-Hunting Rig, BRICKOfig Outfit, Crimbo Duds,    Furry Suit, Bow Tux]
SLOT HAT
[helmet turtle (1,284), ravioli hat    (1,284), disco mask (1,284), coconut shell (1,284), seal-skull helmet    (1,284), mariachi hat (1,284), Hollandaise helmet (1,284), Apriling band    helmet (1,284)]
[Apriling band helmet]
SLOT WEAPON
[toy accordion    (894), (none) (894)]
[(none)]
SLOT OFFHAND
[hobo code binder    (894), magical ice cubes (894), stuffed spooky gravy fairy (894), stuffed    astral badger (894), stuffed MagiMechTech MicroMechaMech (894), stuffed    snowy owl (894), august scepter (894), Roman Candelabra (894), (none)    (894), unbreakable umbrella (broken) (1,019)]
[unbreakable umbrella    (broken)]
SLOT CONTAINER
[bat wings (1,284)]
[bat wings]
SLOT    SHIRT
[Jurassic Parka (kachungasaur mode) (1,293)]
[Jurassic Parka    (kachungasaur mode)]
SLOT PANTS
[old sweatpants (1,284), tearaway    pants (1,284), designer sweatpants (1,284)]
[designer sweatpants]
SLOT    ACCESSORY1
[spring shoes (1,209), cursed monkey's paw (1,209), Everfull    Dart Holster (1,209), Cincho de Mayo (1,284), astral mask (1,309), combat    lover's locket (1,334)]
[combat lover's locket, astral mask, Cincho de    Mayo, spring shoes]
SLOT ACCESSORY2
[seal-clubbing club (894),    turtle totem (894), pasta spoon (894), saucepan (894), little paper    umbrella (894), candy cane sword cane (894), (none) (894), June cleaver    (1,094)]
[June cleaver]
SLOT ACCESSORY3
[disco ball (894), (none)    (894)]
[(none)]
SLOT STICKER3
[seal-clubbing club (894), turtle    totem (894), pasta spoon (894), saucepan (894), disco ball (894), little    paper umbrella (894), candy cane sword cane (894), (none) (894), June    cleaver (1,094)]
[June cleaver, (none), candy cane sword cane, little    paper umbrella, disco ball, saucepan, pasta spoon, turtle totem,    seal-clubbing club]
168 combinations checked, best score 1,393.20
 
Well I dreamed about this last night. That may be a good sign - subconscious background processing - or it may need I need to Get A Life. I am writing this before my morning copy and without looking at any code to answer my own speculations. But sometimes asking questions does trigger new lines of inquiry.

I have always maintained that, based upon the code, the maximizer not recommending a weapon and the maximizer failing to equip the recommended weapon are different problems. The GUI and the cli/script calls illustrate that. When I look at the dump 2 logs I am either skimming them too fast, not understanding them or they are confirming that the maximizer did select a weapon. So how are we deciding that a weapon was not equipped? Does the code run the maximizer and then check the weapon slot? The actual equipping is a request so is it possible failure to equip is the result of some kind of timing? Does issuing a refresh change anything?

If someone wants to point me to the autoscend maximizer call and failure to equip check that will save me some time with grep.

My tests inspect the request that is built but they can't send it to KoL and get an answer. Is that a point of failure in the live world?

Using the debugger and creating conditions that are unlikely to occur naturally I have noticed foldables introduce some complexity when executing maximizer recommendations and there are still times when KoLmafia will complain about a conflict between a two handed weapon and something in the off hand slot rather than unequip something to resolve that. If something like that was going on would autoscend be aware?

I will revisit this post later :-)
 
Hah! I dreamed about it last night too. Had gathered some data but didn't have a chance to post it. Great to be in such excellent debugging company!

Helpful to read your musings, and I'll add some narrative of my own:
  • Ryo alluded to this, but it looks like there's distinct steps of Maximizer Speculation, followed by Maximizer Execution. From context, seems like scoring is done by speculation, and equipping is done by execution
  • Ran into a strange case on day3 of ascension. Still no adventures spent. When I logged in, character was still in the error state. As I did more testing (including equipping, and then unequipping a June cleaver for maximizer calls) something changed, and maximizer started suggesting I equip a weapon even from unarmed! But importantly, when I closed Mafia and re-opened it, I was able to re-enter the error state. Strong intuition that we're looking at a caching issue, so started looking into static fields, how the code uses clone(), and Maximizer.firstTime
  • Luckily for the above, I had added some logging into MaximizerSpeculation.java, and built a local copy of Mafia with more verbose logging around each Maximizer combination suggested
    • Here's an example of the code change
    • maximizer3.PNG
    • Case A: output when running maximizer with equipped 1-hander: suggests equipping weapon & offhand
    • Case B: output when running maximizer while unarmed: suggests equipping weapon & offhand (unexpectedly left the error state and now "working as intended")
    • Case C: after restarting Mafia, output when running maximize while unarmed: suggests remained unarmed (back to error state)
    • Next steps: filter out unimportant equip slots, add any fields folks find interesting, and move logs into a sheet to review more easily
 

Attachments

Last edited:
Case C, combo 21

That appears to be the highest score and does not include a weapon.

I do note that it improves combo 20 by about 170 by dropping the broken umbrella offhand.

That seems counterintuitive.

Thanks for reminding me of statics and caching. I have a vague recollection of trying to write a test that called the maximizer, saved the results, called it again saved the results and then compared them. I'm pretty sure I wanted to compare calling via the GUI vs calling via cli/script and I gave up because actually making a copy of the static data was more fiddly than I wanted to deal with.
 
Combo 21 is the same as combo 2 and 5, but while those score 999.75, 21 scores 1393.2

As you are comfortable recompiling Mafia, could you add a log in src/net/sourceforge/kolmafia/persistence/ModifierDatabase.java, line 432, to see if it ever sets a familiar on the modifiers object? I added a note for suspicion last time I was in that area of the code. The score difference is probably too high for it to be that, though.

The reason why it doesn't happen when you have a weapon equipped (I think) is that Mafia will add the currently equipped items to the list of items it should consider. So if you have no item equipped, it will definitely consider equipping no item, whereas if you have an item equipped, it won't.

One caveat in this is that if you have DFSS, a weapon and no offhand, it seems it should consider no item to be a valid one-handed weapon, which should then get added to the valid weapons in Evaluator line "automatic.get(Slot.WEAPON).addAll(automatic.get(Evaluator.WEAPON_1H));". Why this doesn't break things I don't know. I thought there could be an issue with "addAll" meaning "none" appears in the list twice (as it is both a valid weapon and a valid one-handed weapon), but I also can't see how that would break anything looking at the loops. It might be why there are multiple identical combos, though.
 
Combo 21 is the same as combo 2 and 5, but while those score 999.75, 21 scores 1393.2

Missed that. Thank you. I'd say if two things appear the same but give different scores then we need to understand why they are not the same or accept that the maximizer is non-deterministic :-)

As you are comfortable recompiling Mafia, could you add a log in src/net/sourceforge/kolmafia/persistence/ModifierDatabase.java, line 432, to see if it ever sets a familiar on the modifiers object? I added a note for suspicion last time I was in that area of the code. The score difference is probably too high for it to be that, though.

I'll try a log or breakpoint but my runs are not having the problem.
 
As you are comfortable recompiling Mafia, could you add a log in src/net/sourceforge/kolmafia/persistence/ModifierDatabase.java, line 432, to see if it ever sets a familiar on the modifiers object? I added a note for suspicion last time I was in that area of the code. The score difference is probably too high for it to be that, though.

I can do it (still in the error state :cool:). Added a log there and recompiled Mafia. Will run through some maximizer tests later today
 
Added this to ModifierDatabase.java, line 432
Code:
RequestLogger.printLine("*** Setting familiar in ModifierDatabase: " + fam.toString());
  • Logged in
  • Ran maximizer string while unarmed
  • Equip June cleaver
  • Ran maximizer string while equipping a one-hander
  • Unequip June cleaver
  • Equip familiar cubeling
  • Run maximizer string while unarmed
  • Unequip familiar cubeling
  • Run maximizer string while unarmed
  • Run maximizer string (append ",switch cubeling,switch volleyball") while unarmed
Attached log doesn't show any triggers of our special log line.
 

Attachments

Very good, nice to have that excluded.

Below "RequestLogger.printLine(this.equipment.toString());" that you added in MaximizerSpeculation.java, could you add "RequestLogger.printLine(this.mods.toString());"? This should show us the extra mods that exist.
 
Thanks for the continued suggestions!

Here's what the logging code looks like now:

maximizer4.PNG

Edit: Here's the data cleaned up, in sheets: Debugging: Maximizer didn't equip a weapon

In my quick skim through the output, I didn't see any mods in the log.

The cases I tried, output attached:
  • starting from unequipped -> maximizer suggests being unequipped
  • starting from cleaver equipped -> maximizer suggests being unequipped
  • starting from candelabra equipped -> maximizer suggests equipping cleaver and a different offhand (umbrella bucket style)
  • starting from cleaver & candelabra equipped -> maximizer suggests keeping cleaver equipped, and equipping a different offhand (umbrella bucket style)
Not really data directed, but some things that come to mind are

1) there could be something off in the foldable code like others suggested, and the umbrella is throwing off calculations [could test by putting umbrella in closet]
2) more tenuous, but maybe the maximizer is considering the value of unarmed *twice* for chars with double-fisted skull smashing (once for mainhand and once for offhand)
 

Attachments

Last edited:
That makes sense: you've asked for item and exp, and the Candelabra cannot give either of those.

As mods.toString() doesn't work (it reads from MODIFIERS which isn't necessarily set), could we print everything that seems relevant:
RequestLogger.printLine("Item: " + this.mods.getNumeric(DoubleModifier.ITEMDROP) + "; Item Penalty: " + this.mods.getNumeric(DoubleModifier.ITEMDROP_PENALTY) + "; Exp: " + this.mods.getNumeric(DoubleModifier.EXPERIENCE) + "; ML: " + this.mods.getNumeric(DoubleModifier.MONSTER_LEVEL) + "; ML %: " + this.mods.getNumeric(DoubleModifier.MONSTER_LEVEL_PERCENT));

If that gives a difference, in Speculation line 146, change "false" to "true" to print debug information about all the modifiers.
 
Here are the updated logs with the specific mod queries (haven't made the Speculation change yet). Will add to the sheet today!

Code:
Maximizer: 5item,10exp,+200bonus June cleaver,-tie,2 dump,effective
Maximizing (1st time may take a while)...
Outfits [Eldritch Equipage, Bounty-Hunting Rig, BRICKOfig Outfit, Crimbo Duds, Furry Suit, Mutant Parts Apparel, Bow Tux]
SLOT HAT
[helmet turtle (1,284), ravioli hat (1,284), disco mask (1,284), coconut shell (1,284), seal-skull helmet (1,284), mariachi hat (1,284), Hollandaise helmet (1,284), Apriling band helmet (1,284)]
[Apriling band helmet]
SLOT WEAPON
[toy accordion (1,284), (none) (1,284)]
[(none)]
SLOT OFFHAND
[hobo code binder (1,284), magical ice cubes (1,284), stuffed baby gravy fairy (1,284), stuffed spooky gravy fairy (1,284), stuffed sleazy gravy fairy (1,284), stuffed astral badger (1,284), stuffed MagiMechTech MicroMechaMech (1,284), stuffed snowy owl (1,284), stuffed Cheshire bitten (1,284), stuffed Meat (1,284), stuffed treasure chest (1,284), stuffed tin of caviar (1,284), august scepter (1,284), Roman Candelabra (1,284), (none) (1,284), unbreakable umbrella (broken) (1,409)]
[unbreakable umbrella (broken)]
SLOT CONTAINER
[bat wings (1,284)]
[bat wings]
SLOT SHIRT
[Jurassic Parka (kachungasaur mode) (1,293)]
[Jurassic Parka (kachungasaur mode)]
SLOT PANTS
[old sweatpants (1,284), tearaway pants (1,284), designer sweatpants (1,284)]
[designer sweatpants]
SLOT ACCESSORY1
[spring shoes (1,209), rubber WWtNSD? bracelet (1,209), diamond necklace (1,209), giant designer sunglasses (1,209), cursed monkey's paw (1,209), Everfull Dart Holster (1,209), Cincho de Mayo (1,284), astral mask (1,309), combat lover's locket (1,334)]
[combat lover's locket, astral mask, Cincho de Mayo, spring shoes]
SLOT ACCESSORY2
[seal-clubbing club (1,284), seal-clubbing club (1,284), turtle totem (1,284), turtle totem (1,284), pasta spoon (1,284), pasta spoon (1,284), saucepan (1,284), saucepan (1,284), little paper umbrella (1,284), little paper umbrella (1,284), candy cane sword cane (1,284), candy cane sword cane (1,284), (none) (1,284), June cleaver (1,484)]
[June cleaver]
SLOT ACCESSORY3
[disco ball (1,284), (none) (1,284)]
[(none)]
SLOT STICKER3
[disco ball (1,284), (none) (1,284), June cleaver (1,484)]
[June cleaver, (none), disco ball]
Combo,Score,Failed,Simplicity,Hat,Weapon,Offhand,Shirt,Pants,Acc1,Acc2,Acc3,Item,Item Penalty,Exp,ML,ML %
1,1518.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,140.00,0.00,1.00,3.00,0.00
2,1393.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,115.00,0.00,1.00,3.00,0.00
3,1718.198,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,140.00,0.00,1.00,3.00,0.00
4,1518.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,140.00,0.00,1.00,3.00,0.00
5,1393.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,115.00,0.00,1.00,3.00,0.00
6,1393.198,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,115.00,0.00,1.00,3.00,0.00
7,1518.198,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,140.00,0.00,1.00,3.00,0.00
8,1518.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,140.00,0.00,1.00,3.00,0.00
9,1393.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,astral mask,115.00,0.00,1.00,3.00,0.00
10,1443.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,125.00,0.00,1.00,3.00,0.00
11,1318.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,100.00,0.00,1.00,3.00,0.00
12,1643.183,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,125.00,0.00,1.00,3.00,0.00
13,1443.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,125.00,0.00,1.00,3.00,0.00
14,1318.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,100.00,0.00,1.00,3.00,0.00
15,1318.183,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,100.00,0.00,1.00,3.00,0.00
16,1443.183,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,125.00,0.00,1.00,3.00,0.00
17,1443.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,125.00,0.00,1.00,3.00,0.00
18,1318.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,combat lover's locket,spring shoes,100.00,0.00,1.00,3.00,0.00
19,1418.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,120.00,0.00,1.00,3.00,0.00
20,1293.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,95.00,0.00,1.00,3.00,0.00
21,1618.198,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,120.00,0.00,1.00,3.00,0.00
22,1418.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,120.00,0.00,1.00,3.00,0.00
23,1293.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,95.00,0.00,1.00,3.00,0.00
24,1293.198,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,95.00,0.00,1.00,3.00,0.00
25,1418.198,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,120.00,0.00,1.00,3.00,0.00
26,1418.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,120.00,0.00,1.00,3.00,0.00
27,1293.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,combat lover's locket,spring shoes,95.00,0.00,1.00,3.00,0.00
28,1343.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,105.00,0.00,1.00,3.00,0.00
29,1218.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,80.00,0.00,1.00,3.00,0.00
30,1543.183,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,105.00,0.00,1.00,3.00,0.00
31,1343.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,105.00,0.00,1.00,3.00,0.00
32,1218.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,80.00,0.00,1.00,3.00,0.00
33,1218.183,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,80.00,0.00,1.00,3.00,0.00
34,1343.183,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,105.00,0.00,1.00,3.00,0.00
35,1343.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,105.00,0.00,1.00,3.00,0.00
36,1218.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),combat lover's locket,spring shoes,80.00,0.00,1.00,3.00,0.00
37,1393.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,115.00,0.00,1.00,3.00,0.00
38,1268.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,90.00,0.00,1.00,3.00,0.00
39,1593.198,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,115.00,0.00,1.00,3.00,0.00
40,1393.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,115.00,0.00,1.00,3.00,0.00
41,1268.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,90.00,0.00,1.00,3.00,0.00
42,1268.198,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,90.00,0.00,1.00,3.00,0.00
43,1393.198,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,115.00,0.00,1.00,3.00,0.00
44,1393.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,115.00,0.00,1.00,3.00,0.00
45,1268.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,astral mask,spring shoes,90.00,0.00,1.00,3.00,0.00
46,1318.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,100.00,0.00,1.00,3.00,0.00
47,1193.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,75.00,0.00,1.00,3.00,0.00
48,1518.183,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,100.00,0.00,1.00,3.00,0.00
49,1318.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,100.00,0.00,1.00,3.00,0.00
50,1193.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,75.00,0.00,1.00,3.00,0.00
51,1193.183,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,75.00,0.00,1.00,3.00,0.00
52,1318.183,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,100.00,0.00,1.00,3.00,0.00
53,1318.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,100.00,0.00,1.00,3.00,0.00
54,1193.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,astral mask,(none),spring shoes,75.00,0.00,1.00,3.00,0.00
55,1293.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,95.00,0.00,1.00,3.00,0.00
56,1168.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,70.00,0.00,1.00,3.00,0.00
57,1493.198,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,95.00,0.00,1.00,3.00,0.00
58,1293.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,95.00,0.00,1.00,3.00,0.00
59,1168.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,70.00,0.00,1.00,3.00,0.00
60,1168.198,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,70.00,0.00,1.00,3.00,0.00
61,1293.198,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,95.00,0.00,1.00,3.00,0.00
62,1293.198,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,95.00,0.00,1.00,3.00,0.00
63,1168.198,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,Cincho de Mayo,(none),spring shoes,70.00,0.00,1.00,3.00,0.00
64,1218.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,80.00,0.00,1.00,3.00,0.00
65,1093.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,55.00,0.00,1.00,3.00,0.00
66,1418.183,false,0,Apriling band helmet,June cleaver,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,80.00,0.00,1.00,3.00,0.00
67,1218.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,80.00,0.00,1.00,3.00,0.00
68,1093.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,55.00,0.00,1.00,3.00,0.00
69,1093.183,false,0,Apriling band helmet,disco ball,(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,55.00,0.00,1.00,3.00,0.00
70,1218.183,false,0,Apriling band helmet,disco ball,unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,80.00,0.00,1.00,3.00,0.00
71,1218.183,false,0,Apriling band helmet,(none),unbreakable umbrella (broken),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,80.00,0.00,1.00,3.00,0.00
72,1093.183,false,0,Apriling band helmet,(none),(none),Jurassic Parka (kachungasaur mode),designer sweatpants,(none),(none),spring shoes,55.00,0.00,1.00,3.00,0.00
72 combinations checked, best score 1,718.20
 
The first two tabs here, "Verbose Logs", include a maximizer call with the added logs for item, exp, and ML.

I split it across two tabs because I noticed something interesting - (closing/reopening the Mafia app and) logging in unarmed vs. logging with the cleaver equipped changed the behavior of the maximizer:
  • When logging in completely unarmed, the maximizer suggests staying unarmed.
  • When logging in with Cleaver equipped in mainhand and no offhand, the maximizer suggests staying armed and adding an offhand (unbreakable umbrella, bucket style).
 
...
If that gives a difference, in Speculation line 146, change "false" to "true" to print debug information about all the modifiers.
I made this change to Speculation.java, and now running the maximizer is throwing an uncaught error. Here's the output from my debug log
Code:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
            KoLmafia r28087-M, Windows 10, Java 21.0.1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 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: Thu Oct 17 16:03:07 PDT 2024
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 User: natnit
 Current run: 0
 MRU Script: Unknown
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Unexpected error, debug log printed.
class java.lang.NullPointerException: Cannot invoke "java.util.Map.containsKey(Object)" because "net.sourceforge.kolmafia.DebugModifiers.wanted" is null
java.lang.NullPointerException: Cannot invoke "java.util.Map.containsKey(Object)" because "net.sourceforge.kolmafia.DebugModifiers.wanted" is null
    at net.sourceforge.kolmafia.DebugModifiers.addDouble(DebugModifiers.java:76)
    at net.sourceforge.kolmafia.Modifiers.addDouble(Modifiers.java:489)
    at net.sourceforge.kolmafia.Modifiers.lambda$add$0(Modifiers.java:611)
    at java.base/java.util.TreeMap.forEach(TreeMap.java:1317)
    at net.sourceforge.kolmafia.modifiers.DoubleModifierCollection.forEach(DoubleModifierCollection.java:48)
    at net.sourceforge.kolmafia.Modifiers.add(Modifiers.java:608)
    at net.sourceforge.kolmafia.KoLCharacter.recalculateAdjustments(KoLCharacter.java:4945)
    at net.sourceforge.kolmafia.Speculation.calculate(Speculation.java:145)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.getScore(MaximizerSpeculation.java:71)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:153)
    at net.sourceforge.kolmafia.swingui.MaximizerFrame.maximize(MaximizerFrame.java:148)
    at net.sourceforge.kolmafia.swingui.MaximizerFrame$MaximizerPanel.actionConfirmed(MaximizerFrame.java:302)
    at net.sourceforge.kolmafia.swingui.panel.GenericPanel$ConfirmedListener.execute(GenericPanel.java:504)
    at net.sourceforge.kolmafia.swingui.listener.ThreadedListener.run(ThreadedListener.java:175)
    at net.sourceforge.kolmafia.RequestThread$SequencedRunnable.run(RequestThread.java:342)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)

Edit: Looks like there was a missing DebugModifiers.setup() call. I added the following to L4929 to KolCharacter.java
Code:
    if (newModifiers instanceof DebugModifiers) {
      DebugModifiers.setup("");
    }

The generated debug file is too big to upload to the forum (730 MB) !
 
Last edited:
Looking at the modifiers, we can see that the error is when it goes from considering equipping the unbreakable umbrella, to considering nothing. Sometimes nothing counts as -25% item (e.g. 4 -> 5, 25 -> 26), and I assume this is actually unequipping the bucket, given that ML % is 0 consistently.

Sometimes it instead counts as +30 item, +1 exp (e.g. 20 -> 21, 41 -> 42).

So the useful information from the speculation is: in 21 and 42, where is the +1 exp coming from?
 
Back at my PC, so can test some more.
  • When running with your suggested change to make it "KoLCharacter.recalculateAdjustments(debug: true, ...)" the maximizer always suggests equipping a weapon and offhand. When running it with debug: false, the maximizer suggests staying unarmed
  • I tried to pare down the output from DebugModifiers by removing a lot of the table html. Maybe I went too far. Here's what printed in the CLI when I logged in last
    Code:
    typesourceFamiliar WeightMonster LevelCombat RateInitiativeExperienceItem    DropMeat DropDamage AbsorptionDamage ReductionCold ResistanceHot    ResistanceSleaze ResistanceSpooky ResistanceStench ResistanceMana    CostMoxieMoxie PercentMuscleMuscle PercentMysticalityMysticality    PercentMaximum HPMaximum HP PercentMaximum MPMaximum MP PercentWeapon    DamageRanged DamageSpell DamageSpell Damage PercentCold DamageHot    DamageSleaze DamageSpooky DamageStench DamageCold Spell DamageHot Spell    DamageSleaze Spell DamageSpooky Spell DamageStench Spell DamageUnderwater    Combat RateFumbleHP Regen MinHP Regen MaxMP Regen MinMP Regen    MaxAdventuresFamiliar Weight PercentWeapon Damage PercentRanged Damage    PercentStackable Mana CostHobo PowerBase Resting HPResting HP PercentBonus    Resting HPBase Resting MPResting MP PercentBonus Resting MPCritical Hit    PercentPvP FightsVolleyballSombreroLeprechaunFairyMeat Drop PenaltyHidden    Familiar WeightItem Drop PenaltyInitiative PenaltyFood DropBooze DropHat    DropWeapon DropOffhand DropShirt DropPants DropAccessory DropVolleyball    EffectivenessSombrero EffectivenessLeprechaun EffectivenessFairy    EffectivenessFamiliar Weight CapSlime ResistanceSlime Hates ItSpell    Critical PercentMuscle ExperienceMysticality ExperienceMoxie    ExperienceEffect DurationCandy DropDB Combat DamageSombrero BonusFamiliar    ExperienceSporadic Meat DropSporadic Item DropMeat BonusPickpocket    ChanceCombat Mana CostMuscle Experience PercentMysticality Experience    PercentMoxie Experience PercentMinstrel LevelMuscle LimitMysticality    LimitMoxie LimitSong DurationPrismatic DamageSmithsnessSupercold    ResistanceReduce Enemy DefensePool SkillFamiliar DamageGear DropMaximum    HoochWater LevelCrimbot Outfit PowerFamiliar Tuning MuscleFamiliar Tuning    MysticalityFamiliar Tuning MoxieRandom Monster ModifiersLuckOthello    SkillDisco StyleRollover Effect DurationSixgun DamageFishing    SkillAdditional SongSprinkle DropAbsorb AdventuresAbsorb StatsRubee    DropKruegerand DropWarBear Armor PenetrationMaximum PPPlumber PowerDrippy    DamageDrippy ResistanceEnergyScrapFamiliar Action BonusWaterSpleen    DropPotion DropSauce Spell DamageMonster Level PercentFood FairyBooze    FairyCandy FairyFood Fairy EffectivenessBooze Fairy EffectivenessCandy    Fairy EffectivenessDamage AuraSporadic Damage AuraThornsSporadic    ThornsStomach CapacityLiver CapacitySpleen CapacityFree RestsLeavesElf    Warfare EffectivenessPirate Warfare EffectivenessMPC DropPiece of Twelve    DropCombat Item Damage PercentSignOpossum          +10.00 +10.00ItemApriling band helmet              +40.00 +40.00              +10.00 +10.00              +10.00 +10.00              +10.00 +10.00              +25.00 +25.00              +25.00 +25.00Equipment Powerhat power              +200.00 +200.00Itembat wings              +100.00 +100.00              +5.00 +5.00              +5.00 +5.00              +5.00 +5.00              +50.00 +50.00ItemJurassic Parka              +1.00 +1.00              +1.00 +1.00              +1.00 +1.00              +1.00 +1.00              +1.00 +1.00              +10.00 +20.00              +10.00 +20.00              +10.00 +20.00Jurassic Parkakachungasaur              +50.00 +90.00              +2.00 +3.00              +100.00 +100.00Equipment Powershirt power              +100.00 +300.00Itemdesigner sweatpants              +5.00 +5.00              +1.00 +2.00              +5.00 +10.00              +5.00 +10.00              +5.00 +10.00              +10.00 +10.00              +10.00 +10.00Equipment Powerpants power              +200.00 +500.00ItemCincho de Mayo              +15.00 +15.00              +25.00 +45.00              +10.00 +10.00              +20.00 +20.00              +10.00 +10.00              +20.00 +20.00              +30.00 +30.00Itemcombat lover's locket              +25.00 +40.00              +25.00 +35.00              +8.00 +18.00              +10.00 +30.00              +8.00 +18.00              +10.00 +30.00Itemspring shoes              +100.00 +200.00              +20.00 +65.00              +50.00 +50.00SkillPowers of Observatiogn              +10.00 +50.00SkillGnefarious Pickpocketing              +10.00 +100.00SkillGnomish Hardigness              +5.00 +105.00SkillCosmic Ugnderstanding              +5.00 +5.00SkillNatural Born Scrabbler              +5.00 +55.00SkillThrift and Grift              +10.00 +110.00SkillAbs of Tin              +10.00 +115.00SkillMarginally Insane              +10.00 +15.00SkillMaster of the Surprising Fist              +10.00 +15.00              +10.00 +10.00SkillThick-Skinned              +10.00 +35.00              +10.00 +35.00SkillChip on your Shoulder              +5.00 +5.00SkillAlien Source Code              +5.00 +40.00SkillBrain Games              +3.00 +3.00Skill20/20 Vision              +10.00 +65.00SkillAlways Never Not Guzzling              +25.00 +55.00SkillCrimbo Training: First Aid Technician              +10.00 +45.00SkillCrimbo Training: Passenger Greeter              +1.00 +1.00SkillCrimbo Training: Concierge              +1.00 +1.00SkillCrimbo Training: Track Switcher              +10.00 +210.00SkillCrimbo Training: Bartender              +15.00 +70.00SkillCrimbo Training: Waiter              +15.00 +65.00SkillCrimbo Training: Coal Taster              +1.00 +3.00SkillCrimbo Training: Dessert Steward              +1.00 +4.00SkillCrimbo Training: Night Watchman              +1.00 +2.00SkillCrimbo Training: Sanitation Consultant              +1.00 +2.00SkillCrimbo Training: Graffiti Censor              +1.00 +2.00SkillElf Guard Extortion Techniques              +10.00 +120.00SkillFruit Recognition              +5.00 +70.00SkillElf Guard Relaxation Techniques              +3.00 +3.00SkillToo Cool              +1.00 +5.00              +1.00 +1.00SkillNimble Fingers              +20.00 +140.00SkillMad Looting Skillz              +20.00 +90.00SkillDisco Nap              +1.00 +4.00SkillOverdeveloped Sense of Self Preservation              +20.00 +230.00SkillAdventurer of Leisure              +2.00 +6.00SkillThief Among the Honorable              +5.00 +95.00              +10.00 +150.00SkillHeart of Polyester              +2.00 +4.00SkillMaster Accordion Master Thief              +10.00 +10.00SkillMariachi Memory              +1.00 +1.00SkillDeft Hands              +25.00 +25.00SkillMaster Saucier              +10.00 +10.00SkillSensitive Fingers              +10.00 +20.00SkillDiminished Gag Reflex              +2.00 +4.00SkillIrrepressible Spunk              +5.00 +120.00              +5.00 +20.00SkillSpirit of Ravioli              +25.00 +145.00SkillTolerance of the Kitchen              +2.00 +5.00SkillWisdom of the Elder Tortoises              +50.00 +70.00SkillSubtle and Quick to Anger              +10.00 +20.00SkillCold-Blooded Fearlessness              +2.00 +4.00SkillFortitude of the Muskox              +1.00 +19.00              +2.00 +32.00SkillHide of the Walrus              +50.00 +550.00SkillClaws of the Walrus              +7.00 +17.00SkillThe Long View              +3.00 +6.00SkillNorthern Exposure              +2.00 +7.00SkillSlimy Sinews              +20.00 +65.00SkillSlimy Synapses              +10.00 +50.00SkillSlimy Shoulders              +20.00 +250.00SkillChitinous Soul              +11.00 +76.00SkillExpert Panhandling              +10.00 +160.00SkillIntrinsic Spiciness              +1.00 +1.00SkillInner Sauce              +1.00 +19.00              +1.00 +31.00SkillSkin of the Leatherback              +1.00 +16.00SkillAmphibian Sympathy              +5.00 +6.00ItemA Guide to Burning Leaves              +0.50 +0.50ItemNewbiesport™ tent              +9.00 +9.00              +10.00 +10.00RumpusInfuriating Painting              +3.00 +8.00RumpusCollection of Sports Memorabilia              +5.00 +13.00RumpusWrestling Mat              +1.00 +14.00Inventory ItemCincho de Mayo              +3.00 +9.00ClassEXP/2              +20.97 +20.97ClassEXP/4              +9.08 +9.08              +9.08 +9.08
  • Attached is the same style of logging output, with debug on, and when running the maximizer. Too large to upload, so link to gist instead
Any suggestions for better/cleaner ways to dig into the modifier discrepancies from your examples? (e.g. 20 -> 21, 41 -> 42).
 
FWIW, I'm also having trouble writing a test that exposes this issue. Here's as far as I got in case someone else has a flash of inspiration:
I'm noting that in this test, "unbrekable umbrella" is misspelled. That doesn't seem sufficient to cause test breakage, but might be a small step in the right direction, given the latest observations.

I'm also noting that Crimbo Training: Passenger Greeter does provide +1 exp in the modtrace listed earlier on this page, and wonder if this issue could somehow be related to the passive skill modifier cache issue that I haven't had brainpower to think harder about.
 
When running with your suggested change to make it "KoLCharacter.recalculateAdjustments(debug: true, ...)" the maximizer always suggests equipping a weapon and offhand. When running it with debug: false, the maximizer suggests staying unarmed
Ah, a heisenbug!

This makes it hard to figure out exactly what's going on but given what heeheehee says (there is a skill that offers +1 exp) I figure it's related to the cache somehow. When you had debug off it thought nothing offered exp unless you had nothing in your hands. I thought the cache was never refreshed while the maximizer was running, though.
 
Back
Top