package main import ( "math/rand" "time" "dim13.org/pq/internal/character" ) func init() { rand.Seed(time.Now().UnixNano()) } 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[character.Attr]int Inventory map[string]int queue chan Queue Spells []string } func NewGuy() *Guy { r := character.Races.Pick() k := character.Klasses.Pick() g := Guy{ Name: character.NewName(), Race: r.Name, Klass: k.Name, Level: 1, Attr: make(map[character.Attr]int), Inventory: make(map[string]int), queue: make(chan Queue, 10), } for i := character.Attr(0); i < character.Nattr; i++ { g.Attr[i] = Roll() } for _, v := range r.Attr { g.Attr[v] += 1 } for _, v := range k.Attr { g.Attr[v] += 1 } g.Inventory["Gold"] = 0 g.queue <- Queue{Task, 10, "Experiencing an enigmatic and foreboding night vision"} g.queue <- Queue{Task, 6, "Much is revealed about that wise old bastard you'd underestimated"} g.queue <- Queue{Task, 6, "A shocking series of events leaves you alone and bewildered, but resolute"} g.queue <- Queue{Task, 4, "Drawing upon an unrealized reserve of determination, you set out on a long and dangerous journey"} g.queue <- Queue{Plot, 2, "Loading"} // DEBUG close(g.queue) return &g }