In file dialog_altruist.fos
In function void r_Give(Critter& player, Critter@ npc, int val) { }
change few values to YOUR_CURRENT_LVL_CAP:
    case 0:
    {
        int level = player.Stat[ST_LEVEL];
        if(level > YOUR_CURRENT_LVL_CAP-1)
        {
            player.Say(SAY_NORM_ON_HEAD, "Wait, it can't be that good.");
            return;
        }
        level++;
        int exp = level * (level - 1) * 500;
        player.StatBase[ST_EXPERIENCE] += (exp - player.StatBase[ST_EXPERIENCE]);
        return;
    }
    case 1:
    {
        int level = player.Stat[ST_LEVEL];
        if(level > YOUR_CURRENT_LVL_CAP-2)
        {
            player.Say(SAY_NORM_ON_HEAD, "No, wait.");
            return;
        }
        level += 3;
        if(level > YOUR_CURRENT_LVL_CAP)
            level = YOUR_CURRENT_LVL_CAP;
        int exp = level * (level - 1) * 500;
        player.StatBase[ST_EXPERIENCE] += (exp - player.StatBase[ST_EXPERIENCE]);
        return;
    }