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

fronobulax

Developer
Staff member
I think I found a small issue, bear with me though, I'm very new to this.

Thank you. I had previously reported it was checking the quest log for something that was no longer there but providing a proposed solution is much more useful than what I did.
 

Theraze

Active member
While we could insert some additional code for checking other quest states, I'd be more tempted to check the completed list for Lady Spookyraven without the necklace, since that should hit any of the 3 Lady states. Unless the Manor of Spooking replaces the LSR quests, I wouldn't check on that as I've gotten the L11 quest before unlocking the second floor when I've had necklace problems.
 

reekusan

New member
I think I found a small issue, bear with me though, I'm very new to this.

The bcascManorBathroom(), bcascManorBedroom(), and bcascManorGallery() functions have a small issue with checking the completion of each zone. When checking the Quest Log they look for the "Lady Spookyraven's Dance" text in the current quests to see if each item has been acquired. This would be fine if the fallback wasn't to check the Quest Log for the completion of the quest. The reason this is a problem is that the Quest Log doesn't display "Lady Spookyraven's Dance" under the [completed quests] tab (only "Lady Spookyraven's Unfinished Businesses" after finishing "Lady Spookyraven's Babies"), which causes the if condition in the else case to always fail.

bcascManorBathroom() - Line 5851
Code:
	string questLog = visit_url("questlog.php?which=1");
	if(contains_text(questLog, "Lady Spookyraven's Dance")) {
		if (!contains_text(questLog, "her powder puff from the Haunted Bathroom") && contains_text(questLog, "her powder puff")) {
			checkStage("manorbathroom", true);
			return true;
		}
 		} else {
[COLOR="#FF0000"][B]		visit_url("place.php?whichplace=manor2&action=manor2_ladys");
		if(contains_text(visit_url("questlog.php?which=2"), "Lady Spookyraven's Dance")) {
			checkStage("manorbathroom", true);
			return true;[/B][/COLOR]
		}
	}

