Hey,
So my first suggestion would be to push you towards the Premium Gamfiication Package as this would give you want you need and more "from what i have seen" however it does come at a cost which may not be possible for some. It is possible to do what your after with dev but its not a slick as the above option, i am sure there are other ways but the way i would tackle this would be with the use of roles.
You could create a different role and image for each of the "badges" you want to assign, the actual badge you would store in your assets library, you would then need to create a custom component which you would place in the forum topic page "I believe" which displays the given badge(s) if any of the set roles are granted to that user. I am currently doing this to display a single badge.
Your next step would be to use the api's to identify users that meet your criteria and then grant the role, I know you can grant a role via the api but not 100% if all of your triggers can be done via api but i suspect they can as you can do almost anything with them. You can find all the info on the api's in the REST API area. Sorry i cannot be more specific on the api front, i am still getting to grips with them :)
Thanks