SmartStasis -- a complex script for a simple CCS

Seems more like it should be aware of dierounds before deciding how many rounds it can stasis. If dierounds < (let's say) 5, ID at most 1 potion. If dierounds < 3, don't ID any.

Personally I love that it'll get done with the ID fast. Especially if I'm in a SC run and pull all the types together, one semi-easy fight later I've got it all sorted out and I don't have to worry about any more distractions...
 
I'm not 100% sure that the problem is smartstasis, but I can't see anything else that would be doing this:

Something is attempting to use the indigo cup more than once per fight and aborting.
Code:
[464] Haunted Ballroom
Encounter: zombie waltzers
Strategy: C:\Dropbox\KoLMafia\ccs\default.ccs [default]
Round 0: mskc loses initiative!
1/4 monsters drop goals here.
This monster is the best source of goals (0.22)!
Round 1: mskc executes a macro!
Round 1: mskc uses the Rain-Doh indigo cup!
You gain 31 hit points
Round 2: 081 lowers itself down over your temples and shoots a beam of energy through your brain. Whee!
Round 2: You gain 14 Mojo Points.
Round 2: mskc uses the Rain-Doh indigo cup!
You're on your own, partner.
Click here to continue in the relay browser.

my ccs is this: (it wasn't this simple before, but I cut it down to try and figure this out)

Code:
[ default ]
consult smartstasis.ash
skill shieldbutt
 
I'm running this and Destroy All Monsters but I'm not getting the "Destroy All Monsters" starts here message so I guess it's to do with stasis - when I get free castings of Saucy Salve mafia counts the rounds anyway, and if it gets to the point that mafia "thinks" 30 rounds have passed, SmartStasis aborts with an error.
 
Glazius, that's because SS is underestimating how many rounds it needs to finish off at the end. In the two spots where it does maxround - 1 - kill_rounds, change the 1 to some bigger number, how many rounds from the end you want it to abort. I personally use 10 currently, to stop at round 20, because after round 10 I've stasised as much meat as possible from NZPR or Cocoabo or whatever and I'm just burning time.
 
Some quick responses:

@Donavin and Weatherboy: I don't use DAM, so most of the bug reports involving DAM confuse me. When you say it "said it should", that was DAM reporting on what SS considered its most likely stasis action at the time. Don't know what to tell you.

@Weatherboy and Theraze: I had the same dilemma when scripting this -- originally I wrote it to ID only one bang potion per fight, but I opted to change it, in the interest of speed trumping survivability. However, I think I should probably change the logic for bang potions. Since spheres have entirely helpful results, they can be ID'd all in one go without much risk (plus you almost never acquire them all at once), but bang potions, if you add them all together, end up buffing the monster. Plus, unless you're backfarming them, you have a lot more time in a run to ID bang potions than you do spheres. So, I think I'll reduce bang potions to no more than ceil(die_rounds() / 10.0) per fight. That number was chosen fairly arbitrarily, but I think it will do nicely.

@matt.chugg: Thanks for reporting; this is an apparent bug in the way SS and KoL handle once-only items. SS removes them from consideration after use, but KoL doesn't -- the BALLS "hascombatitem" condition evidently still returns true despite not being able to use it. We'll need to test this by submitting the macro "use 5561; repeat hascombatitem 5561". If this throws an error rather than continue as normal, SS will need an additional check to avoid the error.

While I was checking up on this, I noted that the cup was missing stun information in batfactors. Added.

@rlbond86: I don't have a medium yet, so haven't written any support for it. I imagine it will happen, someday.

@Glazius: There may be a problem, but I don't think you've identified the cause. SS completely ignores mafia's round count, preferring to parse the round from the page text, so whether or not mafia miscounts is a non-issue. I'd like to see some output where this happens, please.

@Theraze: I beg to differ -- you're not burning time, you're profiting. Also, SS is underestimating, eh? It uses attack_action(), plus a one-round safety margin; it's not just an arbitrary round number decision. I suppose increasing the safety margin, while theoretically suboptimal, would reduce the number of bug reports, however. I'll bump it up a bit.
 
@Theraze: I beg to differ -- you're not burning time, you're profiting. Also, SS is underestimating, eh? It uses attack_action(), plus a one-round safety margin; it's not just an arbitrary round number decision. I suppose increasing the safety margin, while theoretically suboptimal, would reduce the number of bug reports, however. I'll bump it up a bit.

When I have max hp and mp, and the mob can't hit me except with criticals, it's not useful to keep trying to delevel the mob with the sceptre, since the 'best' result is that the monster gets a critical and the stasis gets to restore me back up to full HP.

As soon as it passes turn 10, it should (and does, I believe) stop trying to burn turns profiting waiting for meat.
As soon as the mob can't hit me except with criticals, it should stop trying to burn turns 'profiting' by delevelling, giving them more chances to get critical hits and hurt me.
As soon as my hp/mp are full and the only stasis reason left is HP/MP, it should stop trying to burn turns 'profiting' by restoring HP/MP.

Some of these are already done... meat-farming, I believe. As far as I'm aware though, delevelling is always considered profitable though if it was initially profitable, and if combined with hp/mp restoration, it will continue to try to burn turns long after it's useful. My NZPR in the Giant castle burning turns waiting for the nemesis isn't getting hit except on criticals from the giants. You'd think that it should stop after 10-15 rounds of stasis, since HP/MP are max, the giants can't hit me anyways, and after round 10, the only thing I'm getting is more toast. And yes, I did end up with well over 100 toasts, but toast has a value of 100 in the mall (good luck) or 14 autosell, so that's not useful enough to continue stasising for...
 
@Glazius: There may be a problem, but I don't think you've identified the cause. SS completely ignores mafia's round count, preferring to parse the round from the page text, so whether or not mafia miscounts is a non-issue. I'd like to see some output where this happens, please.

Alright, I turned logging on and verbosity up to 10. Here's a combat where it runs over limit. (I've included the end where I finish it off.}

DAM does seem to be calling it multiple times near the end there.
 
Yeah, it looks like SS finished up several rounds earlier, then got re-called somehow. I'm a little confused as to why SS performed those additional actions, though, if it had already decided it was done. I'll see if there's something I can do to make SS more robust about being called late in the game, i.e. refusing to act at all at that point.

@Theraze: Oddly enough, I believe the toast is the source of the NPZR problem. It's considered to have the minimum value of 50 meat, and it's not yet possible to add rate information to in-combat item results (that should move up on my priority list), so it is assuming 50 meat every round from toast. That's a result I had not foreseen from adding an item minimum value. I suppose if historical price exists, and it is mall minimum, and an autosell value exists, it would be smarter to use the autosell value, even if it is less than 50. That minimum was added more for items with unknown value, to avoid 0 being used. Until I fix this, if you want to have more sane results with a NPZR I'd suggest deleting the bit about toast from its entry in batfactors.

Also, technically, deleveling the monster may still be profitable even when it can only hit you with criticals. Those criticals will hit for less damage, thus saving you HP. I believe BB calculates this correctly. However, prolonging the combat purely to reduce the damage of monster criticals is indeed stupid. Unfortunately, this check would somehow need to be added to the repeat conditions in the stasis macro, which are not as involved or knowledgeable as BB's calculations. I believe they already take into consideration the round 10 meat cutoff, and the full HP/MP cutoff, but they don't account for deleveling into the no-hit zone. I'll see if there's some way to that in BALLS. Probably we'll just have to count rounds, rather than look at the actual monster stat (unavailable in BALLS).
 
Funny... yeah, I only moved from Grouper Groupie and/or Cocoabo to NZPR in the last few months for aftercore farming, so that makes sense as to why it wants to keep the combat as long as possible. Definitely worthwhile for my toast count, but I gain more toast per day than any small band of warriors could consume. :D

Any chance that the item gain in batfactors could be set to respect the combat round and once fields? When in the crown, the pottery barn owl, for example, apparently has a 10% chance of dropping ash in round two. So we could just set it to be a 10% chance, once. I don't think we need (yet) the ability to say that if it didn't happen by round two, stop considering it, though that does present some interesting questions...

Would it make sense to add time limiting factors to our batty interpreter? Meat wouldn't need to be hardcoded as stopping after 10 rounds then, batfactors could say
fam 16 Cocoabo 0.25*(fweight+2) -0.25*(fweight+7) rate 0.33, meat 0.25*(4.0*fweight+9) before 10, mp 0.25*(fweight+7), att -0.25*(fweight+1)/3, def -0.25*(fweight+1)/3
or something similar. Could be until, before, anything similar. But could have before, after, in (since the owl above only does its thing in round two), etc.
 
I'm having trouble. SS doesn't seem to use any of my rave combos or disco combos anymore. Here's the log of one battle:

Code:
[2648] Poop Deck
Encounter: wacky pirate
Round 0: rlbond86 wins initiative!
Running ZLib version: r35 (current)
1 HP costs 10μ. ( 188 / 188 )
1 MP costs 17μ. ( 160 / 160 )
Factoring in Scarysauce: (6) damage, retal
Running BatBrain version: 1.18 (current)
Running SmartStasis version: 3.12 (current)
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
Value of stat gain: 487.81μ
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
Value of stat gain: 487.81μ
ATT: 120 (6% × 4.23, death in 742)
DEF: 108 (95.45% × 79.25, win in 1150000)
HP: 110, Value: 810.79 μ
Parsed round number: 1
Building options...
Options built! (100 actions)
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Building custom actions...
Queued: pickpocket
Building options...
Options built! (100 actions)
Custom actions built! (0 actions)
Executing macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; endsub; pickpocket; call batround; if hpbelow 29; abort "BatBrain abort: Danger, Will Robinson"; endif; 
Round 1: rlbond86 executes a macro!
Round 1: rlbond86 tries to steal an item!
Round 2: wacky pirate takes 2 damage.
Round 2: wacky pirate takes 6 damage.
Round 2: wacky pirate takes 4 damage.
You lose 4 hit points
Happened: pickpocket
Parsed round number: 2
Building options...
Options built! (100 actions)
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
cannonball charrrm (12.0 @ +86.0): 110μ * 22.32% = 24.552
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
yohohoyo (6.0 @ +86.0): 1,498μ * 11.16% = 167.1768
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
cannonball charrrm (13.0 @ +86.0): 110μ * 24.18% = 26.598
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
yohohoyo (6.5 @ +86.0): 1,498μ * 12.09% = 181.1082
Stasis action chosen: use 2678 (profit: 0.02)
cannonball charrrm (10.0 @ +86.0): 110μ * 18.6% = 20.46
yohohoyo (5.0 @ +86.0): 1,498μ * 9.3% = 139.31401
Value of stat gain: 487.81μ
Attack action chosen: attack
This monster is not your huckleberry.
Stasis loop complete.
This monster is not your huckleberry.
SmartStasis complete.
You're on your own, partner.

One thing to note is that I have MP regeneration due to my equipment. SmartStasis does not seem to take this into account.
 
Last edited:
Cyrus doesn't seem to be working.

Code:
[1886] The Primordial Soup
Encounter: Soupercharged
Encounter: Cyrus      the Virus
Strategy: C:\Users\Justin Edge\Dropbox\kol\Kol      Mafia\ccs\SS.ccs [default]
Round 0: mredge73 wins initiative!
WARNING:      Unreachable code (destroyallmonsters.ash, line 115)
WARNING:      Unreachable code (destroyallmonsters.ash, line 298)
WARNING: Missing      return values in boolean functions will soon become an error      (destroyallmonsters.ash, line 514)
[COLOR=black]You have the      latest batfactors.txt. Will not check again today.[/COLOR]
[COLOR=black]Checking      for updates (running BatBrain ver. 1.18)...[/COLOR]
[COLOR=gray]Running      BatBrain version: 1.18 (current)[/COLOR]
[COLOR=black]Checking      for updates (running SmartStasis ver. 3.12)...[/COLOR]
[COLOR=gray]Running      SmartStasis version: 3.12 (current)[/COLOR]
[COLOR=black]Checking      for updates (running Destroy All Monsters ver. 0.3.3.4)...[/COLOR]
[COLOR=gray]Running      Destroy All Monsters version: 0.3.3.4 (current)[/COLOR]
[COLOR=black]You      have the latest pluralMonsters.txt. Will not check again today.[/COLOR]
[COLOR=blue]Run      SmartStasis! (-199003 profit to stasis with spectre scepter -- low)[/COLOR]
usedAgainstCyrus      => memory of a CA base pairmemory of a CG base pair
Round 1:      mredge73 executes a macro!
Round 1: mredge73 casts RETURN!

...

[1894] The Primordial Soup
Encounter: Soupercharged
Encounter: Cyrus      the Virus
Strategy: C:\Users\Justin Edge\Dropbox\kol\Kol      Mafia\ccs\SS.ccs [default]
Round 0: mredge73 wins initiative!
[COLOR=blue]Run      SmartStasis! (-199003 profit to stasis with spectre scepter -- low)[/COLOR]
usedAgainstCyrus      =>
Round 1: mredge73 executes a macro!
Round 1: mredge73 casts      RETURN!

...

[1905] The Primordial Soup
Encounter: Soupercharged
Encounter: Cyrus      the Virus
Strategy: C:\Users\Justin Edge\Dropbox\kol\Kol      Mafia\ccs\SS.ccs [default]
Round 0: mredge73 wins initiative!
[COLOR=blue]Run      SmartStasis! (-199003 profit to stasis with spectre scepter -- low)[/COLOR]
usedAgainstCyrus      => memory of a CA base pair
Round 1: mredge73 executes a macro!
Round      1: mredge73 casts RETURN!

...

[1906] The Primordial Soup
Encounter: Soupercharged
Encounter: Cyrus      the Virus
Strategy: C:\Users\Justin Edge\Dropbox\kol\Kol      Mafia\ccs\SS.ccs [default]
Round 0: mredge73 wins initiative!
[COLOR=blue]Run      SmartStasis! (-199003 profit to stasis with spectre scepter -- low)[/COLOR]
usedAgainstCyrus      => memory of a CA base pairmemory of a CG base pair
Round 1:      mredge73 executes a macro!
Round 1: mredge73 casts RETURN!

...

1907] The Primordial Soup
Encounter: Soupercharged
Encounter: Cyrus      the Virus
Strategy: C:\Users\Justin Edge\Dropbox\kol\Kol      Mafia\ccs\SS.ccs [default]
Round 0: mredge73 wins initiative!
[COLOR=blue]Run      SmartStasis! (-199003 profit to stasis with spectre scepter -- low)[/COLOR]
usedAgainstCyrus      =>
Round 1: mredge73 executes a macro!
Round 1: mredge73 casts      RETURN!

