wow_world_base/inner/tbc/
skill.rs

1/// Auto generated from the original `wowm` in file [`wow_message_parser/wowm/world/enums/skill.wowm:131`](https://github.com/gtker/wow_messages/tree/main/wow_message_parser/wowm/world/enums/skill.wowm#L131):
2/// ```text
3/// enum Skill : u16 {
4///     NONE = 0;
5///     FROST = 6;
6///     FIRE = 8;
7///     ARMS = 26;
8///     COMBAT = 38;
9///     SUBTLETY = 39;
10///     POISONS = 40;
11///     SWORDS = 43;
12///     AXES = 44;
13///     BOWS = 45;
14///     GUNS = 46;
15///     BEAST_MASTERY = 50;
16///     SURVIVAL = 51;
17///     MACES = 54;
18///     TWO_HANDED_SWORDS = 55;
19///     HOLY = 56;
20///     SHADOW = 78;
21///     DEFENSE = 95;
22///     LANGUAGE_COMMON = 98;
23///     RACIAL_DWARVEN = 101;
24///     LANGUAGE_ORCISH = 109;
25///     LANGUAGE_DWARVEN = 111;
26///     LANGUAGE_DARNASSIAN = 113;
27///     LANGUAGE_TAURAHE = 115;
28///     DUAL_WIELD = 118;
29///     RACIAL_TAUREN = 124;
30///     ORC_RACIAL = 125;
31///     RACIAL_NIGHT_ELF = 126;
32///     FIRST_AID = 129;
33///     FERAL_COMBAT = 134;
34///     STAVES = 136;
35///     LANGUAGE_THALASSIAN = 137;
36///     LANGUAGE_DRACONIC = 138;
37///     LANGUAGE_DEMON_TONGUE = 139;
38///     LANGUAGE_TITAN = 140;
39///     LANGUAGE_OLD_TONGUE = 141;
40///     SURVIVAL2 = 142;
41///     RIDING_HORSE = 148;
42///     RIDING_WOLF = 149;
43///     RIDING_TIGER = 150;
44///     RIDING_RAM = 152;
45///     SWIMMING = 155;
46///     TWO_HANDED_MACES = 160;
47///     UNARMED = 162;
48///     MARKSMANSHIP = 163;
49///     BLACKSMITHING = 164;
50///     LEATHERWORKING = 165;
51///     ALCHEMY = 171;
52///     TWO_HANDED_AXES = 172;
53///     DAGGERS = 173;
54///     THROWN = 176;
55///     HERBALISM = 182;
56///     GENERIC_DND = 183;
57///     RETRIBUTION = 184;
58///     COOKING = 185;
59///     MINING = 186;
60///     PET_IMP = 188;
61///     PET_FELHUNTER = 189;
62///     TAILORING = 197;
63///     ENGINEERING = 202;
64///     PET_SPIDER = 203;
65///     PET_VOIDWALKER = 204;
66///     PET_SUCCUBUS = 205;
67///     PET_INFERNAL = 206;
68///     PET_DOOMGUARD = 207;
69///     PET_WOLF = 208;
70///     PET_CAT = 209;
71///     PET_BEAR = 210;
72///     PET_BOAR = 211;
73///     PET_CROCILISK = 212;
74///     PET_CARRION_BIRD = 213;
75///     PET_CRAB = 214;
76///     PET_GORILLA = 215;
77///     PET_RAPTOR = 217;
78///     PET_TALLSTRIDER = 218;
79///     RACIAL_UNDED = 220;
80///     CROSSBOWS = 226;
81///     WANDS = 228;
82///     POLEARMS = 229;
83///     PET_SCORPID = 236;
84///     ARCANE = 237;
85///     PET_TURTLE = 251;
86///     ASSASSINATION = 253;
87///     FURY = 256;
88///     PROTECTION = 257;
89///     BEAST_TRAINING = 261;
90///     PROTECTION2 = 267;
91///     PET_TALENTS = 270;
92///     PLATE_MAIL = 293;
93///     LANGUAGE_GNOMISH = 313;
94///     LANGUAGE_TROLL = 315;
95///     ENCHANTING = 333;
96///     DEMONOLOGY = 354;
97///     AFFLICTION = 355;
98///     FISHING = 356;
99///     ENHANCEMENT = 373;
100///     RESTORATION = 374;
101///     ELEMENTAL_COMBAT = 375;
102///     SKINNING = 393;
103///     MAIL = 413;
104///     LEATHER = 414;
105///     CLOTH = 415;
106///     SHIELD = 433;
107///     FIST_WEAPONS = 473;
108///     RIDING_RAPTOR = 533;
109///     RIDING_MECHANOSTRIDER = 553;
110///     RIDING_UNDEAD_HORSE = 554;
111///     RESTORATION2 = 573;
112///     BALANCE = 574;
113///     DESTRUCTION = 593;
114///     HOLY2 = 594;
115///     DISCIPLINE = 613;
116///     LOCKPICKING = 633;
117///     PET_BAT = 653;
118///     PET_HYENA = 654;
119///     PET_OWL = 655;
120///     PET_WIND_SERPENT = 656;
121///     LANGUAGE_GUTTERSPEAK = 673;
122///     RIDING_KODO = 713;
123///     RACIAL_TROLL = 733;
124///     RACIAL_GNOME = 753;
125///     RACIAL_HUMAN = 754;
126///     JEWELCRAFTING = 755;
127///     RACIAL_BLOODELF = 756;
128///     PET_EVENT_RC = 758;
129///     LANGUAGE_DRAENEI = 759;
130///     RACIAL_DRAENEI = 760;
131///     PET_FELGUARD = 761;
132///     RIDING = 762;
133///     PET_DRAGONHAWK = 763;
134///     PET_NETHER_RAY = 764;
135///     PET_SPOREBAT = 765;
136///     PET_WARP_STALKER = 766;
137///     PET_RAVAGER = 767;
138///     PET_SERPENT = 768;
139///     INTERNAL = 769;
140/// }
141/// ```
142#[derive(Debug, PartialEq, Eq, Hash, Ord, PartialOrd, Copy, Clone)]
143#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
144pub enum Skill {
145    None,
146    Frost,
147    Fire,
148    Arms,
149    Combat,
150    Subtlety,
151    Poisons,
152    Swords,
153    Axes,
154    Bows,
155    Guns,
156    BeastMastery,
157    Survival,
158    Maces,
159    TwoHandedSwords,
160    Holy,
161    Shadow,
162    Defense,
163    LanguageCommon,
164    RacialDwarven,
165    LanguageOrcish,
166    LanguageDwarven,
167    LanguageDarnassian,
168    LanguageTaurahe,
169    DualWield,
170    RacialTauren,
171    OrcRacial,
172    RacialNightElf,
173    FirstAid,
174    FeralCombat,
175    Staves,
176    LanguageThalassian,
177    LanguageDraconic,
178    LanguageDemonTongue,
179    LanguageTitan,
180    LanguageOldTongue,
181    Survival2,
182    RidingHorse,
183    RidingWolf,
184    RidingTiger,
185    RidingRam,
186    Swimming,
187    TwoHandedMaces,
188    Unarmed,
189    Marksmanship,
190    Blacksmithing,
191    Leatherworking,
192    Alchemy,
193    TwoHandedAxes,
194    Daggers,
195    Thrown,
196    Herbalism,
197    GenericDnd,
198    Retribution,
199    Cooking,
200    Mining,
201    PetImp,
202    PetFelhunter,
203    Tailoring,
204    Engineering,
205    PetSpider,
206    PetVoidwalker,
207    PetSuccubus,
208    PetInfernal,
209    PetDoomguard,
210    PetWolf,
211    PetCat,
212    PetBear,
213    PetBoar,
214    PetCrocilisk,
215    PetCarrionBird,
216    PetCrab,
217    PetGorilla,
218    PetRaptor,
219    PetTallstrider,
220    RacialUnded,
221    Crossbows,
222    Wands,
223    Polearms,
224    PetScorpid,
225    Arcane,
226    PetTurtle,
227    Assassination,
228    Fury,
229    Protection,
230    BeastTraining,
231    Protection2,
232    PetTalents,
233    PlateMail,
234    LanguageGnomish,
235    LanguageTroll,
236    Enchanting,
237    Demonology,
238    Affliction,
239    Fishing,
240    Enhancement,
241    Restoration,
242    ElementalCombat,
243    Skinning,
244    Mail,
245    Leather,
246    Cloth,
247    Shield,
248    FistWeapons,
249    RidingRaptor,
250    RidingMechanostrider,
251    RidingUndeadHorse,
252    Restoration2,
253    Balance,
254    Destruction,
255    Holy2,
256    Discipline,
257    Lockpicking,
258    PetBat,
259    PetHyena,
260    PetOwl,
261    PetWindSerpent,
262    LanguageGutterspeak,
263    RidingKodo,
264    RacialTroll,
265    RacialGnome,
266    RacialHuman,
267    Jewelcrafting,
268    RacialBloodelf,
269    PetEventRc,
270    LanguageDraenei,
271    RacialDraenei,
272    PetFelguard,
273    Riding,
274    PetDragonhawk,
275    PetNetherRay,
276    PetSporebat,
277    PetWarpStalker,
278    PetRavager,
279    PetSerpent,
280    Internal,
281}
282
283impl Skill {
284    pub const fn as_int(&self) -> u16 {
285        match self {
286            Self::None => 0x0,
287            Self::Frost => 0x6,
288            Self::Fire => 0x8,
289            Self::Arms => 0x1a,
290            Self::Combat => 0x26,
291            Self::Subtlety => 0x27,
292            Self::Poisons => 0x28,
293            Self::Swords => 0x2b,
294            Self::Axes => 0x2c,
295            Self::Bows => 0x2d,
296            Self::Guns => 0x2e,
297            Self::BeastMastery => 0x32,
298            Self::Survival => 0x33,
299            Self::Maces => 0x36,
300            Self::TwoHandedSwords => 0x37,
301            Self::Holy => 0x38,
302            Self::Shadow => 0x4e,
303            Self::Defense => 0x5f,
304            Self::LanguageCommon => 0x62,
305            Self::RacialDwarven => 0x65,
306            Self::LanguageOrcish => 0x6d,
307            Self::LanguageDwarven => 0x6f,
308            Self::LanguageDarnassian => 0x71,
309            Self::LanguageTaurahe => 0x73,
310            Self::DualWield => 0x76,
311            Self::RacialTauren => 0x7c,
312            Self::OrcRacial => 0x7d,
313            Self::RacialNightElf => 0x7e,
314            Self::FirstAid => 0x81,
315            Self::FeralCombat => 0x86,
316            Self::Staves => 0x88,
317            Self::LanguageThalassian => 0x89,
318            Self::LanguageDraconic => 0x8a,
319            Self::LanguageDemonTongue => 0x8b,
320            Self::LanguageTitan => 0x8c,
321            Self::LanguageOldTongue => 0x8d,
322            Self::Survival2 => 0x8e,
323            Self::RidingHorse => 0x94,
324            Self::RidingWolf => 0x95,
325            Self::RidingTiger => 0x96,
326            Self::RidingRam => 0x98,
327            Self::Swimming => 0x9b,
328            Self::TwoHandedMaces => 0xa0,
329            Self::Unarmed => 0xa2,
330            Self::Marksmanship => 0xa3,
331            Self::Blacksmithing => 0xa4,
332            Self::Leatherworking => 0xa5,
333            Self::Alchemy => 0xab,
334            Self::TwoHandedAxes => 0xac,
335            Self::Daggers => 0xad,
336            Self::Thrown => 0xb0,
337            Self::Herbalism => 0xb6,
338            Self::GenericDnd => 0xb7,
339            Self::Retribution => 0xb8,
340            Self::Cooking => 0xb9,
341            Self::Mining => 0xba,
342            Self::PetImp => 0xbc,
343            Self::PetFelhunter => 0xbd,
344            Self::Tailoring => 0xc5,
345            Self::Engineering => 0xca,
346            Self::PetSpider => 0xcb,
347            Self::PetVoidwalker => 0xcc,
348            Self::PetSuccubus => 0xcd,
349            Self::PetInfernal => 0xce,
350            Self::PetDoomguard => 0xcf,
351            Self::PetWolf => 0xd0,
352            Self::PetCat => 0xd1,
353            Self::PetBear => 0xd2,
354            Self::PetBoar => 0xd3,
355            Self::PetCrocilisk => 0xd4,
356            Self::PetCarrionBird => 0xd5,
357            Self::PetCrab => 0xd6,
358            Self::PetGorilla => 0xd7,
359            Self::PetRaptor => 0xd9,
360            Self::PetTallstrider => 0xda,
361            Self::RacialUnded => 0xdc,
362            Self::Crossbows => 0xe2,
363            Self::Wands => 0xe4,
364            Self::Polearms => 0xe5,
365            Self::PetScorpid => 0xec,
366            Self::Arcane => 0xed,
367            Self::PetTurtle => 0xfb,
368            Self::Assassination => 0xfd,
369            Self::Fury => 0x100,
370            Self::Protection => 0x101,
371            Self::BeastTraining => 0x105,
372            Self::Protection2 => 0x10b,
373            Self::PetTalents => 0x10e,
374            Self::PlateMail => 0x125,
375            Self::LanguageGnomish => 0x139,
376            Self::LanguageTroll => 0x13b,
377            Self::Enchanting => 0x14d,
378            Self::Demonology => 0x162,
379            Self::Affliction => 0x163,
380            Self::Fishing => 0x164,
381            Self::Enhancement => 0x175,
382            Self::Restoration => 0x176,
383            Self::ElementalCombat => 0x177,
384            Self::Skinning => 0x189,
385            Self::Mail => 0x19d,
386            Self::Leather => 0x19e,
387            Self::Cloth => 0x19f,
388            Self::Shield => 0x1b1,
389            Self::FistWeapons => 0x1d9,
390            Self::RidingRaptor => 0x215,
391            Self::RidingMechanostrider => 0x229,
392            Self::RidingUndeadHorse => 0x22a,
393            Self::Restoration2 => 0x23d,
394            Self::Balance => 0x23e,
395            Self::Destruction => 0x251,
396            Self::Holy2 => 0x252,
397            Self::Discipline => 0x265,
398            Self::Lockpicking => 0x279,
399            Self::PetBat => 0x28d,
400            Self::PetHyena => 0x28e,
401            Self::PetOwl => 0x28f,
402            Self::PetWindSerpent => 0x290,
403            Self::LanguageGutterspeak => 0x2a1,
404            Self::RidingKodo => 0x2c9,
405            Self::RacialTroll => 0x2dd,
406            Self::RacialGnome => 0x2f1,
407            Self::RacialHuman => 0x2f2,
408            Self::Jewelcrafting => 0x2f3,
409            Self::RacialBloodelf => 0x2f4,
410            Self::PetEventRc => 0x2f6,
411            Self::LanguageDraenei => 0x2f7,
412            Self::RacialDraenei => 0x2f8,
413            Self::PetFelguard => 0x2f9,
414            Self::Riding => 0x2fa,
415            Self::PetDragonhawk => 0x2fb,
416            Self::PetNetherRay => 0x2fc,
417            Self::PetSporebat => 0x2fd,
418            Self::PetWarpStalker => 0x2fe,
419            Self::PetRavager => 0x2ff,
420            Self::PetSerpent => 0x300,
421            Self::Internal => 0x301,
422        }
423    }
424
425    pub const fn variants() -> [Self; 136] {
426        [
427            Self::None,
428            Self::Frost,
429            Self::Fire,
430            Self::Arms,
431            Self::Combat,
432            Self::Subtlety,
433            Self::Poisons,
434            Self::Swords,
435            Self::Axes,
436            Self::Bows,
437            Self::Guns,
438            Self::BeastMastery,
439            Self::Survival,
440            Self::Maces,
441            Self::TwoHandedSwords,
442            Self::Holy,
443            Self::Shadow,
444            Self::Defense,
445            Self::LanguageCommon,
446            Self::RacialDwarven,
447            Self::LanguageOrcish,
448            Self::LanguageDwarven,
449            Self::LanguageDarnassian,
450            Self::LanguageTaurahe,
451            Self::DualWield,
452            Self::RacialTauren,
453            Self::OrcRacial,
454            Self::RacialNightElf,
455            Self::FirstAid,
456            Self::FeralCombat,
457            Self::Staves,
458            Self::LanguageThalassian,
459            Self::LanguageDraconic,
460            Self::LanguageDemonTongue,
461            Self::LanguageTitan,
462            Self::LanguageOldTongue,
463            Self::Survival2,
464            Self::RidingHorse,
465            Self::RidingWolf,
466            Self::RidingTiger,
467            Self::RidingRam,
468            Self::Swimming,
469            Self::TwoHandedMaces,
470            Self::Unarmed,
471            Self::Marksmanship,
472            Self::Blacksmithing,
473            Self::Leatherworking,
474            Self::Alchemy,
475            Self::TwoHandedAxes,
476            Self::Daggers,
477            Self::Thrown,
478            Self::Herbalism,
479            Self::GenericDnd,
480            Self::Retribution,
481            Self::Cooking,
482            Self::Mining,
483            Self::PetImp,
484            Self::PetFelhunter,
485            Self::Tailoring,
486            Self::Engineering,
487            Self::PetSpider,
488            Self::PetVoidwalker,
489            Self::PetSuccubus,
490            Self::PetInfernal,
491            Self::PetDoomguard,
492            Self::PetWolf,
493            Self::PetCat,
494            Self::PetBear,
495            Self::PetBoar,
496            Self::PetCrocilisk,
497            Self::PetCarrionBird,
498            Self::PetCrab,
499            Self::PetGorilla,
500            Self::PetRaptor,
501            Self::PetTallstrider,
502            Self::RacialUnded,
503            Self::Crossbows,
504            Self::Wands,
505            Self::Polearms,
506            Self::PetScorpid,
507            Self::Arcane,
508            Self::PetTurtle,
509            Self::Assassination,
510            Self::Fury,
511            Self::Protection,
512            Self::BeastTraining,
513            Self::Protection2,
514            Self::PetTalents,
515            Self::PlateMail,
516            Self::LanguageGnomish,
517            Self::LanguageTroll,
518            Self::Enchanting,
519            Self::Demonology,
520            Self::Affliction,
521            Self::Fishing,
522            Self::Enhancement,
523            Self::Restoration,
524            Self::ElementalCombat,
525            Self::Skinning,
526            Self::Mail,
527            Self::Leather,
528            Self::Cloth,
529            Self::Shield,
530            Self::FistWeapons,
531            Self::RidingRaptor,
532            Self::RidingMechanostrider,
533            Self::RidingUndeadHorse,
534            Self::Restoration2,
535            Self::Balance,
536            Self::Destruction,
537            Self::Holy2,
538            Self::Discipline,
539            Self::Lockpicking,
540            Self::PetBat,
541            Self::PetHyena,
542            Self::PetOwl,
543            Self::PetWindSerpent,
544            Self::LanguageGutterspeak,
545            Self::RidingKodo,
546            Self::RacialTroll,
547            Self::RacialGnome,
548            Self::RacialHuman,
549            Self::Jewelcrafting,
550            Self::RacialBloodelf,
551            Self::PetEventRc,
552            Self::LanguageDraenei,
553            Self::RacialDraenei,
554            Self::PetFelguard,
555            Self::Riding,
556            Self::PetDragonhawk,
557            Self::PetNetherRay,
558            Self::PetSporebat,
559            Self::PetWarpStalker,
560            Self::PetRavager,
561            Self::PetSerpent,
562            Self::Internal,
563        ]
564    }
565
566    pub const fn from_int(value: u16) -> Result<Self, crate::errors::EnumError> {
567        match value {
568            0 => Ok(Self::None),
569            6 => Ok(Self::Frost),
570            8 => Ok(Self::Fire),
571            26 => Ok(Self::Arms),
572            38 => Ok(Self::Combat),
573            39 => Ok(Self::Subtlety),
574            40 => Ok(Self::Poisons),
575            43 => Ok(Self::Swords),
576            44 => Ok(Self::Axes),
577            45 => Ok(Self::Bows),
578            46 => Ok(Self::Guns),
579            50 => Ok(Self::BeastMastery),
580            51 => Ok(Self::Survival),
581            54 => Ok(Self::Maces),
582            55 => Ok(Self::TwoHandedSwords),
583            56 => Ok(Self::Holy),
584            78 => Ok(Self::Shadow),
585            95 => Ok(Self::Defense),
586            98 => Ok(Self::LanguageCommon),
587            101 => Ok(Self::RacialDwarven),
588            109 => Ok(Self::LanguageOrcish),
589            111 => Ok(Self::LanguageDwarven),
590            113 => Ok(Self::LanguageDarnassian),
591            115 => Ok(Self::LanguageTaurahe),
592            118 => Ok(Self::DualWield),
593            124 => Ok(Self::RacialTauren),
594            125 => Ok(Self::OrcRacial),
595            126 => Ok(Self::RacialNightElf),
596            129 => Ok(Self::FirstAid),
597            134 => Ok(Self::FeralCombat),
598            136 => Ok(Self::Staves),
599            137 => Ok(Self::LanguageThalassian),
600            138 => Ok(Self::LanguageDraconic),
601            139 => Ok(Self::LanguageDemonTongue),
602            140 => Ok(Self::LanguageTitan),
603            141 => Ok(Self::LanguageOldTongue),
604            142 => Ok(Self::Survival2),
605            148 => Ok(Self::RidingHorse),
606            149 => Ok(Self::RidingWolf),
607            150 => Ok(Self::RidingTiger),
608            152 => Ok(Self::RidingRam),
609            155 => Ok(Self::Swimming),
610            160 => Ok(Self::TwoHandedMaces),
611            162 => Ok(Self::Unarmed),
612            163 => Ok(Self::Marksmanship),
613            164 => Ok(Self::Blacksmithing),
614            165 => Ok(Self::Leatherworking),
615            171 => Ok(Self::Alchemy),
616            172 => Ok(Self::TwoHandedAxes),
617            173 => Ok(Self::Daggers),
618            176 => Ok(Self::Thrown),
619            182 => Ok(Self::Herbalism),
620            183 => Ok(Self::GenericDnd),
621            184 => Ok(Self::Retribution),
622            185 => Ok(Self::Cooking),
623            186 => Ok(Self::Mining),
624            188 => Ok(Self::PetImp),
625            189 => Ok(Self::PetFelhunter),
626            197 => Ok(Self::Tailoring),
627            202 => Ok(Self::Engineering),
628            203 => Ok(Self::PetSpider),
629            204 => Ok(Self::PetVoidwalker),
630            205 => Ok(Self::PetSuccubus),
631            206 => Ok(Self::PetInfernal),
632            207 => Ok(Self::PetDoomguard),
633            208 => Ok(Self::PetWolf),
634            209 => Ok(Self::PetCat),
635            210 => Ok(Self::PetBear),
636            211 => Ok(Self::PetBoar),
637            212 => Ok(Self::PetCrocilisk),
638            213 => Ok(Self::PetCarrionBird),
639            214 => Ok(Self::PetCrab),
640            215 => Ok(Self::PetGorilla),
641            217 => Ok(Self::PetRaptor),
642            218 => Ok(Self::PetTallstrider),
643            220 => Ok(Self::RacialUnded),
644            226 => Ok(Self::Crossbows),
645            228 => Ok(Self::Wands),
646            229 => Ok(Self::Polearms),
647            236 => Ok(Self::PetScorpid),
648            237 => Ok(Self::Arcane),
649            251 => Ok(Self::PetTurtle),
650            253 => Ok(Self::Assassination),
651            256 => Ok(Self::Fury),
652            257 => Ok(Self::Protection),
653            261 => Ok(Self::BeastTraining),
654            267 => Ok(Self::Protection2),
655            270 => Ok(Self::PetTalents),
656            293 => Ok(Self::PlateMail),
657            313 => Ok(Self::LanguageGnomish),
658            315 => Ok(Self::LanguageTroll),
659            333 => Ok(Self::Enchanting),
660            354 => Ok(Self::Demonology),
661            355 => Ok(Self::Affliction),
662            356 => Ok(Self::Fishing),
663            373 => Ok(Self::Enhancement),
664            374 => Ok(Self::Restoration),
665            375 => Ok(Self::ElementalCombat),
666            393 => Ok(Self::Skinning),
667            413 => Ok(Self::Mail),
668            414 => Ok(Self::Leather),
669            415 => Ok(Self::Cloth),
670            433 => Ok(Self::Shield),
671            473 => Ok(Self::FistWeapons),
672            533 => Ok(Self::RidingRaptor),
673            553 => Ok(Self::RidingMechanostrider),
674            554 => Ok(Self::RidingUndeadHorse),
675            573 => Ok(Self::Restoration2),
676            574 => Ok(Self::Balance),
677            593 => Ok(Self::Destruction),
678            594 => Ok(Self::Holy2),
679            613 => Ok(Self::Discipline),
680            633 => Ok(Self::Lockpicking),
681            653 => Ok(Self::PetBat),
682            654 => Ok(Self::PetHyena),
683            655 => Ok(Self::PetOwl),
684            656 => Ok(Self::PetWindSerpent),
685            673 => Ok(Self::LanguageGutterspeak),
686            713 => Ok(Self::RidingKodo),
687            733 => Ok(Self::RacialTroll),
688            753 => Ok(Self::RacialGnome),
689            754 => Ok(Self::RacialHuman),
690            755 => Ok(Self::Jewelcrafting),
691            756 => Ok(Self::RacialBloodelf),
692            758 => Ok(Self::PetEventRc),
693            759 => Ok(Self::LanguageDraenei),
694            760 => Ok(Self::RacialDraenei),
695            761 => Ok(Self::PetFelguard),
696            762 => Ok(Self::Riding),
697            763 => Ok(Self::PetDragonhawk),
698            764 => Ok(Self::PetNetherRay),
699            765 => Ok(Self::PetSporebat),
700            766 => Ok(Self::PetWarpStalker),
701            767 => Ok(Self::PetRavager),
702            768 => Ok(Self::PetSerpent),
703            769 => Ok(Self::Internal),
704            v => Err(crate::errors::EnumError::new(NAME, v as i128),)
705        }
706    }
707}
708
709#[cfg(feature = "print-testcase")]
710impl Skill {
711    pub const fn as_test_case_value(&self) -> &'static str {
712        match self {
713            Self::None => "NONE",
714            Self::Frost => "FROST",
715            Self::Fire => "FIRE",
716            Self::Arms => "ARMS",
717            Self::Combat => "COMBAT",
718            Self::Subtlety => "SUBTLETY",
719            Self::Poisons => "POISONS",
720            Self::Swords => "SWORDS",
721            Self::Axes => "AXES",
722            Self::Bows => "BOWS",
723            Self::Guns => "GUNS",
724            Self::BeastMastery => "BEAST_MASTERY",
725            Self::Survival => "SURVIVAL",
726            Self::Maces => "MACES",
727            Self::TwoHandedSwords => "TWO_HANDED_SWORDS",
728            Self::Holy => "HOLY",
729            Self::Shadow => "SHADOW",
730            Self::Defense => "DEFENSE",
731            Self::LanguageCommon => "LANGUAGE_COMMON",
732            Self::RacialDwarven => "RACIAL_DWARVEN",
733            Self::LanguageOrcish => "LANGUAGE_ORCISH",
734            Self::LanguageDwarven => "LANGUAGE_DWARVEN",
735            Self::LanguageDarnassian => "LANGUAGE_DARNASSIAN",
736            Self::LanguageTaurahe => "LANGUAGE_TAURAHE",
737            Self::DualWield => "DUAL_WIELD",
738            Self::RacialTauren => "RACIAL_TAUREN",
739            Self::OrcRacial => "ORC_RACIAL",
740            Self::RacialNightElf => "RACIAL_NIGHT_ELF",
741            Self::FirstAid => "FIRST_AID",
742            Self::FeralCombat => "FERAL_COMBAT",
743            Self::Staves => "STAVES",
744            Self::LanguageThalassian => "LANGUAGE_THALASSIAN",
745            Self::LanguageDraconic => "LANGUAGE_DRACONIC",
746            Self::LanguageDemonTongue => "LANGUAGE_DEMON_TONGUE",
747            Self::LanguageTitan => "LANGUAGE_TITAN",
748            Self::LanguageOldTongue => "LANGUAGE_OLD_TONGUE",
749            Self::Survival2 => "SURVIVAL2",
750            Self::RidingHorse => "RIDING_HORSE",
751            Self::RidingWolf => "RIDING_WOLF",
752            Self::RidingTiger => "RIDING_TIGER",
753            Self::RidingRam => "RIDING_RAM",
754            Self::Swimming => "SWIMMING",
755            Self::TwoHandedMaces => "TWO_HANDED_MACES",
756            Self::Unarmed => "UNARMED",
757            Self::Marksmanship => "MARKSMANSHIP",
758            Self::Blacksmithing => "BLACKSMITHING",
759            Self::Leatherworking => "LEATHERWORKING",
760            Self::Alchemy => "ALCHEMY",
761            Self::TwoHandedAxes => "TWO_HANDED_AXES",
762            Self::Daggers => "DAGGERS",
763            Self::Thrown => "THROWN",
764            Self::Herbalism => "HERBALISM",
765            Self::GenericDnd => "GENERIC_DND",
766            Self::Retribution => "RETRIBUTION",
767            Self::Cooking => "COOKING",
768            Self::Mining => "MINING",
769            Self::PetImp => "PET_IMP",
770            Self::PetFelhunter => "PET_FELHUNTER",
771            Self::Tailoring => "TAILORING",
772            Self::Engineering => "ENGINEERING",
773            Self::PetSpider => "PET_SPIDER",
774            Self::PetVoidwalker => "PET_VOIDWALKER",
775            Self::PetSuccubus => "PET_SUCCUBUS",
776            Self::PetInfernal => "PET_INFERNAL",
777            Self::PetDoomguard => "PET_DOOMGUARD",
778            Self::PetWolf => "PET_WOLF",
779            Self::PetCat => "PET_CAT",
780            Self::PetBear => "PET_BEAR",
781            Self::PetBoar => "PET_BOAR",
782            Self::PetCrocilisk => "PET_CROCILISK",
783            Self::PetCarrionBird => "PET_CARRION_BIRD",
784            Self::PetCrab => "PET_CRAB",
785            Self::PetGorilla => "PET_GORILLA",
786            Self::PetRaptor => "PET_RAPTOR",
787            Self::PetTallstrider => "PET_TALLSTRIDER",
788            Self::RacialUnded => "RACIAL_UNDED",
789            Self::Crossbows => "CROSSBOWS",
790            Self::Wands => "WANDS",
791            Self::Polearms => "POLEARMS",
792            Self::PetScorpid => "PET_SCORPID",
793            Self::Arcane => "ARCANE",
794            Self::PetTurtle => "PET_TURTLE",
795            Self::Assassination => "ASSASSINATION",
796            Self::Fury => "FURY",
797            Self::Protection => "PROTECTION",
798            Self::BeastTraining => "BEAST_TRAINING",
799            Self::Protection2 => "PROTECTION2",
800            Self::PetTalents => "PET_TALENTS",
801            Self::PlateMail => "PLATE_MAIL",
802            Self::LanguageGnomish => "LANGUAGE_GNOMISH",
803            Self::LanguageTroll => "LANGUAGE_TROLL",
804            Self::Enchanting => "ENCHANTING",
805            Self::Demonology => "DEMONOLOGY",
806            Self::Affliction => "AFFLICTION",
807            Self::Fishing => "FISHING",
808            Self::Enhancement => "ENHANCEMENT",
809            Self::Restoration => "RESTORATION",
810            Self::ElementalCombat => "ELEMENTAL_COMBAT",
811            Self::Skinning => "SKINNING",
812            Self::Mail => "MAIL",
813            Self::Leather => "LEATHER",
814            Self::Cloth => "CLOTH",
815            Self::Shield => "SHIELD",
816            Self::FistWeapons => "FIST_WEAPONS",
817            Self::RidingRaptor => "RIDING_RAPTOR",
818            Self::RidingMechanostrider => "RIDING_MECHANOSTRIDER",
819            Self::RidingUndeadHorse => "RIDING_UNDEAD_HORSE",
820            Self::Restoration2 => "RESTORATION2",
821            Self::Balance => "BALANCE",
822            Self::Destruction => "DESTRUCTION",
823            Self::Holy2 => "HOLY2",
824            Self::Discipline => "DISCIPLINE",
825            Self::Lockpicking => "LOCKPICKING",
826            Self::PetBat => "PET_BAT",
827            Self::PetHyena => "PET_HYENA",
828            Self::PetOwl => "PET_OWL",
829            Self::PetWindSerpent => "PET_WIND_SERPENT",
830            Self::LanguageGutterspeak => "LANGUAGE_GUTTERSPEAK",
831            Self::RidingKodo => "RIDING_KODO",
832            Self::RacialTroll => "RACIAL_TROLL",
833            Self::RacialGnome => "RACIAL_GNOME",
834            Self::RacialHuman => "RACIAL_HUMAN",
835            Self::Jewelcrafting => "JEWELCRAFTING",
836            Self::RacialBloodelf => "RACIAL_BLOODELF",
837            Self::PetEventRc => "PET_EVENT_RC",
838            Self::LanguageDraenei => "LANGUAGE_DRAENEI",
839            Self::RacialDraenei => "RACIAL_DRAENEI",
840            Self::PetFelguard => "PET_FELGUARD",
841            Self::Riding => "RIDING",
842            Self::PetDragonhawk => "PET_DRAGONHAWK",
843            Self::PetNetherRay => "PET_NETHER_RAY",
844            Self::PetSporebat => "PET_SPOREBAT",
845            Self::PetWarpStalker => "PET_WARP_STALKER",
846            Self::PetRavager => "PET_RAVAGER",
847            Self::PetSerpent => "PET_SERPENT",
848            Self::Internal => "INTERNAL",
849        }
850    }
851
852}
853
854const NAME: &str = "Skill";
855
856impl Default for Skill {
857    fn default() -> Self {
858        Self::None
859    }
860}
861
862impl std::fmt::Display for Skill {
863    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
864        match self {
865            Self::None => f.write_str("None"),
866            Self::Frost => f.write_str("Frost"),
867            Self::Fire => f.write_str("Fire"),
868            Self::Arms => f.write_str("Arms"),
869            Self::Combat => f.write_str("Combat"),
870            Self::Subtlety => f.write_str("Subtlety"),
871            Self::Poisons => f.write_str("Poisons"),
872            Self::Swords => f.write_str("Swords"),
873            Self::Axes => f.write_str("Axes"),
874            Self::Bows => f.write_str("Bows"),
875            Self::Guns => f.write_str("Guns"),
876            Self::BeastMastery => f.write_str("BeastMastery"),
877            Self::Survival => f.write_str("Survival"),
878            Self::Maces => f.write_str("Maces"),
879            Self::TwoHandedSwords => f.write_str("TwoHandedSwords"),
880            Self::Holy => f.write_str("Holy"),
881            Self::Shadow => f.write_str("Shadow"),
882            Self::Defense => f.write_str("Defense"),
883            Self::LanguageCommon => f.write_str("LanguageCommon"),
884            Self::RacialDwarven => f.write_str("RacialDwarven"),
885            Self::LanguageOrcish => f.write_str("LanguageOrcish"),
886            Self::LanguageDwarven => f.write_str("LanguageDwarven"),
887            Self::LanguageDarnassian => f.write_str("LanguageDarnassian"),
888            Self::LanguageTaurahe => f.write_str("LanguageTaurahe"),
889            Self::DualWield => f.write_str("DualWield"),
890            Self::RacialTauren => f.write_str("RacialTauren"),
891            Self::OrcRacial => f.write_str("OrcRacial"),
892            Self::RacialNightElf => f.write_str("RacialNightElf"),
893            Self::FirstAid => f.write_str("FirstAid"),
894            Self::FeralCombat => f.write_str("FeralCombat"),
895            Self::Staves => f.write_str("Staves"),
896            Self::LanguageThalassian => f.write_str("LanguageThalassian"),
897            Self::LanguageDraconic => f.write_str("LanguageDraconic"),
898            Self::LanguageDemonTongue => f.write_str("LanguageDemonTongue"),
899            Self::LanguageTitan => f.write_str("LanguageTitan"),
900            Self::LanguageOldTongue => f.write_str("LanguageOldTongue"),
901            Self::Survival2 => f.write_str("Survival2"),
902            Self::RidingHorse => f.write_str("RidingHorse"),
903            Self::RidingWolf => f.write_str("RidingWolf"),
904            Self::RidingTiger => f.write_str("RidingTiger"),
905            Self::RidingRam => f.write_str("RidingRam"),
906            Self::Swimming => f.write_str("Swimming"),
907            Self::TwoHandedMaces => f.write_str("TwoHandedMaces"),
908            Self::Unarmed => f.write_str("Unarmed"),
909            Self::Marksmanship => f.write_str("Marksmanship"),
910            Self::Blacksmithing => f.write_str("Blacksmithing"),
911            Self::Leatherworking => f.write_str("Leatherworking"),
912            Self::Alchemy => f.write_str("Alchemy"),
913            Self::TwoHandedAxes => f.write_str("TwoHandedAxes"),
914            Self::Daggers => f.write_str("Daggers"),
915            Self::Thrown => f.write_str("Thrown"),
916            Self::Herbalism => f.write_str("Herbalism"),
917            Self::GenericDnd => f.write_str("GenericDnd"),
918            Self::Retribution => f.write_str("Retribution"),
919            Self::Cooking => f.write_str("Cooking"),
920            Self::Mining => f.write_str("Mining"),
921            Self::PetImp => f.write_str("PetImp"),
922            Self::PetFelhunter => f.write_str("PetFelhunter"),
923            Self::Tailoring => f.write_str("Tailoring"),
924            Self::Engineering => f.write_str("Engineering"),
925            Self::PetSpider => f.write_str("PetSpider"),
926            Self::PetVoidwalker => f.write_str("PetVoidwalker"),
927            Self::PetSuccubus => f.write_str("PetSuccubus"),
928            Self::PetInfernal => f.write_str("PetInfernal"),
929            Self::PetDoomguard => f.write_str("PetDoomguard"),
930            Self::PetWolf => f.write_str("PetWolf"),
931            Self::PetCat => f.write_str("PetCat"),
932            Self::PetBear => f.write_str("PetBear"),
933            Self::PetBoar => f.write_str("PetBoar"),
934            Self::PetCrocilisk => f.write_str("PetCrocilisk"),
935            Self::PetCarrionBird => f.write_str("PetCarrionBird"),
936            Self::PetCrab => f.write_str("PetCrab"),
937            Self::PetGorilla => f.write_str("PetGorilla"),
938            Self::PetRaptor => f.write_str("PetRaptor"),
939            Self::PetTallstrider => f.write_str("PetTallstrider"),
940            Self::RacialUnded => f.write_str("RacialUnded"),
941            Self::Crossbows => f.write_str("Crossbows"),
942            Self::Wands => f.write_str("Wands"),
943            Self::Polearms => f.write_str("Polearms"),
944            Self::PetScorpid => f.write_str("PetScorpid"),
945            Self::Arcane => f.write_str("Arcane"),
946            Self::PetTurtle => f.write_str("PetTurtle"),
947            Self::Assassination => f.write_str("Assassination"),
948            Self::Fury => f.write_str("Fury"),
949            Self::Protection => f.write_str("Protection"),
950            Self::BeastTraining => f.write_str("BeastTraining"),
951            Self::Protection2 => f.write_str("Protection2"),
952            Self::PetTalents => f.write_str("PetTalents"),
953            Self::PlateMail => f.write_str("PlateMail"),
954            Self::LanguageGnomish => f.write_str("LanguageGnomish"),
955            Self::LanguageTroll => f.write_str("LanguageTroll"),
956            Self::Enchanting => f.write_str("Enchanting"),
957            Self::Demonology => f.write_str("Demonology"),
958            Self::Affliction => f.write_str("Affliction"),
959            Self::Fishing => f.write_str("Fishing"),
960            Self::Enhancement => f.write_str("Enhancement"),
961            Self::Restoration => f.write_str("Restoration"),
962            Self::ElementalCombat => f.write_str("ElementalCombat"),
963            Self::Skinning => f.write_str("Skinning"),
964            Self::Mail => f.write_str("Mail"),
965            Self::Leather => f.write_str("Leather"),
966            Self::Cloth => f.write_str("Cloth"),
967            Self::Shield => f.write_str("Shield"),
968            Self::FistWeapons => f.write_str("FistWeapons"),
969            Self::RidingRaptor => f.write_str("RidingRaptor"),
970            Self::RidingMechanostrider => f.write_str("RidingMechanostrider"),
971            Self::RidingUndeadHorse => f.write_str("RidingUndeadHorse"),
972            Self::Restoration2 => f.write_str("Restoration2"),
973            Self::Balance => f.write_str("Balance"),
974            Self::Destruction => f.write_str("Destruction"),
975            Self::Holy2 => f.write_str("Holy2"),
976            Self::Discipline => f.write_str("Discipline"),
977            Self::Lockpicking => f.write_str("Lockpicking"),
978            Self::PetBat => f.write_str("PetBat"),
979            Self::PetHyena => f.write_str("PetHyena"),
980            Self::PetOwl => f.write_str("PetOwl"),
981            Self::PetWindSerpent => f.write_str("PetWindSerpent"),
982            Self::LanguageGutterspeak => f.write_str("LanguageGutterspeak"),
983            Self::RidingKodo => f.write_str("RidingKodo"),
984            Self::RacialTroll => f.write_str("RacialTroll"),
985            Self::RacialGnome => f.write_str("RacialGnome"),
986            Self::RacialHuman => f.write_str("RacialHuman"),
987            Self::Jewelcrafting => f.write_str("Jewelcrafting"),
988            Self::RacialBloodelf => f.write_str("RacialBloodelf"),
989            Self::PetEventRc => f.write_str("PetEventRc"),
990            Self::LanguageDraenei => f.write_str("LanguageDraenei"),
991            Self::RacialDraenei => f.write_str("RacialDraenei"),
992            Self::PetFelguard => f.write_str("PetFelguard"),
993            Self::Riding => f.write_str("Riding"),
994            Self::PetDragonhawk => f.write_str("PetDragonhawk"),
995            Self::PetNetherRay => f.write_str("PetNetherRay"),
996            Self::PetSporebat => f.write_str("PetSporebat"),
997            Self::PetWarpStalker => f.write_str("PetWarpStalker"),
998            Self::PetRavager => f.write_str("PetRavager"),
999            Self::PetSerpent => f.write_str("PetSerpent"),
1000            Self::Internal => f.write_str("Internal"),
1001        }
1002    }
1003}
1004
1005impl TryFrom<u16> for Skill {
1006    type Error = crate::errors::EnumError;
1007    fn try_from(value: u16) -> Result<Self, Self::Error> {
1008        Self::from_int(value)
1009    }
1010}
1011
1012impl TryFrom<u8> for Skill {
1013    type Error = crate::errors::EnumError;
1014    fn try_from(value: u8) -> Result<Self, Self::Error> {
1015        Self::from_int(value.into())
1016    }
1017}
1018
1019impl TryFrom<u32> for Skill {
1020    type Error = crate::errors::EnumError;
1021    fn try_from(value: u32) -> Result<Self, Self::Error> {
1022        TryInto::<u16>::try_into(value)
1023            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
1024            .try_into()
1025    }
1026}
1027
1028impl TryFrom<u64> for Skill {
1029    type Error = crate::errors::EnumError;
1030    fn try_from(value: u64) -> Result<Self, Self::Error> {
1031        TryInto::<u16>::try_into(value)
1032            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
1033            .try_into()
1034    }
1035}
1036
1037impl TryFrom<i8> for Skill {
1038    type Error = crate::errors::EnumError;
1039    fn try_from(value: i8) -> Result<Self, Self::Error> {
1040        TryInto::<u16>::try_into(value)
1041            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
1042            .try_into()
1043    }
1044}
1045
1046impl TryFrom<i16> for Skill {
1047    type Error = crate::errors::EnumError;
1048    fn try_from(value: i16) -> Result<Self, Self::Error> {
1049        let v = u16::from_le_bytes(value.to_le_bytes());
1050        Self::from_int(v)
1051    }
1052}
1053
1054impl TryFrom<i32> for Skill {
1055    type Error = crate::errors::EnumError;
1056    fn try_from(value: i32) -> Result<Self, Self::Error> {
1057        TryInto::<u16>::try_into(value)
1058            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
1059            .try_into()
1060    }
1061}
1062
1063impl TryFrom<i64> for Skill {
1064    type Error = crate::errors::EnumError;
1065    fn try_from(value: i64) -> Result<Self, Self::Error> {
1066        TryInto::<u16>::try_into(value)
1067            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
1068            .try_into()
1069    }
1070}
1071
1072impl TryFrom<usize> for Skill {
1073    type Error = crate::errors::EnumError;
1074    fn try_from(value: usize) -> Result<Self, Self::Error> {
1075        TryInto::<u16>::try_into(value)
1076            .map_err(|_| crate::errors::EnumError::new(NAME, value as i128))?
1077            .try_into()
1078    }
1079}
1080