stannius' semi-automatic spaaace script

Theraze

Active member
If you want a significantly better maximization, I'd reduce muscle instead of moxie. And only if your stats are below the cap, since if you're above the cap, you'll take less damage and do more by keeping your stats high.

But anyways, reducing muscle also reduces the monsters' hp, making them easier to kill with guaranteed damage skills and spells... Reducing moxie just drops the monster attack by the same amount it drops your ability to resist it.
 

lostcalpolydude

Developer
Staff member
Part of the damage formula is 10-20% of the monster's attack (affected by DA), which is separate from the part that depends on the difference between their attack and your moxie (or muscle with hero). This portion is lowered even if your moxie decreases along with their attack.
 
I've been using the same maximizer call (mine does have +initiative as well though) for that section and was wondering about its effect on other people. It works fine for my myst runs, I think because, I always get initiative, cast noodles, then spam stuffed or storm.

The maximizer is yet another area I'm sadly deficient in. So is the suggestion to replace -moxie with -muscle or to add -muscle to the mix?

Fortunately (?), the script I've been working on strongly suggests the user have some kind of combat spell and noodles permed, cuz that makes the whole thing quite trivial immediately post-prism. It also lends itself readily to the "-moxie -muscle" I suppose. My normal character is breaking prism later this afternoon. I'll play around with maximizer more myself then.

Editorializing for a moment... now that I've got the freakin' porko working, I've gone back to how I'm implementing combat. As I mentioned, I'm actually setting battleAction = <a spell the player has chosen from a shortlist of spells> and setting autoEntangle = true. While I have absolutely no problem personally with writing an aftercore script that infers the player has at least some kind of spell permed, I would like, for the sake of the contest, to implement something more... robust. Unfortunately, short of importing freakin' BatBrain (which is entirely beyond my abilities I think), I'm not sure I can come up with something universal. I mean, I haven't even figured out how a muscle class even gets thru the escort mission without noodles. :)
 

Theraze

Active member
Well, -muscle means that the scaling monster will have less health and defence, so that helps for spells, moxious maneuver, and other such skills...
 

stannius

Member
Editorializing for a moment... now that I've got the freakin' porko working, I've gone back to how I'm implementing combat. As I mentioned, I'm actually setting battleAction = <a spell the player has chosen from a shortlist of spells> and setting autoEntangle = true. While I have absolutely no problem personally with writing an aftercore script that infers the player has at least some kind of spell permed, I would like, for the sake of the contest, to implement something more... robust.

Dealing with scaling combats is hard enough. And then on top of that there's a limit to how much damage you can take.

OTOH, noodles seems to be a mostly sufficient solution to the problem. I ran the script on stanniusTestingMulti and while I did lose the SLG on the first attempt, I succeeded on the second. In between I used some yellow hearts from the mall and bought entangling noodles. I added "+initiative" to the SLG maximization after that, and even a check specifically for yellow hearts.

Unfortunately, short of importing freakin' BatBrain (which is entirely beyond my abilities I think), I'm not sure I can come up with something universal. I mean, I haven't even figured out how a muscle class even gets thru the escort mission without noodles. :)

Don't sell yourself short...
Server-friendly consult scripts with capabilities far exceeding both a normal CCS and a BALLS macro are now within even a mediocre ASH scripter's grasp.
I might actually give it a try for my next version.
 
Last edited:

stannius

Member
What is the "best practice" for naming and versioning scripts? Right now as you can see from post #1 I have separate files for each version. At the top of my script I also have

stannius_spaaace_0.6.ash said:
// note to self: make sure to update the version number in all relevant places
script "stannius_spaaace_0.6.ash";
notify stannius;
import "zlib.ash";
check_version("stannius_spaaace", "stannius_spaaace", "0.6", 6969);

Of course, that means that different versions are in some ways different scripts. I am thinking about starting to use Registry.ash but that would work best with a single filename. (Though I don't know if it requires an actual filename - e.g. zlib's check_version accepts any string for the "file" argument as far as I can tell)
 
Last edited:

slyz

Developer
Your check_version() will work (as soon as you change the first post to reflect that you are now on version 0.6).
If you want to make older versions available in the first post, I don't think it's a problem either, unless the forum starts having disk space issues.

