Initial commit.
This commit is contained in:
39
roller.sh
Normal file
39
roller.sh
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
roll_dice() {
|
||||
local diceString="${1,,}"
|
||||
local modifier="${2:-0}"
|
||||
local number
|
||||
local sides
|
||||
|
||||
if [[ "${diceString}" != "${diceString//d/}" ]]; then
|
||||
|
||||
IFS='d' read -r number sides <<< "$diceString"
|
||||
fi
|
||||
|
||||
if [[ "${diceString:0:1}" == "d" ]]; then
|
||||
number=1
|
||||
sides="${diceString//d/}"
|
||||
fi
|
||||
number=${number:-1}
|
||||
sides=${sides:-6}
|
||||
|
||||
if [[ "$modifier" =~ ^[+-]?[0-9]+$ ]]; then
|
||||
modifier=$((modifier))
|
||||
fi
|
||||
|
||||
randomNumbers=$(shuf -i 1-$sides -n $number | tr '\n' ' ')
|
||||
IFS=' ' read -r -a numbersArray <<< "$randomNumbers"
|
||||
joinedNumbers=$(IFS=,; echo "${numbersArray[*]}")
|
||||
|
||||
sum=0
|
||||
for num in "${numbersArray[@]}"; do
|
||||
sum=$((sum + num))
|
||||
done
|
||||
sum=$((sum + modifier))
|
||||
|
||||
echo "Dice rolls: $joinedNumbers Modifier: $modifier"
|
||||
echo "Total: $sum"
|
||||
}
|
||||
|
||||
roll_dice "$1" "$2"
|
||||
Reference in New Issue
Block a user