User:Nod/Auto Character Generator And Dice Roller
'This is source code for a nicely formatted automatic character generator for use on Windows (Yeah, I know...). 'Copy and paste this into a plain text document like notepad and save as chargen.vbs. 'Open a command windows and cd to the directory where this file resides. 'Type the below. 'For help: 'cscript chargen.vbs 'To roll a new character: 'cscript chargen.vbs new 'To roll a die (Only recognizes one die at a time): 'cscript chargen.vbs <integer of the number of sides on the die you would like to roll> 'Example: cscript chargen.vbs 12
On Error Resume Next
Dim die
Set die = Wscript.Arguments
'Wscript.Echo Err.Number & " - " & Err.description
If die.Count = 0 Then
Wscript.Echo "To roll a die, type the number of sides for that die 2-20" Wscript.Echo "To roll a character, type ""new""" Wscript.Quit 0
End If
Cool = Nothing
'New change to get the modifier for each stat by dividing by the number of dice used to roll? 'Seems like the outcome would basically the same if the player just rolled a D12... If die(0) = "new" Then
Wscript.Echo "MAIN STATS" PhysicalPower = Int(stats(Cool)) PhysicalQuickness = Int(stats(Cool)) PhysicalToughness = Int(stats(Cool)) PhysicalProwess = Int(stats(Cool)) MentalPower = Int(stats(Cool)) MentalQuickness = Int(stats(Cool)) MentalToughness = Int(stats(Cool)) MentalProwess = Int(stats(Cool)) CommonSense = Int(stats(Cool)) SixthSense = Int(stats(Cool)) Social = Int(stats(Cool)) Cool = "coolness" Coolness = Int(stats(Cool))
Wscript.Echo " ---Physical--- ---Mental---" Wscript.Echo " Power " & PhysicalPower & " " & MentalPower Wscript.Echo " Quick " & PhysicalQuickness & " " & MentalQuickness Wscript.Echo " Tough " & PhysicalToughness & " " & MentalToughness Wscript.Echo " Prowess " & PhysicalProwess & " " & MentalProwess
Wscript.Echo ""
Wscript.Echo "COMBAT (DERIVED) STATS"
PhysicalHit = Int((PhysicalProwess + ((PhysicalQuickness + CommonSense) / 2)) / 2) PhysicalDamage = Int((PhysicalPower + ((PhysicalProwess + CommonSense) / 2)) / 2) PhysicalSoak = Int((PhysicalToughness + ((PhysicalQuickness + CommonSense) / 2)) / 2) PhysicalHitRange = Int((PhysicalProwess + ((PhysicalQuickness + PhysicalPower) / 2)) / 2) PhysicalDamageRange = Int((PhysicalQuickness + ((PhysicalProwess + PhysicalPower) / 2)) / 2) PhysicalSoakRange = Int((PhysicalToughness + ((PhysicalProwess + PhysicalQuickness) / 2)) / 2) MentalHit = Int((MentalProwess + ((MentalQuickness + SixthSense) / 2)) / 2) MentalDamage = Int((MentalPower + ((MentalProwess + SixthSense) / 2)) / 2) MentalSoak = Int((MentalToughness + ((MentalQuickness + SixthSense) / 2)) / 2) MentalHitRange = Int((MentalQuickness + ((MentalProwess + MentalPower) / 2)) / 2) MentalDamageRange = Int((MentalPower + ((MentalProwess + MentalQuickness) / 2)) / 2) MentalSoakRange = Int((MentalProwess + ((MentalToughness + MentalQuickness) / 2)) / 2) PhysicalDodge = Int((PhysicalQuickness + ((PhysicalProwess + SixthSense) / 2)) / 2) PhysicalGrip = Int((((PhysicalPower + PhysicalToughness) / 3) + ((PhysicalSoak + PhysicalDodge) / 4))) PhysicalCrit = Int((PhysicalProwess + ((PhysicalPower + SixthSense) / 2)) / 2) MentalDodge = Int((MentalQuickness + ((MentalProwess + CommonSense) / 2)) / 2) MentalGrip = Int((((MentalPower + MentalToughness) / 3) + ((MentalSoak + MentalDodge) / 4))) MentalCrit = Int((MentalProwess + ((MentalPower + CommonSense) / 2)) / 2)
'PhysicalHit = Int((PhysicalProwess + ((PhysicalQuickness + CommonSense) / 2))/3) 'PhysicalDamage = Int((PhysicalPower + ((PhysicalProwess + CommonSense) / 2))/3) 'PhysicalSoak = Int((PhysicalToughness + ((PhysicalQuickness + CommonSense) / 2))/3) 'PhysicalHitRange = Int((PhysicalProwess + ((PhysicalQuickness + PhysicalPower) / 2))/3) 'PhysicalDamageRange = Int((PhysicalQuickness + ((PhysicalProwess + PhysicalPower) / 2))/3) 'PhysicalSoakRange = Int((PhysicalToughness + ((PhysicalProwess + PhysicalQuickness) / 2))/3) 'MentalHit = Int((MentalProwess + ((MentalQuickness + SixthSense) / 2))/3) 'MentalDamage = Int((MentalPower + ((MentalProwess + SixthSense) / 2))/3) 'MentalSoak = Int((MentalToughness + ((MentalQuickness + SixthSense) / 2))/3) 'MentalHitRange = Int((MentalQuickness + ((MentalProwess + MentalPower) / 2))/3) 'MentalDamageRange = Int((MentalPower + ((MentalProwess + MentalQuickness) / 2))/3) 'MentalSoakRange = Int((MentalProwess + ((MentalToughness + MentalQuickness) / 2))/3) 'PhysicalDodge = Int((PhysicalQuickness + ((PhysicalProwess + SixthSense) / 2))/3) 'PhysicalGrip = Int((((PhysicalPower + PhysicalToughness) / 2) + ((PhysicalSoak + PhysicalDodge) / 3))/4) 'PhysicalCrit = Int((PhysicalProwess + ((PhysicalPower + SixthSense) / 2))/3) 'MentalDodge = Int((MentalQuickness + ((MentalProwess + CommonSense) / 2))/3) 'MentalGrip = Int((((MentalPower + MentalToughness) / 2) + ((MentalSoak + MentalDodge) / 3))/4) 'MentalCrit = Int((MentalProwess + ((MentalPower + CommonSense) / 2))/3)
Wscript.Echo ""
Wscript.Echo " Dodge " & PhysicalDodge & " " & MentalDodge Wscript.Echo " Grip " & PhysicalGrip & " " & MentalGrip Wscript.Echo " Crit " & PhysicalCrit & " " & MentalCrit
Wscript.Echo ""
Wscript.Echo " ----Melee--Range-- --Melee--Range----" Wscript.Echo " Hit " & PhysicalHit & " " & PhysicalDamage & " " & MentalHit & " " & MentalDamage Wscript.Echo " Damage " & PhysicalDamage & " " & PhysicalDamageRange & " " & MentalDamage & " " & MentalDamageRange Wscript.Echo " Soak " & PhysicalSoak & " " & PhysicalSoakRange & " " & MentalSoak & " " & MentalSoakRange
Wscript.Echo ""
Wscript.Echo "OTHER STATS"
Wscript.Echo ""
Wscript.Echo " Common Sense " & CommonSense Wscript.Echo " Sixth Sense " & SixthSense Wscript.Echo " Coolness " & Int(Coolness / 3) Wscript.Echo " Social " & Social
Wscript.Echo ""
End If
Function stats(coolStat)
If coolStat = "coolness" Then roll1 = Int(Dice12) roll2 = Int(Dice12) roll3 = Int(Dice12) roll4 = Int(Dice12) allRolls = Array(roll1, roll2, roll3, roll4) Else roll1 = Int(Dice12) roll2 = Int(Dice12) allRolls = Array(roll1, roll2) If roll1 = 1 And roll2 = 1 Then finalRoll = 25 stats = finalRoll Exit Function End If End If For Each eachRoll in allRolls While eachRoll < 3 eachRoll = Int(Dice12) Wend finalRoll = Int(finalRoll + eachRoll) Next stats = finalroll 'New change (divide final roll by 2) to use only one D12 rather than 2 for the final stat result 'stats = Int(finalroll/2)
End Function
If die(0) = "2" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice2) If die(1) Then Wscript.Echo Int(Dice2 * die(1))
End If
If die(0) = "3" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice3) If die(1) Then Wscript.Echo Int(Dice3 * die(1))
End If
If die(0) = "4" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice4) If die(1) Then Wscript.Echo Int(Dice4 * die(1))
End If
If die(0) = "5" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice2 + Dice3) If die(1) Then Wscript.Echo Int((Dice2 + Dice3) * die(1))
End If
If die(0) = "6" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice6) If die(1) Then Wscript.Echo Int(Dice6 * die(1))
End If
If die(0) = "7" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice3 + Dice4) If die(1) Then Wscript.Echo Int((Dice3 + Dice4) * die(1))
End If
If die(0) = "8" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice8) If die(1) Then Wscript.Echo Int(Dice8 * die(1))
End If
If die(0) = "9" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice4 + (Dice2 + Dice3)) If die(1) Then Wscript.Echo Int((Dice4 + (Dice2 + Dice3)) * die(1))
End If
If die(0) = "10" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice10) If die(1) Then Wscript.Echo Int(Dice10 * die(1))
End If
If die(0) = "11" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice3 + Dice2) + Dice6) If die(1) Then Wscript.Echo Int(((Dice3 + Dice2) + Dice6) * die(1))
End If
If die(0) = "12" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice12) If die(1) Then Wscript.Echo Int(Dice12 * die(1))
End If
If die(0) = "13" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice3 + Dice4) + Dice6) If die(1) Then Wscript.Echo Int(((Dice3 + Dice4) + Dice6) * die(1))
End If
If die(0) = "14" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice3 + Dice4) + (Dice3 + Dice4)) If die(1) Then Wscript.Echo Int(((Dice3 + Dice4) + (Dice3 + Dice4)) * die(1))
End If
If die(0) = "15" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice3 + Dice4) + Dice8) If die(1) Then Wscript.Echo Int(((Dice3 + Dice4) + Dice8) * die(1))
End If
If die(0) = "16" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice8 + Dice8) If die(1) Then Wscript.Echo Int((Dice8 + Dice8) * die(1))
End If
If die(0) = "17" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice8 + (Dice4 + (Dice2 + Dice3))) If die(1) Then Wscript.Echo Int((Dice8 + (Dice4 + (Dice2 + Dice3))) * die(1))
End If
If die(0) = "18" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice4 + (Dice2 + Dice3)) + (Dice4 + (Dice2 + Dice3))) If die(1) Then Wscript.Echo Int(((Dice4 + (Dice2 + Dice3)) + (Dice4 + (Dice2 + Dice3))) * die(1))
End If
If die(0) = "19" Then
If die(0) and die(1) = Null Then Wscript.Echo Int((Dice4 + (Dice2 + Dice3)) + Dice10) If die(1) Then Wscript.Echo Int(((Dice4 + (Dice2 + Dice3)) + Dice10) * die(1))
End If
If die(0) = "20" Then
If die(0) and die(1) = Null Then Wscript.Echo Int(Dice20) If die(1) Then Wscript.Echo Int(Dice20 * die(1))
End If
Function Dice2 Dim Die2 Randomize Die2 = Int((2 * Rnd) + 1) 'Wscript.Echo Die2 Dice2 = Die2 Set Die2 = Nothing End Function
Function Dice3 Dim Die3 Randomize Die3 = Int((3 * Rnd) + 1) 'Wscript.Echo Die3 Dice3 = Die3 Set Die3 = Nothing End Function
Function Dice4 Dim Die4 Randomize Die4 = Int((4 * Rnd) + 1) 'Wscript.Echo Die4 Dice4 = Die4 Set Die4 = Nothing End Function
Function Dice6 Dim Die6 Randomize Die6 = Int((6 * Rnd) + 1) 'Wscript.Echo Die6 Dice6 = Die6 Set Die6 = Nothing End Function
Function Dice8 Dim Die8 Randomize Die8 = Int((8 * Rnd) + 1) 'Wscript.Echo Die8 Dice8 = Die8 Set Die8 = Nothing End Function
Function Dice10 Dim Die10 Randomize Die10 = Int((10 * Rnd) + 1) 'Wscript.Echo Die10 Dice10 = Die10 Set Die10 = Nothing End Function
Function Dice12 Dim Die12 Randomize Die12 = Int((12 * Rnd) + 1) 'Wscript.Echo Die12 Dice12 = Die12 Set Die12 = Nothing End Function
Function Dice20 Dim Die20 Randomize Die20 = Int((20 * Rnd) + 1) 'Wscript.Echo Die20 Dice20 = Die20 Set Die20 = Nothing End Function
Error.Clear
Set die = Nothing