Proposed fix
Code:
	string questLog = visit_url("questlog.php?which=1");
	if(contains_text(questLog, "Lady Spookyraven's Dance")) {
		if (!contains_text(questLog, "her powder puff from the Haunted Bathroom") && contains_text(questLog, "her powder puff")) {
			checkStage("manorbathroom", true);
			return true;
		}
[COLOR="GREEN"][B]		} else if(contains_text(questLog, "Lady Spookyraven's Babies")) {
  		checkStage("manorbathroom", true);
  		return true;[/B][/COLOR]
  		} else {
		if(contains_text(visit_url("questlog.php?which=2"), "[COLOR="GREEN"][B]In a Manor of Spooking[/B][/COLOR]")) {
			checkStage("manorbathroom", true);
			return true;
		}


I was encountering the same issue. Your code worked well as long as I went and implemented it in the bedroom and gallery as well
 

unponderable

New member
Love the script.

Wanted to report a small bug. When opting to make the wine bomb in the Spookyraven basement in softcore, the script never seems to equip the unstable fulminate, at least not before re-equipping the bumcheekascend outfit. I wasted about 100 adventures in the boiler room before I noticed and did that part manually.
 

Theraze

Active member
If you've told it to not mess with your gear in SC, you need to handle ALL outfit changes - including for things like equipping the fulminate when you want it equipped... Because you've told the script that you don't want it to touch your gear, and it will follow your wishes...
 

fronobulax

Developer
Staff member
If you've told it to not mess with your gear in SC, you need to handle ALL outfit changes - including for things like equipping the fulminate when you want it equipped... Because you've told the script that you don't want it to touch your gear, and it will follow your wishes...

You might want to check that. SC, allowed to mess with gear and it just failed to equip fuliminate for me.

There is probably an opportunity here. If there is some kind of contradiction between what the script was told to do, wants to do or allowed to do, the user could be informed in some way besides running out of adventures. That said, if I were making the decisions about bcca I think I would just eliminate the don't mess with gear flag. It now seems like a niche option of limited utility and if it causes problems...
 

Theraze

Active member
Well, we've got this:
Code:
				if (available_amount($item[unstable fulminate]) > 0 && item_amount($item[wine bomb]) == 0) {
					bumAdv($location[The Haunted Boiler Room], "ml, +equip unstable fulminate", "ml", "1 wine bomb", "Making a wine bomb", "l");
If you want it to run normally, you need to also tell SC to run as HC. Otherwise it takes special override code.
Code:
	if (!in_hardcore() && !bcasc_RunSCasHC) {
		if (cli_execute("outfit bumcheekascend")) {}
		if (contains_text(maxme, "+outfit") && contains_text(maxme, "+equip")) {
			string [int] strs = split_string(maxme, "\\+");
			foreach i in strs {
				if (strs[i] != "") {
					//print(strs[i], "green");
					cli_execute(strs[i]);
				}
			}
			return true;
		}
		if (contains_text(maxme, "+outfit")) {
			cli_execute("outfit "+maxme.replace_string("+outfit ", ""));
			return true;
		}
		if (contains_text(maxme, "pirate fledges")) {
			cli_execute("equip acc3 pirate fledges");
			return true;
		}
		if (contains_text(maxme, "mega gem")) {
			cli_execute("equip acc3 mega gem");
			cli_execute("equip acc2 talisman o' namsilat");
			return true;
		}
		if (contains_text(maxme, "talisman")) {
			cli_execute("equip acc3 talisman o' namsilat");
			return true;
		}
		if (contains_text(maxme, "nuns")) {
			cli_execute("outfit "+bcasc_warOutfit);
			return true;
		}
		return true;
	}
So... anything but those exceptions will get skipped entirely. As whomever added the unstable fulminate didn't add it to the SC override section, it doesn't do anything currently.

Two ways we can try to fix this.
First, we can put in a new override.
Second, we could tell it that any "equip" bit should happen even in SC, if it's not set to lock gear.
 

unponderable

New member
If you've told it to not mess with your gear in SC, you need to handle ALL outfit changes - including for things like equipping the fulminate when you want it equipped... Because you've told the script that you don't want it to touch your gear, and it will follow your wishes...

I have it set to mess with gear as needed. I thought it was worth mentioning here because other than not equipping the unstable fulminate, the script successfully automated the entire rest of the run.
 

fronobulax

Developer
Staff member
"ml, +equip unstable fulminate"

I assume that is the maximizer string. What happens if a two handed weapon is already equipped? The maximizer has been pretty solid but is not perfect . (When I can repeat the imperfections I do ask, or fail a BR). If that fails to equip that would explain the discrepancies between the code and what we think we are seeing.
 

Theraze

Active member
As I said, if you haven't told BCA to run SCasHC, it won't do any equip changes except for those specific exceptions I mentioned above. I also gave the two possible ways to avoid it. :) Either works...
 

fronobulax

Developer
Staff member
As I said, if you haven't told BCA to run SCasHC, it won't do any equip changes except for those specific exceptions I mentioned above. I also gave the two possible ways to avoid it. :) Either works...

To be clear, the failure to equip the fulminate occurred in a SC run being done as HC when BCCA had permission to do whatever it wanted with outfits. So I either do not understand what I am being told or something in the "ecosystem" is not behaving as expected.
 

Theraze

Active member
Ah, if it's being told to run as HC, then the SC should be totally irrelevant. In your case, it's up to the maximizer, which makes its full suggestion and, as there is no -tie, should find you a one-handed weapon to combine with the required +equip. If it fails to give you a valid option, that's not something we can fix. Sorry.

Regarding the two choices for SC runs done as SC, which appears to be what the original bug report from unponderable was about, we have those two choices on how to fix it.
 

fronobulax

Developer
Staff member
Ah, if it's being told to run as HC, then the SC should be totally irrelevant. In your case, it's up to the maximizer, which makes its full suggestion and, as there is no -tie, should find you a one-handed weapon to combine with the required +equip. If it fails to give you a valid option, that's not something we can fix. Sorry.

Regarding the two choices for SC runs done as SC, which appears to be what the original bug report from unponderable was about, we have those two choices on how to fix it.

First sorry for conflating multiple problems that seem similar into one.

I always run BCCA as HC whether KoL thinks knows it ia a HC or SC run. Makes my life easier. The character in question was actually out of ronin and had everything pulled from Hagnk's so I find it hard to believe, but not impossible, that the mazimizer command could not find something. Looks like this goes to the back burner until the next run at which time I will remember to play with the mazimizer strings manually and see what can be learned.
 

fronobulax

Developer
Staff member
In other news, the script just ran without intervention from "near the end" of the Island War to the defeat of the Sorceress. Out of ronin so the maximizer had a lot of things to choose from, but the contest and tower automation worked. Thanks for the work to get things to that point.
 

coderanger

