Both CCS and BALLS statements end up as BALLS.
If you put quotes around a line, it explicitly tells KoLmafia that it is a BALLS statement. There is a specific group of BALLS statements that we recognize immediately as such. Also, if you have a ";" in your line, that is assumed to be multiple BALLS statements. Here is the method:
Code:
public static final boolean isMacroAction( String action )
{
return
action.startsWith( "scrollwhendone" ) ||
action.startsWith( "mark " ) ||
action.startsWith( "goto " ) ||
action.startsWith( "if " ) ||
action.startsWith( "endif" ) ||
action.startsWith( "while " ) ||
action.startsWith( "endwhile" ) ||
action.startsWith( "sub " ) ||
action.startsWith( "endsub" ) ||
action.startsWith( "call " ) ||
action.startsWith( "#" ) ||
action.startsWith( "\"" );
}
Now, there are CCS statements that are also BALLS statements - "skill", "use", etc. - which translate directly to BALLS. KoLmafia will do preprocessing on some of them - auto-Funkslinging on "item" (which translates to "use"), for example, as discussed elsewhere, or treating pickpocket as "try to steal an item", which will not attempt it, if it thinks the monster has no items. So, if you want to force the BALLS behavior, you can surround the statement with quote. "pickpocket" will pass that statement verbatim in the generated macro, but pickpocket without the quotes may be completely suppressed, if KoLmafia thinks it is pointless.
Generally, you can omit the quotes.
Until a few days ago, simply having a consult script called in your CCS meant that no CCS -> BALLS processing happened for any of your CCS; you could write BALLS statements before you said "consult" and we'd bail on macrofying it. Instead, we'd execute each line of the CCS and, eventually, get to the "consult" line, and call it. Since we'd ignore the BALLS statements - as listed in that method - we'd only do the lines that looked like CCS lines. In many cases, that was fine: if you wrap a "skill XXXX" line in an "if hasskill" and "endif", we'd try to do the skill - and since KoLmafia already suppressed it if you didn't have the skill, it would work as you expected.
I fixed it, in response to another bug, such that we macrofy all the statements up to the "consult", call the consult script, macrofy all the statements following it up to the next consult, and so on. And now, people who mixed BALLS with consult scripts are actually having their BALLS interpreted by KoL itself, with surprising results, perhaps. As this thread shows.