your explosion could use some work...
make the velocity of the particles get smaller while they fly out, it makes it look more like an explosion I think. It will need LOTS of tweaking that way though, until it looks real good:

void explo_event(PARTICLE* p)
{
p.alpha -= time_step*5;
vec_normalize(p.vel_x,p.alpha*p.skill_a);
p.size += time_step*2;
if(p.alpha <= 0)p.lifespan = 0;
}

void explode(PARTICLE* p)
{
...
p.skill_a = .5;
p.event = explo_event;
}

Other than that, very impressive coding. I'd really like to know how you got the blue beam working. is it just s streched sprite/particle? cause it looks real nice, better than mine for sure :P
Nice ragdolls, they look much better now!


~"I never let school interfere with my education"~
-Mark Twain