...
 
There appears to be some kind of problem with detecting end-of-fightedness in SS/Batbrain as reportedin the WHAM-thread:
Code:
Request 18 of 30 (Cyrpt: Defiled Alcove) in progress...

[350] Defiled Alcove
Encounter: conjoined zmombie
Strategy: L:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos loses initiative!
Round 1: conjoined zmombie takes 19 damage.
You lose 26 hit points
You acquire an effect: Half-Eaten Brain (duration: 10 Adventures)
Running ZLib version: r35 (current)
1 HP costs 6.667μ. ( 167 / 193 )
1 MP costs 17μ. ( 37 / 37 )
Factoring in double-ice cap: (15) damage, stun 1.0, retal
Running BatBrain version: 1.18 (current)
Running SmartStasis version: 3.12 (current)
Running WHAM version: 1.8 (current)
WHAM: We currently think that the round number is: 0
WHAM: No need to do anything with this monster.
cranberries (29.0 @ +97.62019): 29μ * 57.30986% = 16.61986
cranberries (8.0 @ +97.62019): 29μ * 15.809615% = 4.5847883
loose teeth (8.0 @ +97.62019): 17μ * 15.809615% = 2.6876345
Value of stat gain: 236.41μ
cranberries (29.0 @ +97.62019): 29μ * 57.30986% = 16.61986
cranberries (8.0 @ +97.62019): 29μ * 15.809615% = 4.5847883
loose teeth (8.0 @ +97.62019): 17μ * 15.809615% = 2.6876345
Value of stat gain: 236.41μ
ATT: 89 (94% × 39.2, death in 5)
DEF: 73 (95.45% × 132.42 (10), win in 1160000)
HP: 111, Value: 737.0 μ
Parsed round number: 1
Building options...
Options built! (12 actions)
WHAM: We currently think that the round number is: 1
WHAM: You have no profitable MP restoratives.
WHAM: You have no profitable HP restoratives.
WHAM: You are fighting a Conjoined Zmombie. Mafia considers that this monster has an attack of 89 or 89 when given a monster name.
WHAM: Mafia further considers that this monster has a defense value of 73 or 73 when given a monster name.
WHAM: Mafia further further considers that this monster has a HP value of 111 or 130 when given a monster name.
WHAM: Your current ML-adjustment is: 10.
WHAM: Setting up variables via BatBrain
WHAM: Monster HP is 111.0.
if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; 
WHAM: Running SmartStasis
SmartStasis starting.
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Building custom actions...
Custom actions built! (0 actions)
Custom action: use 2562 (no stun)
Queued: use 2562
Building options...
Options built! (12 actions)
Custom action: use 2562 (no stun)
Queued: use 2562
Building options...
Options built! (12 actions)
Constructed macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; use 2562; call batround; use 2562; call batround; 
Round 1: Arbos executes a macro!
Round 1: Arbos uses the half-rotten brain!
Round 2: conjoined zmombie takes 63 damage.
Round 2: Arbos uses the half-rotten brain!
Round 3: conjoined zmombie takes 75 damage.
Round 3: Arbos wins the fight!
After Battle: As you end the conjoined zmombies' conjoined lives for the second times, your Evilometer emits a loud beep.
You gain 479 Meat
You acquire an item: cranberries
You acquire an item: cranberries
You gain 29 Fortitude
You gain a Muscle point!
You gain 15 Enchantedness
You gain a Mysticality point!
You gain 15 Cheek
Happened: use 2562
Happened: use 2562
Parsed round number: 3
Look! You found 2 cranberries (58μ)!
Building options...
Options built! (8 actions)
Stasis action chosen: attack (profit: -1.45)
loose teeth (8.0 @ +97.62019): 17μ * 15.809615% = 2.6876345
Value of stat gain: 236.41μ
Attack action chosen: attack
This monster is not your huckleberry.
Stasis loop complete.
This monster is not your huckleberry.
SmartStasis complete.
WHAM: Running SmartStasis took 2.545 seconds.
WHAM: We currently think that the round number is: 3
WHAM: Starting evaluation and performing of attack
WHAM: We currently think that the round number is: 3
WHAM: You will kill the monster in 2 rounds with your basic attack.
WHAM: The monster will take 5 rounds to kill you.
rounds_to_kill: 2, round_limit: 10, maxround: 30, die_rounds(): 5, hitchance("attack"): 0.95454544
WHAM: Expected received damage per round: 36.84964, Rounds to kill: 2, Expected damage: 130.0, Hit chance: 1.0
WHAM: Monster is weak. We are just going to bash its head in. It'll take 2 rounds.
Unable to enqueue empty action.
WHAM: Empty macro generated. Please check, aborting.
You're on your own, partner.

