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
|
package hacking
type Minigame interface {
Init(level int) string
HandleInput(input string) (output string, done bool, won bool)
Name() string
}
type XPBonuser interface {
BonusXP() int
}
type Session struct {
Minigame Minigame
TerminalID string
Level int
ReqLevel int
Started bool
}
type TerminalDef struct {
ObjectID string
Level int
Minigame func() Minigame
BaseXPWin int
BaseXPLose int
Name string
}
var Terminals = map[string]TerminalDef{
"terminal_basic": {
ObjectID: "terminal_basic",
Level: 1,
Minigame: func() Minigame { return NewWumpusGame() },
BaseXPWin: 50,
BaseXPLose: 10,
Name: "Hunt the Wumpus",
},
"terminal_advanced": {
ObjectID: "terminal_advanced",
Level: 20,
Minigame: func() Minigame { return NewMastermindGame() },
BaseXPWin: 150,
BaseXPLose: 30,
Name: "Code Breaker",
},
"terminal_secure": {
ObjectID: "terminal_secure",
Level: 40,
Minigame: func() Minigame { return NewLiarsDiceGame() },
BaseXPWin: 300,
BaseXPLose: 50,
Name: "Signal Bluff",
},
}
func CalcXP(baseXP int, playerLevel int, reqLevel int) int {
multiplier := 1.0 + 0.01*float64(playerLevel-reqLevel)
if multiplier < 1.0 {
multiplier = 1.0
}
return int(float64(baseXP) * multiplier)
}
|