After that, I refined it a bit with the help of Funnyman and BTB in Chat, and decided to share it here.

Download Here
The only weapons this isn't really applicable for are those that follow a different formula than the default one that aren't named Omega Weapon.
Damage Coefficient is specifically for the Omega Weapon formula. If you select no and plug something in there (which, you have to plug something in there or the program will yell at you), it simply won't be used in the calculation.
As you can see, variance and multipliers are both included.
This is code that I plan to probably expand on at a later date. As I said it started as a 10 minute job but kinda branched out a little from there.
The calculator itself is coded in Visual Basic, and if anyone wants me to, I don't really have a problem with releasing the source code either.
Feel free to let me know what you guys think.
Source Code
Spoiler
Public Class Form1
Dim intMaxHP As Integer = 1 'Initialize
Dim intCurHP As Integer = 1 'integers
Dim intLvl As Integer = 1 'to
Dim intVgr As Integer = 1 '1
Dim intSta As Integer = 1 'to
Dim intBat As Integer = 1 'prevent
Dim intDef As Integer = 1 'DivideByZero
Dim intCoe As Integer = 1 'exceptions
Dim intDmg As Integer = 1
Dim intVarMin As Integer
Dim intVarAvg As Integer
Dim intVarMax As Integer
Dim intMult As Integer = 0
Dim boolDef As Boolean = True
Dim boolSafe As Boolean = False
Dim boolOmega As Boolean = False
Dim boolPower As Boolean = False
Dim boolBserk As Boolean = False
Dim boolMorph As Boolean = False
Dim boolJump As Boolean = False
Dim boolJumpSpear As Boolean = False
Dim boolThrow As Boolean = False
Dim boolCrit As Boolean = False
Dim boolValiant As Boolean = False
Private Sub Label7_Click(sender As Object, e As EventArgs) Handles lblOutputMin.Click
End Sub
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
If IsNumeric(txtMaxHP.Text) Then
intMaxHP = Convert.ToInt32(txtMaxHP.Text) 'convert
If IsNumeric(txtCurHP.Text) Then
intCurHP = Convert.ToInt32(txtCurHP.Text) 'text
If IsNumeric(txtLvl.Text) Then
intLvl = Convert.ToInt32(txtLvl.Text) 'boxes
If IsNumeric(txtVig.Text) Then
intVgr = Convert.ToInt32(txtVig.Text) 'to
If IsNumeric(txtStam.Text) Then
intSta = Convert.ToInt32(txtStam.Text) 'usable
If IsNumeric(txtBat.Text) Then
intBat = Convert.ToInt32(txtBat.Text) 'numbers
If IsNumeric(txtCoe.Text) Then
intCoe = Convert.ToInt32(txtCoe.Text) 'for
If IsNumeric(txtDef.Text) Then
intDef = Convert.ToInt32(txtDef.Text) 'calculations
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'yell
txtDef.Clear()
txtDef.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'at
txtCoe.Clear()
txtCoe.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'user
txtBat.Clear()
txtBat.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'for
txtStam.Clear()
txtStam.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'not
txtVig.Clear()
txtVig.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'entering
txtLvl.Clear()
txtLvl.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'valid
txtCurHP.Clear()
txtCurHP.Focus()
End If
Else
MsgBox("You did not enter a numeric value.", , "Invalid Input") 'input
txtMaxHP.Clear()
txtMaxHP.Focus()
End If
intDmg = 2 * intVgr + intBat + (((intLvl ^ 2) * intVgr / 16) * (intBat / 16)) / 24 'basic damage formula
If chkCrit.Checked = True Then 'if Critical Hit is checked, set boolCrit to True
boolCrit = True
End If
If chkBserk.Checked = True Then 'if Bserk is checked, set boolBserk to True
boolBserk = True
End If
If chkMorph.Checked = True Then 'if Morph is checked, set boolMorph to True
boolMorph = True
End If
If chkJump.Checked = True Then 'if Jump is checked, set boolJump to True
boolJump = True
End If
If chkJumpSpear.Checked = True Then 'if Jump (Spear) is checked, set boolJumpSpear to True
boolJumpSpear = True
End If
If chkThrow.Checked = True Then 'if Throw is checked, set boolThrow to True
boolThrow = True
End If
If chkPower.Checked = True Then 'if Power Glove is checked, set boolPower to True
boolPower = True
End If
If chkSafe.Checked = True Then 'if Safe is checked, set boolSafe to True
boolSafe = True
End If
If chkValiant.Checked = True Then 'if Ignore Defense is checked, then ignore defense and Safe check
boolDef = False
boolSafe = False
boolValiant = True
End If
If chkOmega.Checked = True Then 'if Omega Weapon is checked, ignore defense and Safe check, turn off all multipliers besides Power Glove, and use Omega Weapon formula
boolDef = False
boolOmega = True
boolSafe = False
boolBserk = False
boolMorph = False
boolJump = False
boolJumpSpear = False
boolThrow = False
boolCrit = False
End If
If boolPower = True Then
intDmg *= 1.25
End If
If boolValiant = True Then
intDmg += (intMaxHP - intCurHP)
End If
If boolOmega = True Then 'if boolOmega is True, use Omega Weapon formula
intDmg = intDmg * (intLvl + (2 * intSta)) 'Step 1
intDmg = intDmg * ((intCurHP / 256) + 1) / ((intMaxHP / 256) + 1) 'Step 2
intDmg = (intDmg / 128) + 1 'Step 3
intDmg = intDmg + (intSta * intCoe) 'Step 4
End If
If boolDef = True Then
intDmg = (intDmg * (255 - intDef) / 256) + 1
End If
If boolSafe = True Then
intDmg = (intDmg * 170 / 256) + 1
End If
If boolCrit = True Then 'if Critical Hit is checked, increment multiplier by 2
intMult += 2
End If
If boolBserk = True Then 'if Bserk is checked, increment multiplier by 1
intMult += 1
End If
If boolMorph = True Then 'if Morph is checked, increment multiplier by 1
intMult += 1
End If
If boolJump = True Then 'if Jump is checked, increment multiplier by 1
intMult += 1
End If
If boolJumpSpear = True Then 'if Jump (Spear) is checked, increment multiplier by 2
intMult += 2
End If
If boolThrow = True Then 'if Throw is checked, increment multiplier by 2
intMult += 2
End If
intDmg *= ((intMult * 0.5) + 1)
intVarMin = intDmg * (224 / 256) 'minimum damage variance (lowest damage)
intVarAvg = intDmg * (240 / 256) 'average damage variance (average damage)
intVarMax = intDmg * (255 / 256) 'maximum damage variance (maximum damage)
lblOutputMin.Text = "Minimum Damage: " & intVarMin 'output statement for minimum damage variance (lowest damage)
lblOutputAvg.Text = "Average Damage: " & intVarAvg 'output statement for average damage variance (average damage)
lblOutputMax.Text = "Maximum Damage: " & intVarMax 'output statement for maximum damage variance (maximum damage)
intDmg = 0 'reset damage count to avoid snowballing values
intMult = 0 'reset mult for the same reason as damage
btnClear.Enabled = True
boolDef = True 'reset
boolSafe = False 'booleans
boolOmega = False 'to
boolPower = False 'default values
boolBserk = False
boolMorph = False
boolJump = False
boolJumpSpear = False
boolThrow = False
boolCrit = False
boolValiant = False
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
txtMaxHP.Clear()
txtCurHP.Clear()
txtLvl.Clear()
txtVig.Clear()
txtStam.Clear()
txtBat.Clear()
txtCoe.Clear()
txtDef.Clear()
lblOutputMin.Text = "Minimum Damage: "
lblOutputAvg.Text = "Average Damage: "
lblOutputMax.Text = "Maximum Damage: "
txtMaxHP.Focus()
boolDef = True 'reset
boolSafe = False 'booleans
boolOmega = False 'to
boolPower = False 'default values
boolBserk = False
boolMorph = False
boolJump = False
boolJumpSpear = False
boolThrow = False
boolCrit = False
boolValiant = False
chkSafe.Checked = False 'uncheck
chkBserk.Checked = False 'all
chkPower.Checked = False 'checkboxes
chkOmega.Checked = False
chkValiant.Checked = False
chkMorph.Checked = False
chkJump.Checked = False
chkJumpSpear.Checked = False
chkThrow.Checked = False
chkCrit.Checked = False
btnClear.Enabled = False 'disable clear button
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Close()
End Sub
End ClassThis post has been edited by Advent: 01 February 2015 - 03:41 PM









