1ebbbf31 by Barry

Added bonus files for lookup data. Added calcs for new stats.

1 parent ba199cda
1 [
2 {
3 "atk": 0,
4 "fort": 0,
5 "ref": 2,
6 "will": 2
7 },
8 {
9 "atk": 1,
10 "fort": 0,
11 "ref": 3,
12 "will": 3
13 },
14 {
15 "atk": 2,
16 "fort": 1,
17 "ref": 3,
18 "will": 3
19 },
20 {
21 "atk": 3,
22 "fort": 2,
23 "ref": 4,
24 "will": 4
25 },
26 {
27 "atk": 3,
28 "fort": 1,
29 "ref": 4,
30 "will": 4
31 },
32 {
33 "atk": 4,
34 "fort": 2,
35 "ref": 5,
36 "will": 5
37 },
38 {
39 "atk": 5,
40 "fort": 3,
41 "ref": 5,
42 "will": 5
43 },
44 {
45 "atk": 6,
46 "fort": 2,
47 "ref": 6,
48 "will": 6
49 },
50 {
51 "atk": 6,
52 "fort": 3,
53 "ref": 6,
54 "will": 6
55 },
56 {
57 "atk": 7,
58 "fort": 3,
59 "ref": 7,
60 "will": 7
61 },
62 {
63 "atk": 8,
64 "fort": 3,
65 "ref": 7,
66 "will": 7
67 },
68 {
69 "atk": 9,
70 "fort": 4,
71 "ref": 8,
72 "will": 8
73 },
74 {
75 "atk": 9,
76 "fort": 4,
77 "ref": 8,
78 "will": 8
79 },
80 {
81 "atk": 10,
82 "fort": 4,
83 "ref": 9,
84 "will": 9
85 },
86 {
87 "atk": 11,
88 "fort": 5,
89 "ref": 9,
90 "will": 9
91 },
92 {
93 "atk": 12,
94 "fort": 5,
95 "ref": 10,
96 "will": 10
97 },
98 {
99 "atk": 12,
100 "fort": 5,
101 "ref": 10,
102 "will": 10
103 },
104 {
105 "atk": 13,
106 "fort": 6,
107 "ref": 11,
108 "will": 11
109 },
110 {
111 "atk": 14,
112 "fort": 6,
113 "ref": 11,
114 "will": 11
115 },
116 {
117 "atk": 15,
118 "fort": 6,
119 "ref": 12,
120 "will": 12
121 }
122 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 0,
4 "fort": 2,
5 "ref": 2,
6 "will": 0
7 },
8 {
9 "atk": 1,
10 "fort": 3,
11 "ref": 3,
12 "will": 0
13 },
14 {
15 "atk": 2,
16 "fort": 3,
17 "ref": 3,
18 "will": 1
19 },
20 {
21 "atk": 3,
22 "fort": 4,
23 "ref": 4,
24 "will": 1
25 },
26 {
27 "atk": 3,
28 "fort": 4,
29 "ref": 4,
30 "will": 1
31 },
32 {
33 "atk": 4,
34 "fort": 5,
35 "ref": 5,
36 "will": 2
37 },
38 {
39 "atk": 5,
40 "fort": 5,
41 "ref": 5,
42 "will": 2
43 },
44 {
45 "atk": 6,
46 "fort": 6,
47 "ref": 6,
48 "will": 2
49 },
50 {
51 "atk": 6,
52 "fort": 6,
53 "ref": 6,
54 "will": 3
55 },
56 {
57 "atk": 7,
58 "fort": 7,
59 "ref": 7,
60 "will": 3
61 },
62 {
63 "atk": 8,
64 "fort": 7,
65 "ref": 7,
66 "will": 3
67 },
68 {
69 "atk": 9,
70 "fort": 8,
71 "ref": 8,
72 "will": 4
73 },
74 {
75 "atk": 9,
76 "fort": 8,
77 "ref": 8,
78 "will": 4
79 },
80 {
81 "atk": 10,
82 "fort": 9,
83 "ref": 9,
84 "will": 4
85 },
86 {
87 "atk": 11,
88 "fort": 9,
89 "ref": 9,
90 "will": 5
91 },
92 {
93 "atk": 12,
94 "fort": 10,
95 "ref": 10,
96 "will": 5
97 },
98 {
99 "atk": 12,
100 "fort": 10,
101 "ref": 10,
102 "will": 5
103 },
104 {
105 "atk": 13,
106 "fort": 11,
107 "ref": 11,
108 "will": 6
109 },
110 {
111 "atk": 14,
112 "fort": 11,
113 "ref": 11,
114 "will": 6
115 },
116 {
117 "atk": 15,
118 "fort": 12,
119 "ref": 12,
120 "will": 6
121 }
122 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 0,
4 "fort": 0,
5 "ref": 0,
6 "will": 2,
7 "spells": [2, 0, 0, 0, 0, 0]
8 },
9 {
10 "atk": 1,
11 "fort": 0,
12 "ref": 0,
13 "will": 3,
14 "spells": [2, 0, 0, 0, 0, 0]
15 },
16 {
17 "atk": 2,
18 "fort": 1,
19 "ref": 1,
20 "will": 3,
21 "spells": [3, 0, 0, 0, 0, 0]
22 },
23 {
24 "atk": 3,
25 "fort": 1,
26 "ref": 1,
27 "will": 4,
28 "spells": [3, 2, 0, 0, 0, 0]
29 },
30 {
31 "atk": 3,
32 "fort": 1,
33 "ref": 1,
34 "will": 4,
35 "spells": [4, 2, 0, 0, 0, 0]
36 },
37 {
38 "atk": 4,
39 "fort": 2,
40 "ref": 2,
41 "will": 5,
42 "spells": [4, 3, 0, 0, 0, 0]
43 },
44 {
45 "atk": 5,
46 "fort": 2,
47 "ref": 2,
48 "will": 5,
49 "spells": [4, 3, 2, 0, 0, 0]
50 },
51 {
52 "atk": 6,
53 "fort": 2,
54 "ref": 2,
55 "will": 6,
56 "spells": [4, 4, 2, 0, 0, 0]
57 },
58 {
59 "atk": 6,
60 "fort": 3,
61 "ref": 3,
62 "will": 6,
63 "spells": [5, 4, 3, 0, 0, 0]
64 },
65 {
66 "atk": 7,
67 "fort": 3,
68 "ref": 3,
69 "will": 7,
70 "spells": [5, 4, 3, 2, 0, 0]
71 },
72 {
73 "atk": 8,
74 "fort": 3,
75 "ref": 3,
76 "will": 7,
77 "spells": [5, 4, 4, 2, 0, 0]
78 },
79 {
80 "atk": 9,
81 "fort": 4,
82 "ref": 4,
83 "will": 8,
84 "spells": [5, 5, 4, 3, 0, 0]
85 },
86 {
87 "atk": 9,
88 "fort": 4,
89 "ref": 4,
90 "will": 8,
91 "spells": [5, 5, 4, 3, 2, 0]
92 },
93 {
94 "atk": 10,
95 "fort": 4,
96 "ref": 4,
97 "will": 9,
98 "spells": [5, 5, 4, 4, 2, 0]
99 },
100 {
101 "atk": 11,
102 "fort": 5,
103 "ref": 5,
104 "will": 9,
105 "spells": [5, 5, 5, 4, 3, 0]
106 },
107 {
108 "atk": 12,
109 "fort": 5,
110 "ref": 5,
111 "will": 10,
112 "spells": [5, 5, 5, 4, 3, 2]
113 },
114 {
115 "atk": 12,
116 "fort": 5,
117 "ref": 5,
118 "will": 10,
119 "spells": [5, 5, 5, 4, 4, 2]
120 },
121 {
122 "atk": 13,
123 "fort": 6,
124 "ref": 6,
125 "will": 11,
126 "spells": [5, 5, 5, 5, 4, 3]
127 },
128 {
129 "atk": 14,
130 "fort": 6,
131 "ref": 6,
132 "will": 11,
133 "spells": [5, 5, 5, 5, 5, 4]
134 },
135 {
136 "atk": 15,
137 "fort": 6,
138 "ref": 6,
139 "will": 12,
140 "spells": [5, 5, 5, 5, 5, 5]
141 }
142 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 0,
4 "fort": 0,
5 "ref": 2,
6 "will": 2
7 },
8 {
9 "atk": 1,
10 "fort":0,
11 "ref": 3,
12 "will": 3
13 },
14 {
15 "atk": 2,
16 "fort": 1,
17 "ref": 3,
18 "will": 3
19 },
20 {
21 "atk": 3,
22 "fort": 1,
23 "ref": 4,
24 "will": 4
25 },
26 {
27 "atk": 3,
28 "fort": 1,
29 "ref": 4,
30 "will": 4
31 },
32 {
33 "atk": 4,
34 "fort": 2,
35 "ref": 5,
36 "will": 5
37 },
38 {
39 "atk": 5,
40 "fort": 2,
41 "ref": 5,
42 "will": 5
43 },
44 {
45 "atk": 6,
46 "fort": 2,
47 "ref": 6,
48 "will": 6
49 },
50 {
51 "atk": 6,
52 "fort": 3,
53 "ref": 6,
54 "will": 6
55 },
56 {
57 "atk": 7,
58 "fort": 3,
59 "ref": 7,
60 "will": 7
61 },
62 {
63 "atk": 8,
64 "fort": 3,
65 "ref": 7,
66 "will": 7
67 },
68 {
69 "atk": 9,
70 "fort": 4,
71 "ref": 8,
72 "will": 8
73 },
74 {
75 "atk": 9,
76 "fort": 4,
77 "ref": 8,
78 "will": 8
79 },
80 {
81 "atk": 10,
82 "fort": 4,
83 "ref": 9,
84 "will": 9
85 },
86 {
87 "atk": 11,
88 "fort": 5,
89 "ref": 9,
90 "will": 9
91 },
92 {
93 "atk": 12,
94 "fort": 5,
95 "ref": 10,
96 "will": 10
97 },
98 {
99 "atk": 12,
100 "fort": 5,
101 "ref": 10,
102 "will": 10
103 },
104 {
105 "atk": 13,
106 "fort": 6,
107 "ref": 11,
108 "will": 11
109 },
110 {
111 "atk": 14,
112 "fort": 6,
113 "ref": 11,
114 "will": 11
115 },
116 {
117 "atk": 15,
118 "fort": 6,
119 "ref": 12,
120 "will": 12
121 }
122 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 1,
4 "fort": 2,
5 "ref": 0,
6 "will": 2
7 },
8 {
9 "atk": 2,
10 "fort": 3,
11 "ref": 0,
12 "will": 3
13 },
14 {
15 "atk": 3,
16 "fort": 3,
17 "ref": 1,
18 "will": 3
19 },
20 {
21 "atk": 4,
22 "fort": 4,
23 "ref": 1,
24 "will": 4
25 },
26 {
27 "atk": 5,
28 "fort": 4,
29 "ref": 1,
30 "will": 4
31 },
32 {
33 "atk": 6,
34 "fort": 5,
35 "ref": 2,
36 "will": 5
37 },
38 {
39 "atk": 7,
40 "fort": 5,
41 "ref": 2,
42 "will": 5
43 },
44 {
45 "atk": 8,
46 "fort": 6,
47 "ref": 2,
48 "will": 6
49 },
50 {
51 "atk": 9,
52 "fort": 6,
53 "ref": 3,
54 "will": 6
55 },
56 {
57 "atk": 10,
58 "fort": 7,
59 "ref": 3,
60 "will": 7
61 },
62 {
63 "atk": 11,
64 "fort": 7,
65 "ref": 3,
66 "will": 7
67 },
68 {
69 "atk": 12,
70 "fort": 8,
71 "ref": 4,
72 "will": 8
73 },
74 {
75 "atk": 13,
76 "fort": 8,
77 "ref": 4,
78 "will": 8
79 },
80 {
81 "atk": 14,
82 "fort": 9,
83 "ref": 4,
84 "will": 9
85 },
86 {
87 "atk": 15,
88 "fort": 9,
89 "ref": 5,
90 "will": 9
91 },
92 {
93 "atk": 16,
94 "fort": 10,
95 "ref": 5,
96 "will": 10
97 },
98 {
99 "atk": 17,
100 "fort": 10,
101 "ref": 5,
102 "will": 10
103 },
104 {
105 "atk": 18,
106 "fort": 11,
107 "ref": 6,
108 "will": 11
109 },
110 {
111 "atk": 19,
112 "fort": 11,
113 "ref": 6,
114 "will": 11
115 },
116 {
117 "atk": 20,
118 "fort": 12,
119 "ref": 6,
120 "will": 12
121 }
122 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 1,
4 "fort": 2,
5 "ref": 0,
6 "will": 2
7 },
8 {
9 "atk": 2,
10 "fort": 3,
11 "ref": 0,
12 "will": 3
13 },
14 {
15 "atk": 3,
16 "fort": 3,
17 "ref": 1,
18 "will": 3
19 },
20 {
21 "atk": 4,
22 "fort": 4,
23 "ref": 1,
24 "will": 4
25 },
26 {
27 "atk": 5,
28 "fort": 4,
29 "ref": 1,
30 "will": 4
31 },
32 {
33 "atk": 6,
34 "fort": 5,
35 "ref": 2,
36 "will": 5
37 },
38 {
39 "atk": 7,
40 "fort": 5,
41 "ref": 2,
42 "will": 5
43 },
44 {
45 "atk": 8,
46 "fort": 6,
47 "ref": 2,
48 "will": 6
49 },
50 {
51 "atk": 9,
52 "fort": 6,
53 "ref": 3,
54 "will": 6
55 },
56 {
57 "atk": 10,
58 "fort": 7,
59 "ref": 3,
60 "will": 7
61 },
62 {
63 "atk": 11,
64 "fort": 7,
65 "ref": 3,
66 "will": 7
67 },
68 {
69 "atk": 12,
70 "fort": 8,
71 "ref": 4,
72 "will": 8
73 },
74 {
75 "atk": 13,
76 "fort": 8,
77 "ref": 4,
78 "will": 8
79 },
80 {
81 "atk": 14,
82 "fort": 9,
83 "ref": 4,
84 "will": 9
85 },
86 {
87 "atk": 15,
88 "fort": 9,
89 "ref": 5,
90 "will": 9
91 },
92 {
93 "atk": 16,
94 "fort": 10,
95 "ref": 5,
96 "will": 10
97 },
98 {
99 "atk": 17,
100 "fort": 10,
101 "ref": 5,
102 "will": 10
103 },
104 {
105 "atk": 18,
106 "fort": 11,
107 "ref": 6,
108 "will": 11
109 },
110 {
111 "atk": 19,
112 "fort": 11,
113 "ref": 6,
114 "will": 11
115 },
116 {
117 "atk": 20,
118 "fort": 12,
119 "ref": 6,
120 "will": 12
121 }
122 ]
...\ No newline at end of file ...\ No newline at end of file
1 [
2 {
3 "atk": 0,
4 "fort": 0,
5 "ref": 0,
6 "will": 2,
7 "spells": [2, 0, 0, 0, 0, 0]
8 },
9 {
10 "atk": 1,
11 "fort": 0,
12 "ref": 0,
13 "will": 3,
14 "spells": [2, 0, 0, 0, 0, 0]
15 },
16 {
17 "atk": 2,
18 "fort": 1,
19 "ref": 1,
20 "will": 3,
21 "spells": [3, 0, 0, 0, 0, 0]
22 },
23 {
24 "atk": 3,
25 "fort": 1,
26 "ref": 1,
27 "will": 4,
28 "spells": [3, 2, 0, 0, 0, 0]
29 },
30 {
31 "atk": 3,
32 "fort": 1,
33 "ref": 1,
34 "will": 4,
35 "spells": [4, 2, 0, 0, 0, 0]
36 },
37 {
38 "atk": 4,
39 "fort": 2,
40 "ref": 2,
41 "will": 5,
42 "spells": [4, 3, 0, 0, 0, 0]
43 },
44 {
45 "atk": 5,
46 "fort": 2,
47 "ref": 2,
48 "will": 5,
49 "spells": [4, 3, 2, 0, 0, 0]
50 },
51 {
52 "atk": 6,
53 "fort": 2,
54 "ref": 2,
55 "will": 6,
56 "spells": [4, 4, 2, 0, 0, 0]
57 },
58 {
59 "atk": 6,
60 "fort": 3,
61 "ref": 3,
62 "will": 6,
63 "spells": [5, 4, 3, 0, 0, 0]
64 },
65 {
66 "atk": 7,
67 "fort": 3,
68 "ref": 3,
69 "will": 7,
70 "spells": [5, 4, 3, 2, 0, 0]
71 },
72 {
73 "atk": 8,
74 "fort": 3,
75 "ref": 3,
76 "will": 7,
77 "spells": [5, 4, 4, 2, 0, 0]
78 },
79 {
80 "atk": 9,
81 "fort": 4,
82 "ref": 4,
83 "will": 8,
84 "spells": [5, 5, 4, 3, 0, 0]
85 },
86 {
87 "atk": 9,
88 "fort": 4,
89 "ref": 4,
90 "will": 8,
91 "spells": [5, 5, 4, 3, 2, 0]
92 },
93 {
94 "atk": 10,
95 "fort": 4,
96 "ref": 4,
97 "will": 9,
98 "spells": [5, 5, 4, 4, 2, 0]
99 },
100 {
101 "atk": 11,
102 "fort": 5,
103 "ref": 5,
104 "will": 9,
105 "spells": [5, 5, 5, 4, 3, 0]
106 },
107 {
108 "atk": 12,
109 "fort": 5,
110 "ref": 5,
111 "will": 10,
112 "spells": [5, 5, 5, 4, 3, 2]
113 },
114 {
115 "atk": 12,
116 "fort": 5,
117 "ref": 5,
118 "will": 10,
119 "spells": [5, 5, 5, 4, 4, 2]
120 },
121 {
122 "atk": 13,
123 "fort": 6,
124 "ref": 6,
125 "will": 11,
126 "spells": [5, 5, 5, 5, 4, 3]
127 },
128 {
129 "atk": 14,
130 "fort": 6,
131 "ref": 6,
132 "will": 11,
133 "spells": [5, 5, 5, 5, 5, 4]
134 },
135 {
136 "atk": 15,
137 "fort": 6,
138 "ref": 6,
139 "will": 12,
140 "spells": [5, 5, 5, 5, 5, 5]
141 }
142 ]
...\ No newline at end of file ...\ No newline at end of file
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
32 }, 32 },
33 "prompt": "hp %hp mp %mp> ", 33 "prompt": "hp %hp mp %mp> ",
34 "aliases": {}, 34 "aliases": {},
35 "level": 1,
35 "hp": 100, 36 "hp": 100,
36 "mp": 10, 37 "mp": 10,
37 "maxhp": 100, 38 "maxhp": 100,
......
1 {"name": "test", "password": "6c76899eb15393064b4f4db94805e5862232920b", "room": "town/tavern", "abilities": {"str": 10, "dex": 23, "con": 10, "int": 12, "wis": 10, "cha": 8}, "equipment": {"finger": [null, null], "hand": [null, null], "arm": [null, null], "leg": [null, null], "foot": [null, null], "head": null, "neck": null, "back": null, "body": null, "waist": null}, "inventory": {"bag": [{"expires": 0, "inventory": {"shirt": [{"expires": 0}]}}]}, "prompt": "hp %hp mp %mp> ", "aliases": {}, "hp": 100, "mp": 10, "maxhp": 100, "maxmp": 10, "maxsta": 10, "sta": 10, "aa": "1d2", "mpr": 0.25, "star": 0.4, "weapon": null, "sp": {}, "at": {"kick": {"cost": 5, "dmg": "2d4", "desc": "You unleash a powerful kick"}}, "createstep": 7, "color_enabled": true, "over_13": true, "race": "Android", "theme": "Ace Pilot", "class": "Envoy", "abilitypoints": 0}
...\ No newline at end of file ...\ No newline at end of file
1 {"name": "test", "password": "6c76899eb15393064b4f4db94805e5862232920b", "room": "town/tavern", "abilities": {"str": 10, "dex": 23, "con": 10, "int": 12, "wis": 10, "cha": 8}, "equipment": {"finger": [null, null], "hand": [null, null], "arm": [null, null], "leg": [null, null], "foot": [null, null], "head": null, "neck": null, "back": null, "body": null, "waist": null}, "inventory": {"bag": [{"expires": 0, "inventory": {"shirt": [{"expires": 0}]}}]}, "prompt": "hp %hp mp %mp> ", "aliases": {}, "hp": 100, "mp": 10, "maxhp": 100, "maxmp": 10, "maxsta": 10, "sta": 10, "aa": "1d2", "mpr": 0.25, "star": 0.4, "weapon": null, "sp": {}, "at": {"kick": {"cost": 5, "dmg": "2d4", "desc": "You unleash a powerful kick"}}, "createstep": 7, "color_enabled": true, "over_13": true, "race": "Android", "theme": "Ace Pilot", "class": "Envoy", "abilitypoints": 0, "baseattack": 0, "fort": 0, "ref": 2, "will": 2}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -109,46 +109,57 @@ classes = { ...@@ -109,46 +109,57 @@ classes = {
109 "keyability": "cha", 109 "keyability": "cha",
110 "proficiencies": ["light armor", "basic melee", "grenades", "small arms"], 110 "proficiencies": ["light armor", "basic melee", "grenades", "small arms"],
111 "skillperlevel": 8, 111 "skillperlevel": 8,
112 }, 112 "hp": 6
113 },
113 "Mechanic": { 114 "Mechanic": {
114 "skills": ["Athletics", "Perception", "Computers", "Physical Science", "Engineering", "Piloting", "Medicine", "Profession"], 115 "skills": ["Athletics", "Perception", "Computers", "Physical Science", "Engineering", "Piloting", "Medicine", "Profession"],
115 "keyability": "int", 116 "keyability": "int",
116 "proficiencies": ["light armor", "basic melee", "grenades", "small arms"], 117 "proficiencies": ["light armor", "basic melee", "grenades", "small arms"],
117 "skillperlevel": 4, 118 "skillperlevel": 4,
118 }, 119 "hp": 6
120 },
119 "Mystic": { 121 "Mystic": {
120 "skills": ["Bluff", "Medicine", "Culture", "Mysticism", "Diplomacy", "Perception", "Disguise", "Profession", "Intimidate", "Sense Motive", "Life Science", "Survival"], 122 "skills": ["Bluff", "Medicine", "Culture", "Mysticism", "Diplomacy", "Perception", "Disguise", "Profession", "Intimidate", "Sense Motive", "Life Science", "Survival"],
121 "keyability": "wis", 123 "keyability": "wis",
122 "proficiencies": ["light armor", "basic melee", "small arms"], 124 "proficiencies": ["light armor", "basic melee", "small arms"],
123 "skillperlevel": 6, 125 "skillperlevel": 6,
124 }, 126 "hp": 6
127 },
125 "Operative": { 128 "Operative": {
126 "skills": ["Acrobatics", "Medicine", "Athletics", "Perception", "Bluff", "Piloting", "Computers", "Profession", "Culture", "Sense Motive", "Disguise", "Sleight of Hand", "Engineering", "Stealth", "Intimidate", "Survival"], 129 "skills": ["Acrobatics", "Medicine", "Athletics", "Perception", "Bluff", "Piloting", "Computers", "Profession", "Culture", "Sense Motive", "Disguise", "Sleight of Hand", "Engineering", "Stealth", "Intimidate", "Survival"],
127 "keyability": "dex", 130 "keyability": "dex",
128 "proficiencies": ["light armor", "basic melee", "small arms", "sniper weapons"], 131 "proficiencies": ["light armor", "basic melee", "small arms", "sniper weapons"],
129 "skillperlevel": 8, 132 "skillperlevel": 8,
130 }, 133 "hp": 6
134 },
131 "Solarian": { 135 "Solarian": {
132 "skills": ["Acrobatics", "Perception", "Athletics", "Physical Science", "Diplomacy", "Profession", "Intimidate", "Sense Motive", "Mysticism", "Stealth"], 136 "skills": ["Acrobatics", "Perception", "Athletics", "Physical Science", "Diplomacy", "Profession", "Intimidate", "Sense Motive", "Mysticism", "Stealth"],
133 "keyability": "cha", 137 "keyability": "cha",
134 "proficiencies": ["light armor", "basic melee", "advanced melee", "small arms"], 138 "proficiencies": ["light armor", "basic melee", "advanced melee", "small arms"],
135 "skillperlevel": 4, 139 "skillperlevel": 4,
136 }, 140 "hp": 7
141 },
137 "Soldier": { 142 "Soldier": {
138 "skills": ["Acrobatics", "Medicine", "Athletics", "Piloting", "Engineering", "Profession", "Intimidate", "Survival"], 143 "skills": ["Acrobatics", "Medicine", "Athletics", "Piloting", "Engineering", "Profession", "Intimidate", "Survival"],
139 "keyability": "str", 144 "keyability": "str",
140 "proficiencies": ["light armor", "heavy armor", "basic melee", "advanced melee", "small arms", "long arms", "heavy weapons", "sniper weapons", "grenades"], 145 "proficiencies": ["light armor", "heavy armor", "basic melee", "advanced melee", "small arms", "long arms", "heavy weapons", "sniper weapons", "grenades"],
141 "skillperlevel": 4, 146 "skillperlevel": 4,
142 }, 147 "hp": 7
148 },
143 "Technomancer": { 149 "Technomancer": {
144 "skills": ["Computers", "Physical Science", "Engineering", "Piloting", "Life Science", "Profession", "Mysticism", "Sleight of Hand"], 150 "skills": ["Computers", "Physical Science", "Engineering", "Piloting", "Life Science", "Profession", "Mysticism", "Sleight of Hand"],
145 "keyability": "int", 151 "keyability": "int",
146 "proficiencies": ["light armor", "basic melee", "small arms"], 152 "proficiencies": ["light armor", "basic melee", "small arms"],
147 "skillperlevel": 4, 153 "skillperlevel": 4,
148 } 154 "hp": 5
155 }
149 } 156 }
150 157
151 158
159 def get_ability_mod(id, ability):
160 ability_modifiers = [-5, -4, -4, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8]
161 return ability_modifiers[players[id]["abilities"][ability]]
162
152 def show_prompt(pid): 163 def show_prompt(pid):
153 if "prompt" not in players[pid]: 164 if "prompt" not in players[pid]:
154 players[pid]["prompt"] = "> " 165 players[pid]["prompt"] = "> "
...@@ -370,13 +381,29 @@ def handle_character_create(id, command, params): ...@@ -370,13 +381,29 @@ def handle_character_create(id, command, params):
370 mud.send_message(id, '%cyanPlease spend all available ability points.') 381 mud.send_message(id, '%cyanPlease spend all available ability points.')
371 show_abilities(id) 382 show_abilities(id)
372 else: 383 else:
384 pclass = classes[players[id]["class"]]
385 class_bonuses = load_object_from_file('data/{}_bonus.json'.format(players[id]["class"].lower()))
386 players[id]["baseattack"] = class_bonuses[0]["atk"]
387 players[id]["fort"] = class_bonuses[0]["fort"]
388 players[id]["ref"] = class_bonuses[0]["ref"]
389 players[id]["will"] = class_bonuses[0]["will"]
390 players[id]["maxhp"] = races[players[id]["race"]]["hp"] + pclass["hp"]
391 players[id]["hp"] = players[id]["maxhp"]
392 # Class SP is the same HP, so no need to store both in the classes dict
393 players[id]["maxsp"] = get_ability_mod(id, "con") + pclass["hp"]
394 players[id]["sp"] = players[id]["maxsp"]
395 players[id]["maxrp"] = 1 + get_ability_mod(id, pclass["keyability"])
396 if players[id]["maxrp"] < 1:
397 players[id]["maxrp"] = 1
398 players[id]["rp"] = players[id]["maxrp"]
373 players[id]["createstep"] = 7 399 players[id]["createstep"] = 7
374 elif not command.isdigit() or int(command) + 1 > len(players[id]["abilities"]) or int(command) < 0: 400 elif not command.isdigit() or int(command) + 1 > len(players[id]["abilities"]) or int(command) < 0:
375 show_abilities(id) 401 show_abilities(id)
376 else: 402 else:
377 ability_name = list(players[id]["abilities"])[int(command)] 403 ability_name = list(players[id]["abilities"])[int(command)]
378 404 if players[id]["abilities"][ability_name] >= 18:
379 if players[id]["abilitypoints"] > 0: 405 mud.send_message(id, '%cyanYou cannot raise an ability higher than 18 during character creation.')
406 elif players[id]["abilitypoints"] > 0:
380 players[id]["abilities"][ability_name] += 1 407 players[id]["abilities"][ability_name] += 1
381 players[id]["abilitypoints"] -= 1 408 players[id]["abilitypoints"] -= 1
382 show_abilities(id) 409 show_abilities(id)
...@@ -442,12 +469,12 @@ while True: ...@@ -442,12 +469,12 @@ while True:
442 if id not in players: 469 if id not in players:
443 continue 470 continue
444 471
445 # go through all the players in the game 472 # # go through all the players in the game
446 for pid, pl in players.items(): 473 # for pid, pl in players.items():
447 # send each player a message to tell them about the diconnected 474 # # send each player a message to tell them about the diconnected
448 # player 475 # # player
449 if players[pid].get("name") is not None: 476 # if players[pid].get("name") is not None:
450 mud.send_message(pid, "{} quit the game".format(players[pid]["name"])) 477 # mud.send_message(pid, "{} quit the game".format(players[pid]["name"]))
451 478
452 # remove the player's entry in the player dictionary 479 # remove the player's entry in the player dictionary
453 if players[id]["name"] is not None: 480 if players[id]["name"] is not None:
......