TheSea.ash - Automated Underwater Quests

Theraze

Active member
[SIZE=+1]TheSea.ash 1.6.3 - Automated Underwater Quests[/SIZE]

TheSea.ash requires ZLib and a recent Mafia .jar build

This script is now only updated through:
svn checkout https://svn.code.sf.net/p/therazekolmafia/thesea/code/

This script can automatically:
  • Adventure to unlock [currently] all 5 monkees.
  • Adventure to get you to the hatred outfit boss.
  • Adventure to get you to the violence outfit boss.
  • Chat with Grandpa about all [known] chat topics.
  • Get Das Boot or other rewards from the Old Man.
  • Unlock and complete the Skate quest.
  • Get a sushi mat and install it in your campground.
  • Get an aerated diving helmet.

The script will of course spend adventures. If you tell it to, it will spend a moderate amount of meat to buy items, temporarily overriding your autoBuyPriceLimit.

To make it work:
  • Download TheSea.ash and zlib.ash to Mafia's /scripts folder
  • There are a few zlib variables* you can setup:
    - seafloor_bootQuest
    - seafloor_monkeeQuest
    - seafloor_outfitQuest
    - seafloor_skateQuest
    - seafloor_automateGladiators
    - seafloor_buyBoot
    - seafloor_buySkateMap
    - seafloor_buySkateBoard
    - seafloor_closetMeat
    - seafloor_faxNeptune
    - seafloor_getHelmet
    - seafloor_getSushiMat
    - seafloor_maximizeString
    - seafloor_outfit
    - seafloor_unlockTrophyfish
  • There are a few zlib variables* you should not need to setup:
    - seafloor_grandpaChat
    - seafloor_monkeeAscension
    - seafloor_monkeeStep
  • Surviving combats is your responsibility. In the earlier quests, the only part where you need to actually WIN the combat is for getting the Wiggling Flytrap Pellet at the beginning. The other quest steps are all non-combats, or the items needed can be bought from the mall. For the Outfit quests, you do need to actually win... against the bosses, at least.
  • Breathing underwater is your responsibility as well. Because this can be accomplished through effects or equipment, hard-coding it guarantees that people will be frustrated. Anyone can equip the makeshift SCUBA as it's a quest item received when you actually unlock the zone, but that is the option with the most penalties to item drop.
  • Launch the script by typing call TheSea.ash in the gCLI.

*You can configure the variables above by typing zlib settingname = value in the gCLI. The script will either use the zlib setting if it has been set, or the setting you had on when you launched the script.
  • bootQuest is a 0-6 option for if you want to get Das Boot and if so, which reward. It defaults to 0, skipping the boot.
  • monkeeQuest is a 0-5 option for how many of the Sea Monkee family you would like it to rescue automatically. It defaults to rescuing all 5.
  • outfitQuest is a 0-3 option for what you'd like to do with the Outfit quest. It defaults to skipping, and only works if you rescue at least Grandma.
  • skateQuest is a 0-4 option for what you'd like to do with the Skate quest. It defaults to skipping.
  • automateGladiators is a T/F for if you want the script to learn the counters and fight the gladiators automatically, buffing stats to survive the fights. It defaults to true.
  • buyBoot is a T/F for if you want to buy the 100 sand dollars for Das Boot. It defaults to false, adventuring instead.
  • buySkateMap is a T/F for if you want to buy the 25 sand dollars for the Skate Park map. It defaults to false, adventuring instead.
  • buySkateBoard is a T/F for if you want to buy the skate board from the mall. It defaults to false, adventuring instead.
  • closetMeat is for how much meat you would like to keep out of the closet. It defaults to -1, keeping all meat available. If you abort the script during combat, meat will stay in your closet, otherwise it should retrieve it when done.
  • faxNeptune is a T/F for if you want to use faxbot to speed up getting the wriggling flytrap pellet from neptune flytraps. It defaults to false, because this requires access to a fax machine and a VIP key.
  • getHelmet is a 0-3 option for turning a rusty diving helmet into an aerated diving helmet with a bubblin' stone. It defaults to 0, skipping the helmet.
  • getSushiMat is a 0-2 for if you want to buy the 100 sand dollars for a sushi mat. It defaults to 0, skipping. If you set it to buy or adventure, it will install the mat automatically if you acquire the 100 sand dollars.
  • maximizeString and outfit are mutually exclusive. If maximizeString is set, it will be used, otherwise the script will check outfit. If neither is set, it assumes you have equipped what you want to before running the script. The maximizeString will be set into the maximizer, the outfit will be sent into the outfit command, so if you would like to combine a portion of an outfit with modifications, you'll probably want to use maximizeString with +outfit. Do remember that you cannot combine the keywords of outfit and equip in the maximizer, so if you attempt to combine them such as "outfit groovelord, equip aerated" mafia will decide on one or the other instead of accomplishing both.
  • unlockTrophyfish tells the script that you want to unlock the Trophyfish by chatting to Grandpa about it. If you set this to true, the script will automatically turn it off again after you chat to Grandpa and unlock the encounter, to reduce server hits.
  • monkeeAscension lets the script know when it's time to reset monkeeStep, how far you are through the current series of rescuings. If you have a problem, reset monkeeAscension to 0 or -1 and it should start over.

