bumcheekcend.ash - A zero setup semi-automated ascension script!

snooty

Member
LanBoom: where ever mafia lives/whatever you named it/data, file names start with bcs_fam and end with .txt, there are at least 12.

Stokesey: You'll have to follow this path as well to edit out the rat, then, in the relay browser pull-down where you edit options type in plain barrel mimic, the apostrophe gives it the heebie jeebies ;) Setting up a custom combat script isn't too difficult. If you don't know where the custom combat tab is, do a little exploring, once you find it click "edit". You should see [ default ] followed by whatever you're doing now. On the next line type skill entangling noodles, again a new line for skill cannelloni cannon. Or c&p...

[ default ]
skill entangling noodles
skill cannelloni cannon

"Unable to meet all requirements via equipment changes." Do you have the complete outfit? If you do, I'm stumped. Maybe Theraze can decipher it! Good luck =D
 

Osobayasan

New member
Hey, I just wanted to say thanks for the great script! I just completed an ascension with very few issues, and I'm doing my second. I changed a couple of things that were causing me problems in Standard, so I thought I'd share the changes with you in case you wanted to adopt them, or in case I've unintentionally broken something without realizing.

First, I made it use the XO Skeleton to steal from filthworms by making a new familiar type called bcs_fam_itemssteal.txt:
Code:
1	xo skeleton
2	jumpsuited hound dog
3	Pair of Stomping Boots
4	slimeling
5	Reagnimated Gnome
6	Coffee Pixie
7	Attention-Deficit Demon
8	Jitterbug
9	Casagnova Gnome
10	Psychedelic Bear
11	Angry Jung Man
12	Blavious Kloop
13	Adventurous Spelunker
14	Green Pixie
15	Gelatinous Cubeling
16	Dancing Frog
17	Grouper Groupie
18	Piano Cat
19	baby gravy fairy
20	Dandy Lion

I put the XO Skeleton at the top of the list in that file, changing the Orchard function's bumAdv calls from "items" to "itemssteal", and then added
Code:
[ filthworm ]
if hasskill hugs and kisses
    skill hugs and kisses!
endif
default
to my CCS. If you're not aware, the XO Skeleton's Hugs and Kisses skill will take a random item from the target with a 100% success rate, with a limited number of uses per day. Already tested and it worked great, allows for a 4-turn Orchard every time if you have XO Skeleton. I'm sure there are other places (imp air/bus pass and dairy goats come to mind) where it could also be optimally used, which is why I figured I'd might as well just make a new type for it.

Second, I found that the script didn't support a lot of the yellow ray types, which left it fighting hippies for like a hundred turns at the dinghy part at the beginning in Standard. I'm not even sure why it wants the hippy outfit at that point, but I figured I should leave that alone as there must be some reason for it. So I added in all of the important YRs except the Mayo thing, since I don't know how that works. I added Disintegrate, Golden Light, viral video, and Asdon Martin: Missile Launcher. Also, these are all valid in Bees Hate You, so I added them as well as the Nanorhino to the Bees Hate You YR clause, instead of just giving up and fighting like it was doing before (because He-Boulder, pumpkin bomb and unbearable light all had B's in them).

I didn't get to test these yet, but the script still at least runs with these alterations and it seems like they should work fine. I'm not sure if the Asdon Martin skills show up as having them if you don't have enough fuel. I don't think they do, but if they do, that might cause it to grind to a halt. Here's my updated version:

