slimeme.ash - suggestions and requests are welcome

For script writing
Post Reply
User avatar
nworbetan
AFH
Posts: 80
Joined: Tue Nov 15, 2011 6:01 pm

slimeme.ash - suggestions and requests are welcome

Post by nworbetan » Wed Jan 11, 2012 12:49 am

The tl;dr: if any of y'all are interested in using this fiddly slime tube script, let me know what it's missing and I'll do what I can to accomodate your needs.

But before you do that, I think the easiest way to get a feel for how this script works is to take a look at the preferences. Here's what I've been using for ~285 turn nodule runs:

Code: Select all

 
/*
 * slimeme.ash - version 1.02
 *
 * --Chagelog--
 * 1.02 - More image spading tweaks and improvements.
 * 	- The Hellevator is now thoroughly ignored.
 * 	- Use +nc buffs when looking for Engulfed! efficiently too.
 * 1.01 - Fixed at least one adventure counting bug.
 * 	- Fixed >13 turns of coated in slime.
 * 	- Moved the beaten up checks to where they belong.
 * 	- Various other image spading improvements.
 * 	- Added the ability to run with an empty bucket.
 * 	- Added an option to run without Ur-Kel's.
 * 	- Added a much much more efficient tickle-slime-covered combo.
 * 1.00 - Initial release.
 */

## KILLING SLIMES ##############################################################

// To be used when killing slimes:
string ks_outfit = "shi-scythe";
string ks_fam = "stocking mimic";
string ks_famequip = "loathing legion helicopter";

// If Canadia isn't available, this will get treated as if 11 were 10.
// If you're in bad moon, the Hellevator is not adjusted.
int higher_mcd = 11;

// Enthroned familiar checks are only done if you're actually wearing a CoT.
string ks_enthroned = "rock lobster";

// If true, a chamoisole will be equipped while killing slimes when it will
// postpone getting coated in slime.
boolean try_chamoisole = true;

// Aria: a.k.a. Ur-Kel's, a.k.a. +ML = your lvl * 2.
boolean use_aria = true;

// Okay, so ks_fam isn't *always* used while killing slimes.
// "weight" aborts when ks_fam hits 20 lbs so you can level another one.
// "drops" will cycle through spleen/content drop familiars and collect those.
// Any other string, including typos, defaults to ks_fam.
string familiar_fiddle = "drops";

// If false, defaults to ks_fam after all the content drops are collected.
boolean stop_after_drops = false;

// Setting these content familiar toggles to true is perfectly fine even if you
// don't have that familiar.
boolean ab = false; // astral badger
boolean gp = false; // green pixie
boolean ll = false; // llama lama
boolean bs = false; // baby sandworm
boolean rp = true; // rogue program
boolean lx = false; // li'l xenomorph
boolean bg = false; // bloovian groose
boolean bk = false; // blavious kloop

// Content familiar equipment: Set it at "" and mafia will pick... something.
// The ittah bittah hookah, sadly, is a potentially annoying choice here because
// of how easily it can interfere with AT buffs.
string abe = ""; // astral badge
string gpe = ""; // green pixie spog
string lle = ""; // zen motorcycle
string bse = ""; // string of dingle balls
string rpe = "portable motorcycle"; // portable motorcycle
string lxe = "tiny top hat and cane"; // tiny top hat and cane
string bge = ""; // spruce juice
string bke = ""; // miniscule beatbox

// This will kill low level slimes when you need to get coated in slime so you
// don't need to put any chamoix in the bucket beforehand.  Note: the script
// will still use runaways if you tell it to squeeze the gall bladder, or do a
// fast tickle.
boolean kill_low_ml_slimes = true;

// To be used while killing the low lvl slimes while getting coated in slime:
string gc_outfit = "get-slimed+item";
string gc_fam = "fancypants scarecrow";
string gc_famequip = "spangly mariachi pants";
string gc_enthroned = ks_enthroned;

// This setting is used when fighting low ml slimes, killing and running away.
int lower_mcd = 0;

// On one hand, I wish there were an easier way to make this list.  On the other
// hand, I don't expect that people will want to shrug off more than ur-kel's.
// I realize I could be wrong though.  Also, this list is used when fighting low
// ml slimes, both killing and running away.
boolean [string] uneffect_list;
uneffect_list ["ur-kel"] = true;
uneffect_list ["bitterskin"] = false;

