src/data/defaults.txt | 1 + src/net/sourceforge/kolmafia/KoLCharacter.java | 15 +++++++++++++++ .../sourceforge/kolmafia/request/FightRequest.java | 15 +++++++++++++++ .../kolmafia/request/UseItemRequest.java | 10 ++++++++++ .../kolmafia/session/ChoiceManager.java | 18 ++++++++++++++++++ 5 files changed, 59 insertions(+), 0 deletions(-) diff --git a/src/data/defaults.txt b/src/data/defaults.txt index b5a0bc8..0f52de3 100644 --- a/src/data/defaults.txt +++ b/src/data/defaults.txt @@ -358,6 +358,7 @@ user lastVioletFogMap 0 user lastZapperWand 0 user libramSummons 0 user libraryCardUsed false +user llamaSeen true user louvreDesiredGoal 7 user louvreGoal 0 user louvreLayout diff --git a/src/net/sourceforge/kolmafia/KoLCharacter.java b/src/net/sourceforge/kolmafia/KoLCharacter.java index 8c8338c..a9d66e1 100644 --- a/src/net/sourceforge/kolmafia/KoLCharacter.java +++ b/src/net/sourceforge/kolmafia/KoLCharacter.java @@ -2316,6 +2316,21 @@ public abstract class KoLCharacter KoLCharacter.addAvailableSkill( "Moxious Maneuver" ); } + // Bird-form and mole-form skills are available for all classes + // Bird form regular + KoLCharacter.addAvailableSkill( "Vicious Talon Slash" ); + KoLCharacter.addAvailableSkill( "All-You-Can-Beat Wing Buffet" ); + KoLCharacter.addAvailableSkill( "Get a You-Eye View" ); + // Mole form regular + KoLCharacter.addAvailableSkill( "Tunnel Upwards" ); + KoLCharacter.addAvailableSkill( "Tunnel Downwards" ); + // Bird form elemental bugs skills + KoLCharacter.addAvailableSkill( "Rise From Your Ashes" ); + KoLCharacter.addAvailableSkill( "Antarctic Flap" ); + KoLCharacter.addAvailableSkill( "Feast on Carrion" ); + KoLCharacter.addAvailableSkill( "The Statue Treatment" ); + KoLCharacter.addAvailableSkill( "Give Your Opponent "The Bird"" ); + // Check all available skills to see if they // qualify to be added as combat or usables. diff --git a/src/net/sourceforge/kolmafia/request/FightRequest.java b/src/net/sourceforge/kolmafia/request/FightRequest.java index 105bcfb..e2cd050 100644 --- a/src/net/sourceforge/kolmafia/request/FightRequest.java +++ b/src/net/sourceforge/kolmafia/request/FightRequest.java @@ -193,6 +193,7 @@ public class FightRequest private static boolean castNoodles = false; private static boolean castCleesh = false; private static boolean jiggledChefstaff = false; + private static boolean dugTunnel = false; private static boolean summonedGhost = false; private static int currentRound = 0; private static int levelModifier = 0; @@ -894,6 +895,19 @@ public class FightRequest FightRequest.castCleesh = true; } + // only one tunnel action per fight + if ( skillName.equals( "Tunnel Upwards") || + skillName.equals("Tunnel Downwards") ) + { + if (FightRequest.dugTunnel) + { + FightRequest.action1 = "attack"; + this.addFormField( "action", FightRequest.action1 ); + return; + } + FightRequest.dugTunnel = true; + } + if ( FightRequest.isInvalidAttack( FightRequest.action1 ) ) { FightRequest.action1 = "abort"; @@ -2633,6 +2647,7 @@ public class FightRequest FightRequest.castNoodles = false; FightRequest.castCleesh = false; FightRequest.jiggledChefstaff = false; + FightRequest.dugTunnel = false; FightRequest.summonedGhost = false; FightRequest.desiredScroll = null; diff --git a/src/net/sourceforge/kolmafia/request/UseItemRequest.java b/src/net/sourceforge/kolmafia/request/UseItemRequest.java index 3f1b7d6..aa206ad 100644 --- a/src/net/sourceforge/kolmafia/request/UseItemRequest.java +++ b/src/net/sourceforge/kolmafia/request/UseItemRequest.java @@ -411,6 +411,16 @@ public class UseItemRequest Integer key = new Integer( itemId ); + // Gongs can only be used if we are not in form of anything + if (itemId == ItemPool.GONG) + { + if (KoLConstants.activeEffects.contains(EffectPool.get(EffectPool.FORM_OF_BIRD)) || + KoLConstants.activeEffects.contains(EffectPool.get(EffectPool.SHAPE_OF_MOLE)) || + KoLConstants.activeEffects.contains(EffectPool.get(EffectPool.FORM_OF_ROACH))) + return 0; + return Preferences.getBoolean("llamaSeen")?1:0; + } + if ( UseItemRequest.LIMITED_USES.containsKey( key ) ) { UseItemRequest.limiter = "unstackable effect"; diff --git a/src/net/sourceforge/kolmafia/session/ChoiceManager.java b/src/net/sourceforge/kolmafia/session/ChoiceManager.java index 072e1af..3165b35 100644 --- a/src/net/sourceforge/kolmafia/session/ChoiceManager.java +++ b/src/net/sourceforge/kolmafia/session/ChoiceManager.java @@ -2190,6 +2190,7 @@ public abstract class ChoiceManager for ( int stepCount = 0; request.responseText.indexOf( "choice.php" ) != -1; ++stepCount ) { Matcher choiceMatcher = ChoiceManager.CHOICE_PATTERN.matcher( request.responseText ); + boolean resultProcessed = false; if ( !choiceMatcher.find() ) { @@ -2207,6 +2208,23 @@ public abstract class ChoiceManager String option = "choiceAdventure" + choice; String decision = Preferences.getString( option ); + if (choice.equals("276")) + { + Preferences.setBoolean("llamaSeen", false); + } + else if (choice.equals("277")) + { + Preferences.setBoolean("llamaSeen", true); + } + + + if (!resultProcessed) + { + resultProcessed = true; + if (!(choice.equals("276") || choice.equals("277"))) /* Llama lama gong adv is not counted as a choice adv for conditions */ + ResultProcessor.processResult( new AdventureResult( AdventureResult.CHOICE, 1 ) ); + + } // If this choice has special handling, convert to real // decision index