Code:
string consultHeBo(int round, string opp, string text) {
	if (my_location() != $location[itznotyerzitz mine]) {if (!isExpectedMonster(opp)) return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round));}
	//If we're under the effect "Everything Looks Yellow", then ignore everything and attack.
	if (have_effect($effect[Everything Looks Yellow]) > 0) {
		print("BCC: We would LIKE to use a Yellow Ray somewhere in this zone, but we can't because Everything Looks Yellow.", "purple");
		return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
	}

	//Let's check that the monster IS the correct one
	if (contains_text(text, "hippy jewelry maker") || contains_text(text, "Dwarf Foreman") || contains_text(text, "Racecar")
			|| contains_text(text, "War Hippy") || contains_text(text, "Frat Warrior") || contains_text(text, "War Pledge")
			|| (thingToGet == $item[metallic A] && contains_text(text, "MagiMechTech MechaMech"))) {
		if (my_path() == "Bees Hate You") {
			if (my_familiar() == $familiar[Nanorhino] && (get_property("_nanorhinoCharge").to_int() == 100 || have_effect($effect[Nanoballsy]) > 39)) {
				print("BCC: We are using the Nanorhino against the right monster.", "purple");
				if (have_effect($effect[Nanoballsy]) > 39) return "skill unleash nanites";
				if (have_skill($skill[suckerpunch])) return "skill suckerpunch";
				else if (have_skill($skill[sing])) return "skill sing";
				print("BCC: We are trying to use the Nanorhino, but you don't have access to easy Moxie skills, so I'm attacking.", "purple");
				return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
			} else if (have_skill($skill[disintegrate]) && my_mp() >= mp_cost($skill[disintegrate])) {
				print("BCC: We are trying to use the HeBoulder, but you can't use it (nor a pumpkin bomb or a light) due to bees hating you, so I'm using Disintegrate.", "purple");
				return "skill disintegrate";
			} else if (item_amount($item[Golden Light]) > 0) {
				print("BCC: We are trying to use the HeBoulder, but you can't use it (nor a pumpkin bomb or a light) due to bees hating you, so I'm using a Golden Light.", "purple");
				return "item golden light";
			} else if (item_amount($item[viral video]) > 0) {
				print("BCC: We are trying to use the HeBoulder, but you can't use it (nor a pumpkin bomb or a light) due to bees hating you, so I'm using a viral video.", "purple");
				return "item viral video";
			} else if (have_skill($skill[Asdon Martin: Missile Launcher]) && !get_property("_missileLauncherUsed").to_boolean()) {
				print("BCC: We are trying to use the HeBoulder, but you can't use it (nor a pumpkin bomb or a light) due to bees hating you, so I'm using Asdon Martin: Missile Launcher.", "purple");
				return "skill asdon martin: missile launcher";
			} else {
				print("BCC: We are trying to use the HeBoulder, but you can't use it (nor a pumpkin bomb or a light) due to bees hating you, so I'm attacking.", "purple");
				return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
			}
		}
		
		if (my_familiar() == $familiar[He-Boulder]) {
			print("BCC: We are using the hebo against the right monster.", "purple");
			if (contains_text(text, "yellow eye")) {
				return "skill point at your opponent";
			} else {
				switch (my_class()) {
					case $class[turtle tamer] : return "skill toss";
					case $class[seal clubber] : return "skill clobber";
					case $class[pastamancer] : return "skill Spaghetti Spear";
					case $class[sauceror] : return "skill salsaball";
					case $class[Disco Bandit] : return "skill suckerpunch";
					case $class[Accordion Thief] : return "skill sing";
					default: abort("BCC: unsupported class");
				}
			}
		} else if (my_familiar() == $familiar[Crimbo Shrub] && contains_text(text, "Open a Big Yellow Present")) {
			print("BCC: We are using the Crimbo Shrub against the right monster.", "purple");
			return "skill open a big yellow present";
		} else if (my_familiar() == $familiar[Nanorhino] && (get_property("_nanorhinoCharge").to_int() == 100 || have_effect($effect[Nanoballsy]) > 39)) {
			print("BCC: We are using the Nanorhino against the right monster.", "purple");
			if (have_effect($effect[Nanoballsy]) > 39) return "skill unleash nanites";
			if (have_skill($skill[suckerpunch])) return "skill suckerpunch";
			else if (have_skill($skill[sing])) return "skill sing";
			print("BCC: We are trying to use the Nanorhino, but you don't have access to easy Moxie skills, so I'm attacking.", "purple");
			return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
		} else if (item_amount($item[unbearable light]) > 0) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using an unbearable light.", "purple");
			return "item unbearable light";
		} else if (item_amount($item[pumpkin bomb]) > 0) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using a pumpkin bomb.", "purple");
			return "item pumpkin bomb";
		} else if (my_path() == "Avatar of Sneaky Pete" && have_skill($skill[flash headlight]) && get_property("peteMotorbikeHeadlight") == "Ultrabright Yellow Bulb") {
			print("BCC: We are trying to use the HeBoulder, but you are in an AoSP run, so I'm using Flash Headlight.", "purple");
			return "skill flash headlight";
		} else if (have_skill($skill[disintegrate]) && my_mp() >= mp_cost($skill[disintegrate])) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using Disintegrate.", "purple");
			return "skill disintegrate";
		} else if (item_amount($item[Golden Light]) > 0) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using a Golden Light.", "purple");
			return "item golden light";
		} else if (item_amount($item[viral video]) > 0) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using a viral video.", "purple");
			return "item viral video";
		} else if (have_skill($skill[Asdon Martin: Missile Launcher]) && !get_property("_missileLauncherUsed").to_boolean()) {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run), so I'm using Asdon Martin: Missile Launcher.", "purple");
			return "skill asdon martin: missile launcher";
		} else {
			print("BCC: We are trying to use the HeBoulder, but you don't have one (or perhaps are on a 100% run without pumpkins or clipart), so I'm attacking.", "purple");
			return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
		}
	}
	print("BCC: We are trying to use the HeBoulder, but this is not the right monster, so I'm attacking.", "purple");
	
	if (my_familiar() == $familiar[He-Boulder] && have_effect($effect[Everything Looks Red]) == 0 && contains_text(text, "red eye"))
		return "skill point at your opponent";
	
	return ((my_primestat() == $stat[Mysticality] && in_hardcore() && !get_property("bcasc_doMystAsCCS").to_boolean()) ? consultMyst(round, opp, text) : get_ccs_action(round)); 
}
 
