TheSea.ash - Automated Underwater Quests

Theraze

Active member
For the next person's benefit, can you add this to the first post? I found it by a quick search in the script, since I wanted to set it back to 'true' (in my pastamancer runs I was just blasting stuff to smithereens manually).

Code:
// Do you want to go through training and automation on the Gladiator quest?
setvar("seafloor_automateGladiators", true);

Done. Both added to the list of things that you might want to change and to the descriptive section below.
 

Mr_Crac

Member
Thank you for writing this script, Theraze.

A question: Does the script always attempt to get the darkbook from the Mer-kin researcher? The problem I see here is that the droprate for this item is so abysmally low even after compensating for the underwater -item drop penalty. What happened to me is that I had 7 out of 8 clues needed for the dreadscroll, so I just tried the four different possibilites for the one remaining slot. Of course it was the fourth choice :) But still this trial-and-error approach seems more sensible to me than hunting after an annoying low-droprate item for dozens or even hundreds of turns. Do you agree?

Also, when I do this step manually and thus have unlocked the temple now, how do I tell the script that it should not keep going for the darkbook (which it does)?
Ah, wait. It does not fight the boss, does it? Well then it should probably stop once the temple is unlocked, and give a message. Is there a way to check for this?
 
Last edited:

lostcalpolydude

Developer
Staff member
Thank you for writing this script, Theraze.

A question: Does the script always attempt to get the darkbook from the Mer-kin researcher? The problem I see here is that the droprate for this item is so abysmally low even after compensating for the underwater -item drop penalty. What happened to me is that I had 7 out of 8 clues needed for the dreadscroll, so I just tried the four different possibilites for the one remaining slot. Of course it was the fourth choice :) But still this trial-and-error approach seems more sensible to me than hunting after an annoying low-droprate item for dozens or even hundreds of turns. Do you agree?

You only need to get the book once ever if you perm the skill. You can use a pulled yellow taffy to force it to drop, I believe.

I agree that it's fine to skip a single clue, but I disagree with the one to skip (I always skipped the sushi-eating one). Skipping more than one slows things down quite a bit, of course. My opinion doesn't matter for this script since I never used it, and I'm probably never going back in the sea now that I have all 3 outfits finished.
 

Theraze

Active member
The script always tries to get the darkbook if you don't have the skill yet. As lostcalpolydude pointed out, if you perm it once, you'll never need to find it again. As such, it's worth it to save turns and effort the next 5 times. No trading, so if you're going to get it, it's going to be from farming for it...

If you decide you don't care, and you've already got 7 clues learned, you can solve those by running:
ash import <TheSea.ash> solveHatred(true);

This will try to guess what the 8th clue is, regardless of which is the missing one. It will burn the extra 2 adventures on a wrong guess in the knob treasury for quick and lazy slight-meat-and-super-rare-chance.
If you don't want it to guess for you, just change that to solveHatred(false) and it won't guess.

If you want it to auto-buy the extra-strength red potion, red potion, red pixel potion, filthy poultice, gauze garter, scented massage oil, mer-kin mouthsoap, sea lasso, and 3 mer-kin prayerbeads, auto-equip the vestments, 3 prayerbeads, and maximize for -1000 hp, mainstat, and 100 elemental damage, and get you far enough in the fight so that you should just be able to attack for victory...
ash import <TheSea.ash> prepHatred();
 

fronobulax

Developer
Staff member
The prepHatred stuff, circa lines 185-193 is using the two parameter version of buy. It would be appreciated (by me, at least) if you would make the change to use the bounded, three parameter version with an appropriate limit. Thank you.
 

Theraze

Active member
If you can come up with reasonable rates for those, we can do so. It does involve turning prep into a boolean and aborting if it fails to get something rather than the current expectation of success, but... eh, whatever. Part of why it works the way it currently does with prep is that it gets you into the battle and throws the items. As such, if you don't get an item, it means you're losing the battle and just wasted every other item thrown...
 

fronobulax

Developer
Staff member
If you can come up with reasonable rates for those, we can do so. It does involve turning prep into a boolean and aborting if it fails to get something rather than the current expectation of success, but... eh, whatever. Part of why it works the way it currently does with prep is that it gets you into the battle and throws the items. As such, if you don't get an item, it means you're losing the battle and just wasted every other item thrown...