If you just want to run, equip your makeshift SCUBA, max out muscle or moxie with an appropriate weapon, make sure your familiar can breathe underwater, and run call TheSea.ash.

If you encounter any problem, please post your issues. To help with debugging, you should run the script and copy the gCLI log so I can see what it said it broke. Eventually, there will probably be vprinting for the people who want more spam/debugging information.

Changelog

2013.06.17 - 1.6.3 - New updates come through SVN. Left 1.6.2 attached for people who refuse to use mafia daily builds.
2013.06.13 - 1.6.2 - Sanity checking for people who manually do part of the quest first or who abort at JUST the wrong time.
2013.06.09 - 1.6.1 - Don't try to use our one daily fax 15 times.
2013.06.08 - 1.6 - Added prepHatred() function which was the former unreachable. Avoided the Grandma autostop using a single adventure while-loop.
2013.06.03 - 1.5.1 - Attempting to fix the aborting after taming the seahorse by removing the re-initialization of otherquests.
2013.06.03 - 1.5 - There is an A version of the corral as well. The prices for the sushi mat and damp boot went to 50 sand dollars.
2013.05.30 - 1.4.2 - Set choice adventures in the elementary. Heal while we're trying to tame the seahorse, don't just hope we survive.
2013.05.30 - 1.4.1 - Validate that we've gotten both pieces for the scholar outfit before we craft it.
2013.05.30 - 1.4 - Trying to avoid the abort on finding Grandma with try/finally. Initial support for outfitQuest 2. Unreachable code is there on purpose for later.
2013.05.28 - 1.3.2 - The repeating rewards for the Old Guy were reversed. Same numbers kept, but reward picker fixed.
2013.05.21 - 1.3.1 - The proper case for zlib is lowercase, which matters for case sensitive operating systems.
2013.05.21 - 1.3 - Fixed the boot rewards, as they'd been broken when we got a choice.
2013.05.19 - 1.2.2 - Using (!create()) for the Skate Park map so it doesn't abort.
2013.05.19 - 1.2.1 - Using create() to buy the items from coinmasters rather than visit_url() for better mafia processing.
2013.05.18 - 1.2 - Added unlocking Mom.
2013.05.17 - 1.1 - Fixed script to not incorrectly increment progress when you run out of turns.
2012.03.12 - 1.0 - Added buying/installing sushi mats and buying/adventuring/faxing an aerated diving helmet.
Unreleased - 0.9.1 - Fixed chatting to only happen once per new set of Grandpa phrases discovered.
2012.01.10 - 0.9 - Added faxing the Neptune Flytrap for the wriggling flytrap pellet.
2012.01.08 - 0.8.1 - Fixed a bug with the check for meat closetting. Also checking inebriety now.
2012.01.06 - v0.8 - Added opt-in for buying sand dollars and skate board instead of using obtain.
2012.01.03 - v0.6 - Initial public release.
 

Attachments

Last edited:
My current plan is this:
We [...] release v1.0 and have it be fairly solid.

Added: At some point, I turn the print() bits into vprint() bits, but that's a someday when I'm really bored and/or there's new content sort of thing.
1-8 are now done. Also, went back to the original post and noticed that there was the closet meat and outfit request... added. Also added TS_ prefix to all of the global values, so it should conflict less if imported with other scripts.

