New Content - Implemented Spring 2020 Challenge Path - Path of the Plumber

Code:
[736] The Neverending Party
Encounter: "plain" girl
Round 0: Arbos wins initiative!
Round 1: Arbos executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
You're on your own, partner.
Click here to continue in the relay browser.
Yeah. Even though we verify that the skill is a combat skill, when it is time to convert it to a combat action:

Code:
			String name = SkillDatabase.getCombatSkillName( action.substring( 5 ).trim() );
			return name == null ? "attack" : "skill" + SkillDatabase.getSkillId( name );
... we get the name of the combat skill and look up the skillId from amongst all skills, which gets the passive skill.

I have a fix for this, but I am out of turns to test it. I'll test & submit after rollover.
 
With revision 19767 and this CCS:

Code:
[ default ]
skill spin jump
skill multi-bounce
skill jump attack
I can hit the "script" button and it will do exactly what we expect.

This is (barely) past day 1; I just bought power boots and Spin Jump.
ON day 1, I had ballerina costume, fancy boots, Power Plus and Multi-Bounce, and it would have skipped Spin Jump and worked fine.
Heck, at the BEGINNING of day 1, it would have skipped Spin Jump and Multi-Bounce and STILL have worked fine, using no PPs.

In any case, combat skills that are ambiguous with non-combat skills should work in a CCS now.
 
Just a heads up that my_pp() seems to always return my_maxpp() at the moment, even when pp is used up. Tested as of r19767.
 
Code:
[155] The Beanbat Chamber
Encounter: musical fruit bat
Round 0: Veracity wins initiative!
Round 1: Veracity casts SPIN JUMP!

[color=green]> ash my_pp()[/color]

Returned: 2

[color=green]> ash my_maxpp()[/color]

Returned: 3
This was a fight in the Relay Browser. What did you do?
 
As of r1976, Kamek and King Boo need to be marked as having 100 physical_resistance

> ash $monster[king boo].physical_resistance

Returned: 0

> ash $monster[kamek].physical_resistance

Returned: 0

Round 1: Jeparo casts MULTI-BOUNCE!
Round 2: Kamek takes 1 damage.
Round 2: Kamek takes 1 damage.
Round 2: Kamek takes 1 damage.
Round 2: Kamek takes 1 damage.
Round 2: Kamek takes 1 damage.
You acquire an item: coin (5)

and similarly for King Boo
 
Code:
[155] The Beanbat Chamber
Encounter: musical fruit bat
Round 0: Veracity wins initiative!
Round 1: Veracity casts SPIN JUMP!

[color=green]> ash my_pp()[/color]

Returned: 2

[color=green]> ash my_maxpp()[/color]

Returned: 3
This was a fight in the Relay Browser. What did you do?

I was fighting via WIP autoscend support, so no relay browser during the fight. However, even when I loaded in to the relay browser after the fight got aborted (by continued calls to multi-bounce, since the script thought I still had full pp) and also reloading the charpane (in case that was related) ash my_pp() still returned 2 when the charpane displayed 0.
 
I was fighting via WIP autoscend support, so no relay browser during the fight.
Consult script? Could I see the code that selects and submits the skill, please?

However, even when I loaded in to the relay browser after the fight got aborted (by continued calls to multi-bounce, since the script thought I still had full pp) and also reloading the charpane (in case that was related) ash my_pp() still returned 2 when the charpane displayed 0.
We are supposed to load from the charpane, but my regular expression for PP was wrong. I will submit a fix soon.
 
As of r1976, Kamek and King Boo need to be marked as having 100 physical_resistance
Revision 19769.

Additionally, that revision adds support for the Mushroom District Badge Shop and Mushroom District Costume Shop.
New properties:

plumberBadgeCost -> 50
plumberCostumeCost -> 50

These start at 50 and go up by 50 each successful use of the respective shop. We deduct the current cost in coins and increment the property by 50 - the cost for the next visit.

user plumberCostumeWorn -> none

This starts at "none" and switches to "muscle", "mysticality", and "moxie" when you don the Carpenter, Gardener, or Ballerina costume. I considered using the costume name, but the stat names are appropriate and make it easier to handle in ASH: get_property( "plumberCostumeWorn" ).to_stat()

For both shops (choice adventures), when you visit, we deduce cost (and current costume) from the page.

Here's are my current options for the costume shop:

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

[b]choice 1[/b]: Carpenter Costume
[b]choice 3[/b]: Ballerina Costume
[b]choice 6[/b]: Leave
That's nice; even if one of the buttons is absent (because you are wearing the costume), the option does not change.

This is available in ASH, too:

Code:
[color=green]> ash available_choice_options()[/color]

Returned: aggregate string [int]
1 => Hammer Throw
2 => Ultra Smash
25 => Leave
I bet those option numbers are similarly fixed, but I can't verify it this run; the only two badges I have not bought are the first two.

If so, I might add the option number - from 1 - 14 - as the "class level" for skills 25001 (Hammer Throw) - 25014 (Health Symbol). It would make ASH scrips that want to get the choice option to buy a skill a tiny bit clearer:

Code:
[color=green]> ash $skill[ Rainbow Shield].level[/color]

Returned: 10

[color=green]> ash ( $skill[ Rainbow Shield].to_int() - 25000 )[/color]

Returned: 10
 
Revision 19769.

Additionally, that revision adds support for the Mushroom District Badge Shop and Mushroom District Costume Shop.
New properties:

