just a question.

are these values (5% miss, 10% dodge, 10% parry, 10% block, 10% crit, 15% hit) just ballpark values or is that the real chance ?

iv'e rewritten this in vb

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Randomize()

Dim r As New Random

Dim rn As Integer

Dim miss, dodge, parry, block, crit, hit As Integer

For a As Integer = 1 To 1000000

rn = r.Next(1, 100)

If r.Next(1, 100) <= 5 Then

miss += 1

ElseIf r.Next(1, 100) <= 10 Then

dodge += 1

ElseIf r.Next(1, 100) <= 10 Then

parry += 1

ElseIf r.Next(1, 100) <= 10 Then

block += 1

ElseIf r.Next(1, 100) <= 15 Then

crit += 1

Else

hit += 1

End If

Next

TextBox1.Text &= "non-independent hit calculation" & vbCrLf

TextBox1.Text &= "5 miss: " & miss & " : " & Math.Round(miss / 1000000 * 100, 2) & " ~ " & Math.Round(miss / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "10 dodge: " & dodge & " : " & Math.Round(dodge / 1000000 * 100, 2) & " ~ " & Math.Round(dodge / (1000000 - miss) * 100, 2) & vbCrLf

TextBox1.Text &= "10 parry: " & parry & " : " & Math.Round(parry / 1000000 * 100, 2) & " ~ " & Math.Round(parry / (1000000 - miss - dodge) * 100, 2) & vbCrLf

TextBox1.Text &= "10 block: " & block & " : " & Math.Round(block / 1000000 * 100, 2) & " ~ " & Math.Round(block / (1000000 - miss - parry - dodge) * 100, 2) & vbCrLf

TextBox1.Text &= "10 crit: " & crit & " : " & Math.Round(crit / 1000000 * 100, 2) & " ~ " & Math.Round(crit / (1000000 - miss - parry - block - dodge) * 100, 2) & vbCrLf

TextBox1.Text &= "15 hit: " & hit & " : " & Math.Round(hit / 1000000 * 100, 2) & " ~ " & Math.Round(hit / (1000000 - miss - parry - block - crit - dodge) * 100, 2) & vbCrLf

TextBox1.Text &= vbCrLf

TextBox1.Text &= "we get " & crit & " critical hits on 1000000 hits, thats " & Math.Round(crit / 1000000 * 100, 2) & vbCrLf

miss = 0

dodge = 0

parry = 0

block = 0

crit = 0

hit = 0

For a As Integer = 1 To 1000000

rn = r.Next(1, 100)

If rn <= 5 Then

miss += 1

ElseIf rn <= (5 + 10) Then '15

dodge += 1

ElseIf rn <= (5 + 10 + 10) Then '25

parry += 1

ElseIf rn <= (5 + 10 + 10 + 10) Then '35

block += 1

ElseIf rn <= (5 + 10 + 10 + 10 + 15) Then '50

crit += 1

Else

hit += 1

End If

Next

TextBox1.Text &= "independent hit calculation" & vbCrLf

TextBox1.Text &= "5 miss: " & miss & " : " & Math.Round(miss / 1000000 * 100, 2) & " ~ " & Math.Round(miss / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "10 dodge: " & dodge & " : " & Math.Round(dodge / 1000000 * 100, 2) & " ~ " & Math.Round(dodge / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "10 parry: " & parry & " : " & Math.Round(parry / 1000000 * 100, 2) & " ~ " & Math.Round(parry / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "10 block: " & block & " : " & Math.Round(block / 1000000 * 100, 2) & " ~ " & Math.Round(block / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "10 crit: " & crit & " : " & Math.Round(crit / 1000000 * 100, 2) & " ~ " & Math.Round(crit / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= "15 hit: " & hit & " : " & Math.Round(hit / 1000000 * 100, 2) & " ~ " & Math.Round(hit / (1000000) * 100, 2) & vbCrLf

TextBox1.Text &= vbCrLf

TextBox1.Text &= "we get " & crit & " critical hits on 1000000 hits, thats " & Math.Round(crit / 1000000 * 100, 2) & vbCrLf

End Sub

## Bookmarks