summaryrefslogtreecommitdiff
path: root/internal/character/character.go
blob: 68682e866456f1885f65109d637dfb80652c767a (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",
}