-
Notifications
You must be signed in to change notification settings - Fork 0
/
Armor.py
158 lines (114 loc) · 3 KB
/
Armor.py
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
class Shield:
"""A shield that can be worn on one hand."""
name = "Shield"
cost = 0, 0, 10 # cp, sp, gp
base_armor_class = 2
weight = 6 # In lbs
def __str__(self):
return self.name
class NoShield(Shield):
"""If a character is carrying no shield."""
name = "No shield"
cost = 0, 0, 0
base_armor_class = 0
def __str__(self):
return self.name
class Armor:
name = "Unknown Armor"
cost = 0, 0, 0
base_armor_class = 10
dexterity_mod_max = None
dexterity_applied = True
strength_required = None
stealth_disadvantage = False
weight = 0 # In lbs
def __str__(self):
return self.name
class NoArmor(Armor):
name = "No Armor"
class LightArmor(Armor):
name = "Light Armor"
class MediumArmor(Armor):
name = "Medium Armor"
class HeavyArmor(Armor):
name = "Heavy Armor"
dexterity_applied = False
class PaddedArmor(LightArmor):
name = "Padded Armor"
cost = 0, 0, 5
base_armor_class = 11
weight = 8
stealth_disadvantage = True
class LeatherArmor(LightArmor):
name = "Leather Armor"
cost = 0, 0, 10
base_armor_class = 11
weight = 10
class StuddedLeatherArmor(LightArmor):
name = "Studded Leather Armor"
cost = 0, 0, 45
base_armor_class = 12
weight = 13
class HideArmor(MediumArmor):
name = "Hide Armor"
cost = 0, 0, 10
base_armor_class = 12
dexterity_mod_max = 2
weight = 12
class ChainShirt(MediumArmor):
name = "Chain Shirt"
cost = 0, 0, 50
base_armor_class = 13
dexterity_mod_max = 2
weight = 20
class ScaleMail(MediumArmor):
name = "Scale Mail"
cost = 0, 0, 50
base_armor_class = 14
dexterity_mod_max = 2
stealth_disadvantage = True
weight = 45
class Breastplate(MediumArmor):
name = "Breastplate"
cost = 0, 0, 400
base_armor_class = 14
dexterity_mod_max = 2
weight = 20
class HalfPlate(MediumArmor):
name = "Half Plate"
cost = 0, 0, 750
base_armor_class = 15
dexterity_mod_max = 2
stealth_disadvantage = True
weight = 40
class RingMail(HeavyArmor):
name = "Ring Mail"
cost = 0, 0, 30
base_armor_class = 14
stealth_disadvantage = True
weight = 40
class ChainMail(HeavyArmor):
name = "Chain Mail"
cost = 0, 0, 75
base_armor_class = 16
strength_required = 13
stealth_disadvantage = True
weight = 55
class SplintArmor(HeavyArmor):
name = "Splint Armor"
cost = 0, 0, 200
base_armor_class = 17
strength_required = 15
stealth_disadvantage = True
weight = 60
class PlateMail(HeavyArmor):
name = "Plate Mail"
cost = 0, 0, 1500
base_armor_class = 18
strength_required = 15
stealth_disadvantage = True
weight = 65
light_armors = [PaddedArmor, LeatherArmor, StuddedLeatherArmor]
medium_armors = [HideArmor, ChainShirt, ScaleMail, Breastplate, HalfPlate]
heavy_armors = [RingMail, ChainMail, SplintArmor, PlateMail]
all_armors = light_armors + medium_armors + heavy_armors