WHAM relies on "finished()" to know if to exit or not, and as cna be seen the round-number never got set to maxrounds but instead continued to be parsed as 3, a number which was handed over to WHAM which then completely failed to exit.
Am I completely off the mark?
 
Following up on Winterbay's report: I'm the one who reported the issue in the WHAM thread and the odd thing is that the ONLY time I observed this behavior was when the monster was one of the Crypt sub-zone bosses. Every other combat in every other zone was handled as expected.
 
Problems, problems.

@rlbond: One of the clan bots I run is a DB, I'll check it out.

@mredge: Looks broken to me too! I'll have a go at Cyrus with a clan bot and see what's going wrong.

@Winterbay: That does seem to be what happened. I wonder why? Magus may have provided just the tip we need -- combat completion may not detect correctly when you fight a monster that doesn't have an Adventure Again link. I'll check this out too.

Right now I'm waiting for the Korean immigration office to call my number. Been 2 hours so far. Only 50 people left ahead of me!
 
3.14 Update!

I feel very pleased about this update. Mr. Edge will be pleased to know the Cyrus bug was identified and hopefully fixed (not tested). The data file flagged base pairs as "notmonster cyrus", meaning when facing Cyrus those actions were not in your options. I'd changed the code recently to use get_action() -- probably based on a too-hasty check to see if base pairs were in the data file -- rather than build a custom event for them (previous behavior). So I reverted that, but while I was at it I made it better. Setting the tracking property prior to executing the action is no longer necessary now that BatBrain tracks all macro'd actions, so I moved the Cyrus property setting into BB, so it will only be set after it detects the base pair was actually thrown.

