#!/bin/bash
# Skrypt rolldice symulujący rzuty zadaną liczbą kostek zadanego rodzaju,
# odpowiednio do podanych argumentów.
# Przykłady: d6 = jedna sześcienna kostka,
#            2d12 = dwie 12-ścienne kostki,
#            d4 3d8 2d20 = jedna kostka 4-ścienna, 3 kostki 8-ścienne
#                          i 2 kostki 20-ścienne.

rolldie()
{
   dice=$1
   dicecount=1
   sum=0

   # Najpierw dzielimy argumenty na sekwencje MdN.

   if [ -z "$(echo $dice | grep 'd')" ] ; then
     quantity=1
     sides=$dice
   else
     quantity=$(echo $dice | cut -dd -f1)
     if [ -z "$quantity" ] ; then       # Argument na postać dN, a nie N.
       quantity=1
     fi
     sides=$(echo $dice | cut -dd -f2)
   fi

   echo "" ; echo "Rzut. Liczba kostek: $quantity, liczba ścian: $sides."

   # Rzucamy kośćmi...

   while [ $dicecount -le $quantity ] ; do
     roll=$(( ( $RANDOM % $sides ) + 1 ))
     sum=$(( $sum + $roll ))
     echo "  Kostka nr $dicecount, liczba oczek: $roll."
     dicecount=$(( $dicecount + 1 ))
   done

   echo Suma oczek w rzucie kostkami $dice: $sum.
}

while [ $# -gt 0 ] ; do
  rolldie $1
  sumtotal=$(( $sumtotal + $sum ))
  shift
done

echo ""
echo "Całkowita liczba oczek we wszystkich rzutach: $sumtotal."
echo ""
exit 0