Last edited:

Osobayasan

New member
Ah, one other thing I forgot (my other reply is pending moderation, hopefully this one doesn't go through first)(Edit: This one did go through first):

When adventuring in the Orc Chasm, you get free bridge parts by equipping a logging hatchet and/or a loadstone, so in bsascChasm(), the following part should be changed as follows to equip a logging hatchet/loadstone:

OLD:
Code:
		//Prepare for adventuring
		buMax("item");
		setFamiliar("items");
		setMood("i");

NEW:
Code:
		//Prepare for adventuring
		buMax("item, +equip logging hatchet, +equip loadstone");
		setFamiliar("items");
		setMood("i");
 
Last edited:

Vibrate

New member
Hey, I just wanted to say thanks for the great script! I just completed an ascension with very few issues, and I'm doing my second.
Quick question. I've made it through a couple of unrestricted normal ascensions and I'm trying to make the move to HCNP. What skills did you have permed for your first runthrough? Also, did you use any IOTMs?
 

Osobayasan

New member
Quick question. I've made it through a couple of unrestricted normal ascensions and I'm trying to make the move to HCNP. What skills did you have permed for your first runthrough? Also, did you use any IOTMs?

Yeah, I actually have quite a few skills and IOTMs:
http://cheesellc.com/kol/profile.php?u=osobayasan

With this setup I've been very reliably doing 3-day HC Standard (fastest so far is 795 turns), but I would expect it to take quite a bit longer until you get the major skills.

If you don't have any food/drink generating IOTMs, I would say that this list is fairly accurate in terms of what's useful, at least the top few tiers:
http://kol.coldfront.net/thekolwiki/index.php/Hardcore_Skill_Analysis

Definitely prioritize turngen for hardcore (the stuff that lets you create better food and drinks). Unlike softcore, you're stuck with what you can find/make in-run.

Also, since you don't have any IOTMs, you should definitely, definitely be running Hardcore Standard instead of HCNP. You have no way of getting non-Standard items anyway since there are no pulls in hardcore, so you would be throwing away the free bonus karma and seasonal equipment bonuses for no real benefit.

Take a look at my hardcore permed skills to see what I've found useful. After getting your food-making skills, I would personally suggest you rush Ode to Booze (14-19 free adventures per day), Saucestorm (extremely useful attack spell, especially when you're automating), and Cannelloni Cocoon (makes healing way easier to automate without draining your meat reserves).

Definitely use WHAM for combat and Universal Recovery for healing. If you don't have Advanced Cocktailcrafting permed, you should probably start as a Disco Bandit so you can get it and perm it for your next run.

This got a bit long, sorry. Let me know if you have any other questions, though I'm not sure this thread is the appropriate place for it. Feel free to send me a Kmail in-game at the same name.
 

Vibrate

New member
Yeah, I actually have quite a few skills and IOTMs:
http://cheesellc.com/kol/profile.php?u=osobayasan

With this setup I've been very reliably doing 3-day HC Standard (fastest so far is 795 turns), but I would expect it to take quite a bit longer until you get the major skills.

If you don't have any food/drink generating IOTMs, I would say that this list is fairly accurate in terms of what's useful, at least the top few tiers:
http://kol.coldfront.net/thekolwiki/index.php/Hardcore_Skill_Analysis

Definitely prioritize turngen for hardcore (the stuff that lets you create better food and drinks). Unlike softcore, you're stuck with what you can find/make in-run.

Also, since you don't have any IOTMs, you should definitely, definitely be running Hardcore Standard instead of HCNP. You have no way of getting non-Standard items anyway since there are no pulls in hardcore, so you would be throwing away the free bonus karma and seasonal equipment bonuses for no real benefit.