My solution everywhere else, unless I have reason to do otherwise is to just use the user's selected maximum per item cost (which I am not in a position to look up the preference name, at the moment) as an upper bound and if the item cannot be purchased for less than that amount abort. That's pretty much what people expect from other portions of mafia. A case could be made for using acquire or retrieve_item instead of buy. It's a philosophy discussion but I would abort the script before entering combat if all of the items were not present. In a Universe where BCCAscend makes you fight various bosses manually because it doesn't support the fight and a certain class, I have no problems with TheSea refusing to fight if the healing items are not in inventory.

But this is just my personal campaign to make sure I never get screwed again because I didn't pay attention to how a script used buy ;-)
 

Theraze

Active member
Eh, if I were going to use the aBPL, then I'd just use acquire. But then I'd get bug reports that the script keeps aborting from people who don't read, rather than reports that the script burned through millions in meat, which hasn't happened once yet. So far.

If I'm going to use the 3 parameter buy, it's going to be with sanity-checked prices, not the aBPL. We just need someone with some sanity to provide those.
 

Theraze

Active member
Oh, it did it to me as well. But that's a different script.

Also, I added a check for npc_price on the accordions after that... delightful... series. Since there, we're always trying to get it from the npcs, if npc_price == 0 then it's unavailable.
 

fronobulax

Developer
Staff member
Oh, it did it to me as well. But that's a different script.

Right. It is a philosophy issue. I have zealously decided that the two parameter version is a Worst Practice and should never be used casually. The EatDrink issue made it clear that it is my responsibility deciding who to trust and what scripts to run and I would much rather convert script writers to my point of view than play the "local changes" game. But if you remain unconvinced.....


:)
 

Wraith

New member
Hey, I don't know what's wrong with the script but it never seems to work for me (across different ascensions and different mafia builds)
Here is the message:

Code:
Checking for updates (running TheSea.ash ver. 1.6.3)...
Running TheSea.ash version: 1.6.3 (current)
Resetting Monkee quest status.
Unlocking the sea.
You acquire an item: little bitty bathysphere
You have already completed the Monkee quest.
 

Wraith

New member
If you type "zlib vars" in the gCLI what are the values for the variables that start with seafloor_ ?

Code:
zlib seafloor_abyssEquipment = 1
zlib seafloor_automateGladiators = true
zlib seafloor_bootQuest = 0
zlib seafloor_buyBoot = false
zlib seafloor_buySkateBoard = false
zlib seafloor_buySkateMap = false
zlib seafloor_closetMeat = -1
zlib seafloor_faxNeptune = false
zlib seafloor_getHelmet = 0
zlib seafloor_getSushiMat = 0
zlib seafloor_grandpaChat = 0
zlib seafloor_maximizeString =
zlib seafloor_monkeeAscension = 84
zlib seafloor_monkeeQuest = 0
zlib seafloor_monkeeStep = 0
zlib seafloor_outfit =
zlib seafloor_outfitQuest = 0
zlib seafloor_skateQuest = 0
zlib seafloor_unlockTrophyfish = false

I just completed the sea quest manually, if that matters.
 

Theraze

Active member
You told it not to do the outfitQuest. You've also told it not to do the monkeeQuest. Or the skateQuest. Or the bootQuest. Or... anything else. :)
 

Wraith

New member
You told it not to do the outfitQuest. You've also told it not to do the monkeeQuest. Or the skateQuest. Or the bootQuest. Or... anything else. :)

I guess that makes sense, I'll change them and see how it goes the next time I ascend!
thanks!
 

jbouzanquet

Member
If you want it to auto-buy the extra-strength red potion, red potion, red pixel potion, filthy poultice, gauze garter, scented massage oil, mer-kin mouthsoap, sea lasso, and 3 mer-kin prayerbeads, auto-equip the vestments, 3 prayerbeads, and maximize for -1000 hp, mainstat, and 100 elemental damage, and get you far enough in the fight so that you should just be able to attack for victory...
ash import <TheSea.ash> prepHatred();

I tried this, it didn't start the battle. It did those steps, but it didn't actually start the fight like I think you're implying.
 

Theraze

Active member
Right... that's the smiteHatred() function. :D Because every good preparation needs a smiting. And it makes it easier to make sure that your maximization was sane.
 
Top