autoDinsey.ash -- Automates daily Dinseylandfill quest

Geistbar

New member
Similar idea as my last script. This automates the daily Dinseylandfill quests. You can start at any point of progress in the quest and it should be fine. The script requires zlib.

This one has a more complicated set of user defined variables, but due to the way I set this one up, it should be largely OK to completely ignore them if you don't care about optimizing the quests.

Like the last one, you can select which familiar, outfit you want, as well as have it set a combat macro or skill as your autoattack for each individual quest. You can set some toggles to "shrug on the trail" at the start of quests that benefit from olfaction, buy toxic globules for the appropriate quest, dispose garbage at the maintenance tunnels at the start, and if you want it to use a single copy of "How to Avoid Scams" at the start of quests at barf mountain. By default, using scams and disposing garbage are enabled; shrugging on the trail and buying globules are not.

Much more complicated, you can even set the priority of the eight quests. The script will automatically pick the quest you deem most preferable of the two you can select each day. My testers had a bit of difficulty understanding how that works and suggested I include an expanded explanation on how that works here. In the script there's a line with the default values:
Code:
string priority = "5,6,4,3,1,2,7,8";
The way this works is the 8 quests are assigned a value in the order: Racism Reduction, Waterway Debris Removal, Compulsory Fun, Bear Removal, Electrical Maintenance, Track Maintenance, Sexism Reduction, Guest Sustenance Assurance. So the first quest -- Racism Reduction -- has a value of 5. Every quest with a lower value will have priority over that quest at the selection booth. Waterway Debris removal has the next slot, with a value of 6. Then Compulsory Fun, with a value of 4. If you wanted Waterway Debris to have the highest priority, you would need to change the second number listed to be "1" instead of "6". (And the current quest with a value of 1 -- Electrical Maintenance -- would need to be changed to 6 to keep the numbers working). There are more details on how to fiddle with those values inside the script.

I have set the priority list to have the only quest with an absolute need for a CCS or combat macro -- Guest Sustenance Assurance -- to have the lowest priority by default, to help allow this to be as safe to use without any setup as possible. For people that want to change the quest to have a higher priority and don't know how to make a combat macro, this is the one I use for that quest and it should be viable for everyone with olfaction:
Code:
# For Dinseylandfill quest
scrollwhendone
icon basket

# Abort conditions
abort pastround 27
abort hppercentbelow 30

if !monstername "horrible tourist family"
	call olfact
	use 8243 # refreshments
endif

attack; repeat

# Use Olfactiom on specific monster if wanted
sub olfact
if !haseffect 331
	if monstername "angry tourist" || monstername "garbage tourist"
		skill 19
	endif
endif
endsub

Updated to r9, with features requested from the autoConspiracy thread.
 

Attachments

  • autoDinsey.ash
    15.4 KB · Views: 358
Last edited:

Geistbar

New member
I uploaded a minor revision of the script that should avoid any potential questlog bugs. When writing and testing, I forgot that "questlog.php" defaults to the last section of the questlog you had viewed. As such, with the previous version, it could have failed to work if your last viewed tab of the questlog was not "current quests." That should no longer be a problem with the newest version.

Sorry!
 

Landamus

New member
Thanks for the script. It's going into my login script right now. I've only modified it to use the maximizer instead of pregenerated outfits. I'll be taking a look at your Conspiracy Island script too.
 

zarqon

Well-known member
Thanks for writing this script -- it gave me a really good starting place for writing my own.

Have a few things to suggest to improve your script:

1) You're hitting the quest log after every adventure. That's a lot of unnecessary server hits. Instead, after each combat, check if run_combat() contains ">kiosk<". Outside of combat, run_combat() returns the most recent fight page, so you can check whether you completed the quest without any extra server hits.

2) You can make your priority system simpler. If you list $strings[], they will stay in the order you list them, rather than automatically alphabetizing themselves, so that makes sense to use as a user-configurable script variable. I've attached my script here (which isn't really for public consumption as it has no configurability and doesn't do a thing with equipment or familiars) so you can see how I did it. Much easier for users to understand than using a list of integers which they have to carefully match up with a list of strings while avoiding duplicates.

3) You also don't need to hit the quest log, ever. You can check the kiosk each time. If it has two quest names on it, you need to pick one. If it has one quest name on it, that's your current quest. If it has 0 quest names on it, you're done for today. Then you also don't need to bother converting the quest log name to the kiosk name, since you're only dealing with kiosk names.

Anyway, take or leave the ideas, and steal as much of this as you like. Your script helped me a good bit in writing mine, so wanted to return the favor! Thanks!
 

Attachments

  • dailydinsey.ash
    2.9 KB · Views: 150

Zen00

Member
I'd like to know proper etiquette here, I'd like to use this code (at least partially) in a script I'm writing that handles all vacation zones in one (rather than having to run each script individually). I sent a message to the writer, but he hasn't responded in a week asking permission to copy/pasta this, so do I just go ahead and do so, or how should I handle it?
 

fronobulax

Developer
Staff member
I have borrowed code with and without explicit permission. I acknowledge the source with a line in the code and so far no one has asked my not to use their copied code. The community norm seems to be if you ask and acknowledge, that is sufficient.
 
Top