## RUNNING AWAY FROM SLIMES ####################################################

// To be used when running away with a familiar:
string fra_outfit = "fam-runaway--ml";
string fra_fam = "pair of stomping boots";
string fra_famequip = "sugar shield";
string fra_enthroned = ks_enthroned;

// To be used with airsickness and combat item runaways:
string ira_outfit = "get-slimed";
string ira_fam = "fancypants scarecrow";
string ira_famequip = "spangly mariachi pants";
string ira_enthroned = ks_enthroned;

// Familiar runaways are used first, then navel/gap/parasol, then tatteresque.
boolean use_butthurt_runaways = true;
boolean use_airsick_runaways = true;

// Pick one of: "gap", "navel", or "parasol".  They don't need to be included in
// ira_outfit, they get equipped when they need to be.
string airsick_item = "parasol";

// Number of airsick runaways to use per day, not per slime tube run.
// Some meaningful numbers: 1-3 = 100%, 4-6 = 80%, 7-9 = 50%. 10+ = 20%
int max_airsickness = 6;

// These are used in the order listed: green smoke bombs, tatters, then gotos.
boolean use_green_smoke = false;
boolean use_tatters = false;
boolean use_gotos = true;

// This is prepended to the combat macro before non stomping boots runaways.
string runaway_prefix = "skill pop and lock it; skill run like the wind; skill break it on down; ";

## GROPING, CUDDLING WITH, AND/OR BEING MOLESTED BY SLIMES #####################

// Everything other than "squeeze" or "tickle" (including typos) will ignore the
// Engulfed! adventure.  Picking "squeeze" will make that happen before killing
// any slimes.
string cop_a_feel = "tickle";

// For redundant 1 turn squeeze safety:
boolean stop_after_squeezing = true;

// Choosing "fast" will tickle and slime-cover in 2 turns before anything else.
// Choosing "efficient" will tickle whenever Engulfed! shows up, and slime-cover
// your rusty item the first time you need to get re-coated in slime.
string tickle_priority = "efficient";

// Fresh Scent is only used when looking for Engulfed!
boolean stay_freshly_scented = true;
string fresh_scent_item = "chunk of rock salt";

// Invisibility is only used when looking for Engulfed!
boolean stay_invisible = false;

// Setting this to "none" skips the whole rusty -> slime-covered conversion
// procedure, even if you set cop_a_feel to "tickle", which is probably stupid
// (because the script is stupid and can't easily slime-cover an item except for
// immediately after tickling), but it's an option anyway.
string slime_cover_item = "rusty piece of rebar";

// The above item needn't be a part of this outfit, which is used to slime-cover
// a rusty item.
string sc_outfit = "get-slimed+item";
string sc_familiar = "jumpsuited hound dog";
string sc_famequip = "sugar shield";
string sc_enthroned = ks_enthroned;

// You might want to change the round number and/or skill here.
string slime_cover_macro = "while !match \"massive loogie\" && !pastround 28; use fat stacks of cash; endwhile; skill fearful fettucini;";

## OTHER INTERESTING THINGS YOU CAN DO WITH LETTERS AND PUNCTUATION MARKS ######

// If true, the gall bladder squeezes are re-parsed from the dungeon raid log
// every time you get coated in slime; doesn't check again after it sees five
// squeezes. Basically setting this to false prevents a few dozen unnecessary
// server hits when you know you're alone.
boolean multiplayer_slimetube = false;

// It's an option if you need it.
boolean use_Buffy_for_aria = false;

/* hp_buffer is used to set the minimum hp you want to have after taking coated
 * in slime damage.  Setting it too high can waste chamois and tattered scraps
 * by removing a survivable amount of coated in slime more often than needed.
 * Any value below ~(max_hp * .0725) is functionally equivalent unless you want
 * to use 8+ slime resistance, which you probably don't want to do.  If you want
 * a little bit bigger safety net, which is is totally understandable, the next
 * bigger number that makes sense is floor(max_hp * .19).
 */
int hp_buffer(int max_hp)
{
	return floor(max_hp * .07);
}

## DEBUGGING, SPADING AND LOGGING ##############################################

// accurate comments
// can be, at times, quite wordy
// this one is neither
boolean verb = true;

// Creates a file called img_log_<slid>.txt in your kolmafia/data/ folder to
// track ml per kill, total tube ml killed, and what image was showing after
// each kill.  It's probably not 100% accurate yet.
boolean spade_img_changes = true;

