I've added one to the code. Basically, the logic goes like this: there's a Critical Window, which I saved on the enemy. I made it 75. Then, when the bullet is generated, I create a random value between 0 and 100 and save it to an instance variable. I compare that to the enemy's CritWindow, and if it's greater than the window, I set a variable on the bullet IsItCrit from 0 to 1.
Then, for the damage calculation, I do the following:
Bullet.bulletDamage+Bullet.bulletDamage*(Bullet.IsItCrit*Enemy.CritMultiplier)-Player.Defense[/code:59ong6bk]
What that does is take the base bullet damage and add to it the bullet damage * the IsItCrit (which will determine whether you're adding nothing or a crit value to the check) and then mulitplying IsItCrit * the CritMultiplier I also added to the enemy. I'm sure someone else could clean it up, but that's how I did it in the CapX file I linked you. I'm pretty sure it works right.
Oh, and the evade could be calculated the same way, multiplying the damage by either a 0 or 1 depending on a randomly generated number. Hopefully this is what you need!