1 #ifndef GAME_MWMECHANICS_WEAPONTYPE_H
2 #define GAME_MWMECHANICS_WEAPONTYPE_H
3 
4 #include "../mwworld/inventorystore.hpp"
5 
6 namespace MWMechanics
7 {
8     static std::map<int, ESM::WeaponType> sWeaponTypeList =
9     {
10         {
11             ESM::Weapon::None,
12             {
13                 /* short group */ "",
14                 /* long group  */ "",
15                 /*  sound ID   */ "",
16                 /* attach bone */ "",
17                 /* sheath bone */ "",
18                 /* usage skill */ ESM::Skill::HandToHand,
19                 /* weapon class*/ ESM::WeaponType::Melee,
20                 /*  ammo type  */ ESM::Weapon::None,
21                 /*    flags    */ 0
22             }
23         },
24         {
25             ESM::Weapon::PickProbe,
26             {
27                 /* short group */ "1h",
28                 /* long group  */ "pickprobe",
29                 /*  sound ID   */ "",
30                 /* attach bone */ "",
31                 /* sheath bone */ "",
32                 /* usage skill */ ESM::Skill::Security,
33                 /* weapon class*/ ESM::WeaponType::Melee,
34                 /*  ammo type  */ ESM::Weapon::None,
35                 /*    flags    */ 0
36             }
37         },
38         {
39             ESM::Weapon::Spell,
40             {
41                 /* short group */ "spell",
42                 /* long group  */ "spellcast",
43                 /*  sound ID   */ "",
44                 /* attach bone */ "",
45                 /* sheath bone */ "",
46                 /* usage skill */ ESM::Skill::HandToHand,
47                 /* weapon class*/ ESM::WeaponType::Melee,
48                 /*  ammo type  */ ESM::Weapon::None,
49                 /*    flags    */ ESM::WeaponType::TwoHanded
50             }
51         },
52         {
53             ESM::Weapon::HandToHand,
54             {
55                 /* short group */ "hh",
56                 /* long group  */ "handtohand",
57                 /*  sound ID   */ "",
58                 /* attach bone */ "",
59                 /* sheath bone */ "",
60                 /* usage skill */ ESM::Skill::HandToHand,
61                 /* weapon class*/ ESM::WeaponType::Melee,
62                 /*  ammo type  */ ESM::Weapon::None,
63                 /*    flags    */ ESM::WeaponType::TwoHanded
64             }
65         },
66         {
67             ESM::Weapon::ShortBladeOneHand,
68             {
69                 /* short group */ "1s",
70                 /* long group  */ "shortbladeonehand",
71                 /*  sound ID   */ "Item Weapon Shortblade",
72                 /* attach bone */ "Weapon Bone",
73                 /* sheath bone */ "Bip01 ShortBladeOneHand",
74                 /* usage skill */ ESM::Skill::ShortBlade,
75                 /* weapon class*/ ESM::WeaponType::Melee,
76                 /*  ammo type  */ ESM::Weapon::None,
77                 /*    flags    */ ESM::WeaponType::HasHealth
78             }
79         },
80         {
81             ESM::Weapon::LongBladeOneHand,
82             {
83                 /* short group */ "1h",
84                 /* long group  */ "weapononehand",
85                 /*  sound ID   */ "Item Weapon Longblade",
86                 /* attach bone */ "Weapon Bone",
87                 /* sheath bone */ "Bip01 LongBladeOneHand",
88                 /* usage skill */ ESM::Skill::LongBlade,
89                 /* weapon class*/ ESM::WeaponType::Melee,
90                 /*  ammo type  */ ESM::Weapon::None,
91                 /*    flags    */ ESM::WeaponType::HasHealth
92             }
93         },
94         {
95             ESM::Weapon::BluntOneHand,
96             {
97                 /* short group */ "1b",
98                 /* long group  */ "bluntonehand",
99                 /*  sound ID   */ "Item Weapon Blunt",
100                 /* attach bone */ "Weapon Bone",
101                 /* sheath bone */ "Bip01 BluntOneHand",
102                 /* usage skill */ ESM::Skill::BluntWeapon,
103                 /* weapon class*/ ESM::WeaponType::Melee,
104                 /*  ammo type  */ ESM::Weapon::None,
105                 /*    flags    */ ESM::WeaponType::HasHealth
106             }
107         },
108         {
109             ESM::Weapon::AxeOneHand,
110             {
111                 /* short group */ "1b",
112                 /* long group  */ "bluntonehand",
113                 /*  sound ID   */ "Item Weapon Blunt",
114                 /* attach bone */ "Weapon Bone",
115                 /* sheath bone */ "Bip01 LongBladeOneHand",
116                 /* usage skill */ ESM::Skill::Axe,
117                 /* weapon class*/ ESM::WeaponType::Melee,
118                 /*  ammo type  */ ESM::Weapon::None,
119                 /*    flags    */ ESM::WeaponType::HasHealth
120             }
121         },
122         {
123             ESM::Weapon::LongBladeTwoHand,
124             {
125                 /* short group */ "2c",
126                 /* long group  */ "weapontwohand",
127                 /*  sound ID   */ "Item Weapon Longblade",
128                 /* attach bone */ "Weapon Bone",
129                 /* sheath bone */ "Bip01 LongBladeTwoClose",
130                 /* usage skill */ ESM::Skill::LongBlade,
131                 /* weapon class*/ ESM::WeaponType::Melee,
132                 /*  ammo type  */ ESM::Weapon::None,
133                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
134             }
135         },
136         {
137             ESM::Weapon::AxeTwoHand,
138             {
139                 /* short group */ "2b",
140                 /* long group  */ "blunttwohand",
141                 /*  sound ID   */ "Item Weapon Blunt",
142                 /* attach bone */ "Weapon Bone",
143                 /* sheath bone */ "Bip01 AxeTwoClose",
144                 /* usage skill */ ESM::Skill::Axe,
145                 /* weapon class*/ ESM::WeaponType::Melee,
146                 /*  ammo type  */ ESM::Weapon::None,
147                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
148             }
149         },
150         {
151             ESM::Weapon::BluntTwoClose,
152             {
153                 /* short group */ "2b",
154                 /* long group  */ "blunttwohand",
155                 /*  sound ID   */ "Item Weapon Blunt",
156                 /* attach bone */ "Weapon Bone",
157                 /* sheath bone */ "Bip01 BluntTwoClose",
158                 /* usage skill */ ESM::Skill::BluntWeapon,
159                 /* weapon class*/ ESM::WeaponType::Melee,
160                 /*  ammo type  */ ESM::Weapon::None,
161                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
162             }
163         },
164         {
165             ESM::Weapon::BluntTwoWide,
166             {
167                 /* short group */ "2w",
168                 /* long group  */ "weapontwowide",
169                 /*  sound ID   */ "Item Weapon Blunt",
170                 /* attach bone */ "Weapon Bone",
171                 /* sheath bone */ "Bip01 BluntTwoWide",
172                 /* usage skill */ ESM::Skill::BluntWeapon,
173                 /* weapon class*/ ESM::WeaponType::Melee,
174                 /*  ammo type  */ ESM::Weapon::None,
175                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
176             }
177         },
178         {
179             ESM::Weapon::SpearTwoWide,
180             {
181                 /* short group */ "2w",
182                 /* long group  */ "weapontwowide",
183                 /*  sound ID   */ "Item Weapon Spear",
184                 /* attach bone */ "Weapon Bone",
185                 /* sheath bone */ "Bip01 SpearTwoWide",
186                 /* usage skill */ ESM::Skill::Spear,
187                 /* weapon class*/ ESM::WeaponType::Melee,
188                 /*  ammo type  */ ESM::Weapon::None,
189                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
190             }
191         },
192         {
193             ESM::Weapon::MarksmanBow,
194             {
195                 /* short group */ "bow",
196                 /* long group  */ "bowandarrow",
197                 /*  sound ID   */ "Item Weapon Bow",
198                 /* attach bone */ "Weapon Bone Left",
199                 /* sheath bone */ "Bip01 MarksmanBow",
200                 /* usage skill */ ESM::Skill::Marksman,
201                 /* weapon class*/ ESM::WeaponType::Ranged,
202                 /*  ammo type  */ ESM::Weapon::Arrow,
203                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
204             }
205         },
206         {
207             ESM::Weapon::MarksmanCrossbow,
208             {
209                 /* short group */ "crossbow",
210                 /* long group  */ "crossbow",
211                 /*  sound ID   */ "Item Weapon Crossbow",
212                 /* attach bone */ "Weapon Bone",
213                 /* sheath bone */ "Bip01 MarksmanCrossbow",
214                 /* usage skill */ ESM::Skill::Marksman,
215                 /* weapon class*/ ESM::WeaponType::Ranged,
216                 /*  ammo type  */ ESM::Weapon::Bolt,
217                 /*    flags    */ ESM::WeaponType::HasHealth|ESM::WeaponType::TwoHanded
218             }
219         },
220         {
221             ESM::Weapon::MarksmanThrown,
222             {
223                 /* short group */ "1t",
224                 /* long group  */ "throwweapon",
225                 /*  sound ID   */ "Item Weapon Blunt",
226                 /* attach bone */ "Weapon Bone",
227                 /* sheath bone */ "Bip01 MarksmanThrown",
228                 /* usage skill */ ESM::Skill::Marksman,
229                 /* weapon class*/ ESM::WeaponType::Thrown,
230                 /*  ammo type  */ ESM::Weapon::None,
231                 /*    flags    */ 0
232             }
233         },
234         {
235             ESM::Weapon::Arrow,
236             {
237                 /* short group */ "",
238                 /* long group  */ "",
239                 /*  sound ID   */ "Item Ammo",
240                 /* attach bone */ "Bip01 Arrow",
241                 /* sheath bone */ "",
242                 /* usage skill */ ESM::Skill::Marksman,
243                 /* weapon class*/ ESM::WeaponType::Ammo,
244                 /*  ammo type  */ ESM::Weapon::None,
245                 /*    flags    */ 0
246             }
247         },
248         {
249             ESM::Weapon::Bolt,
250             {
251                 /* short group */ "",
252                 /* long group  */ "",
253                 /*  sound ID   */ "Item Ammo",
254                 /* attach bone */ "ArrowBone",
255                 /* sheath bone */ "",
256                 /* usage skill */ ESM::Skill::Marksman,
257                 /* weapon class*/ ESM::WeaponType::Ammo,
258                 /*  ammo type  */ ESM::Weapon::None,
259                 /*    flags    */ 0
260             }
261         }
262     };
263 
264     MWWorld::ContainerStoreIterator getActiveWeapon(MWWorld::Ptr actor, int *weaptype);
265 
266     const ESM::WeaponType* getWeaponType(const int weaponType);
267 }
268 
269 #endif
270