SmartStasis -- a complex script for a simple CCS

[Umm, shouldn't I be posting this in the BatMan thread?]

I probably missed the fireworks and brass band, but has BatMan been generally released or is it still in an invitation-only alpha stage? I'd be very interested in trying it...
 
[Umm, shouldn't I be posting this in the BatMan thread?]

I probably missed the fireworks and brass band, but has BatMan been generally released or is it still in an invitation-only alpha stage? I'd be very interested in trying it...

I posted that here since it's erroring was dependent on Smart[ish]Stasis. But yes, that relay script was originally downloaded from inside the middle of the BatMan thread a few months back. BatMan itself still isn't out out... but SmartishStasis gives us all a tempting taste. :)
 
Heh, I've been lazily farming in aftercore for a while, but my interest in this project helped persuade me to go back through the gash. I plan to pick up a few more of the skills that I'd like to understand better, for testing. Plan on getting Stringozzi Serpent to play with first, then probably the TT combo skills.

If anyone else has a skill they aren't very clear on the mechanics of, let me know and I'd be happy to look into it.

Edit to add:

In our back-and-forth, a fair number of exceptions and special conventions have come to light as being needed for various skills. I'm tempted to ask if it might be worth having a thread just for batfactors.txt, as a central repository of dos-and-don'ts as well as q&a for the format(s) therein.
 
Last edited:
Also thanks to StDoodle, BatBrain now correctly estimates damage of pastamancer and sauceror skills (with handling for tuning via cookbooks and Immaculate), which was one of the major knowledge inaccuracies that needed addressing.

Is it not yet supposed to account for "area damage" multipliers?
Because I just tried it out and it underestimated my saucewave against a war hippy dread squad by a factor of 2 ... ( You summon a wave of cold Tomato Sauce, which rolls over both of them ...)
Or is that just missing data somewhere?
 
It will, and is planned, but the "aoe" flag that's in the work isn't yet in the data files, nor do any of the scripts actually use said flag. It has been discussed though, and if you want to add that in to any deleveling / damage formulas, have at it! (I think, but am not certain, that the way it will be handled is that the script itself will set the "aoe" combat variable, and it should be included in the formulas as just mentioned.)
 
To add area of effect data to batfactors.txt, simply add an "aoe X" tag to the comma-delimited special field. X represents the maximum possible multiplier for the damage, or put another way, the maximum number of monsters the skill can affect. Omitting the field assumes 1, so X will basically only ever be 2 or 3.

StDoodle has also started a data file for plural monsters, which is also on the Map Manager and also needs to be fleshed out.

This will be a cinch to add to BatBrain, given the factor(spread, float) function. I bet it'll get done within a week, along with converting it to use separate att/def stats for ML, and omitting Consume Burrowgrub from skills if you won't make good use of it.
 
zarqon; we might want to go about it the way I'd listed, as some skills -- at the least a couple of the disco bandit delevelers -- use aoe for deleveling as well. This is the main reason I would suggest having them in the formulas, and then setting the variable in script based on the monster.
 
I want to make sure I'm understanding this correctly. The way I understand it, there are multiple variables here; one, the maximum number of monsters that a given skill may affect, and B) the number of monsters in the combat, where the damage/deleveling/etc is multiplied by min(area of effect, number of monsters).

If this is correct, we'll need to see a list of skills with AoE components -- can deleveling and damage always be multiplied for aoe skills? If so, we don't need that to be in the formulas. Even if there's only one or two exceptions -- BatMan is already too slow without adding more string-crunching to its per-round process.

Then, in build_skills(), BatBrain could check (once) if the current monster is plural, and if so, multiply the appropriate components. Otherwise, skip all the AoE stuff entirely. It's faster than string-crunching only to multiply everything for every monster every round, so I'd prefer to keep this method if possible.
 
As far as I'm aware (and this isn't well-spaded info), Wave of Sauce and Cennelloni Cannon have a max x2 aoe multiplier (damage only, as that's all they do). Weapon of the Pastalord and Saucegeyser have a max x3 aoe multiplier, again damage only. Disco Dance of Doom and Dance 2 have x2 and x3 aoe multipliers, respectively, that affect both damage and deleveling. (Disco Face Stab doesn't have any info on aeo, likely unaffected.) So far, it seems that any skill that receives a bonus for aoe receives said bonus for all damage and deleveling, so I suppose your method works for what is known, currently. My main concern is that, if we find exceptions in the future, it could mean a not-insignificant amount of code refactoring to handle new information.

I can see your point, it just seems hard to believe that a single additional variable is likely to make a significant difference in performance, whereas using aoe as a variable for expressions would allow for much more flexibility. But you're probably much more familiar with that than I am, so I defer to your judgment.
 
I think saucestorm (and the corresponding pasta spell) are also *2 aoe spells.

Uhhh ... in fact, cannon is the one that corresponds to storm. And mortar corresponds to wave.
No aoe text wikied on mortar's page, but that may be because it's not as used?
 
Heh, I keep forgetting SMS exists... I'm currently a PM, and shall test all of said class skills in a few days. I'll double-check the Sauce spells too (I have them all permed).
 
You mean you didn't just rename SmastishStasis to SmartStasis when you downloaded it originally, so you didn't need to change all your CCS? :D

You mean you have a stable CCS that you use all the time? I generally build mine on the fly, or switching between 6 different ones based on what class I'm cuyrrently in, and so having to type Smartishstasis.ash instead of Smartstasis.ash wasn't that much of a problem. Also, I sometimes wanted to use the old version and so didn't want to overwrite it.
 
You mean you have a stable CCS that you use all the time? I generally build mine on the fly, or switching between 6 different ones based on what class I'm cuyrrently in, and so having to type Smartishstasis.ash instead of Smartstasis.ash wasn't that much of a problem. Also, I sometimes wanted to use the old version and so didn't want to overwrite it.

