-
Notifications
You must be signed in to change notification settings - Fork 0
/
weapons.go
123 lines (100 loc) · 2.13 KB
/
weapons.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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package runequest
import (
"fmt"
"log"
"os"
"path/filepath"
"strconv"
"strings"
)
// Weapon represents a Runequest weapon
type Weapon struct {
Name string
STR int
DEX int
MainSkill string
Damage string
STRDamage bool
Thrown bool
HP int
CurrentHP int
ENC string
Length float64
SR int
Type string
Range int
Special string
Custom bool
}
// BaseWeapons is an array of runequest weapons
var BaseWeapons = loadWeapons()
// TranslateDieCode makes a string like 1d6+1 into a DieCode
func TranslateDieCode(s string) *DieCode {
var dice, mod, max int
dieCode := &DieCode{}
str := strings.Split(s, "+")
if str[1] != "" {
mod, _ = strconv.Atoi(str[1])
}
diceString := strings.Split(str[0], "D")
dice, _ = strconv.Atoi(diceString[0])
max, _ = strconv.Atoi(diceString[1])
dieCode.NumDice = dice
dieCode.DiceMax = max
dieCode.Modifier = mod
return dieCode
}
func loadWeapons() []*Weapon {
weapons := []*Weapon{}
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
fmt.Println(dir)
url := "https://raw.githubusercontent.com/ToferC/runequest/master/weapons.csv"
data, err := readCSVFromURL(url)
for i, record := range data {
fmt.Println(i)
sHP, err := strconv.Atoi(record[5])
if err != nil {
fmt.Println(err)
sHP = 0
}
mainSkill := record[len(record)-1]
if record[1] == "melee" {
sSR, err := strconv.Atoi(record[2])
if err != nil {
sSR = 0
}
weapons = append(weapons, &Weapon{
Name: record[0],
Type: "Melee",
MainSkill: mainSkill,
SR: sSR,
ENC: record[4],
STRDamage: true,
Damage: record[3],
HP: sHP,
CurrentHP: sHP,
})
} else {
throw := false
if strings.Contains(record[0], "Thrown") {
throw = true
}
r, _ := strconv.Atoi(record[6])
weapons = append(weapons, &Weapon{
Name: record[0],
Type: "Ranged",
MainSkill: mainSkill,
Range: r,
ENC: record[4],
Damage: record[3],
Thrown: throw,
HP: sHP,
CurrentHP: sHP,
})
}
}
return weapons
}