Faxing has been tested, so now we're done. If any bugs are found or more undersea content is found, we'll update. Otherwise... this script is wrapped up. Except for turning prints to vprints, but... eh, maybe someday. :)

Edit: I'll remove entries above as they're completed. This posting will retain my current "goals" list.
 
Last edited:
looking forward to checking this out tomorrow. i hate dealing with the sea, so if this makes it easier then woohoo!!
 
New version. This one doesn't use obtain for anything that actually can cost meat, so it should be safer if you feel like being miserly. Or if you actually wanted it to buy, but had autoSatisfy turned off. If it ends up calling the getsome(int, item) function, it will temporarily override the Mall and NPC setting, since you've already told the script that you really do want it to go buy the item. This allows you to control whether or not you'd like it to buy, but still lets us save meat when 1.0 gets released and jason's awesome code makes retrieve_item build the aerated helmet from mall-parts instead of buying one fully constructed. :)

Edit: If nobody comes up with problems by Tuesday, I'll spin v0.9 with faxing support. I'm not sure if it works completely right, since I don't fax, but... the parts I borrowed from afterbore and BCA seem to validate properly and be workable. Also planning on supporting faxing for the aerated helmet, but that's a part of 1.0 or later, when I know that my fax-core is working.
 
Last edited:
Added a check for being overdrunk when you run the script, so that it doesn't believe that those were successful adventure attempts. Also fixed a bug where, when the amount of meat to closet was set to 0, it would closet all of your meat, leaving 0 outside the closet. Since some people may want to do that, set -1 as the new "don't closet" and fixed it to actually *gasps* work. Note that this does mean that if you were using v0.8 and if you don't want all of your meat to be closetted, you'll need to change the variable...
 
Version 0.9 has been spun now, and will remain up until either a bug is reported or someone validates that faxing the neptune flytrap works.
 
As I said above, this is still a work in progress.1-6 are now done. Also, went back to the original post and noticed that there was the closet meat and outfit request... added. Also added TS_ prefix to all of the global values, so it should conflict less if imported with other scripts.

Faxing needs testing from someone who uses that, then 7 will be done and I can move on to the steps in 8.

Edit: I'll remove entries above as they're completed. This posting will retain my current "goals" list.
I'm really, really wondering what steps 1-6 were. Would you mind posting them, so we can see what has been done, please?
 
They are posted, if you click on the quote-arrow in the first post it will take you to the original post which has all 8 listed.
 
Yep! The arrow on the post you quoted will take you right to the proper post, but to summarize...
1) Ascend so I can test.
2) Make sure it stops when breathing stops.
3) Make sure it stops after finding Grandma.
4) First public release.
5) Options to buy boot and skateboard.
6) Replace obtain on buyable items with condition clear; condition set; adventure or purchasing manually, if the option is set.
7) Add faxing Neptune Flytrap and wait for someone to let me know if it works.
8) Add buying sushi mat, buying/adventuring/faxing for aerated helmet, and anything else people come up with before step 7 is verified as working.

As it says, we're currently in the middle of step 7, specifically the waiting part. :) As soon as I find out faxing definitely works, we'll add the sushi and aerated helmet code, spinning version 1.0 as a 'complete' script. Once someone figures out how to wake up Grandma, or finds new words for Grandpa, we'll add them. I'll finish up this post with a list of the words we present to Grandpa. For laziness sake, I'll paste in the function instead of extracting the words. And yes, avius ticklium does need that extra bit, unlike everything else.
PHP:
void GrandpaChat()
{
	print("Talking to Grandpa about all sorts of interesting things.");
	visit_url("monkeycastle.php?action=grandpastory&topic=Wizardfish");
	visit_url("monkeycastle.php?action=grandpastory&topic=avius+ticklium&grandpastories=Ask%21");
	visit_url("monkeycastle.php?action=grandpastory&topic=Eel");
	visit_url("monkeycastle.php?action=grandpastory&topic=Neptune+flytrap");
	visit_url("monkeycastle.php?action=grandpastory&topic=Octopus");
	visit_url("monkeycastle.php?action=grandpastory&topic=Wreck");
	visit_url("monkeycastle.php?action=grandpastory&topic=Diver");
	visit_url("monkeycastle.php?action=grandpastory&topic=Reef");
	visit_url("monkeycastle.php?action=grandpastory&topic=Belle");
	visit_url("monkeycastle.php?action=grandpastory&topic=Fisherfish");
	visit_url("monkeycastle.php?action=grandpastory&topic=Mine");
	visit_url("monkeycastle.php?action=grandpastory&topic=Clownfish");
	visit_url("monkeycastle.php?action=grandpastory&topic=Lounge+lizardfish");
	visit_url("monkeycastle.php?action=grandpastory&topic=Nurse+shark");
	visit_url("monkeycastle.php?action=grandpastory&topic=Scales");
	visit_url("monkeycastle.php?action=grandpastory&topic=Trophyfish");
	visit_url("monkeycastle.php?action=grandpastory&topic=Groupie");
}
 