Member
For those that updated to r15893, search and replace for the names (each appears twice): "Pre-Cyrpt Cemetary" is now "The Unquiet Garves" and "Post-Cyrpt Cemetary" is "The VERY Unquiet Garves".
 

Ferdawoon

Member
Ehhm, a suggestion for script-workers and thread moderators:
Would it be possible to add some basic commands to the first post(s) in this thread, such as how to manually set a stage as completed or not completed?

Yesterday I downloaded my folder of Mafia from DropBox at school and ran this script there, then when done I had to delete it to save storage space. So, when I now tried to see if the script could pick up where it left off, it is stuck trying to do the [Manorbathroom] even though everything is unlocked (Lady Spookyraven is on floor 3, I have 4 Mirror non-combats so Guy made of Bees is next in line, and I am lvl11 so no powerleveling needed). I even had to manually finish the Giant's Castle quest because the script did rather spend turns in the bathroom =S
I know I have asked before how to set these stages as completed before, but I can't seem to find it and I feel bad for asking the same thing over and over. So, would be great if such commands could be added to Winterbay's post in the beginning of the thread or something.
 

bonerici

New member
Ehhm, a suggestion for script-workers and thread moderators:
Would it be possible to add some basic commands to the first post(s) in this thread, such as how to manually set a stage as completed or not completed?


no doubt it took me forever to find this last time. Then I had the brilliant idea of just watching the script in the graphical CLI to see what it was doing and it turns out it tells you the names of the variables when it runs. So for instance, if it says:

> BCC: We have not completed the stage [Manorbathroom].

then your variable name has that "Manorbathroom" in it. You can find the whole variable name under kolfoldername/settings/username_prefs.txt but all you do is add the prefix bcasc_stage_ to what the CLI shows

bcasc_stage_manorbathroom=xx

then you can do

set bcasc_stage_manorbathroom

to find the number, which I guess is set to the ascension number when you finish it, so you just add 1 to whatever it shows

set bcasc_stage_manorbathroom=xx

I remember it took me ages to find this number the first time. Of course once you realize that the CLI is telling you what the variable name is, then it's not too hard to figure out.

Agree with Ferdawoon would be nice to have this somewhere easy to find, no way I was able to grep through all the 500 comments here and find it.
 

fronobulax

Developer
Staff member
Ehhm, a suggestion for script-workers and thread moderators:
Would it be possible to add some basic commands to the first post(s) in this thread, such as how to manually set a stage as completed or not completed?

Yesterday I downloaded my folder of Mafia from DropBox at school and ran this script there, then when done I had to delete it to save storage space. So, when I now tried to see if the script could pick up where it left off, it is stuck trying to do the [Manorbathroom] even though everything is unlocked (Lady Spookyraven is on floor 3, I have 4 Mirror non-combats so Guy made of Bees is next in line, and I am lvl11 so no powerleveling needed). I even had to manually finish the Giant's Castle quest because the script did rather spend turns in the bathroom =S
I know I have asked before how to set these stages as completed before, but I can't seem to find it and I feel bad for asking the same thing over and over. So, would be great if such commands could be added to Winterbay's post in the beginning of the thread or something.

First I always exit KoLmafia and edit the character prefs file because I cannot remember the variable names, the gCLI option to set or clear something and whether the data is string or an ascension count or what. All of these things are easily answered but for me it is much simpler to infer the answers by looking at the file. IMO. YMMV.

Second, rather than improve a first post that no one is likely to read perhaps a better option would be to use the wiki for BCCA "How To?". I can see a page that reminds you that "set X = Y" (or similar) will set preference X to the value Y, has a table with the names for X and a brief description of the data type for Y. Eventually a description of what the preference controls could be added. It is certainly a reasonable idea given that there is even a zLib page.

Specifically, however, BCCA has (had) several issues with the Lady Spookyraven quests. It is checking for log entries that do not exist and thus failing to detect completion. This may have been addressed but since it is only a problem for me when I fail to start and complete all the portions in one session I'm not sure.
 

lostcalpolydude

Developer
Staff member
Second, rather than improve a first post that no one is likely to read perhaps a better option would be to use the wiki for BCCA "How To?". I can see a page that reminds you that "set X = Y" (or similar) will set preference X to the value Y, has a table with the names for X and a brief description of the data type for Y. Eventually a description of what the preference controls could be added. It is certainly a reasonable idea given that there is even a zLib page.

A wiki page for zlib works because the people that need that information are script writers who are involved enough to spend some time looking at documentation. I don't think the average person using this script will ever know that any wiki page exists to check it out.
 
Top