EDIT: I see now what you mean about naming conventions. You should probably change
Code:
script "stannius_spaaace_0.6.ash";
to
Code:
script "stannius_spaaace.ash";
 

stannius

Member
Your check_version() will work (as soon as you change the first post to reflect that you are now on version 0.6).

That was from my v.Next file. notify and check_version() seems to be working ok. I guess my question was more about Registry.ash. So I cross-posted the question in the thread for that script.
 

Bale

Minion
I mean, I haven't even figured out how a muscle class even gets thru the escort mission without noodles. :)

I had to do that recently with a brand new character. Turns out that it is possible once you purchase lunging thrust-smack and boost initiative with cheap wind-up clocks. That killed them quickly enough that I didn't come close to losing the escort.
 
I had to do that recently with a brand new character. Turns out that it is possible once you purchase lunging thrust-smack and boost initiative with cheap wind-up clocks. That killed them quickly enough that I didn't come close to losing the escort.

Yeah, I had the same experience as a TT and found that head + knee combo works sufficiently well to be supported. I was gonna try Thrust Smack as a Seal and see how that worked. BTW, is there a quick and dirty way to buy a skill from the Trainer? He should be a Coinmaster! ;)
 

Theraze

Active member
I personally use the get_skill script, but it (or mafia) does have a bug... when you purchase skills using it, it double-decrements your money visibly, until the next charpane update. Basically, I don't see any reason why its visit_url should make mafia think that it's being hit twice, but apparently it does... can fix it by forcing a refresh char after you run the skill purchase though. Until I actually know why it's doing it though, it doesn't seem right to write up a mafia bug report. Suppose I could do that if anyone else actually started to use it though. Heh. I've updated it some as well since then, so if people want an update, I'll post one. With 3 total downloads though, doesn't really seem like much interest in CLI access to skill purchasing. :)
 

stannius

Member
Yeah, I had the same experience as a TT and found that head + knee combo works sufficiently well to be supported. I was gonna try Thrust Smack as a Seal and see how that worked. BTW, is there a quick and dirty way to buy a skill from the Trainer? He should be a Coinmaster! ;)

I assume there is some visit_url() call you can make. One of the other contestant's scripts does it. It seems like an odd choice to me, but I have enough skills such that buying a skill in-run is the exception rather than the rule.
 
Yeah, I do that. It's optional, though... perhaps Mr. Joe Noobcakepants will like the fact that there's a premanufactured combat strategy waiting for him if he needs it.

Damn the guild change, I'm not sure if I didn't screw something up morphing my code to work with it.
 

stannius

Member
I am working on 0.6. The script plays porko, except with one problem - it uses whatever probability matrix is leftover from previous encounters. That is, somehow in the ways I do everything, lastPorkoExpected doesn't get set. I didn't notice for so long because Porko is so easy - as far as I've seen, a random choice has better than even odds of success. In fact, losing on purpose can be difficult (The lowest probability on my most recent attempt was 44% (chance of passing at least one trial = 83%). Which is making diagnosing this problem a challenge.

EDIT:
I looked at bumpork and saw
Code:
visit_url("choice.php");
I added that to my script (along with setting lastPorkoExpected = "") and it seems to work now.
 
Last edited:

stannius

Member
Version 0.6 released

Version 0.6 Changelog
Porko finally works fully.
Parse axel courage counter.
Change internal script name (for notify) to simply spaace.ash.
 

stannius

Member
Version 0.7 released

Version 0.7 released. Changes:
Abort if beaten up
Change familiars (using zlib's best_fam. honors is_100_run)
Save some user settings at start of execution. Restore them when complete.
Add user preferences for: item use; abort when it's time for escort mission;
Use cheap wind-up clocks, if available (buys them if muscle class)
Expand message upon losing SLG
 
Last edited:

stannius

Member
Version 0.8 released

I found one small bug: using a map from inventory (e.g. there from previous runs, or run out of Transpondent just as you get a map) fails. I added a check for transpondency and (if item use is enabled) re-transpondency as necessary.
 

stannius

Member
I'm going to remove the much debated ", -0.001 moxie, -0.001 muscle" from maximization during the escort part. After adding courage counter parsing, I'm still not sure what the Axel Courage formula is, but it's definitely not "1 hp lost = 1 courage lost". so the minimization probably doesn't do anything useful.
 
Top