// Parsing every kill should be more accurate than += 1, but it's a bit slower
// because it hits clan_raidlogs.php once every turn.
boolean parse_every_kill = true;

// If true, the script will abort if the turns of coated in slime don't match
// its prediction.  It's really only useful if you're planning on fixing the
// script if it ever happens (but it shouldn't ever happen any more unless
// someone other than you squeezes a bladder while you're killing slimes).
boolean debug_c_t_e = true;

################################################################################


I'm happy enough with the script so far that I wanted to show it to a select audience (You!) and see what kind of improvements you might recommend or like to see. I've done a total of ~9 solo slime tube runs so far, so I won't be surprised if there's some things I missed. One of the things I'm wondering about is the turns spent (or not spent) getting coated in slime. I've tried to make it impossible to kill the low ML slimes, but would anyone prefer to kill those instead of using a big bundle of chamoix and always running away? I can imagine that someone might want to do that if they're marble farming? Maybe? I don't know. This isn't really a marble farming script (although it could be with a modicum of effort). It's more of a "sprinting with scissors" script, on purpose. >_<

If you're interested in trying the script out, I highly recommend setting the ks_fam to some kind of super potato (like a hatrack or scarecrow or untamed turtle) at first. The 7% hp buffer is really really low, and your hp *will* get that low every 7 or 8 turns (depending on how far negative your ML is when you get coated) if you leave try_chamoisole = true. But with a good CCS, a heavy potatoey familiar isn't needed at all. The "Singular" match in this one is for my Rogue Program, and an NPZR would be more than adequate if you don't have a Stocking Mimic. Another strategy entirely would be to, you know, use any skill that does more than 30 damage a round. That would work too. ;)

Code: Select all


[ default ]
"abort "This fight wasn't supposed to happen.""

[ slime1 ]
skill entangling noodles
combo Rave Steal
combo Rave Concentration
combo Disco Concentration
skill candyblast

[ slime5 ]
skill entangling noodles
combo Rave Steal
while !pastround 28
    if hpbelow 40
        item finger cuffs, gauze garter
    endif
    if match "Singular"
        goto finish
    endif
    if mpbelow 6
        item bottle of Monsieur Bubble
    endif
    skill candyblast
endwhile
mark finish
attack with weapon

Anyway, all bravado aside, this is still very much a work in progress. So if you see anything that seems just plain wrong, or even a little bit suspect, I'll appreciate that kind of feedback too.
Attachments
slimeme.ash
(33.62 KiB) Downloaded 138 times
Last edited by nworbetan on Tue Jan 17, 2012 1:15 am, edited 2 times in total.

User avatar
lotsofphil
Leader of rum ham
Posts: 4075
Joined: Mon Mar 01, 2010 3:56 pm

Re: slimeme.ash - suggestions and requests are welcome

Post by lotsofphil » Wed Jan 11, 2012 8:07 am

If fam equipment is a sticking point, why not default to lead necklace?

I would very much prefer to kill low ML slimes. Buying a big bundle every time I do a nodule run is an unnecessary expense.

User avatar
nworbetan
AFH
Posts: 80
Joined: Tue Nov 15, 2011 6:01 pm

Re: slimeme.ash - suggestions and requests are welcome

Post by nworbetan » Thu Jan 12, 2012 2:33 am

I can't really call familiar equipment a sticking point. I'll definitely call the hookah specifically (and 3 AT song limit) a potential sticking point though, if mafia decides that's what it wants to auto-equip, and if you decide to let mafia auto-equip... something.

My thoughts on making the low ml slimes impossible to kill didn't go much further than "running away 11% of the time means I'll get my 30 glands ~3 days faster!" But now that I've done a handful of runs, I can easily see skipping the bundles of chamoix from a meat per adventure perspective too. I'll add the ability to run with an empty bucket tonight.

User avatar
nworbetan
AFH
Posts: 80
Joined: Tue Nov 15, 2011 6:01 pm

Re: slimeme.ash - suggestions and requests are welcome

Post by nworbetan » Fri Jan 13, 2012 5:07 am

I'm currently ~120 turns into an empty bucket run, and both that and the more efficient tickle-slime-covered combo worked flawlessly so far. So I updated the OP with my current version of the script and preferences I'm running with.

Post Reply