Function DiceNum(s) deeIdx = InStr(s, "d") If deeIdx > 0 Then DiceNum = Int(Left(s, deeIdx - 1)) Else DiceNum = 0 End If End Function Function DiceSides(s) deeIdx = InStr(s, "d") If deeIdx > 0 Then DiceSides = Int(Mid(s, deeIdx + 1)) Else DiceSides = 0 End If End Function Function DiceMod(s) deeIdx = InStr(s, "d") If deeIdx > 0 Then modIdx = InStr(s, "+") If modIdx > 0 Then DiceMod = Int(Mid(s, modIdx + 1)) Else modIdx = InStr(s, "-") If modIdx > 0 Then DiceMod = - Int(Mid(s, modIdx + 1)) Else DiceMod = 0 End If End If Else DiceMod = Int(s) End If End Function Function DiceMin(s) DiceMin = DiceNum(s) + DiceMod(s) End Function Function DiceMax(s) DiceMax = DiceNum(s) * DiceSides(s) + DiceMod(s) End Function Function DiceAvg(s) DiceAvg = DiceNum(s) * (DiceSides(s) + 1) / 2 + DiceMod(s) End Function Function DiceRoll(s) numDice = DiceNum(s) numSides = DiceSides(s) Sum = 0 For i = 1 To numDice Sum = Sum + Int(Rnd * numSides) + 1 Next i DiceRoll = Sum + DiceMod(s) End Function Function AbilityMod(x) AbilityMod = Int(x/2) - 5 End Function