We only look at odeBuffbotCheck in one place:
In other words, it only comes into effect when you are out of Ronin.
boolean requestBuffOde = KoLCharacter.canInteract() && Preferences.getBoolean( "odeBuffbotCheck" );
We only look at that boolean in one place:
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.
if ( canOde || requestBuffOde )
while ( KoLCharacter.canInteract() &&
odeTurns < consumptionTurns &&
KoLCharacter.getCurrentMP() >= odeCost &&
KoLmafia.permitsContinue() && canOde )
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?
boolean canOde = KoLConstants.availableSkills.contains( ode ) && UseSkillRequest.hasAccordion();