-
Notifications
You must be signed in to change notification settings - Fork 0
/
luck.go
66 lines (58 loc) · 1.36 KB
/
luck.go
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
package inventory
import "github.com/mccune1224/betrayal/pkg/data"
// Magic number where 100% mythical drop
const maxLuck = 398
func (ih *InventoryHandler) AddLuck(amount int64) error {
ih.i.Luck += amount
if ih.i.Luck > maxLuck {
ih.i.Luck = maxLuck
}
return ih.m.Inventories.UpdateLuck(ih.i)
}
func (ih *InventoryHandler) RemoveLuck(amount int64) error {
ih.i.Luck -= amount
if ih.i.Luck < 0 {
ih.i.Luck = 0
}
return ih.m.Inventories.UpdateLuck(ih.i)
}
func (ih *InventoryHandler) SetLuck(size int64) error {
ih.i.Luck = size
return ih.m.Inventories.UpdateLuck(ih.i)
}
// Determines the luck a player will get from their alliance.
// Good and Evil get +2 per each other member in the same alliance, and +1 for neutral.
func (ih *InventoryHandler) CalculateAllianceLuck(memberIDs []string) (int64, error) {
var luck int64
var members []*data.Inventory
for _, id := range memberIDs {
if id == ih.i.DiscordID {
continue
}
i, err := ih.m.Inventories.GetByDiscordID(id)
if err != nil {
return 0, err
}
members = append(members, i)
}
pAlignmnet := ih.i.Alignment
for _, m := range members {
switch m.Alignment {
case "GOOD":
if pAlignmnet == "GOOD" {
luck += 2
} else {
luck += 1
}
case "EVIL":
if pAlignmnet == "EVIL" {
luck += 2
} else {
luck += 1
}
case "NEUTRAL":
luck += 1
}
}
return luck, nil
}