Eh, I tend towards laziness when automatically adventuring. If I'm doing things manually, great, I'll pay attention... but for 99% of my auto-adventuring, it's been running SS/attack with weapon, which became SS/spamattack after zarqon released that. Works fine as long as you outmoxie. If not, you can always manually adventure. Or just raise moxie for a bit, and try again later.
 
With my character what SS (and SishS) seems to mainly do is "cast entangling noodles" I can add that myself and then customize the type of attack I want to do since I rarely play in a way that makes me outmoxie anything, especially not as a myst or muscle class. In the first case I hope to do enough damage quick enough and in the second case my high HP makes it not so important :)
 
Request for zarqon: Would it be possible to get a preference for end stasis round? I'm having problems with it failing to finish combat (successfully) because it's stasising too long.
 
Under what circumstances? Are you not able to do enough damage in your regular attack to finish off the monster before the cutoff? Rather than add a preference, SS could stop stasising one or two rounds before your regular attack will be enough to kill the monster.

Relatedly -- anyone know which combats can extend beyond 30 rounds? I want BatBrain to be smart about the NS / certain other bosses being able to extend beyond the usual 30 rounds. Is it something simple like "all bosses" or are there just a few special cases?
 
Actually, in my case it was because I hadn't finished the Nemesis quest, and SS kept wanting to use the skills. Rather than realize that it was getting the "haven't finished nemesis quest" message, it just kept using it until round 30, then trying to fight the last round.

If I could force it to stop stasising at round 21 or so, it would finish successfully even in those odd cases. Though I've finished the quest now, so it shouldn't do that anymore, but... edge cases.
 
Relatedly -- anyone know which combats can extend beyond 30 rounds? I want BatBrain to be smart about the NS / certain other bosses being able to extend beyond the usual 30 rounds. Is it something simple like "all bosses" or are there just a few special cases?

Only a few special cases. NS, The Man and the Big Wisniewski. I'm pretty sure that there are no others and google agrees with me:
 
Been making lots of headway lately. BatBrain now accounts for AoE's and plural monsters (what is known in the data files, that is), handles attack and defense separately, and accounts for some combats extending to 50 rounds. Edited the data file for all deleveling factors and separated att/def, and also included ranges since I was checking the Wiki for those pages anyway. My SS also now stops stasising in time for you to kill the monster in the event that your attack doesn't do enough damage.

Unfortunately, it seems like familiars and crown actions should be recoded into the data file. Ugh -- I already made this conversion once, now have to go backwards, and include ranges. And how to separate action rate from the rest? Should that be another tag in the "special" field? Ugh.
 
Using currently posted version of batbrain and smartishstasis and Mafia R9125 most of my combats look like this:

Code:
[120845] Thugnderdome
Encounter: Gnomester Blomester
Strategy: C:\PerfLogs\Admin\mdb\KM\ccs\default.ccs [default]
Round 0: lieutenant pepper wins initiative!
Evaluator syntax error: can't understand {45,52.5,60}
Evaluator syntax error: can't understand {7,8.5,10}*0.5
Evaluator syntax error: can't understand {4,4.5,5}*0.25
Evaluator syntax error: can't understand {80,100,120}
Evaluator syntax error: can't understand {20,25,30}
Evaluator syntax error: can't understand {1,2,3}+0.0
Evaluator syntax error: can't understand {6,7,8}+0.0
Evaluator syntax error: can't understand {8,9,10}+0.0
Evaluator syntax error: can't understand {15,16.5,18}+0.0
Round 1: lieutenant pepper tries to steal an item!
Round 2: gnomester blomester takes 3 damage.
Round 2: gnomester blomester takes 6 damage.
Round 2: gnomester blomester takes 4 damage.
You lose 1 hit point
Evaluator syntax error: can't understand {45,52.5,60}
Evaluator syntax error: can't understand {7,8.5,10}*0.5
Evaluator syntax error: can't understand {4,4.5,5}*0.25
Evaluator syntax error: can't understand {80,100,120}
Evaluator syntax error: can't understand {20,25,30}
Evaluator syntax error: can't understand {1,2,3}+0.0
Evaluator syntax error: can't understand {6,7,8}+0.0
Evaluator syntax error: can't understand {8,9,10}+0.0
Evaluator syntax error: can't understand {15,16.5,18}+0.0
Round 2: lieutenant pepper executes a macro!
Round 2: lieutenant pepper casts BREAK IT ON DOWN!
Round 3: gnomester blomester takes 10 damage.
Round 3: lieutenant pepper casts POP AND LOCK IT!
Round 4: gnomester blomester takes 14 damage.
Round 4: lieutenant pepper casts RUN LIKE THE WIND!
Round 5: gnomester blomester takes 19 damage.
You acquire an item: flange
Round 5: lieutenant pepper wins the fight!
After Battle: Trofflesby does a little fairy dance.
You acquire an item: spring
You gain 2 Strengthliness
You gain 1 Magicalness
You gain 8 Cheek
Evaluator syntax error: can't understand {45,52.5,60}
Evaluator syntax error: can't understand {7,8.5,10}*0.5
Evaluator syntax error: can't understand {4,4.5,5}*0.25
Evaluator syntax error: can't understand {80,100,120}
Evaluator syntax error: can't understand {20,25,30}
Evaluator syntax error: can't understand {1,2,3}+0.0
Evaluator syntax error: can't understand {6,7,8}+0.0
Evaluator syntax error: can't understand {8,9,10}+0.0
Evaluator syntax error: can't understand {15,16.5,18}+0.0

Would this be a mafia problem?
 
Back
Top