Thanks to Magus's clue, I quickly solved the finished() bug reported above. I was foolishly checking for "Adventure Again", when I should have been checking for "<table><a name=\"end\">"!

Unfortunately for you, rlbond, I wasn't able to find anything amiss with DB combos. I tested with two DB characters and SS used combos for both of them where appropriate. I had a multi who hadn't completed the DB Nemesis yet, so I ran him through it. It was incredibly gratifying simply setting SS loose in Outside the Club and watching it learn skills, then identify combos, then pickpocket all the required items all in one go! I did, however, find and fix a bug with DB's during this process: I noted that SS was still checking happened("waved") rather than happened($skill[gothy handwave]), so I fixed that. SS will no longer continue to stasis after waving.

Also, as previously mentioned, SS will not try to identify more than ceil(die_rounds()/10) bang potions per fight.

Enjoy!
 
So... am I reading things correctly if I say that SS won't ever run your custom thingies unless your a discobandit and the first option is to pickpocket?

Edit: No, no I'm not. Disregard that, execution was moved into the stasis()-loop entirely.
 
That is an incorrect reading. Either of the try_x() functions will first call enqueue_x(), then macro() if there are any queued actions. So custom actions will be run together with any applicable combos in try_combos(), if they didn't already get run by try_custom().
 