Take a look at my hardcore permed skills to see what I've found useful. After getting your food-making skills, I would personally suggest you rush Ode to Booze (14-19 free adventures per day), Saucestorm (extremely useful attack spell, especially when you're automating), and Cannelloni Cocoon (makes healing way easier to automate without draining your meat reserves).

Definitely use WHAM for combat and Universal Recovery for healing. If you don't have Advanced Cocktailcrafting permed, you should probably start as a Disco Bandit so you can get it and perm it for your next run.

This got a bit long, sorry. Let me know if you have any other questions, though I'm not sure this thread is the appropriate place for it. Feel free to send me a Kmail in-game at the same name.

Thanks for the help. Greatly appreciated! I'll message you in game if I have any questions.
 

snooty

Member
I put the XO Skeleton at the top of the list in that file, changing the Orchard function's bumAdv calls from "items" to "itemssteal", and then added
I just created the bcs_fam_itemssteal.txt file, but where exactly do I swap it with the plain items file? I just tried searching bumcheekascend.ash for orchard, bumadv, and case "orchard", but I don't see anything pointing to a text file. I do have super bad eyesight though, maybe it's me? Added the CCS too, I can always change my default fam to the skeleton if it comes to that. Thanks for sharing this with us!!
 

Osobayasan

New member
I just created the bcs_fam_itemssteal.txt file, but where exactly do I swap it with the plain items file? I just tried searching bumcheekascend.ash for orchard, bumadv, and case "orchard", but I don't see anything pointing to a text file. I do have super bad eyesight though, maybe it's me? Added the CCS too, I can always change my default fam to the skeleton if it comes to that. Thanks for sharing this with us!!

This is what you're looking for:

Code:
			case "orchard" :
				cli_execute("outfit "+bcasc_warOutfit);
				visit_url("bigisland.php?place=orchard&action=stand&pwd=");
				visit_url("bigisland.php?place=orchard&action=stand&pwd=");
				if (get_property("sidequestOrchardCompleted") != "none") return true;
				print("BCC: doSideQuest(Orchard)", "purple");

				while (item_amount($item[heart of the filthworm queen]) == 0) {
					while (have_effect($effect[Filthworm Guard Stench]) == 0) {
						while (have_effect($effect[Filthworm Drone Stench]) == 0) {
							while (have_effect($effect[Filthworm Larva Stench]) == 0) {
								bumAdv($location[The Hatching Chamber], "item", "itemssteal", "1 filthworm hatchling scent gland", "Getting the Hatchling Gland (1/3)", "iorchard");
								use(1, $item[filthworm hatchling scent gland]);
							}
							bumAdv($location[The Feeding Chamber], "item", "itemssteal", "1 filthworm drone scent gland", "Getting the Drone Gland (2/3)", "iorchard");
							use(1, $item[filthworm drone scent gland]);
						}
						bumAdv($location[The Royal Guard Chamber], "item", "itemssteal", "1 filthworm royal guard scent gland", "Getting the Royal Guard Gland (3/3)", "iorchard");
						use(1, $item[filthworm royal guard scent gland]);
					}
					bumAdv($location[The Filthworm Queen's Chamber], "", "", "1 heart of the filthworm queen", "Fighting the Queen");
				}

This is taken from my copy, so it already has the itemssteal put in. bumAdv is a function that tells the script where and how to adventure. The third parameter is what kind of familiar to use, so you can change it to match the name of the file as I've done here. I've done the same thing in some other places that benefit from the XO Skeleton as well.

Sorry for the late response, and let me know if you have any trouble!
 

snooty

Member
No worries about the delay, it will be a while before I ascend again anyway. Not to mention, holidays! I myself only get to peek in here when I have real world time to do so, I understand completely and really appreciate you getting back to me. The changes have been made, and I'm looking forward to when I have time to ascend again, thanks for the assistance!!
 

Timbatim

New member
I have a run with bca at the moment, too, but do not understand everything it does, or why.

Right now it tries to get a 64735 scroll, whyever it wants that, and a lowercase N.
The script sets it as goal (text in green) and starts to beat up monsters, alright.
But now I have dozens of 334, 33398, 30669 and lowercase N each and every adding machine is just beat up without even trying to feed it scrolls.
I can do it manually, but why the need for the scroll in the first place and why doesnt it stop to let me do it?

Another thing is when bca stops and tells me to level for myself. Why does it stop instead of leveling?
I only set mafia to autolevel anyway, bca could that too.

Sometimes it stops for getting beat up, but in the autoadventure options I checked the campground, I am ok with a bit of turnloss when I do have to do less manually.

Often it uses familiars when it could use better ones. Last year I had the barrel, but it constantly changed to the smiling rat.
Now I want to use the space buddy. Where can I change priorities?
I have the space buddy set as standard familiar, but it changes for the rat and the doghound a lot.


edit:
I installed bca through the mafia inbuild scriptmanager.
 

snooty

Member
There is so much in that post, Timbatim! Are you familiar with the preferences script called simply "bumcheekascend"? If you look in your browser window you should see a pull-down menu over to the right, at the top, that says "run script". Choose bumcheekascend, and there are a few dozen preferences you can select. One of those being "bcasc_ROFL Set to true if you want to do the Baron's quest even though it is no longer a required quest". Flip that switch to "false" and that's half your problem solved. The other half is your CCS, probably. Make sure that auto-attack is not set (or that it is set to CCS, and that you don't have the adding machine targeted for assassination in there somewhere). You might want to check your choice settings within mafia as well, I find some of them will bend nicely to the will of BCA, while others just don't, for whatever reason.

Leveling, bca preference - level with clovers, without, don't/use temple to level...there are a few settings for that too. Sometimes bca will want to level when all you need is hair spray or a change of gear. It's not perfect, but it sure is a damned sight better than trying to all this manually!

You should check your auto-recovery settings, or alternatively, maybe check out Bale's Universal Recovery script. I'm sure someone will be along shortly with more/better info, and possibly a link.

For the familiars you'd have to go into the data file, find the relevant familiar lists, and do a little editing. You can also choose your main familiar in the relay browser script thingitz I mentioned above (I know, I'm *so* damned technical).

