Classes-training.rpy is insanely big and complex, considering that it just handles ST and a very small part of schools.
def __init__(self, mod=None, min=None, max=None, props=None, flags=None, traits=None, noTraits=None, effect=None, noEffect=None, funcs=None):
"""
Creates a new PytStatCheckCheck instance.
mod = A condition dict to match stats or skills.
min = A condition dict to match minimum stats.
max = A condition dict to match maximum stats.
props = A condition dict to match character properties.
flags = A condition dict to match flags.
traits = A list of traits needed.
noTraits = A list of traits that aren't wanted.
effect = A list of effects needed.
noEffect = A list of effects that aren't watned.
funcs = A list of functions to call.
mod, min, max, props and flags shoud be formatted as:
{
"lt": An object of {"stat": number} keys to match a < condition.
"le": An object of {"stat": number} keys to match a <= condition.
"eq": An object of {"stat": number} keys to match a == condition.
"ne": An object of {"stat": number} keys to match a != condition.
"ge": An object of {"stat": number} keys to match a >= condition.
"gt": An object of {"stat": number} keys to match a > condition.
And I'm not a fan of checking conditions using special keys, it works much better in quests system where you can just pass usual condition string...