Have a look at this Rules example (in Rules export format):
{ "rules_grant_a_new_badge" : {
"LABEL" : "Grant a new badge",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "userpoints_rules", "rules", "user_badges", "rules_conditional" ],
"ON" : { "userpoints_event_points_awarded_after" : [] },
"DO" : [
{ "userpoints_rules_get_current_points" : {
"USING" : { "user" : [ "site:current-user" ], "tid" : "all" },
"PROVIDE" : { "loaded_points" : { "total_points" : "Number of points in all categories together" } }
}
},
{ "CONDITIONAL" : [
{
"IF" : { "NOT data_is" : { "data" : [ "total-points" ], "op" : "\u003C", "value" : "50" } },
"DO" : [
{ "add_badge_by_name" : { "badge" : "1", "user" : [ "userpoints-transaction:user" ] } }
]
}
]
}
]
}
}
It does retrieve, as the very first Rules Action (not Rules Condition!) the current amount of user points of a user. If the amount is at least 50, it will grant the user badge.
In this example I'm using the Conditional Rules module. By using this module, you can consolidate the logic for various user badges in a single rule, e.g bronze for 50 points, silver for 500 points, gold for 5000 points. Though you could also rework the Rules Action to performing Rules Components (in which you add the appropriate Rules Conditions), so that you don't need this extra module. For more details on that, refer to the answer to "What's the alternative to using the Conditional Rules module?".
The clue to make this rule work is the very first Rules Action "Load user points of a user". That's the alternative (work around?) for something like a missing Rules Condition to "check the current user points for a user".