plumberBadgeCost -> 50
plumberCostumeCost -> 50

These start at 50 and go up by 50 each successful use of the respective shop. We deduct the current cost in coins and increment the property by 50 - the cost for the next visit.

I believe the badges increase by 25 each time, not 50 - the formula is 25+25n.
 
Got it.

Consult script:

Code:
static skill JUMP_ATTACK = to_skill( 7334 );
static skill SPIN_JUMP = to_skill( 7335 );
static skill MULTI_BOUNCE = to_skill( 7336 );

void main(int round, monster foe, string page)
{
    print( "round = " + round );
    print( "monster = " + foe );
    int pp = my_pp();
    int max_pp = my_maxpp();
    print( "pp = " + pp + "/" + max_pp );
    if ( pp > 0 && round < 3 ) {
	use_skill( SPIN_JUMP );
    } else {
	use_skill( JUMP_ATTACK );
    }
}
With fix:

Code:
[300] Lair of the Ninja Snowmen
Encounter: Ninja Snowman
Round 0: Veracity wins initiative!
Round 1: You lose 1 hit point
Round 1: Veracity executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
round = 1
monster = Ninja Snowman (Hilt/Mask)
pp = 3/3
Round 1: Veracity casts SPIN JUMP!
round = 2
monster = Ninja Snowman (Hilt/Mask)
pp = 2/3
Round 2: Veracity casts SPIN JUMP!
round = 3
monster = Ninja Snowman (Hilt/Mask)
pp = 1/3
Round 3: Veracity casts JUMP ATTACK!
Round 4: Ninja Snowman (Hilt/Mask) takes 238 damage.
Round 4: Veracity wins the fight!
You acquire an item: coin (8)
After Battle: You gain 5 hit points
After Battle: Elvis Grrl does a couple of karate moves, then swivels his hips and gyrates his pelvis.
You acquire an item: frigid ninja stars
You acquire an item: plain snowcone
After Battle: You gain 3 Strengthliness
After Battle: You gain 13 Cheek
Revision 19771
 
using r19773, Mafia does not recognize "Shadow Plumber" as $monster[Your Shadow]
 
Last edited:
I have only done 2 Plumber run, but I think you can eat to 20, then free the king to end up in aftercore with 20/15 fullness with no ill effects. It would be nice to add a Path of the Plumber reminder to eat to fullness before breaking the prism.
 
Maximizing for hot damage, I am told to "use 1 fire flower (+50)"
I have a fire flower in inventory - but the wrong one.

modifiers.txt:

Item [2426]fire flower Effect: "Flamingly Floral", Effect Duration: 10

correct. statuseffects.txt:

311 Flamingly Floral fire.gif df55e784c72b808b1e00973d23ca14e6 use 1 fire flower

Well, no. I think the "use" command will look only for "usable" items - which will exclude the equipment - but perhaps the maximizer does not?
 
I have only done 2 Plumber run, but I think you can eat to 20, then free the king to end up in aftercore with 20/15 fullness with no ill effects. It would be nice to add a Path of the Plumber reminder to eat to fullness before breaking the prism.
Depending on how much fullness I have left, an extra 5 fullness of not so great food is worse than having 5 fewer fullness, but filling it with better food. Still, that's a choice you should make.

Revision 19781 adds TWO warnings at the Prism if you are a Plumber:
- Eat to use your excess fullnes
- Visit the mushroom district to spend coins.

It also fixes the maximizer to not see my fire flower in inventory and think it's the potion.

I also got a DEBUG log when I broke the prism to try and track down the red "you are in a choice" message. It is bizarre: After feeing the king and fetching the charpane - twice - KoLmafia issued a request to "place.php?whichplace=town_wrong" - which redirects to choice.php and generates the error. It does that with an actual PlaceRequest of its own volition.

I cannot see where that came from. No java code. No scripts.

Next time, I'll request a stack trace in PlaceRequest.run() and see what I can figure out.

I also verified that Waveracity is a proper clone of Wa%playername/lowercase% - it showed me the item drop under the monster info, "ash last_monster()" was as expected, and so on.

Here are all the things I can think that could use some improvement. Perhaps in order of importance:

1) "restore hp" as coded is useless, since you cannot rest at campsite or campaway tent to gain HP or use any items other than mushroom, deluxe mushroom, super deluxe mushroom.

If I click the "restore HP" link in the charpane, that calls "restore hp" - which, as configured for me, goes to the campaway tent, which restores only MP.

2) Is there a maximum number of plumberPoints?

I expect there is, but nobody knows the limit, yet. Small change will be needed in setting the plumberPoints property, once we know.

3) Ambiguous skill names for ASH $skill[]

Yeah, OK. You can get the combat skills with to_skill( # ). If we gave $skill[] disambiguation via [#], as we do with items and effects, you still have to know the skill numbers. Still the "right" thing to do, but not, to my eye, of high priority.

Anything else?
 
I've heard in chat, but not verified myself, that eating up to 20/15 does have some drawbacks: you can't use Pantsgiving to get extra fullness, and you can't eat magical sausages.
 
I have also verified that stuff from the Mushroom District disappear when you free the king. I knew they were all quest items, but apparently they don't persist until you ascend, like normal quest items. I'm sure somebody thought that was a good idea, although I can't begin to imagine why.

I'll remove that second relay browser warning, since there is no reason to spend coins.

Well, I'll comment it out, in case something changes and it becomes useful.
 
Back
Top