summaryrefslogtreecommitdiff
path: root/newguy.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-08-12 14:05:45 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-08-12 14:05:45 +0200
commit14a6aa4c488bcd2d49103cbee1424b2769d77ce0 (patch)
tree93e3875919eeb0e60d0a8da70f5d96152a4e527a /newguy.go
Initial import
Diffstat (limited to 'newguy.go')
-rw-r--r--newguy.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/newguy.go b/newguy.go
new file mode 100644
index 0000000..38847bf
--- /dev/null
+++ b/newguy.go
@@ -0,0 +1,62 @@
+package main
+
+import (
+ "math/rand"
+ "strings"
+ "time"
+)
+
+func init() {
+ rand.Seed(time.Now().UnixNano())
+}
+
+var kparts = [][]string{
+ {`br`, `cr`, `dr`, `fr`, `gr`, `j`, `kr`, `l`, `m`, `n`, `pr`,
+ ``, ``, ``, `r`, `sh`, `tr`, `v`, `wh`, `x`, `y`, `z`},
+ {`a`, `a`, `e`, `e`, `i`, `i`, `o`, `o`, `u`, `u`, `ae`, `ie`, `oo`, `ou`},
+ {`b`, `ck`, `d`, `g`, `k`, `m`, `n`, `p`, `t`, `v`, `x`, `z`},
+}
+
+func Pick(s []string) string {
+ return s[rand.Intn(len(s))]
+}
+
+func GenerateName() string {
+ var s string
+ for i := 0; i < 6; i++ {
+ s += Pick(kparts[i%3])
+ }
+ return strings.Title(s)
+}
+
+func Roll() int {
+ return 3 + rand.Intn(6) + rand.Intn(6) + rand.Intn(6)
+}
+
+type Guy struct {
+ Name, Race, Klass string
+ Level int
+ Attr map[Attr]int
+}
+
+func NewGuy() *Guy {
+ r := Races.Pick()
+ k := Klasses.Pick()
+ g := Guy{
+ Name: GenerateName(),
+ Race: r.Name,
+ Klass: k.Name,
+ Level: 1,
+ Attr: make(map[Attr]int),
+ }
+ for i := Attr(0); i < Nattr; i++ {
+ g.Attr[i] = Roll()
+ }
+ for _, v := range r.Attr {
+ g.Attr[v] += 1
+ }
+ for _, v := range k.Attr {
+ g.Attr[v] += 1
+ }
+ return &g
+}