Files
tiny-humans-bash/roller.sh
2024-07-25 15:52:03 -05:00

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"