Difference between revisions of "Quest Tracking Preferences"

From Kolmafia
Jump to navigation Jump to search
imported>Bale
imported>Bale
m (fix code)
Line 21: Line 21:
 
if((gnasirProgress & 4) == 0)
 
if((gnasirProgress & 4) == 0)
 
print("Gnasir wants a killing jar");
 
print("Gnasir wants a killing jar");
if((gnasirProgress & 8) == 0) {
+
if((gnasirProgress & 8) == 0)
 
print("Gnasir wants a 15 worm-riding manual page");
 
print("Gnasir wants a 15 worm-riding manual page");
if((gnasirProgress & 16) == 0) {
+
if((gnasirProgress & 16) == 0)
 
print("You need to use a drum machine to ride the worm");
 
print("You need to use a drum machine to ride the worm");
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 05:57, 13 February 2014

KoLMafia internally tracks progress for a number of quests. These are stored as preferences in settings\[charactername]_prefs.

booPeakProgress

This preference tracks the hauntedness level of A-boo Peak. A value of 18, for instance, indicates that A-boo Peak is 18% haunted.

Possible values: 0-100

chasmBridgeProgress

This preference tracks the player's progress in building a bridge across the Orc Chasm. A value of 10, for instance, indicates that the bridge is 10 planks long.

Possible values: 0-30

gnasirProgress

gnasirProgress is a nibble bitmask with one bit for each possible way you can advance Gnasir's quest. You can parse this with bitwise operators. Here's some code that demonstrates how to use it.

int gnasirProgress = get_property("gnasirProgress").to_int();
buffer gnasir;
if((gnasirProgress & 1) == 0)
	print("Gnasir wants a stone rose");
if((gnasirProgress & 2) == 0)
	print("Gnasir wants a can of black paint");
if((gnasirProgress & 4) == 0)
	print("Gnasir wants a killing jar");
if((gnasirProgress & 8) == 0)
	print("Gnasir wants a 15 worm-riding manual page");
if((gnasirProgress & 16) == 0)
	print("You need to use a drum machine to ride the worm");

hiddenApartmentProgress

=8

hiddenBowlingAlleyProgress

=8

hiddenHospitalProgress

=8

hiddenOfficeProgress

=8

hiddenOfficerogress

=8

mothershipProgress

=0

oilPeakProgress

=0.00

twinPeakProgress

twinPeakProgress is a nibble bitmask with least significant bit set for the first choice and the most significant for the fourth. You can parse this with bitwise operators. Here's some code that demonstrates how to use it.

void comma(buffer b, string s) {
	if(length(b) > 0)
		b.append(", ");
	b.append(s);
}

boolean mysterious(int progress, int c) { 
	return (progress & (1 << c)) == 0;
}

string twinPeak() {
	int p = get_property("twinPeakProgress").to_int();
	buffer need;
	if(mysterious(p, 0)) need.comma("4 Stench Resistance");
	if(mysterious(p, 1)) need.comma("+50% Item Drop");
	if(mysterious(p, 2)) need.comma("Jar of Oil");
	// Only check for final if first three complete
	if(length(need) == 0) {
		if(mysterious(p, 3))
			return "Need +40% Initiative";
		return "Twin Peak Completed";
	}
	return "Need " + need;
}

warProgress

=unstarted

wineCellarProgress

=3