public static int DispatchForCritter(this GameObject obj, DispIoBonusList eventObj, DispatcherType dispType,
                                         D20DispatcherKey dispKey)
    {
        if (obj == null || !obj.IsCritter())
        {
            return(0);
        }

        var dispatcher = obj.GetDispatcher();

        if (dispatcher == null)
        {
            return(0);
        }

        if (eventObj == null)
        {
            eventObj = DispIoBonusList.Default;
        }

        dispatcher.Process(dispType, dispKey, eventObj);

        return(eventObj.bonlist.OverallBonus);
    }
 public static int Dispatch10AbilityScoreLevelGet(this GameObject obj, Stat stat, DispIoBonusList arg)
 {
     return(DispatchForCritter(obj, arg, DispatcherType.AbilityScoreLevel, (D20DispatcherKey)(stat + 1)));
 }