Feature - Implemented Remember where Teachings Of The Fist drop per ascension

matt.chugg

Moderator
I'd love a feature to remember where each "teaching of the fist scroll" drops or more specifically, if a scroll has been dropped already in each of the 11 locations (for that ascension)

I've even gone as far as attempting to fix this up myself, assuming my assumption that preferences starting with an underscore are reset per ascension is correct, then...

patch: added to gainItem in ResultProcessor

only vaugly tested, but it compiles and worked for haiku dungeon so far.

Code:
### Eclipse Workspace Patch 1.0
#P kolmafia
Index: src/net/sourceforge/kolmafia/session/ResultProcessor.java
===================================================================
--- src/net/sourceforge/kolmafia/session/ResultProcessor.java	(revision 9762)
+++ src/net/sourceforge/kolmafia/session/ResultProcessor.java	(working copy)
@@ -1505,6 +1505,56 @@
 			Preferences.setInteger( "cyrptNicheEvilness", 50 );
 			Preferences.setInteger( "cyrptNookEvilness", 50 );
 			break;
+		case ItemPool.TEACHINGS_OF_THE_FIST:
+			// save which location the scroll was found in.
+			switch (KoLAdventure.lastAdventureId())	
+			{
+				case 138:
+					// Haiku Dungeon
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsHaikuDungeon", true);
+					break;
+				case 71:
+					// Poker Room
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsPokerRoom", true);
+					break;
+				case 233:
+					// A Barroom Brawl
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsBarroomBrawl", true);
+					break;
+				case 103:
+					// Haunted Conservatory
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsConservatory", true);
+					break;
+				case 30:
+					// Bat Hole Entryway
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsBatHole", true);
+					break;
+				case 20:
+					// The Fun House
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsFunHouse", true);
+					break;
+				case 52:
+					//Cobb's Knob Menagerie, Level 2
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsMenagerie", true);
+					break;
+				case 248:
+					// Pandamonium Slums
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsSlums", true);
+					break;
+				case 27:
+					// Frat House
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsFratHouse", true);
+					break;
+				case 99:
+					// The Road to White Citadel
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsRoad", true);
+					break;
+				case 62:
+					// Ninja Snowmen
+					Preferences.setBoolean(KoLCharacter.baseUserName(), "_FistTeachingsNinjaSnowmen", true);
+					break;
+			}
+			break;
 		}
 	}
 

fxer

Member
I've been tracking these in my notes section, seems like something Jick should have just added to the quest log
 

roippi

Developer
Few problems: one, _prefs will be wiped on rollover, not ascension. Two, you didn't add the prefs to defaults.txt.

edit: nevermind the third problem.
 

matt.chugg

Moderator
I'm not worried about whether its been used or not, just whether its already dropped in that zone!
forgot about defaults.txt
How do I add a setting that gets reset on ascension?
 

matt.chugg

Moderator
Hmm, how come none of the resets in ValhallaManager.resetPerAscensionCounters() use the overload of setboolean that includes a username?

Am I using it wrong?
 

matt.chugg

Moderator
Is it because it knows from defaults.txt whether its a user or global preference and the overload is for mafia to set prefs for any user at a system level regardless of who's logged in?

to that end, how about this?

Code:
Index: src/data/defaults.txt
===================================================================
--- src/data/defaults.txt	(revision 9762)
+++ src/data/defaults.txt	(working copy)
@@ -329,6 +329,17 @@
 user	expressCardUsed	false
 user	extraRolloverAdventures	0
 user	fistSkillsKnown	0
+user	FistTeachingsHaikuDungeon	false
+user	FistTeachingsPokerRoom	false
+user	FistTeachingsBarroomBrawl	false
+user	FistTeachingsConservatory	false
+user	FistTeachingsBatHole	false
+user	FistTeachingsFunHouse	false
+user	FistTeachingsMenagerie	false
+user	FistTeachingsSlums	false
+user	FistTeachingsFratHouse	false
+user	FistTeachingsRoad	false
+user	FistTeachingsNinjaSnowmen	false
 user	flyeredML	0
 user	fossilB	0
 user	fossilD	0
Index: src/net/sourceforge/kolmafia/session/ResultProcessor.java
===================================================================
--- src/net/sourceforge/kolmafia/session/ResultProcessor.java	(revision 9762)
+++ src/net/sourceforge/kolmafia/session/ResultProcessor.java	(working copy)
@@ -1505,6 +1505,56 @@
 			Preferences.setInteger( "cyrptNicheEvilness", 50 );
 			Preferences.setInteger( "cyrptNookEvilness", 50 );
 			break;
