39 lines
757 B
Bash
39 lines
757 B
Bash
#!/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" |