I would suggest putting the Trophyfish behind an option. I regret having told Grandpa about it every ascension since I got the trophy when I go to that area to farm...
 
There's a "grandpa" CLI command, so you don't have to use visit_url().

True... but it doesn't appear to have the special override needed for avius ticklium, and instead of using two completely different styles for the talking, I might as well only use one major style. It all gets into the session log, anyways...
> Talking to Grandpa about all sorts of interesting things.

grandpa Wizardfish

grandpa avius+ticklium

grandpa Eel

grandpa Neptune+flytrap

grandpa Octopus

grandpa Wreck

grandpa Diver

grandpa Reef

grandpa Belle

grandpa Fisherfish

grandpa Mine

grandpa Clownfish

grandpa Lounge+lizardfish

grandpa Nurse+shark

grandpa Scales

grandpa Trophyfish

grandpa Groupie

grandpa grandma
> Finding Grandma in the Mer-kin Outpost.

And Winterbay, agreed. Version 1.0 will have an "unlockTrophyfish" option that will default to false. If it's false, the rest of the chatting will happen, but that line will get skipped... Unless people want it enough that we release that as 0.9.1, but hopefully we'll get fax feedback soonish. We'll see. Heh.
 
Last edited:
According to the wiki: "According to Jick, the unlocks persist across all ascensions, except for adventuring zones (like The Mer-Kin Outpost). "
So most of those are supposed to be superfluous (unless it's your first time), and not asking about trophyfish is not supposed to save you from it (maybe? does it still count as unlocked after you defeat it?, and again unless it's your first time).
 
Well, the script should be usable at all times I guess, therefore also when it's your first time. The Trophyfish is there all the time until you beat it and will come back your next ascension (unless you beat it again) which is why asking for it should be a user initiated thing I think (so that people can avoid it if they want to).
 
I suppose the only way to be sure is for someone to validate it by manually forcing one of the drops being 100% sure that they haven't had anything prompt Grandpa this time. If someone gets a fishy wand without unlocking the castle at all, for example, that should be decent proof. Until then, leaving it in the script is less server hits than the random stumbling they're encouraging with Grandma's continued slumber. :)
 
While I wait to see if anyone will ever try faxing with this, a note:

I've successfully used the 0.9 version of the script 3 times in the past few days to finish this quest. Each time I was able to complete the castle quests for under 55k using 2 fish juice boxes (~40k), 6 rock salt (~3k), and 3 invisibility potions (~8k). My battle plan has been maximizing the combat stat (moxie or muscle +shield), using DAM until the areas get too hard, and then just "try to run away" with noodles on. Fast and easy, and so far the RNG hasn't been hating me too severely. In one case, I would have been fine with a single fish juice box... but 2 gives 60 rounds of underwater adventuring (with 50 actual adventures, since you get 40 rounds of fishy and then 10 rounds of double-cost if you don't eat any fish meat), so that works well with the rock salt and invisibility potions.

Just saying that even if you're on a budget, it should be well within most budgets to finish these off with fairly minimal impact. And those imitation crab crates do sell well in the mall. :)
 
Last edited:
I just tried the script with faxing turned on and it worked just perfectly so you can mark that as implemented.
 
Great, thanks! I'll try to get version 1.0 spun tonight or tomorrow then... I've been avoiding changing my copy of TheSea with changes, after the 'joy' of the 0.8 updates where I repeatedly had to get a base downloaded version and repeatedly check it against my modified copy to figure out which changes were regarding meat closetting or inebriety, and which were related to faxing. :)
 
Back
Top