We only look at odeBuffbotCheck in one place:
Code:
boolean requestBuffOde = KoLCharacter.canInteract() && Preferences.getBoolean( "odeBuffbotCheck" );
In other words, it only comes into effect when you are out of Ronin.
We only look at that boolean in one place:
Code:
if ( canOde || requestBuffOde )
...
while ( KoLCharacter.canInteract() &&
odeTurns < consumptionTurns &&
KoLCharacter.getCurrentMP() >= odeCost &&
KoLmafia.permitsContinue() && canOde )
{
In other words, it tries to cast it. The logic is faulty; I think the point is to give you the nag if you can go to a buffbut but cannot cast it yourself. But the key thing is that it only got into the if block because it thought you could cast ode yourself; the buffbot was already rejected because you were in Ronin.
Code:
boolean canOde = KoLConstants.availableSkills.contains( ode ) && UseSkillRequest.hasAccordion();
I assume the skill shows up on your character sheet - i.e., you "have the skill" - but you can't actually cast it, because of your path?