I'm not sure where the problem lies on this one. Since updating to the current Batbrain, SmartStasis and WHAM I get the following in every combat. I've replicated the problem without using WHAM so it's probably something in SmartStasis.

Code:
[175] Dark Heart of the Woods
Encounter: P imp
Strategy: E:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos loses initiative!
You lose 14 hit points
WHAM: Running SmartStasis
Round 1: Arbos executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1

After that combat proceeds to completion as normal with every round off by one. The "off by one" problem does not occur if I adventure manually and handle combat without scripting. Here's a verbose example:

Code:
[178] Dark Heart of the Woods
Encounter: G imp
Strategy: E:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos wins initiative!
Running ZLib version: r35 (current)
1 HP costs 6.667μ. ( 134 / 134 )
1 MP costs 17μ. ( 32 / 32 )
Running BatBrain version: 1.19 (current)
Running SmartStasis version: 3.14 (current)
Running WHAM version: 1.9 (current)
WHAM: We currently think that the round number is: 0
WHAM: No need to do anything with this monster.
hot wing (30.0 @ +25.0): 32μ * 37.5% = 12.0
Imp Ale (30.0 @ +25.0): 25μ * 37.5% = 9.375
leather mask (5.0 @ +25.0): 65μ * 6.25% = 4.0625
Value of stat gain: 148.75μ
hot wing (30.0 @ +25.0): 32μ * 37.5% = 12.0
Imp Ale (30.0 @ +25.0): 25μ * 37.5% = 9.375
leather mask (5.0 @ +25.0): 65μ * 6.25% = 4.0625
Value of stat gain: 148.75μ
ATT: 56 (94% × 20.8, death in 7)
DEF: 51 (95.45% × 178.2 (2), win in 2)
HP: 56, Value: 225.19 μ
Parsed round number: 1
Building options...
Options built! (13 actions)
WHAM: We currently think that the round number is: 1
WHAM: You have no profitable MP restoratives.
WHAM: You have no profitable HP restoratives.
WHAM: You are fighting a G Imp. Mafia considers that this monster has an attack of 56 or 56 when given a monster name.
WHAM: Mafia further considers that this monster has a defense value of 51 or 51 when given a monster name.
WHAM: Mafia further further considers that this monster has a HP value of 56 or 56 when given a monster name.
WHAM: Your current ML-adjustment is: 10.
WHAM: Setting up variables via BatBrain
WHAM: Monster HP is 56.0.
if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; 
WHAM: Running SmartStasis
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Building custom actions...
Custom actions built! (0 actions)
Constructed macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; ; call batround; 
Round 1: Arbos executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
Parsed round number: 1
Building options...
Options built! (13 actions)
Stasis action chosen: skill 11011 (profit: 40.92)
hot wing (30.0 @ +25.0): 32μ * 37.5% = 12.0
Imp Ale (30.0 @ +25.0): 25μ * 37.5% = 9.375
leather mask (5.0 @ +25.0): 65μ * 6.25% = 4.0625
Value of stat gain: 148.75μ
Attack action chosen: skill 11000
Top of the stasis loop.
Queued: skill 11011
Building options...
Options built! (12 actions)
Constructed macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 11011; call batround; endsub; call finito; repeat hasskill 11011 && (!hpbelow 134.0 && !mpbelow 32.0 && !pastround 25)
Round 2: Arbos executes a macro!
Round 2: Arbos casts INTIMIDATING BELLOW!
KoLmafia thinks it is round 3 but KoL thinks it is round 2
Round 3: g imp drops 16 attack power.
Round 3: g imp drops 16 defense.
Happened: skill 11011
Parsed round number: 2
Building options...
Options built! (12 actions)
Stasis action chosen: skill 2 (profit: -127.79)
hot wing (30.0 @ +25.0): 32μ * 37.5% = 12.0
Imp Ale (30.0 @ +25.0): 25μ * 37.5% = 9.375
leather mask (5.0 @ +25.0): 65μ * 6.25% = 4.0625
Value of stat gain: 148.75μ
Attack action chosen: skill 11000
This monster is not your huckleberry.
Stasis loop complete.
WHAM: SmartStasis complete.
WHAM: Running SmartStasis took 4.216 seconds.
WHAM: We currently think that the round number is: 2
WHAM: SS did not finish the script off, continuing with script execution. 
WHAM: Starting evaluation and performing of attack
WHAM: We currently think that the round number is: 2
WHAM: You will kill the monster in 2 rounds with your basic attack.
WHAM: The monster will take 21 rounds to kill you.
rounds_to_kill: 2, round_limit: 10, maxround: 30, die_rounds(): 21, hitchance("attack"): 0.95454544
WHAM: Expected received damage per round: 6.4189124, Rounds to kill: 2, Expected damage: 56.0, Hit chance: 1.0
WHAM: Monster is weak. We are just going to bash its head in. It'll take 2 rounds.
Queued: skill 11000
Building options...
Options built! (12 actions)
Constructed macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; if pastround 49; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 11000; call batround; endsub; call finito; repeat hasskill 11000
Round 3: Arbos executes a macro!
Round 3: Arbos casts MIGHTY AXING!
KoLmafia thinks it is round 4 but KoL thinks it is round 3
Round 4: g imp takes 283 damage.
Round 4: Arbos wins the fight!
You gain 16 hit points
You gain 13 Muscularity Points
You gain 4 Muscularity Points
You gain 47 Meat
You acquire an item: hot wing
You gain 8 Strongness
You gain 5 Mysteriousness
You gain 3 Cheek
Happened: skill 11000
Parsed round number: 0
Look! You found 1 hot wing (32μ)!
Happened: crit
WHAM: Evaluating the attack and performing it took 6.091 seconds.
WHAM: We currently think that the round number is: 31
WHAM: We currently think that the round number is: 31
 
Last edited:
Back
Top