Good luck in your run!
 

Timbatim

New member
Snooty thank you, I was aware of the option menu, but I overlooked the rofl switch!
I have set the space buddy to 100%, it will take longer, but probably the survivability is better with extra regeneration.

Actually, I had Bales recovery script installed a few months ago, but somehow it had a formatting problem and generated a whole lot of garbage-text.
One session log is normally about 160kb and blew up to 10mb every day. I had them deleted sometime, but it should work better now, anyway :)
 

snooty

Member
When you have an issue with a script, it's a good idea to check that thread. Others might have posted before you about the same issue. If not, you should make a post so the creator knows there's a problem so they can fix it! If they're still updating their stuff, of course.

A page or two back in this thread Osobayasan (I think) details adjusting familiar use within the familiar data files. Maybe check for that instead of resigning yourself to a 100% run? Up to you!!
 

kevtron

New member
I've been running this after buying this years IoTY (the + item + hp/mp Garbage Fire), but the script keeps changing to my Gravy Fairy Familiar; and I do have my Fire set as default. Even if I was hunting for items I'd never want to change from the Fire to the Fairy. I'm guessing it just hasn't been updated with this IoTY yet, so just letting you know about this issue.
 
I've never been able to do the run in 4-5 days. Are there settings I'm missing out on?

https://i.imgur.com/OzgX2Yf.png

I do have lots of skills and some IOTMs.

I'm not currently using BCA, but I think the first stage would be to go over some of your run logs and see why it's taking so long to finish runs. You can also watch it as it runs- maybe it got stuck in a loop? Maybe it isn't eating (effectively)? For one thing- I see your most used familiar is a smiling rat (AKA basic volleyball). If you have a better stat familiar, you might want to make BCA use that over the rat.
 

kevtron

New member
Is there any way to remove a Fairy from the familiar list it uses? It keeps changing to it even when I have another (better) +item familiar set as my default.
 

fronobulax

Developer
Staff member
Much to my surprise it burned a lot of turns below decks that were not necessary. As near as I can tell, I ran it and then it stopped because there were no adventures. I consumed and then restarted. At the restart it was looking for +1 gaudy key, but as near as I can tell there was one gaudy key and one snakehead charrrm in inventory. autoCreate was on so I don't know whether mafia missed an opportunity or the script did, but since the script did set the goal I'm posting here :)
 

rwil02

New member
(A) fix / explanation for G-Lover

print("BCC: Getting and dealing with the Cap'm's Map.", "purple");
if (i_a("Cap'm Caronch's Map") == 0)
bumAdv($location[Barrrney's Barrr], "+outfit swashbuckling getup", "", "1 Cap'm Caronch's Map", "", "Getting the Cap'm's Map", "consultBarrr");

if(my_path() == "G-Lover") {
abort("BCC: G-Lover can't use Cap'm Caronch's Map.");
}
 

fronobulax

Developer
Staff member
So bumcheekcity hasn't logged in here since 2014 and winterbay since 2016. Is someone else maintaining this now?
 
Top