''- jumptest.vbs
''- copyright (c) 2001 n2sami@attbi.com

Option Explicit
On Error Resume Next

Sub Usage()
    WScript.Echo vbNewline & "Usage:"
    WScript.Echo vbNewline & "CSCRIPT " & WScript.ScriptName & " diams fuel"
    WScript.Echo vbNewline & "Arguments:"
    WScript.Echo "     diams: the number of diameters from the world surface"
    WScript.Echo "      fuel: 0 | 1"
    WScript.Echo "               0: refined fuel"
    WScript.Echo "               1: unrefined fuel"
    WScript.Echo vbNewline & "Returns:"
    WScript.Echo "         *: ship destroyed"
    WScript.Echo "         S: safe jump"
    WScript.Echo "   M.1.2.3: misjump"
    WScript.Echo "               1: distance in parsecs"
    WScript.Echo "               2: direction"
    WScript.Echo "               3: time in weeks"
    WScript.Echo vbNewline & "Example:"
    WScript.Echo vbNewline & "CSCRIPT " & WScript.ScriptName & " 100 0"
    WScript.Echo "M.12.3.4"
    WScript.Quit 1
End Sub

''- die rolling simulation
Function DieRoll(dice, sides)
    Randomize Timer
    Dim x, result
    For x = 1 To dice
        result = result + Int(Rnd * sides + 1)
    Next
    DieRoll = result
End Function

''- test for jump results
Function CheckJump(diameters, unrefined)
    Dim result
    result = DieRoll(2, 6)
    If unrefined Then
        result = result + 1
    End If
    If diameters < 10 Then
        result = result + 15
    ElseIf diameters < 100 Then
        result = result + 5
    End If
    If result > 15 Then
        CheckJump = "*"
    ElseIf result > 12 Then
        CheckJump = "M." &  _
        DieRoll(DieRoll(1, 6), 6) & "." & DieRoll(1, 6) & "." & DieRoll(1, 6)
    Else
        CheckJump = "S"
    End If
End Function

''- main body
Dim diam, fuel
diam = WScript.Arguments(0)
If Err.Number Then Usage()
If Not IsNumeric(diam) Then Usage()
fuel = WScript.Arguments(1)
If Err.Number Then Usage()
If Not IsNumeric(fuel) Then Usage()
WScript.Echo CheckJump(diam, fuel)
WScript.Quit 0