summaryrefslogtreecommitdiff
path: root/internal/character/character.go
blob: 5be6d6807c1cf421bca51b4b2917c8d53d38b4ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package character

import "math/rand"

//go:generate stringer -type=Attr

type Attr int

const (
	CHA Attr = iota
	CON
	DEX
	HPMax
	INT
	MPMax
	STR
	WIS
	Nattr
)

type Character struct {
	Name string
	Attr []Attr
}

type Characters []Character

func (c Characters) Pick() Character {
	return c[rand.Intn(len(c))]
}

var Races = Characters{
	{`Half Orc`, []Attr{HPMax}},
	{`Half Man`, []Attr{CHA}},
	{`Half Halfling`, []Attr{DEX}},
	{`Double Hobbit`, []Attr{STR}},
	{`Hob-Hobbit`, []Attr{DEX, CON}},
	{`Low Elf`, []Attr{CON}},
	{`Dung Elf`, []Attr{WIS}},
	{`Talking Pony`, []Attr{MPMax, INT}},
	{`Gyrognome`, []Attr{DEX}},
	{`Lesser Dwarf`, []Attr{CON}},
	{`Crested Dwarf`, []Attr{CHA}},
	{`Eel Man`, []Attr{DEX}},
	{`Panda Man`, []Attr{CON, STR}},
	{`Trans-Kobold`, []Attr{WIS}},
	{`Enchanted Motorcycle`, []Attr{MPMax}},
	{`Will o' the Wisp`, []Attr{WIS}},
	{`Battle-Finch`, []Attr{DEX, INT}},
	{`Double Wookiee`, []Attr{STR}},
	{`Skraeling`, []Attr{WIS}},
	{`Demicanadian`, []Attr{CON}},
	{`Land Squid`, []Attr{STR, HPMax}},
}

var Klasses = Characters{
	{`Ur-Paladin`, []Attr{WIS, CON}},
	{`Voodoo Princess`, []Attr{INT, CHA}},
	{`Robot Monk`, []Attr{STR}},
	{`Mu-Fu Monk`, []Attr{DEX}},
	{`Mage Illusioner`, []Attr{INT, MPMax}},
	{`Shiv-Knight`, []Attr{DEX}},
	{`Inner Mason`, []Attr{CON}},
	{`Fighter/Organist`, []Attr{CHA, STR}},
	{`Puma Burgular`, []Attr{DEX}},
	{`Runeloremaster`, []Attr{WIS}},
	{`Hunter Strangler`, []Attr{DEX, INT}},
	{`Battle-Felon`, []Attr{STR}},
	{`Tickle-Mimic`, []Attr{WIS, INT}},
	{`Slow Poisoner`, []Attr{CON}},
	{`Bastard Lunatic`, []Attr{CON}},
	{`Jungle Clown`, []Attr{DEX, CHA}},
	{`Birdrider`, []Attr{WIS}},
	{`Vermineer`, []Attr{INT}},
}

var Titles = []string{
	`Mr.`,
	`Mrs.`,
	`Sir`,
	`Sgt.`,
	`Ms.`,
	`Captain`,
	`Chief`,
	`Admiral`,
	`Saint`,
}

var ImpressiveTitles = []string{
	`King`,
	`Queen`,
	`Lord`,
	`Lady`,
	`Viceroy`,
	`Mayor`,
	`Prince`,
	`Princess`,
	`Chief`,
	`Boss`,
	`Archbishop`,
}