Just a suggestion. Instead of plugins having to keep track of their super hero id and then switching a bool to true and false to keep track if they have the hero or not, why not let the module do that (Still keeping the sh_hero_init() forward, so other heros can do some stuff during that time). Like you could just create a native has_hero(id), to check if a client has a plugin's hero. And for natives that require a hero id, all you would have to do is keep track of which plugin registered which hero, which, last time I looked at your guys code can easily be done
I beleive I did this in a mod I was creating. I just used a const AMX *amx pointer and then scanned through my class table and see if the pointer matched up with the calling plugin's amx.
This way, it's simpler, and avoids other plugins from being able to change other hero data.
Of course this may be bad design :/, please tell me.