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

I believe only farming drops when you still need spleen is correct since it would be suboptimal to have a spleen familiar out for longer than it needs to be when another familiar could be out instead.

If the familiar sleen code is being updated are we making sure the existing spleen familiars like the stomping boots are included?
 

fewyn

Administrator
Staff member
attachment.php
 

Attachments

  • xqLrRbq.png
    xqLrRbq.png
    30.5 KB · Views: 154

RESPRiT

Member
If the familiar sleen code is being updated are we making sure the existing spleen familiars like the stomping boots are included?

Stomping boots would require some kind of special handling because it requires a combat action to acquire its spleen item. Additionally, there would (should) be a way to determine what monsters should be stomped, since the pastes have variable benefits and stomping certain monsters is preferable over others, regardless of phylum (ie, you wouldn't stomp a monster that could drop a useful item). The remaining spleen familiars that were not included before (grim brother and golden monkey) will be functional.
 

Theraze

Active member
Stomping boots were included as the last spleen familiar, which means it would only be used if you have the stomping boots and no other spleen method. Otherwise, it drops to use a useless +stat familiar to rob you of your bonus karma instead.
 
Stomping boots were included as the last spleen familiar, which means it would only be used if you have the stomping boots and no other spleen method. Otherwise, it drops to use a useless +stat familiar to rob you of your bonus karma instead.
Not to beat a dead horse but shouldn't be in this code as well since Rogue Program is listed and it as old as well

Code:
foreach it in $familiars[Golden Monkey, Unconscious Collective, Grim Brother, Bloovian Groose, Rogue Program, Baby Sandworm] {
				if (have_path_familiar(it) && it.drops_today < it.drops_limit) return use_familiar(it);
If im wrong please let me know and I will drop it here
 

Theraze

Active member
No clue what you're saying. The words, in the order given, don't make sense.

WHAT shouldn't be in this code? Are you asking to have something removed, or added? What do you want removed or added?

The code I quoted was from before the stomping boots were added as the last familiar. It's currently included and will be used if you have it available un-restricted, with spleen unfilled, and no other spleen familiars from the list with drops remaining.
 

Theraze

Active member
It was completely rewritten. Old code:
Code:
			//Then we have space for some spleen items.
			if (have_path_familiar($familiar[Unconscious Collective]) && have_path_familiar($familiar[Bloovian Groose])) {
				if (to_int(get_property("_dreamJarDrops")) <= to_int(get_property("_grooseDrops"))) {
					use_familiar($familiar[Unconscious Collective]);
					return true;
				} else {
					use_familiar($familiar[Bloovian Groose]);
					return true;
				}
			} else if (have_path_familiar($familiar[Unconscious Collective])) {
				use_familiar($familiar[Unconscious Collective]);
				return true;
			} else if (have_path_familiar($familiar[Bloovian Groose])) {
				use_familiar($familiar[Bloovian Groose]);
				return true;
			} else if (have_path_familiar($familiar[Rogue Program]) && have_path_familiar($familiar[Baby Sandworm])) {
				//Then randomly pick between the two.
				if (to_int(get_property("_tokenDrops")) <= to_int(get_property("_aguaDrops"))) {
					use_familiar($familiar[Rogue Program]);
					return true;
				} else {
					use_familiar($familiar[Baby Sandworm]);
					return true;
				}
			} else if (have_path_familiar($familiar[Rogue Program])) {
				use_familiar($familiar[Rogue Program]);
				return true;
			} else if (have_path_familiar($familiar[Baby Sandworm])) {
				use_familiar($familiar[Baby Sandworm]);
				return true;
			}
New code:
Code:
			//Then we have space for some spleen items.
			//Prioritizes Golden Monkey because it's marginally better than other IOTY spleen familiars due to the golden nugget drops
			foreach it in $familiars[Golden Monkey, Unconscious Collective, Grim Brother, Bloovian Groose, Rogue Program, Baby Sandworm, Pair of Stomping Boots] {
				if (have_path_familiar(it) && it.drops_today < it.drops_limit) return use_familiar(it);
			}
Old code: 2 lines of comments, 29 lines of code.
New code: 2 lines of comments, 3 lines of code.
 

heeheehee

Developer
Staff member
Suggested modification: 2 lines of code, with future-proofing.

Code:
foreach f in $familiars[] {
    if (it.drop_item.spleen > 0 && have_path_familiar(it) && it.drops_today < it.drops_limit) return use_familiar(it);
}

I suppose this doesn't allow you to impose a specific order, but if you really wanted, you could just take the most recent spleen familiar, due to the nature of powercreep.
 

Theraze

Active member
Could do that potentially. I'd probably run that after the given list, rather than simply replacing the list, as there's nothing to guarantee that further spleen-familiars might not have semi-complicated systems like the boots. Also, I wouldn't directly use that as you've defined 'f' as your variable, but are still checking for 'it' in the following line. :)

Of course the familiar parsing would take the oldest available familiar, not the newest, as it goes through in order. To trigger on oldest, we'd need to save a value as we're going through... Off the top of my head and freewriting:
Code:
familiar spleener = $familiar[none];
foreach it in $familiars[] {
if (it.drop_item.spleen > 0 && have_path_familiar(it) && it.drops_today < it.drops_limit) spleener = it;
}
if (spleener != $familiar[none]) return use_familiar(spleener);
Any objections to adding that after the hardcoded list? Retaining a hardcoded list allows people to set their preferred spleener. If that isn't available, we can parse through and see if another option is available. If we do include this, I'd remove the stomping boots from the hardcoded list due to their additional CCS requirements.
 

Theraze

Active member
Okay. So, an obvious problem with my idea of dropping the boot support.
> ashq foreach it in $familiars[] if (it.drop_item.spleen > 0) print(it+": "+it.drop_item);

Baby Sandworm: agua de vida
Bloovian Groose: groose grease
Unconscious Collective: Unconscious Collective Dream Jar
Grim Brother: grim fairy tale
Golden Monkey: powdered gold
We're missing the rogue program as well as the stomping boots. The rogue program because it drops a coinmaster token rather than the spleen itself, and the stomping boots as they don't "drop" any items, they provide the use of a skill which then gives the items. So regardless of what we do with the other 5 familiars, we need to keep overrides in for those two.

Three options:
Overrides first, only include overrides. This means that the rogue program and pair of stomping boots gets used for anyone who has them in-run, and the newest spleen familiars gets used otherwise. People can always add more override familiars to set their favourites.
Overrides first, keep the current list. This means that the new code gets ignored until a new familiar gets added, but people won't end up using the stomping boots by default if they have something else. They can resort the list or put in their favourites in a different order as well.
Overrides last, only include overrides. This means that the rogue program and pair of stomping boots only get used when you don't have something newer, but you can't manually sort the list if you prefer Groose over Monkey for some reason.

Since both of the override familiars are out of season now, I'd be tempted to just go with the first option. If people want to set a fav familiar, they can always just add them to the short list of two.
 
Last edited:
Okay. So, an obvious problem with my idea of dropping the boot support.We're missing the rogue program as well as the stomping boots. The rogue program because it drops a coinmaster token rather than the spleen itself, and the stomping boots as they don't "drop" any items, they provide the use of a skill which then gives the items. So regardless of what we do with the other 5 familiars, we need to keep overrides in for those two.

Three options:
Overrides first, only include overrides. This means that the rogue program and pair of stomping boots gets used for anyone who has them in-run, and the newest spleen familiars gets used otherwise. People can always add more override familiars to set their favourites.
Overrides first, keep the current list. This means that the new code gets ignored until a new familiar gets added, but people won't end up using the stomping boots by default if they have something else. They can resort the list or put in their favourites in a different order as well.
Overrides last, only include overrides. This means that the rogue program and pair of stomping boots only get used when you don't have something newer, but you can't manually sort the list if you prefer Groose over Monkey for some reason.

Since both of the override familiars are out of season now, I'd be tempted to just go with the first option. If people want to set a fav familiar, they can always just add them to the short list of two.

I vote for option #1.
 
Last edited:

Theraze

Active member
Okay, that should be in place now. If we ever have new non-spleen-dropping spleeners, we'll need to add them to the overrides. Otherwise, it should just automatically pick the newest available spleener. Yay.

Thanks hee^3 for the inspiration. :)
 
If don't know if this is a BCA problem or mafia problem but the mood BCA creates has Astral Shell, Patience and a few others. I have 200+ rounds of those and the mood still fires and adds 5 more. I thought a mood worked in the fact that if you ran out of something it casted it again and is BCA executing the mood or mafia?
 

fewyn

Administrator
Staff member
I'm guessing it's burning extra mana? So if you over regen it burns what's left on recasting stuff.
 
Top