From 986f3cc01e3061829637d9a3b3a92f7ac9f5797b Mon Sep 17 00:00:00 2001 From: Azathoth Date: Thu, 16 Sep 2021 13:52:38 +0200 Subject: [PATCH] Added advantage and disatvantage options --- main.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 8e002e1..d58ee9a 100644 --- a/main.go +++ b/main.go @@ -4,27 +4,52 @@ import ( "flag" "fmt" "math/rand" + "os" "time" ) +var ( + surfaces, modifier, diceThrows, attacks int + advantage, disadvantage bool +) + func main() { - var surfaces, modifier, diceThrows, attacks int rand.Seed(time.Now().Unix()) - flag.IntVar(&surfaces, "s", 20, "Specify amount of die surfaces") - flag.IntVar(&diceThrows, "t", 1, "Specify dice diceThrows") - flag.IntVar(&modifier, "m", 0, "Stat modifier") - flag.IntVar(&attacks, "a", 1, "Attacks") - flag.Parse() + ParseFlags() - for i := 0; i < attacks; i++ { - if attacks > 1 { + switch { + case advantage: + fmt.Println("Advantage") + fmt.Println(Advantage(SimpleCast(), SimpleCast())) + case disadvantage: + fmt.Println("Disadvantage") + fmt.Println(Disadvantage(SimpleCast(), SimpleCast())) + case attacks < 1: + fmt.Println("Attack amount cannot be below 1.") + os.Exit(1) + case attacks > 1: + for i := 0; i < attacks; i++ { fmt.Println() + Cast(surfaces, diceThrows, modifier) } + default: Cast(surfaces, diceThrows, modifier) } } +func ParseFlags() { + flag.IntVar(&surfaces, "surfaces", 20, "Specify amount of die surfaces") + flag.IntVar(&diceThrows, "throws", 1, "Specify dice diceThrows") + flag.IntVar(&modifier, "modifier", 0, "Stat modifier") + flag.IntVar(&attacks, "attacks", 1, "Attacks") + + flag.BoolVar(&advantage, "advantage", false, "Advantage") + flag.BoolVar(&disadvantage, "disadvantage", false, "Disadvantage") + + flag.Parse() +} + func Cast(dieSurfaces, castAmount, modifier int) { var ( casts []int @@ -48,3 +73,27 @@ func Cast(dieSurfaces, castAmount, modifier int) { fmt.Println(total) } } + +func SimpleCast() int { + return rand.Intn(20) + 1 +} + +func Advantage(x, y int) int { + fmt.Println("x:", x) + fmt.Println("Y:", y) + if x > y { + return x + } else { + return y + } +} + +func Disadvantage(x, y int) int { + fmt.Println("x:", x) + fmt.Println("Y:", y) + if x < y { + return x + } else { + return y + } +}