roll_tor.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/bin/bash
  2. # Defaults
  3. FEAT_COUNT=1
  4. SUCCESS_COUNT=0
  5. # Help function
  6. show_help() {
  7. echo "Usage: $0 [FEAT_DICE] [SUCCESS_DICE]"
  8. echo ""
  9. echo "Arguments:"
  10. echo " FEAT_DICE Number of 1d12 Feat Dice to roll (default: 1)"
  11. echo " SUCCESS_DICE Number of 1d6 Success Dice to roll (default: 0)"
  12. echo ""
  13. echo "Options:"
  14. echo " -h, --help Show this help message"
  15. echo ""
  16. echo "Examples:"
  17. echo " $0 # Rolls 1 Feat Die"
  18. echo " $0 1 3 # Rolls 1 Feat Die and 3 Success Dice"
  19. echo " $0 2 0 # Rolls 2 Feat Dice"
  20. exit 0
  21. }
  22. # Check for help flag
  23. if [[ "$1" == "-h" || "$1" == "--help" ]]; then
  24. show_help
  25. fi
  26. # Check for arguments
  27. if [[ "$1" =~ ^[0-9]+$ ]]; then
  28. FEAT_COUNT=$1
  29. if [[ "$2" =~ ^[0-9]+$ ]]; then
  30. SUCCESS_COUNT=$2
  31. fi
  32. fi
  33. # Colors and formatting
  34. BOLD='\033[1m'
  35. RED='\033[31m'
  36. GREEN='\033[32m'
  37. CYAN='\033[36m' # Using Cyan for Gandalf as it's bright/distinct
  38. RESET='\033[0m'
  39. # Function to generate a random number between 1 and max
  40. roll() {
  41. local max=$1
  42. # Read 2 bytes from /dev/urandom, convert to decimal, modulo max, add 1
  43. # This provides better randomness than $RANDOM
  44. val=$(od -An -N2 -tu2 /dev/urandom)
  45. echo $(( (val % max) + 1 ))
  46. }
  47. gum spin --spinner moon --title "🎲 Rolling for The One Ring..." -- sleep 1
  48. echo ""
  49. TOTAL=0
  50. # Roll Feat Dice (1d12)
  51. if [ "$FEAT_COUNT" -gt 0 ]; then
  52. echo -n -e "Feat Dice (${FEAT_COUNT}d12): "
  53. for ((i=0; i<FEAT_COUNT; i++)); do
  54. RESULT=$(roll 12)
  55. ((TOTAL+=RESULT))
  56. if [ "$RESULT" -eq 1 ]; then
  57. # Eye of Mordor
  58. echo -n -e "[ ${BOLD}${RED}1 (EYE)${RESET} ] "
  59. elif [ "$RESULT" -eq 12 ]; then
  60. # Gandalf
  61. echo -n -e "[ ${BOLD}${CYAN}12 (GANDALF)${RESET} ] "
  62. else
  63. echo -n "[ $RESULT ] "
  64. fi
  65. done
  66. echo ""
  67. fi
  68. # Roll Success Dice (1d6)
  69. if [ "$SUCCESS_COUNT" -gt 0 ]; then
  70. echo -n -e "Success Dice (${SUCCESS_COUNT}d6): "
  71. for ((i=0; i<SUCCESS_COUNT; i++)); do
  72. RESULT=$(roll 6)
  73. ((TOTAL+=RESULT))
  74. if [ "$RESULT" -eq 6 ]; then
  75. # Magnificent Outcome
  76. echo -n -e "[ ${BOLD}${GREEN}6 (MAGNIFICENT)${RESET} ] "
  77. else
  78. echo -n "[ $RESULT ] "
  79. fi
  80. done
  81. echo ""
  82. fi
  83. echo -e "\n${BOLD}Total Face Value: $TOTAL${RESET}"