Scripting the birth of a new life.

Veracity

Developer
Staff member
No way I know to make mafia ignore any choice adventure if you are playing in the relay browser.
If we automate for you in the Relay Browser - except when you press a link or button that we added to allow you to do that (use links, buff arrows, stationary buttons, and so on), that would be a bug. If you ascend in the Relay Browser and KoL sends you to a choice, it is the correct behavior for us to display the page and let YOU decide that you are done reading the text and are ready to "click on through".

If you have a script ascending through Valhalla for you, then set choiceAdventure### = 1 to make it skip.
We SHOULD have a default value of 1 for every KoL choice that only has a single valid option, specifically so that automation will work smoothly. "SHOULD" does not necessarily equal "DOES", so if we are missing any, report, and we will fix.
 

Lxndr

Member
If we automate for you in the Relay Browser - except when you press a link or button that we added to allow you to do that (use links, buff arrows, stationary buttons, and so on), that would be a bug. If you ascend in the Relay Browser and KoL sends you to a choice, it is the correct behavior for us to display the page and let YOU decide that you are done reading the text and are ready to "click on through".


We SHOULD have a default value of 1 for every KoL choice that only has a single valid option, specifically so that automation will work smoothly. "SHOULD" does not necessarily equal "DOES", so if we are missing any, report, and we will fix.

I know the adventures that are endemic to the Jarlsberg path are lacking those (684 and 686). I'll report them forthwith.
 

fronobulax

Developer
Staff member
Would you consider saving me from my own stupidity?

NewLife resets the HP and MP restore targets. It sets MP to 0 and what happens is that I run a day or so before WHAM decides I need to use skills to kill things and then things abort because I don't have any MP and WHAM doesn't know what else to do. I wish I could remember to reset the MP target so that does not happen. I could write my own wrapper, register it as the ascension script and have it call NewLife and then reset the targets, but I am lazy enough to ask for some kind of option or override instead. While I can argue the pros and cons of just about any implementation I think what makes sense is a new parameter that, if set, will override the target. I only need the MP but a case could be made that there should be both an HP and a MP override. I can imagine something like newLifeMPOverride = [30,95] and the override only occurs if valid values are found and parsed.

Thank you.
 

ckb

Minion
Staff member
Would you consider saving me from my own stupidity?

You can make your own customization to NewLife by using an intermediate script, and setting that as your postAscensionScript.

For example, your postAscensionScript could be this:

Code:
import <newLife.ash>

void fronobulax() {
	//auto-recover mana at xx%
	set_property("mpAutoRecovery","0.35");
	//recover mana to xx%
	set_property("mpAutoRecoveryTarget","0.50");
	//recast buffs down to xx% 
	set_property("manaBurningThreshold","0.50");
	//start recasting at xx%
	set_property("manaBurningTrigger","0.80");
	//set HP recovery
	set_property("hpAutoRecovery","0.50");
	set_property("hpAutoRecoveryTarget","0.95");
}


void main() {
	//Bale's NewLife script
	new_ascension();

	//fronobulax's new stuff
	fronobulax();
}
 

Theraze

Active member
Yeah, my postAscension script is longer and has some path variables.
Code:
import <newlife.ash>;

void main() {
	string famone = get_property("bcasc_100familiar");
	string famtwo = get_property("bcasc_defaultFamiliar");
	new_ascension();

	if(vars["is_100_run"].to_familiar() == $familiar[none]) {
		set_property("bcasc_100familiar", famone);
		set_property("bcasc_defaultFamiliar", famtwo); 
		if (famone.to_familiar() != $familiar[none] && !my_path().contains_text("Avatar"))
			use_familiar(famone.to_familiar());
		else if (famtwo.to_familiar() != $familiar[none] && !my_path().contains_text("Avatar"))
			use_familiar(famtwo.to_familiar());
	}
	if(my_path() == "Avatar of Jarlsberg") {
		set_choice(106, 3, "Ballroom song: Items");
	}
	set_choice("hpAutoRecovery", "0.65", "");
	set_choice("hpAutoRecoveryTarget", "0.95", "");
	set_choice("manaBurningTrigger", "-0.05", "");
	set_choice("manaBurningThreshold", "0.80", "");
	set_choice("autoOlfact", "goals", "");
	set_choice("savedOlfact", "goals", "");
	path_skills(true);
	CLI_EXECUTE("hermit");
	switch (my_path()) {
		default:
			set_property("bcasc_cellarWineBomb", "true");
			set_choice("mpAutoRecovery", "0.2", "");
			set_choice("mpAutoRecoveryTarget", "0.4", "");
			break;
		case "Avatar of Sneaky Pete":
			set_property("bcasc_cellarWineBomb", "true");
			set_choice("mpAutoRecovery", "0.2", "");
			set_choice("mpAutoRecoveryTarget", "0.4", "");
			break;
		case "Zombie Slayer":
			set_property("bcasc_cellarWineBomb", "false");
			if(get_property("baleUr_ZombieAuto") != "")
				set_property("baleUr_ZombieAuto", "10");
			if(get_property("baleUr_ZombieTarget") != "")
				set_property("baleUr_ZombieTarget", 30);
			break;
	}
}
I don't like newLife wiping my BCA 100% familiar settings when I don't use a 100% aftercore familiar, so I fix that. Zombies need their target which isn't the normal MP grouping as well, so I set that. AoJ uses normal healing but I personally like items rather than -combat for him, so I set that. Little random things like that function well in a wrapper script. :)
 

Bale

Minion
I like that solution. I really like the way you get it to handle baleUR and bumcheekascend configuration for the ascension type. That's a sweet bit of configuration you built in without needing to modify newLife at all.
 

Lxndr

Member
Maybe this is excessively basic, but I'd love for newlife, if in a new ascension, to use a Xibalaxian transmission and equip the (guaranteed) wrist-puter. How do I go about doing this?
 

Bale

Minion
It is actually in the script already, but it is off by default. You just have to enable it. Copy/paste the following to the CLI.

Code:
zlib newLife_Extras = true

Note that will enable some other functions as well. That will turn on your MCD and if you are in softcore it will pull some IotM.
 

Lxndr

Member
Nifty, I've done that! I don't mind my MCD being futzed with (although since I don't sell pork gems, I doubt it'll do much unless I'm canadia). I also don't do softcore very often (And probably don't own the iotms it'd pull anyway).

Are there other functions I should be aware of?
 

Bale

Minion
Well, it also has an option to automatically smash the Hippy stone so you don't miss any PvP fites: newLife_SmashHippyStone
 

Lxndr

Member
Well, it also has an option to automatically smash the Hippy stone so you don't miss any PvP fites: newLife_SmashHippyStone

I do have that one! thanks, I meant what else might be in 'extras'. Is extras just the xiblaxian holo-puter, the mcd, and softcore iotm pulls?
 

Lxndr

Member
Is there a way to make this get me a fishing rod at the beginning of every new run?

(I realize the answer to this might be "mafia doesn't have that yet")
 

Bale

Minion
Is there a way to make this get me a fishing rod at the beginning of every new run?

(I realize the answer to this might be "mafia doesn't have that yet")

I'm waiting to add that feature once I get a way to check for the Floundry's existence without hitting the server.

Maybe I should just hit the server anyway and change it later if mafia gives me the method?
 
Top