// return the maximum amount a stat can be modified to relative to the base stat
    public float?getUpperLimit(StatType type)
    {
        StatValue thisStat = this.getStatValue(type);

        // if its null we will try and get the default for this stat
        if (thisStat.upperLimit == null)
        {
            return(type.getDefaultUpperLimit());
        }
        return(thisStat.upperLimit);
    }