+		case ItemPool.TEACHINGS_OF_THE_FIST:
+			// save which location the scroll was found in.
+			switch (KoLAdventure.lastAdventureId())	
+			{
+				case 138:
+					// Haiku Dungeon
+					Preferences.setBoolean( "FistTeachingsHaikuDungeon", true );
+					break;
+				case 71:
+					// Poker Room
+					Preferences.setBoolean( "FistTeachingsPokerRoom", true );
+					break;
+				case 233:
+					// A Barroom Brawl
+					Preferences.setBoolean( "FistTeachingsBarroomBrawl", true );
+					break;
+				case 103:
+					// Haunted Conservatory
+					Preferences.setBoolean( "FistTeachingsConservatory", true );
+					break;
+				case 30:
+					// Bat Hole Entryway
+					Preferences.setBoolean( "FistTeachingsBatHole", true );
+					break;
+				case 20:
+					// The Fun House
+					Preferences.setBoolean( "FistTeachingsFunHouse", true );
+					break;
+				case 52:
+					//Cobb's Knob Menagerie, Level 2
+					Preferences.setBoolean( "FistTeachingsMenagerie", true );
+					break;
+				case 248:
+					// Pandamonium Slums
+					Preferences.setBoolean( "FistTeachingsSlums", true );
+					break;
+				case 27:
+					// Frat House
+					Preferences.setBoolean( "FistTeachingsFratHouse", true );
+					break;
+				case 99:
+					// The Road to White Citadel
+					Preferences.setBoolean( "FistTeachingsRoad", true );
+					break;
+				case 62:
+					// Ninja Snowmen
+					Preferences.setBoolean("FistTeachingsNinjaSnowmen", true);
+					break;
+			}
+			break;
 		}
 	}
 
Index: src/net/sourceforge/kolmafia/session/ValhallaManager.java
===================================================================
--- src/net/sourceforge/kolmafia/session/ValhallaManager.java	(revision 9762)
+++ src/net/sourceforge/kolmafia/session/ValhallaManager.java	(working copy)
@@ -313,6 +313,18 @@
 		Preferences.setString( "telescope7", "" );
 		Preferences.setInteger( "charitableDonations", 0 );
 		Preferences.setInteger( "fistSkillsKnown", 0 );
+		Preferences.setBoolean( "FistTeachingsHaikuDungeon", false);
+		Preferences.setBoolean( "FistTeachingsPokerRoom", false);
+		Preferences.setBoolean( "FistTeachingsBarroomBrawl", false);
+		Preferences.setBoolean( "FistTeachingsConservatory", false);
+		Preferences.setBoolean( "FistTeachingsBatHole", false);
+		Preferences.setBoolean( "FistTeachingsFunHouse", false);
+		Preferences.setBoolean( "FistTeachingsMenagerie", false);
+		Preferences.setBoolean( "FistTeachingsSlums", false);
+		Preferences.setBoolean( "FistTeachingsFratHouse", false);
+		Preferences.setBoolean( "FistTeachingsRoad", false);
+		Preferences.setBoolean( "FistTeachingsNinjaSnowmen",false);
+
 		TurnCounter.clearCounters();
 	}
 }
 
This is an insanely useful idea.
Would it be too much hassle to add a ... "Wotsf" or some sort of CLI command to list where and what's dropped yet, similar to the "badmoon" command?
 

Theraze

Active member
Here's a zany question... would it make sense to have a pathadventures command instead, that listed your path-specific adventures? Doesn't really help to have the badmoon command when you aren't in badmoon. Doesn't really help to have a wotsf command if you aren't in that run. If the next challenge path also has unique adventures, it might been listing as well... seems like it would make sense to plan for it with a single command (since you'll only ever be in a single path) instead of spinning tons of generally useless commands...
 

Alhifar

Member
Not that it's a big deal, but it somewhat bothers me stylistically that these new preferences are the only ones that start with a capital letter by default
 

jwylot

Member
Forgive my slowness but was a Wotsf command implemented? I see the new prefs but can't find a command to show them.
 

Winterbay

Active member
No, but you can use the prefref-alias together with "teachings" to get the entire output at least. A slightly more readable version might be nice though.
 

jwylot

Member
Thanks - one of my clannies wrote a little script so I just wanted to check before encouraging to post it :)
 

Theraze

Active member
I generally just pref fist. Though now with my TeachFist script, I don't even do that anymore. :)
 
Top