def p_factors(avg_slope, ag_lscp):
    """
    Given the average slope, calculates the P Factor for rural land use types.

    Original at Class1.vb@1.3.0:4393-4470
    """
    if 0 <= avg_slope < 2.1:
        ag_p = 0.52
    elif 2.1 <= avg_slope < 7.1:
        ag_p = 0.45
    elif 7.1 <= avg_slope < 12.1:
        ag_p = 0.52
    elif 12.1 <= avg_slope < 18.1:
        ag_p = 0.66
    else:
        ag_p = 0.74

    return [
        ag_lscp.hp_p,    # Hay/Pasture
        ag_lscp.crop_p,  # Cropland
        ag_p,  # Forest
        0.1,   # Wetland
        0.1,   # Disturbed
        0.2,   # Turf Grass
        ag_p,  # Open Land
        ag_p,  # Bare Rock
        ag_p,  # Sandy Areas
        1.0,   # Unpaved
        0, 0, 0, 0, 0, 0  # Urban Land Use Types
    ]