Getting to this a little late, but here is some info.
Whirlwind is an AbilityStatus so either AbilityStatus('Primary') or AbiliatyStatus('Secondary'). Here are a couple snippets i use for working with special abilities.
function have_ability(name){
    return Orion.Contains(Orion.GetCurrentAbilityNames(), name);
}
function ability_status(name){
    const abilities = Orion.GetCurrentAbilityNames();
    if(Orion.AbilityStatus('Primary') && abilities[0].match(new RegExp(name, 'i')))
        return true;
    else if(Orion.AbilityStatus('Secondary') && abilities[1].match(new RegExp(name, 'i')))
        return true;
    else
        return false;
}
function use_ability(name){
    const abilities = Orion.GetCurrentAbilityNames();
    const primary = Orion.AbilityStatus('Primary');
    const secondary = Orion.AbilityStatus('Secondary');
    const regex = new RegExp(name, 'i');
    if(abilities[0].match(regex) && !primary){
        Orion.SetTimer('ability', 500);
        Orion.UseAbility('Primary', true);
        Orion.Wait(200);
    } else if(abilities[1].match(regex) && !secondary){
        Orion.SetTimer('ability', 500);
        Orion.UseAbility('Secondary', true);
        Orion.Wait(200);
    } else {
        return false;
    }
}
I set a timer when using an ability so i can calculate the mana cost of abilities, since if you use an ability within 3 seconds of another ability, the cost is doubled.