Just if anyone is curious, here are the crit codes for the two classes, if something is handled incorrectly.

The ternary statement (ir ? 2000 : 0) means that if ir is true (aka we have IR buff), then add 2000 (20%) to crit chance, otherwise, add 0.

Dragoon:

Code:
public boolean crit(DRGEvent e)
    {
        if(e.eventType().isAnAction() && e.eventType().potency() > 0)
        {
            //check lsurge
            if(lsurge)
            {
                e.statusMessage += "(Life Surge)";
                
                lsurge = false;
                
                return true;
            }
        }
        return (rng.nextInt(10000) < (critChance + (e.ir()?2000:0)));
    }
Monk:

Code:
public boolean crit(MNKEvent e)
    {
        if(e.eventType().isAnAction() && e.eventType().potency() > 0)
        {
            //check opo autocrit
            if(e.eventType() == MNKEvent.EventType.BS && lastStance == Stance.OPO && e.getTarget().canBackstab)
            {
                e.statusMessage += "(Opo Autocrit)";
                
                return true;
            }
        }
        return (rng.nextInt(10000) < (critChance + (e.ir()?3000:0)) + (e.eventType() == MNKEvent.EventType.TRUE && e.getTarget().canBackstab?500:0));
    }
In the monk one you'll notice the additional chance for TRUE strike to crit, if you can backstab the target.