wow_world_base 0.3.0

Base definitions and functions for World of Warcraft game servers
Documentation
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
/// This type is not sent over the network, but is used in the game in another way.
///
/// Auto generated from the original `wowm` in file [`wow_message_parser/wowm/world/external/external_spell_1_12.wowm:178`](https://github.com/gtker/wow_messages/tree/main/wow_message_parser/wowm/world/external/external_spell_1_12.wowm#L178):
/// ```text
/// enum AuraMod : u32 {
///     NONE = 0;
///     BIND_SIGHT = 1;
///     MOD_POSSESS = 2;
///     PERIODIC_DAMAGE = 3;
///     DUMMY = 4;
///     MOD_CONFUSE = 5;
///     MOD_CHARM = 6;
///     MOD_FEAR = 7;
///     PERIODIC_HEAL = 8;
///     MOD_ATTACKSPEED = 9;
///     MOD_THREAT = 10;
///     MOD_TAUNT = 11;
///     MOD_STUN = 12;
///     MOD_DAMAGE_DONE = 13;
///     MOD_DAMAGE_TAKEN = 14;
///     DAMAGE_SHIELD = 15;
///     MOD_STEALTH = 16;
///     MOD_STEALTH_DETECT = 17;
///     MOD_INVISIBILITY = 18;
///     MOD_INVISIBILITY_DETECTION = 19;
///     OBS_MOD_HEALTH = 20;
///     OBS_MOD_MANA = 21;
///     MOD_RESISTANCE = 22;
///     PERIODIC_TRIGGER_SPELL = 23;
///     PERIODIC_ENERGIZE = 24;
///     MOD_PACIFY = 25;
///     MOD_ROOT = 26;
///     MOD_SILENCE = 27;
///     REFLECT_SPELLS = 28;
///     MOD_STAT = 29;
///     MOD_SKILL = 30;
///     MOD_INCREASE_SPEED = 31;
///     MOD_INCREASE_MOUNTED_SPEED = 32;
///     MOD_DECREASE_SPEED = 33;
///     MOD_INCREASE_HEALTH = 34;
///     MOD_INCREASE_ENERGY = 35;
///     MOD_SHAPESHIFT = 36;
///     EFFECT_IMMUNITY = 37;
///     STATE_IMMUNITY = 38;
///     SCHOOL_IMMUNITY = 39;
///     DAMAGE_IMMUNITY = 40;
///     DISPEL_IMMUNITY = 41;
///     PROC_TRIGGER_SPELL = 42;
///     PROC_TRIGGER_DAMAGE = 43;
///     TRACK_CREATURES = 44;
///     TRACK_RESOURCES = 45;
///     MOD_PARRY_SKILL = 46;
///     MOD_PARRY_PERCENT = 47;
///     MOD_DODGE_SKILL = 48;
///     MOD_DODGE_PERCENT = 49;
///     MOD_BLOCK_SKILL = 50;
///     MOD_BLOCK_PERCENT = 51;
///     MOD_CRIT_PERCENT = 52;
///     PERIODIC_LEECH = 53;
///     MOD_HIT_CHANCE = 54;
///     MOD_SPELL_HIT_CHANCE = 55;
///     TRANSFORM = 56;
///     MOD_SPELL_CRIT_CHANCE = 57;
///     MOD_INCREASE_SWIM_SPEED = 58;
///     MOD_DAMAGE_DONE_CREATURE = 59;
///     MOD_PACIFY_SILENCE = 60;
///     MOD_SCALE = 61;
///     PERIODIC_HEALTH_FUNNEL = 62;
///     PERIODIC_MANA_FUNNEL = 63;
///     PERIODIC_MANA_LEECH = 64;
///     MOD_CASTING_SPEED_NOT_STACK = 65;
///     FEIGN_DEATH = 66;
///     MOD_DISARM = 67;
///     MOD_STALKED = 68;
///     SCHOOL_ABSORB = 69;
///     EXTRA_ATTACKS = 70;
///     MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
///     MOD_POWER_COST_SCHOOL_PCT = 72;
///     MOD_POWER_COST_SCHOOL = 73;
///     REFLECT_SPELLS_SCHOOL = 74;
///     MOD_LANGUAGE = 75;
///     FAR_SIGHT = 76;
///     MECHANIC_IMMUNITY = 77;
///     MOUNTED = 78;
///     MOD_DAMAGE_PERCENT_DONE = 79;
///     MOD_PERCENT_STAT = 80;
///     SPLIT_DAMAGE_PCT = 81;
///     WATER_BREATHING = 82;
///     MOD_BASE_RESISTANCE = 83;
///     MOD_REGEN = 84;
///     MOD_POWER_REGEN = 85;
///     CHANNEL_DEATH_ITEM = 86;
///     MOD_DAMAGE_PERCENT_TAKEN = 87;
///     MOD_HEALTH_REGEN_PERCENT = 88;
///     PERIODIC_DAMAGE_PERCENT = 89;
///     MOD_RESIST_CHANCE = 90;
///     MOD_DETECT_RANGE = 91;
///     PREVENTS_FLEEING = 92;
///     MOD_UNATTACKABLE = 93;
///     INTERRUPT_REGEN = 94;
///     GHOST = 95;
///     SPELL_MAGNET = 96;
///     MANA_SHIELD = 97;
///     MOD_SKILL_TALENT = 98;
///     MOD_ATTACK_POWER = 99;
///     AURAS_VISIBLE = 100;
///     MOD_RESISTANCE_PCT = 101;
///     MOD_MELEE_ATTACK_POWER_VERSUS = 102;
///     MOD_TOTAL_THREAT = 103;
///     WATER_WALK = 104;
///     FEATHER_FALL = 105;
///     HOVER = 106;
///     ADD_FLAT_MODIFIER = 107;
///     ADD_PCT_MODIFIER = 108;
///     ADD_TARGET_TRIGGER = 109;
///     MOD_POWER_REGEN_PERCENT = 110;
///     ADD_CASTER_HIT_TRIGGER = 111;
///     OVERRIDE_CLASS_SCRIPTS = 112;
///     MOD_RANGED_DAMAGE_TAKEN = 113;
///     MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
///     MOD_HEALING = 115;
///     MOD_REGEN_DURING_COMBAT = 116;
///     MOD_MECHANIC_RESISTANCE = 117;
///     MOD_HEALING_PCT = 118;
///     SHARE_PET_TRACKING = 119;
///     UNTRACKABLE = 120;
///     EMPATHY = 121;
///     MOD_OFFHAND_DAMAGE_PCT = 122;
///     MOD_TARGET_RESISTANCE = 123;
///     MOD_RANGED_ATTACK_POWER = 124;
///     MOD_MELEE_DAMAGE_TAKEN = 125;
///     MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
///     RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
///     MOD_POSSESS_PET = 128;
///     MOD_SPEED_ALWAYS = 129;
///     MOD_MOUNTED_SPEED_ALWAYS = 130;
///     MOD_RANGED_ATTACK_POWER_VERSUS = 131;
///     MOD_INCREASE_ENERGY_PERCENT = 132;
///     MOD_INCREASE_HEALTH_PERCENT = 133;
///     MOD_MANA_REGEN_INTERRUPT = 134;
///     MOD_HEALING_DONE = 135;
///     MOD_HEALING_DONE_PERCENT = 136;
///     MOD_TOTAL_STAT_PERCENTAGE = 137;
///     MOD_MELEE_HASTE = 138;
///     FORCE_REACTION = 139;
///     MOD_RANGED_HASTE = 140;
///     MOD_RANGED_AMMO_HASTE = 141;
///     MOD_BASE_RESISTANCE_PCT = 142;
///     MOD_RESISTANCE_EXCLUSIVE = 143;
///     SAFE_FALL = 144;
///     CHARISMA = 145;
///     PERSUADED = 146;
///     MECHANIC_IMMUNITY_MASK = 147;
///     RETAIN_COMBO_POINTS = 148;
///     RESIST_PUSHBACK = 149;
///     MOD_SHIELD_BLOCKVALUE_PCT = 150;
///     TRACK_STEALTHED = 151;
///     MOD_DETECTED_RANGE = 152;
///     SPLIT_DAMAGE_FLAT = 153;
///     MOD_STEALTH_LEVEL = 154;
///     MOD_WATER_BREATHING = 155;
///     MOD_REPUTATION_GAIN = 156;
///     PET_DAMAGE_MULTI = 157;
///     MOD_SHIELD_BLOCKVALUE = 158;
///     NO_PVP_CREDIT = 159;
///     MOD_AOE_AVOIDANCE = 160;
///     MOD_HEALTH_REGEN_IN_COMBAT = 161;
///     POWER_BURN_MANA = 162;
///     MOD_CRIT_DAMAGE_BONUS = 163;
///     UNKNOWN164 = 164;
///     MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
///     MOD_ATTACK_POWER_PCT = 166;
///     MOD_RANGED_ATTACK_POWER_PCT = 167;
///     MOD_DAMAGE_DONE_VERSUS = 168;
///     MOD_CRIT_PERCENT_VERSUS = 169;
///     DETECT_AMORE = 170;
///     MOD_SPEED_NOT_STACK = 171;
///     MOD_MOUNTED_SPEED_NOT_STACK = 172;
///     ALLOW_CHAMPION_SPELLS = 173;
///     MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
///     MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
///     SPIRIT_OF_REDEMPTION = 176;
///     AOE_CHARM = 177;
///     MOD_DEBUFF_RESISTANCE = 178;
///     MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
///     MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
///     MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS = 181;
///     MOD_RESISTANCE_OF_STAT_PERCENT = 182;
///     MOD_CRITICAL_THREAT = 183;
///     MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
///     MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
///     MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
///     MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
///     MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
///     MOD_RATING = 189;
///     MOD_FACTION_REPUTATION_GAIN = 190;
///     USE_NORMAL_MOVEMENT_SPEED = 191;
/// }
/// ```
#[derive(Debug, PartialEq, Eq, Hash, Ord, PartialOrd, Copy, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum AuraMod {
    None,
    BindSight,
    ModPossess,
    PeriodicDamage,
    Dummy,
    ModConfuse,
    ModCharm,
    ModFear,
    PeriodicHeal,
    ModAttackspeed,
    ModThreat,
    ModTaunt,
    ModStun,
    ModDamageDone,
    ModDamageTaken,
    DamageShield,
    ModStealth,
    ModStealthDetect,
    ModInvisibility,
    ModInvisibilityDetection,
    ObsModHealth,
    ObsModMana,
    ModResistance,
    PeriodicTriggerSpell,
    PeriodicEnergize,
    ModPacify,
    ModRoot,
    ModSilence,
    ReflectSpells,
    ModStat,
    ModSkill,
    ModIncreaseSpeed,
    ModIncreaseMountedSpeed,
    ModDecreaseSpeed,
    ModIncreaseHealth,
    ModIncreaseEnergy,
    ModShapeshift,
    EffectImmunity,
    StateImmunity,
    SchoolImmunity,
    DamageImmunity,
    DispelImmunity,
    ProcTriggerSpell,
    ProcTriggerDamage,
    TrackCreatures,
    TrackResources,
    ModParrySkill,
    ModParryPercent,
    ModDodgeSkill,
    ModDodgePercent,
    ModBlockSkill,
    ModBlockPercent,
    ModCritPercent,
    PeriodicLeech,
    ModHitChance,
    ModSpellHitChance,
    Transform,
    ModSpellCritChance,
    ModIncreaseSwimSpeed,
    ModDamageDoneCreature,
    ModPacifySilence,
    ModScale,
    PeriodicHealthFunnel,
    PeriodicManaFunnel,
    PeriodicManaLeech,
    ModCastingSpeedNotStack,
    FeignDeath,
    ModDisarm,
    ModStalked,
    SchoolAbsorb,
    ExtraAttacks,
    ModSpellCritChanceSchool,
    ModPowerCostSchoolPct,
    ModPowerCostSchool,
    ReflectSpellsSchool,
    ModLanguage,
    FarSight,
    MechanicImmunity,
    Mounted,
    ModDamagePercentDone,
    ModPercentStat,
    SplitDamagePct,
    WaterBreathing,
    ModBaseResistance,
    ModRegen,
    ModPowerRegen,
    ChannelDeathItem,
    ModDamagePercentTaken,
    ModHealthRegenPercent,
    PeriodicDamagePercent,
    ModResistChance,
    ModDetectRange,
    PreventsFleeing,
    ModUnattackable,
    InterruptRegen,
    Ghost,
    SpellMagnet,
    ManaShield,
    ModSkillTalent,
    ModAttackPower,
    AurasVisible,
    ModResistancePct,
    ModMeleeAttackPowerVersus,
    ModTotalThreat,
    WaterWalk,
    FeatherFall,
    Hover,
    AddFlatModifier,
    AddPctModifier,
    AddTargetTrigger,
    ModPowerRegenPercent,
    AddCasterHitTrigger,
    OverrideClassScripts,
    ModRangedDamageTaken,
    ModRangedDamageTakenPct,
    ModHealing,
    ModRegenDuringCombat,
    ModMechanicResistance,
    ModHealingPct,
    SharePetTracking,
    Untrackable,
    Empathy,
    ModOffhandDamagePct,
    ModTargetResistance,
    ModRangedAttackPower,
    ModMeleeDamageTaken,
    ModMeleeDamageTakenPct,
    RangedAttackPowerAttackerBonus,
    ModPossessPet,
    ModSpeedAlways,
    ModMountedSpeedAlways,
    ModRangedAttackPowerVersus,
    ModIncreaseEnergyPercent,
    ModIncreaseHealthPercent,
    ModManaRegenInterrupt,
    ModHealingDone,
    ModHealingDonePercent,
    ModTotalStatPercentage,
    ModMeleeHaste,
    ForceReaction,
    ModRangedHaste,
    ModRangedAmmoHaste,
    ModBaseResistancePct,
    ModResistanceExclusive,
    SafeFall,
    Charisma,
    Persuaded,
    MechanicImmunityMask,
    RetainComboPoints,
    ResistPushback,
    ModShieldBlockvaluePct,
    TrackStealthed,
    ModDetectedRange,
    SplitDamageFlat,
    ModStealthLevel,
    ModWaterBreathing,
    ModReputationGain,
    PetDamageMulti,
    ModShieldBlockvalue,
    NoPvpCredit,
    ModAoeAvoidance,
    ModHealthRegenInCombat,
    PowerBurnMana,
    ModCritDamageBonus,
    Unknown164,
    MeleeAttackPowerAttackerBonus,
    ModAttackPowerPct,
    ModRangedAttackPowerPct,
    ModDamageDoneVersus,
    ModCritPercentVersus,
    DetectAmore,
    ModSpeedNotStack,
    ModMountedSpeedNotStack,
    AllowChampionSpells,
    ModSpellDamageOfStatPercent,
    ModSpellHealingOfStatPercent,
    SpiritOfRedemption,
    AoeCharm,
    ModDebuffResistance,
    ModAttackerSpellCritChance,
    ModFlatSpellDamageVersus,
    ModFlatSpellCritDamageVersus,
    ModResistanceOfStatPercent,
    ModCriticalThreat,
    ModAttackerMeleeHitChance,
    ModAttackerRangedHitChance,
    ModAttackerSpellHitChance,
    ModAttackerMeleeCritChance,
    ModAttackerRangedCritChance,
    ModRating,
    ModFactionReputationGain,
    UseNormalMovementSpeed,
}

impl AuraMod {
    pub const fn as_int(&self) -> u32 {
        match self {
            Self::None => 0x0,
            Self::BindSight => 0x1,
            Self::ModPossess => 0x2,
            Self::PeriodicDamage => 0x3,
            Self::Dummy => 0x4,
            Self::ModConfuse => 0x5,
            Self::ModCharm => 0x6,
            Self::ModFear => 0x7,
            Self::PeriodicHeal => 0x8,
            Self::ModAttackspeed => 0x9,
            Self::ModThreat => 0xa,
            Self::ModTaunt => 0xb,
            Self::ModStun => 0xc,
            Self::ModDamageDone => 0xd,
            Self::ModDamageTaken => 0xe,
            Self::DamageShield => 0xf,
            Self::ModStealth => 0x10,
            Self::ModStealthDetect => 0x11,
            Self::ModInvisibility => 0x12,
            Self::ModInvisibilityDetection => 0x13,
            Self::ObsModHealth => 0x14,
            Self::ObsModMana => 0x15,
            Self::ModResistance => 0x16,
            Self::PeriodicTriggerSpell => 0x17,
            Self::PeriodicEnergize => 0x18,
            Self::ModPacify => 0x19,
            Self::ModRoot => 0x1a,
            Self::ModSilence => 0x1b,
            Self::ReflectSpells => 0x1c,
            Self::ModStat => 0x1d,
            Self::ModSkill => 0x1e,
            Self::ModIncreaseSpeed => 0x1f,
            Self::ModIncreaseMountedSpeed => 0x20,
            Self::ModDecreaseSpeed => 0x21,
            Self::ModIncreaseHealth => 0x22,
            Self::ModIncreaseEnergy => 0x23,
            Self::ModShapeshift => 0x24,
            Self::EffectImmunity => 0x25,
            Self::StateImmunity => 0x26,
            Self::SchoolImmunity => 0x27,
            Self::DamageImmunity => 0x28,
            Self::DispelImmunity => 0x29,
            Self::ProcTriggerSpell => 0x2a,
            Self::ProcTriggerDamage => 0x2b,
            Self::TrackCreatures => 0x2c,
            Self::TrackResources => 0x2d,
            Self::ModParrySkill => 0x2e,
            Self::ModParryPercent => 0x2f,
            Self::ModDodgeSkill => 0x30,
            Self::ModDodgePercent => 0x31,
            Self::ModBlockSkill => 0x32,
            Self::ModBlockPercent => 0x33,
            Self::ModCritPercent => 0x34,
            Self::PeriodicLeech => 0x35,
            Self::ModHitChance => 0x36,
            Self::ModSpellHitChance => 0x37,
            Self::Transform => 0x38,
            Self::ModSpellCritChance => 0x39,
            Self::ModIncreaseSwimSpeed => 0x3a,
            Self::ModDamageDoneCreature => 0x3b,
            Self::ModPacifySilence => 0x3c,
            Self::ModScale => 0x3d,
            Self::PeriodicHealthFunnel => 0x3e,
            Self::PeriodicManaFunnel => 0x3f,
            Self::PeriodicManaLeech => 0x40,
            Self::ModCastingSpeedNotStack => 0x41,
            Self::FeignDeath => 0x42,
            Self::ModDisarm => 0x43,
            Self::ModStalked => 0x44,
            Self::SchoolAbsorb => 0x45,
            Self::ExtraAttacks => 0x46,
            Self::ModSpellCritChanceSchool => 0x47,
            Self::ModPowerCostSchoolPct => 0x48,
            Self::ModPowerCostSchool => 0x49,
            Self::ReflectSpellsSchool => 0x4a,
            Self::ModLanguage => 0x4b,
            Self::FarSight => 0x4c,
            Self::MechanicImmunity => 0x4d,
            Self::Mounted => 0x4e,
            Self::ModDamagePercentDone => 0x4f,
            Self::ModPercentStat => 0x50,
            Self::SplitDamagePct => 0x51,
            Self::WaterBreathing => 0x52,
            Self::ModBaseResistance => 0x53,
            Self::ModRegen => 0x54,
            Self::ModPowerRegen => 0x55,
            Self::ChannelDeathItem => 0x56,
            Self::ModDamagePercentTaken => 0x57,
            Self::ModHealthRegenPercent => 0x58,
            Self::PeriodicDamagePercent => 0x59,
            Self::ModResistChance => 0x5a,
            Self::ModDetectRange => 0x5b,
            Self::PreventsFleeing => 0x5c,
            Self::ModUnattackable => 0x5d,
            Self::InterruptRegen => 0x5e,
            Self::Ghost => 0x5f,
            Self::SpellMagnet => 0x60,
            Self::ManaShield => 0x61,
            Self::ModSkillTalent => 0x62,
            Self::ModAttackPower => 0x63,
            Self::AurasVisible => 0x64,
            Self::ModResistancePct => 0x65,
            Self::ModMeleeAttackPowerVersus => 0x66,
            Self::ModTotalThreat => 0x67,
            Self::WaterWalk => 0x68,
            Self::FeatherFall => 0x69,
            Self::Hover => 0x6a,
            Self::AddFlatModifier => 0x6b,
            Self::AddPctModifier => 0x6c,
            Self::AddTargetTrigger => 0x6d,
            Self::ModPowerRegenPercent => 0x6e,
            Self::AddCasterHitTrigger => 0x6f,
            Self::OverrideClassScripts => 0x70,
            Self::ModRangedDamageTaken => 0x71,
            Self::ModRangedDamageTakenPct => 0x72,
            Self::ModHealing => 0x73,
            Self::ModRegenDuringCombat => 0x74,
            Self::ModMechanicResistance => 0x75,
            Self::ModHealingPct => 0x76,
            Self::SharePetTracking => 0x77,
            Self::Untrackable => 0x78,
            Self::Empathy => 0x79,
            Self::ModOffhandDamagePct => 0x7a,
            Self::ModTargetResistance => 0x7b,
            Self::ModRangedAttackPower => 0x7c,
            Self::ModMeleeDamageTaken => 0x7d,
            Self::ModMeleeDamageTakenPct => 0x7e,
            Self::RangedAttackPowerAttackerBonus => 0x7f,
            Self::ModPossessPet => 0x80,
            Self::ModSpeedAlways => 0x81,
            Self::ModMountedSpeedAlways => 0x82,
            Self::ModRangedAttackPowerVersus => 0x83,
            Self::ModIncreaseEnergyPercent => 0x84,
            Self::ModIncreaseHealthPercent => 0x85,
            Self::ModManaRegenInterrupt => 0x86,
            Self::ModHealingDone => 0x87,
            Self::ModHealingDonePercent => 0x88,
            Self::ModTotalStatPercentage => 0x89,
            Self::ModMeleeHaste => 0x8a,
            Self::ForceReaction => 0x8b,
            Self::ModRangedHaste => 0x8c,
            Self::ModRangedAmmoHaste => 0x8d,
            Self::ModBaseResistancePct => 0x8e,
            Self::ModResistanceExclusive => 0x8f,
            Self::SafeFall => 0x90,
            Self::Charisma => 0x91,
            Self::Persuaded => 0x92,
            Self::MechanicImmunityMask => 0x93,
            Self::RetainComboPoints => 0x94,
            Self::ResistPushback => 0x95,
            Self::ModShieldBlockvaluePct => 0x96,
            Self::TrackStealthed => 0x97,
            Self::ModDetectedRange => 0x98,
            Self::SplitDamageFlat => 0x99,
            Self::ModStealthLevel => 0x9a,
            Self::ModWaterBreathing => 0x9b,
            Self::ModReputationGain => 0x9c,
            Self::PetDamageMulti => 0x9d,
            Self::ModShieldBlockvalue => 0x9e,
            Self::NoPvpCredit => 0x9f,
            Self::ModAoeAvoidance => 0xa0,
            Self::ModHealthRegenInCombat => 0xa1,
            Self::PowerBurnMana => 0xa2,
            Self::ModCritDamageBonus => 0xa3,
            Self::Unknown164 => 0xa4,
            Self::MeleeAttackPowerAttackerBonus => 0xa5,
            Self::ModAttackPowerPct => 0xa6,
            Self::ModRangedAttackPowerPct => 0xa7,
            Self::ModDamageDoneVersus => 0xa8,
            Self::ModCritPercentVersus => 0xa9,
            Self::DetectAmore => 0xaa,
            Self::ModSpeedNotStack => 0xab,
            Self::ModMountedSpeedNotStack => 0xac,
            Self::AllowChampionSpells => 0xad,
            Self::ModSpellDamageOfStatPercent => 0xae,
            Self::ModSpellHealingOfStatPercent => 0xaf,
            Self::SpiritOfRedemption => 0xb0,
            Self::AoeCharm => 0xb1,
            Self::ModDebuffResistance => 0xb2,
            Self::ModAttackerSpellCritChance => 0xb3,
            Self::ModFlatSpellDamageVersus => 0xb4,
            Self::ModFlatSpellCritDamageVersus => 0xb5,
            Self::ModResistanceOfStatPercent => 0xb6,
            Self::ModCriticalThreat => 0xb7,
            Self::ModAttackerMeleeHitChance => 0xb8,
            Self::ModAttackerRangedHitChance => 0xb9,
            Self::ModAttackerSpellHitChance => 0xba,
            Self::ModAttackerMeleeCritChance => 0xbb,
            Self::ModAttackerRangedCritChance => 0xbc,
            Self::ModRating => 0xbd,
            Self::ModFactionReputationGain => 0xbe,
            Self::UseNormalMovementSpeed => 0xbf,
        }
    }

    pub const fn variants() -> [Self; 192] {
        [
            Self::None,
            Self::BindSight,
            Self::ModPossess,
            Self::PeriodicDamage,
            Self::Dummy,
            Self::ModConfuse,
            Self::ModCharm,
            Self::ModFear,
            Self::PeriodicHeal,
            Self::ModAttackspeed,
            Self::ModThreat,
            Self::ModTaunt,
            Self::ModStun,
            Self::ModDamageDone,
            Self::ModDamageTaken,
            Self::DamageShield,
            Self::ModStealth,
            Self::ModStealthDetect,
            Self::ModInvisibility,
            Self::ModInvisibilityDetection,
            Self::ObsModHealth,
            Self::ObsModMana,
            Self::ModResistance,
            Self::PeriodicTriggerSpell,
            Self::PeriodicEnergize,
            Self::ModPacify,
            Self::ModRoot,
            Self::ModSilence,
            Self::ReflectSpells,
            Self::ModStat,
            Self::ModSkill,
            Self::ModIncreaseSpeed,
            Self::ModIncreaseMountedSpeed,
            Self::ModDecreaseSpeed,
            Self::ModIncreaseHealth,
            Self::ModIncreaseEnergy,
            Self::ModShapeshift,
            Self::EffectImmunity,
            Self::StateImmunity,
            Self::SchoolImmunity,
            Self::DamageImmunity,
            Self::DispelImmunity,
            Self::ProcTriggerSpell,
            Self::ProcTriggerDamage,
            Self::TrackCreatures,
            Self::TrackResources,
            Self::ModParrySkill,
            Self::ModParryPercent,
            Self::ModDodgeSkill,
            Self::ModDodgePercent,
            Self::ModBlockSkill,
            Self::ModBlockPercent,
            Self::ModCritPercent,
            Self::PeriodicLeech,
            Self::ModHitChance,
            Self::ModSpellHitChance,
            Self::Transform,
            Self::ModSpellCritChance,
            Self::ModIncreaseSwimSpeed,
            Self::ModDamageDoneCreature,
            Self::ModPacifySilence,
            Self::ModScale,
            Self::PeriodicHealthFunnel,
            Self::PeriodicManaFunnel,
            Self::PeriodicManaLeech,
            Self::ModCastingSpeedNotStack,
            Self::FeignDeath,
            Self::ModDisarm,
            Self::ModStalked,
            Self::SchoolAbsorb,
            Self::ExtraAttacks,
            Self::ModSpellCritChanceSchool,
            Self::ModPowerCostSchoolPct,
            Self::ModPowerCostSchool,
            Self::ReflectSpellsSchool,
            Self::ModLanguage,
            Self::FarSight,
            Self::MechanicImmunity,
            Self::Mounted,
            Self::ModDamagePercentDone,
            Self::ModPercentStat,
            Self::SplitDamagePct,
            Self::WaterBreathing,
            Self::ModBaseResistance,
            Self::ModRegen,
            Self::ModPowerRegen,
            Self::ChannelDeathItem,
            Self::ModDamagePercentTaken,
            Self::ModHealthRegenPercent,
            Self::PeriodicDamagePercent,
            Self::ModResistChance,
            Self::ModDetectRange,
            Self::PreventsFleeing,
            Self::ModUnattackable,
            Self::InterruptRegen,
            Self::Ghost,
            Self::SpellMagnet,
            Self::ManaShield,
            Self::ModSkillTalent,
            Self::ModAttackPower,
            Self::AurasVisible,
            Self::ModResistancePct,
            Self::ModMeleeAttackPowerVersus,
            Self::ModTotalThreat,
            Self::WaterWalk,
            Self::FeatherFall,
            Self::Hover,
            Self::AddFlatModifier,
            Self::AddPctModifier,
            Self::AddTargetTrigger,
            Self::ModPowerRegenPercent,
            Self::AddCasterHitTrigger,
            Self::OverrideClassScripts,
            Self::ModRangedDamageTaken,
            Self::ModRangedDamageTakenPct,
            Self::ModHealing,
            Self::ModRegenDuringCombat,
            Self::ModMechanicResistance,
            Self::ModHealingPct,
            Self::SharePetTracking,
            Self::Untrackable,
            Self::Empathy,
            Self::ModOffhandDamagePct,
            Self::ModTargetResistance,
            Self::ModRangedAttackPower,
            Self::ModMeleeDamageTaken,
            Self::ModMeleeDamageTakenPct,
            Self::RangedAttackPowerAttackerBonus,
            Self::ModPossessPet,
            Self::ModSpeedAlways,
            Self::ModMountedSpeedAlways,
            Self::ModRangedAttackPowerVersus,
            Self::ModIncreaseEnergyPercent,
            Self::ModIncreaseHealthPercent,
            Self::ModManaRegenInterrupt,
            Self::ModHealingDone,
            Self::ModHealingDonePercent,
            Self::ModTotalStatPercentage,
            Self::ModMeleeHaste,
            Self::ForceReaction,
            Self::ModRangedHaste,
            Self::ModRangedAmmoHaste,
            Self::ModBaseResistancePct,
            Self::ModResistanceExclusive,
            Self::SafeFall,
            Self::Charisma,
            Self::Persuaded,
            Self::MechanicImmunityMask,
            Self::RetainComboPoints,
            Self::ResistPushback,
            Self::ModShieldBlockvaluePct,
            Self::TrackStealthed,
            Self::ModDetectedRange,
            Self::SplitDamageFlat,
            Self::ModStealthLevel,
            Self::ModWaterBreathing,
            Self::ModReputationGain,
            Self::PetDamageMulti,
            Self::ModShieldBlockvalue,
            Self::NoPvpCredit,
            Self::ModAoeAvoidance,
            Self::ModHealthRegenInCombat,
            Self::PowerBurnMana,
            Self::ModCritDamageBonus,
            Self::Unknown164,
            Self::MeleeAttackPowerAttackerBonus,
            Self::ModAttackPowerPct,
            Self::ModRangedAttackPowerPct,
            Self::ModDamageDoneVersus,
            Self::ModCritPercentVersus,
            Self::DetectAmore,
            Self::ModSpeedNotStack,
            Self::ModMountedSpeedNotStack,
            Self::AllowChampionSpells,
            Self::ModSpellDamageOfStatPercent,
            Self::ModSpellHealingOfStatPercent,
            Self::SpiritOfRedemption,
            Self::AoeCharm,
            Self::ModDebuffResistance,
            Self::ModAttackerSpellCritChance,
            Self::ModFlatSpellDamageVersus,
            Self::ModFlatSpellCritDamageVersus,
            Self::ModResistanceOfStatPercent,
            Self::ModCriticalThreat,
            Self::ModAttackerMeleeHitChance,
            Self::ModAttackerRangedHitChance,
            Self::ModAttackerSpellHitChance,
            Self::ModAttackerMeleeCritChance,
            Self::ModAttackerRangedCritChance,
            Self::ModRating,
            Self::ModFactionReputationGain,
            Self::UseNormalMovementSpeed,
        ]
    }

    pub const fn from_int(value: u32) -> Result<Self, crate::errors::EnumError> {
        match value {
            0 => Ok(Self::None),
            1 => Ok(Self::BindSight),
            2 => Ok(Self::ModPossess),
            3 => Ok(Self::PeriodicDamage),
            4 => Ok(Self::Dummy),
            5 => Ok(Self::ModConfuse),
            6 => Ok(Self::ModCharm),
            7 => Ok(Self::ModFear),
            8 => Ok(Self::PeriodicHeal),
            9 => Ok(Self::ModAttackspeed),
            10 => Ok(Self::ModThreat),
            11 => Ok(Self::ModTaunt),
            12 => Ok(Self::ModStun),
            13 => Ok(Self::ModDamageDone),
            14 => Ok(Self::ModDamageTaken),
            15 => Ok(Self::DamageShield),
            16 => Ok(Self::ModStealth),
            17 => Ok(Self::ModStealthDetect),
            18 => Ok(Self::ModInvisibility),
            19 => Ok(Self::ModInvisibilityDetection),
            20 => Ok(Self::ObsModHealth),
            21 => Ok(Self::ObsModMana),
            22 => Ok(Self::ModResistance),
            23 => Ok(Self::PeriodicTriggerSpell),
            24 => Ok(Self::PeriodicEnergize),
            25 => Ok(Self::ModPacify),
            26 => Ok(Self::ModRoot),
            27 => Ok(Self::ModSilence),
            28 => Ok(Self::ReflectSpells),
            29 => Ok(Self::ModStat),
            30 => Ok(Self::ModSkill),
            31 => Ok(Self::ModIncreaseSpeed),
            32 => Ok(Self::ModIncreaseMountedSpeed),
            33 => Ok(Self::ModDecreaseSpeed),
            34 => Ok(Self::ModIncreaseHealth),
            35 => Ok(Self::ModIncreaseEnergy),
            36 => Ok(Self::ModShapeshift),
            37 => Ok(Self::EffectImmunity),
            38 => Ok(Self::StateImmunity),
            39 => Ok(Self::SchoolImmunity),
            40 => Ok(Self::DamageImmunity),
            41 => Ok(Self::DispelImmunity),
            42 => Ok(Self::ProcTriggerSpell),
            43 => Ok(Self::ProcTriggerDamage),
            44 => Ok(Self::TrackCreatures),
            45 => Ok(Self::TrackResources),
            46 => Ok(Self::ModParrySkill),
            47 => Ok(Self::ModParryPercent),
            48 => Ok(Self::ModDodgeSkill),
            49 => Ok(Self::ModDodgePercent),
            50 => Ok(Self::ModBlockSkill),
            51 => Ok(Self::ModBlockPercent),
            52 => Ok(Self::ModCritPercent),
            53 => Ok(Self::PeriodicLeech),
            54 => Ok(Self::ModHitChance),
            55 => Ok(Self::ModSpellHitChance),
            56 => Ok(Self::Transform),
            57 => Ok(Self::ModSpellCritChance),
            58 => Ok(Self::ModIncreaseSwimSpeed),
            59 => Ok(Self::ModDamageDoneCreature),
            60 => Ok(Self::ModPacifySilence),
            61 => Ok(Self::ModScale),
            62 => Ok(Self::PeriodicHealthFunnel),
            63 => Ok(Self::PeriodicManaFunnel),
            64 => Ok(Self::PeriodicManaLeech),
            65 => Ok(Self::ModCastingSpeedNotStack),
            66 => Ok(Self::FeignDeath),
            67 => Ok(Self::ModDisarm),
            68 => Ok(Self::ModStalked),
            69 => Ok(Self::SchoolAbsorb),
            70 => Ok(Self::ExtraAttacks),
            71 => Ok(Self::ModSpellCritChanceSchool),
            72 => Ok(Self::ModPowerCostSchoolPct),
            73 => Ok(Self::ModPowerCostSchool),
            74 => Ok(Self::ReflectSpellsSchool),
            75 => Ok(Self::ModLanguage),
            76 => Ok(Self::FarSight),
            77 => Ok(Self::MechanicImmunity),
            78 => Ok(Self::Mounted),
            79 => Ok(Self::ModDamagePercentDone),
            80 => Ok(Self::ModPercentStat),
            81 => Ok(Self::SplitDamagePct),
            82 => Ok(Self::WaterBreathing),
            83 => Ok(Self::ModBaseResistance),
            84 => Ok(Self::ModRegen),
            85 => Ok(Self::ModPowerRegen),
            86 => Ok(Self::ChannelDeathItem),
            87 => Ok(Self::ModDamagePercentTaken),
            88 => Ok(Self::ModHealthRegenPercent),
            89 => Ok(Self::PeriodicDamagePercent),
            90 => Ok(Self::ModResistChance),
            91 => Ok(Self::ModDetectRange),
            92 => Ok(Self::PreventsFleeing),
            93 => Ok(Self::ModUnattackable),
            94 => Ok(Self::InterruptRegen),
            95 => Ok(Self::Ghost),
            96 => Ok(Self::SpellMagnet),
            97 => Ok(Self::ManaShield),
            98 => Ok(Self::ModSkillTalent),
            99 => Ok(Self::ModAttackPower),
            100 => Ok(Self::AurasVisible),
            101 => Ok(Self::ModResistancePct),
            102 => Ok(Self::ModMeleeAttackPowerVersus),
            103 => Ok(Self::ModTotalThreat),
            104 => Ok(Self::WaterWalk),
            105 => Ok(Self::FeatherFall),
            106 => Ok(Self::Hover),
            107 => Ok(Self::AddFlatModifier),
            108 => Ok(Self::AddPctModifier),
            109 => Ok(Self::AddTargetTrigger),
            110 => Ok(Self::ModPowerRegenPercent),
            111 => Ok(Self::AddCasterHitTrigger),
            112 => Ok(Self::OverrideClassScripts),
            113 => Ok(Self::ModRangedDamageTaken),
            114 => Ok(Self::ModRangedDamageTakenPct),
            115 => Ok(Self::ModHealing),
            116 => Ok(Self::ModRegenDuringCombat),
            117 => Ok(Self::ModMechanicResistance),
            118 => Ok(Self::ModHealingPct),
            119 => Ok(Self::SharePetTracking),
            120 => Ok(Self::Untrackable),
            121 => Ok(Self::Empathy),
            122 => Ok(Self::ModOffhandDamagePct),
            123 => Ok(Self::ModTargetResistance),
            124 => Ok(Self::ModRangedAttackPower),
            125 => Ok(Self::ModMeleeDamageTaken),
            126 => Ok(Self::ModMeleeDamageTakenPct),
            127 => Ok(Self::RangedAttackPowerAttackerBonus),
            128 => Ok(Self::ModPossessPet),
            129 => Ok(Self::ModSpeedAlways),
            130 => Ok(Self::ModMountedSpeedAlways),
            131 => Ok(Self::ModRangedAttackPowerVersus),
            132 => Ok(Self::ModIncreaseEnergyPercent),
            133 => Ok(Self::ModIncreaseHealthPercent),
            134 => Ok(Self::ModManaRegenInterrupt),
            135 => Ok(Self::ModHealingDone),
            136 => Ok(Self::ModHealingDonePercent),
            137 => Ok(Self::ModTotalStatPercentage),
            138 => Ok(Self::ModMeleeHaste),
            139 => Ok(Self::ForceReaction),
            140 => Ok(Self::ModRangedHaste),
            141 => Ok(Self::ModRangedAmmoHaste),
            142 => Ok(Self::ModBaseResistancePct),
            143 => Ok(Self::ModResistanceExclusive),
            144 => Ok(Self::SafeFall),
            145 => Ok(Self::Charisma),
            146 => Ok(Self::Persuaded),
            147 => Ok(Self::MechanicImmunityMask),
            148 => Ok(Self::RetainComboPoints),
            149 => Ok(Self::ResistPushback),
            150 => Ok(Self::ModShieldBlockvaluePct),
            151 => Ok(Self::TrackStealthed),
            152 => Ok(Self::ModDetectedRange),
            153 => Ok(Self::SplitDamageFlat),
            154 => Ok(Self::ModStealthLevel),
            155 => Ok(Self::ModWaterBreathing),
            156 => Ok(Self::ModReputationGain),
            157 => Ok(Self::PetDamageMulti),
            158 => Ok(Self::ModShieldBlockvalue),
            159 => Ok(Self::NoPvpCredit),
            160 => Ok(Self::ModAoeAvoidance),
            161 => Ok(Self::ModHealthRegenInCombat),
            162 => Ok(Self::PowerBurnMana),
            163 => Ok(Self::ModCritDamageBonus),
            164 => Ok(Self::Unknown164),
            165 => Ok(Self::MeleeAttackPowerAttackerBonus),
            166 => Ok(Self::ModAttackPowerPct),
            167 => Ok(Self::ModRangedAttackPowerPct),
            168 => Ok(Self::ModDamageDoneVersus),
            169 => Ok(Self::ModCritPercentVersus),
            170 => Ok(Self::DetectAmore),
            171 => Ok(Self::ModSpeedNotStack),
            172 => Ok(Self::ModMountedSpeedNotStack),
            173 => Ok(Self::AllowChampionSpells),
            174 => Ok(Self::ModSpellDamageOfStatPercent),
            175 => Ok(Self::ModSpellHealingOfStatPercent),
            176 => Ok(Self::SpiritOfRedemption),
            177 => Ok(Self::AoeCharm),
            178 => Ok(Self::ModDebuffResistance),
            179 => Ok(Self::ModAttackerSpellCritChance),
            180 => Ok(Self::ModFlatSpellDamageVersus),
            181 => Ok(Self::ModFlatSpellCritDamageVersus),
            182 => Ok(Self::ModResistanceOfStatPercent),
            183 => Ok(Self::ModCriticalThreat),
            184 => Ok(Self::ModAttackerMeleeHitChance),
            185 => Ok(Self::ModAttackerRangedHitChance),
            186 => Ok(Self::ModAttackerSpellHitChance),
            187 => Ok(Self::ModAttackerMeleeCritChance),
            188 => Ok(Self::ModAttackerRangedCritChance),
            189 => Ok(Self::ModRating),
            190 => Ok(Self::ModFactionReputationGain),
            191 => Ok(Self::UseNormalMovementSpeed),
            v => Err(crate::errors::EnumError::new(NAME, v as i128),)
        }
    }
}

#[cfg(feature = "print-testcase")]
impl AuraMod {
    pub const fn as_test_case_value(&self) -> &'static str {
        match self {
            Self::None => "NONE",
            Self::BindSight => "BIND_SIGHT",
            Self::ModPossess => "MOD_POSSESS",
            Self::PeriodicDamage => "PERIODIC_DAMAGE",
            Self::Dummy => "DUMMY",
            Self::ModConfuse => "MOD_CONFUSE",
            Self::ModCharm => "MOD_CHARM",
            Self::ModFear => "MOD_FEAR",
            Self::PeriodicHeal => "PERIODIC_HEAL",
            Self::ModAttackspeed => "MOD_ATTACKSPEED",
            Self::ModThreat => "MOD_THREAT",
            Self::ModTaunt => "MOD_TAUNT",
            Self::ModStun => "MOD_STUN",
            Self::ModDamageDone => "MOD_DAMAGE_DONE",
            Self::ModDamageTaken => "MOD_DAMAGE_TAKEN",
            Self::DamageShield => "DAMAGE_SHIELD",
            Self::ModStealth => "MOD_STEALTH",
            Self::ModStealthDetect => "MOD_STEALTH_DETECT",
            Self::ModInvisibility => "MOD_INVISIBILITY",
            Self::ModInvisibilityDetection => "MOD_INVISIBILITY_DETECTION",
            Self::ObsModHealth => "OBS_MOD_HEALTH",
            Self::ObsModMana => "OBS_MOD_MANA",
            Self::ModResistance => "MOD_RESISTANCE",
            Self::PeriodicTriggerSpell => "PERIODIC_TRIGGER_SPELL",
            Self::PeriodicEnergize => "PERIODIC_ENERGIZE",
            Self::ModPacify => "MOD_PACIFY",
            Self::ModRoot => "MOD_ROOT",
            Self::ModSilence => "MOD_SILENCE",
            Self::ReflectSpells => "REFLECT_SPELLS",
            Self::ModStat => "MOD_STAT",
            Self::ModSkill => "MOD_SKILL",
            Self::ModIncreaseSpeed => "MOD_INCREASE_SPEED",
            Self::ModIncreaseMountedSpeed => "MOD_INCREASE_MOUNTED_SPEED",
            Self::ModDecreaseSpeed => "MOD_DECREASE_SPEED",
            Self::ModIncreaseHealth => "MOD_INCREASE_HEALTH",
            Self::ModIncreaseEnergy => "MOD_INCREASE_ENERGY",
            Self::ModShapeshift => "MOD_SHAPESHIFT",
            Self::EffectImmunity => "EFFECT_IMMUNITY",
            Self::StateImmunity => "STATE_IMMUNITY",
            Self::SchoolImmunity => "SCHOOL_IMMUNITY",
            Self::DamageImmunity => "DAMAGE_IMMUNITY",
            Self::DispelImmunity => "DISPEL_IMMUNITY",
            Self::ProcTriggerSpell => "PROC_TRIGGER_SPELL",
            Self::ProcTriggerDamage => "PROC_TRIGGER_DAMAGE",
            Self::TrackCreatures => "TRACK_CREATURES",
            Self::TrackResources => "TRACK_RESOURCES",
            Self::ModParrySkill => "MOD_PARRY_SKILL",
            Self::ModParryPercent => "MOD_PARRY_PERCENT",
            Self::ModDodgeSkill => "MOD_DODGE_SKILL",
            Self::ModDodgePercent => "MOD_DODGE_PERCENT",
            Self::ModBlockSkill => "MOD_BLOCK_SKILL",
            Self::ModBlockPercent => "MOD_BLOCK_PERCENT",
            Self::ModCritPercent => "MOD_CRIT_PERCENT",
            Self::PeriodicLeech => "PERIODIC_LEECH",
            Self::ModHitChance => "MOD_HIT_CHANCE",
            Self::ModSpellHitChance => "MOD_SPELL_HIT_CHANCE",
            Self::Transform => "TRANSFORM",
            Self::ModSpellCritChance => "MOD_SPELL_CRIT_CHANCE",
            Self::ModIncreaseSwimSpeed => "MOD_INCREASE_SWIM_SPEED",
            Self::ModDamageDoneCreature => "MOD_DAMAGE_DONE_CREATURE",
            Self::ModPacifySilence => "MOD_PACIFY_SILENCE",
            Self::ModScale => "MOD_SCALE",
            Self::PeriodicHealthFunnel => "PERIODIC_HEALTH_FUNNEL",
            Self::PeriodicManaFunnel => "PERIODIC_MANA_FUNNEL",
            Self::PeriodicManaLeech => "PERIODIC_MANA_LEECH",
            Self::ModCastingSpeedNotStack => "MOD_CASTING_SPEED_NOT_STACK",
            Self::FeignDeath => "FEIGN_DEATH",
            Self::ModDisarm => "MOD_DISARM",
            Self::ModStalked => "MOD_STALKED",
            Self::SchoolAbsorb => "SCHOOL_ABSORB",
            Self::ExtraAttacks => "EXTRA_ATTACKS",
            Self::ModSpellCritChanceSchool => "MOD_SPELL_CRIT_CHANCE_SCHOOL",
            Self::ModPowerCostSchoolPct => "MOD_POWER_COST_SCHOOL_PCT",
            Self::ModPowerCostSchool => "MOD_POWER_COST_SCHOOL",
            Self::ReflectSpellsSchool => "REFLECT_SPELLS_SCHOOL",
            Self::ModLanguage => "MOD_LANGUAGE",
            Self::FarSight => "FAR_SIGHT",
            Self::MechanicImmunity => "MECHANIC_IMMUNITY",
            Self::Mounted => "MOUNTED",
            Self::ModDamagePercentDone => "MOD_DAMAGE_PERCENT_DONE",
            Self::ModPercentStat => "MOD_PERCENT_STAT",
            Self::SplitDamagePct => "SPLIT_DAMAGE_PCT",
            Self::WaterBreathing => "WATER_BREATHING",
            Self::ModBaseResistance => "MOD_BASE_RESISTANCE",
            Self::ModRegen => "MOD_REGEN",
            Self::ModPowerRegen => "MOD_POWER_REGEN",
            Self::ChannelDeathItem => "CHANNEL_DEATH_ITEM",
            Self::ModDamagePercentTaken => "MOD_DAMAGE_PERCENT_TAKEN",
            Self::ModHealthRegenPercent => "MOD_HEALTH_REGEN_PERCENT",
            Self::PeriodicDamagePercent => "PERIODIC_DAMAGE_PERCENT",
            Self::ModResistChance => "MOD_RESIST_CHANCE",
            Self::ModDetectRange => "MOD_DETECT_RANGE",
            Self::PreventsFleeing => "PREVENTS_FLEEING",
            Self::ModUnattackable => "MOD_UNATTACKABLE",
            Self::InterruptRegen => "INTERRUPT_REGEN",
            Self::Ghost => "GHOST",
            Self::SpellMagnet => "SPELL_MAGNET",
            Self::ManaShield => "MANA_SHIELD",
            Self::ModSkillTalent => "MOD_SKILL_TALENT",
            Self::ModAttackPower => "MOD_ATTACK_POWER",
            Self::AurasVisible => "AURAS_VISIBLE",
            Self::ModResistancePct => "MOD_RESISTANCE_PCT",
            Self::ModMeleeAttackPowerVersus => "MOD_MELEE_ATTACK_POWER_VERSUS",
            Self::ModTotalThreat => "MOD_TOTAL_THREAT",
            Self::WaterWalk => "WATER_WALK",
            Self::FeatherFall => "FEATHER_FALL",
            Self::Hover => "HOVER",
            Self::AddFlatModifier => "ADD_FLAT_MODIFIER",
            Self::AddPctModifier => "ADD_PCT_MODIFIER",
            Self::AddTargetTrigger => "ADD_TARGET_TRIGGER",
            Self::ModPowerRegenPercent => "MOD_POWER_REGEN_PERCENT",
            Self::AddCasterHitTrigger => "ADD_CASTER_HIT_TRIGGER",
            Self::OverrideClassScripts => "OVERRIDE_CLASS_SCRIPTS",
            Self::ModRangedDamageTaken => "MOD_RANGED_DAMAGE_TAKEN",
            Self::ModRangedDamageTakenPct => "MOD_RANGED_DAMAGE_TAKEN_PCT",
            Self::ModHealing => "MOD_HEALING",
            Self::ModRegenDuringCombat => "MOD_REGEN_DURING_COMBAT",
            Self::ModMechanicResistance => "MOD_MECHANIC_RESISTANCE",
            Self::ModHealingPct => "MOD_HEALING_PCT",
            Self::SharePetTracking => "SHARE_PET_TRACKING",
            Self::Untrackable => "UNTRACKABLE",
            Self::Empathy => "EMPATHY",
            Self::ModOffhandDamagePct => "MOD_OFFHAND_DAMAGE_PCT",
            Self::ModTargetResistance => "MOD_TARGET_RESISTANCE",
            Self::ModRangedAttackPower => "MOD_RANGED_ATTACK_POWER",
            Self::ModMeleeDamageTaken => "MOD_MELEE_DAMAGE_TAKEN",
            Self::ModMeleeDamageTakenPct => "MOD_MELEE_DAMAGE_TAKEN_PCT",
            Self::RangedAttackPowerAttackerBonus => "RANGED_ATTACK_POWER_ATTACKER_BONUS",
            Self::ModPossessPet => "MOD_POSSESS_PET",
            Self::ModSpeedAlways => "MOD_SPEED_ALWAYS",
            Self::ModMountedSpeedAlways => "MOD_MOUNTED_SPEED_ALWAYS",
            Self::ModRangedAttackPowerVersus => "MOD_RANGED_ATTACK_POWER_VERSUS",
            Self::ModIncreaseEnergyPercent => "MOD_INCREASE_ENERGY_PERCENT",
            Self::ModIncreaseHealthPercent => "MOD_INCREASE_HEALTH_PERCENT",
            Self::ModManaRegenInterrupt => "MOD_MANA_REGEN_INTERRUPT",
            Self::ModHealingDone => "MOD_HEALING_DONE",
            Self::ModHealingDonePercent => "MOD_HEALING_DONE_PERCENT",
            Self::ModTotalStatPercentage => "MOD_TOTAL_STAT_PERCENTAGE",
            Self::ModMeleeHaste => "MOD_MELEE_HASTE",
            Self::ForceReaction => "FORCE_REACTION",
            Self::ModRangedHaste => "MOD_RANGED_HASTE",
            Self::ModRangedAmmoHaste => "MOD_RANGED_AMMO_HASTE",
            Self::ModBaseResistancePct => "MOD_BASE_RESISTANCE_PCT",
            Self::ModResistanceExclusive => "MOD_RESISTANCE_EXCLUSIVE",
            Self::SafeFall => "SAFE_FALL",
            Self::Charisma => "CHARISMA",
            Self::Persuaded => "PERSUADED",
            Self::MechanicImmunityMask => "MECHANIC_IMMUNITY_MASK",
            Self::RetainComboPoints => "RETAIN_COMBO_POINTS",
            Self::ResistPushback => "RESIST_PUSHBACK",
            Self::ModShieldBlockvaluePct => "MOD_SHIELD_BLOCKVALUE_PCT",
            Self::TrackStealthed => "TRACK_STEALTHED",
            Self::ModDetectedRange => "MOD_DETECTED_RANGE",
            Self::SplitDamageFlat => "SPLIT_DAMAGE_FLAT",
            Self::ModStealthLevel => "MOD_STEALTH_LEVEL",
            Self::ModWaterBreathing => "MOD_WATER_BREATHING",
            Self::ModReputationGain => "MOD_REPUTATION_GAIN",
            Self::PetDamageMulti => "PET_DAMAGE_MULTI",
            Self::ModShieldBlockvalue => "MOD_SHIELD_BLOCKVALUE",
            Self::NoPvpCredit => "NO_PVP_CREDIT",
            Self::ModAoeAvoidance => "MOD_AOE_AVOIDANCE",
            Self::ModHealthRegenInCombat => "MOD_HEALTH_REGEN_IN_COMBAT",
            Self::PowerBurnMana => "POWER_BURN_MANA",
            Self::ModCritDamageBonus => "MOD_CRIT_DAMAGE_BONUS",
            Self::Unknown164 => "UNKNOWN164",
            Self::MeleeAttackPowerAttackerBonus => "MELEE_ATTACK_POWER_ATTACKER_BONUS",
            Self::ModAttackPowerPct => "MOD_ATTACK_POWER_PCT",
            Self::ModRangedAttackPowerPct => "MOD_RANGED_ATTACK_POWER_PCT",
            Self::ModDamageDoneVersus => "MOD_DAMAGE_DONE_VERSUS",
            Self::ModCritPercentVersus => "MOD_CRIT_PERCENT_VERSUS",
            Self::DetectAmore => "DETECT_AMORE",
            Self::ModSpeedNotStack => "MOD_SPEED_NOT_STACK",
            Self::ModMountedSpeedNotStack => "MOD_MOUNTED_SPEED_NOT_STACK",
            Self::AllowChampionSpells => "ALLOW_CHAMPION_SPELLS",
            Self::ModSpellDamageOfStatPercent => "MOD_SPELL_DAMAGE_OF_STAT_PERCENT",
            Self::ModSpellHealingOfStatPercent => "MOD_SPELL_HEALING_OF_STAT_PERCENT",
            Self::SpiritOfRedemption => "SPIRIT_OF_REDEMPTION",
            Self::AoeCharm => "AOE_CHARM",
            Self::ModDebuffResistance => "MOD_DEBUFF_RESISTANCE",
            Self::ModAttackerSpellCritChance => "MOD_ATTACKER_SPELL_CRIT_CHANCE",
            Self::ModFlatSpellDamageVersus => "MOD_FLAT_SPELL_DAMAGE_VERSUS",
            Self::ModFlatSpellCritDamageVersus => "MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS",
            Self::ModResistanceOfStatPercent => "MOD_RESISTANCE_OF_STAT_PERCENT",
            Self::ModCriticalThreat => "MOD_CRITICAL_THREAT",
            Self::ModAttackerMeleeHitChance => "MOD_ATTACKER_MELEE_HIT_CHANCE",
            Self::ModAttackerRangedHitChance => "MOD_ATTACKER_RANGED_HIT_CHANCE",
            Self::ModAttackerSpellHitChance => "MOD_ATTACKER_SPELL_HIT_CHANCE",
            Self::ModAttackerMeleeCritChance => "MOD_ATTACKER_MELEE_CRIT_CHANCE",
            Self::ModAttackerRangedCritChance => "MOD_ATTACKER_RANGED_CRIT_CHANCE",
            Self::ModRating => "MOD_RATING",
            Self::ModFactionReputationGain => "MOD_FACTION_REPUTATION_GAIN",
            Self::UseNormalMovementSpeed => "USE_NORMAL_MOVEMENT_SPEED",
        }
    }

}

const NAME: &str = "AuraMod";

impl Default for AuraMod {
    fn default() -> Self {
        Self::None
    }
}

impl std::fmt::Display for AuraMod {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Self::None => f.write_str("None"),
            Self::BindSight => f.write_str("BindSight"),
            Self::ModPossess => f.write_str("ModPossess"),
            Self::PeriodicDamage => f.write_str("PeriodicDamage"),
            Self::Dummy => f.write_str("Dummy"),
            Self::ModConfuse => f.write_str("ModConfuse"),
            Self::ModCharm => f.write_str("ModCharm"),
            Self::ModFear => f.write_str("ModFear"),
            Self::PeriodicHeal => f.write_str("PeriodicHeal"),
            Self::ModAttackspeed => f.write_str("ModAttackspeed"),
            Self::ModThreat => f.write_str("ModThreat"),
            Self::ModTaunt => f.write_str("ModTaunt"),
            Self::ModStun => f.write_str("ModStun"),
            Self::ModDamageDone => f.write_str("ModDamageDone"),
            Self::ModDamageTaken => f.write_str("ModDamageTaken"),
            Self::DamageShield => f.write_str("DamageShield"),
            Self::ModStealth => f.write_str("ModStealth"),
            Self::ModStealthDetect => f.write_str("ModStealthDetect"),
            Self::ModInvisibility => f.write_str("ModInvisibility"),
            Self::ModInvisibilityDetection => f.write_str("ModInvisibilityDetection"),
            Self::ObsModHealth => f.write_str("ObsModHealth"),
            Self::ObsModMana => f.write_str("ObsModMana"),
            Self::ModResistance => f.write_str("ModResistance"),
            Self::PeriodicTriggerSpell => f.write_str("PeriodicTriggerSpell"),
            Self::PeriodicEnergize => f.write_str("PeriodicEnergize"),
            Self::ModPacify => f.write_str("ModPacify"),
            Self::ModRoot => f.write_str("ModRoot"),
            Self::ModSilence => f.write_str("ModSilence"),
            Self::ReflectSpells => f.write_str("ReflectSpells"),
            Self::ModStat => f.write_str("ModStat"),
            Self::ModSkill => f.write_str("ModSkill"),
            Self::ModIncreaseSpeed => f.write_str("ModIncreaseSpeed"),
            Self::ModIncreaseMountedSpeed => f.write_str("ModIncreaseMountedSpeed"),
            Self::ModDecreaseSpeed => f.write_str("ModDecreaseSpeed"),
            Self::ModIncreaseHealth => f.write_str("ModIncreaseHealth"),
            Self::ModIncreaseEnergy => f.write_str("ModIncreaseEnergy"),
            Self::ModShapeshift => f.write_str("ModShapeshift"),
            Self::EffectImmunity => f.write_str("EffectImmunity"),
            Self::StateImmunity => f.write_str("StateImmunity"),
            Self::SchoolImmunity => f.write_str("SchoolImmunity"),
            Self::DamageImmunity => f.write_str("DamageImmunity"),
            Self::DispelImmunity => f.write_str("DispelImmunity"),
            Self::ProcTriggerSpell => f.write_str("ProcTriggerSpell"),
            Self::ProcTriggerDamage => f.write_str("ProcTriggerDamage"),
            Self::TrackCreatures => f.write_str("TrackCreatures"),
            Self::TrackResources => f.write_str("TrackResources"),
            Self::ModParrySkill => f.write_str("ModParrySkill"),
            Self::ModParryPercent => f.write_str("ModParryPercent"),
            Self::ModDodgeSkill => f.write_str("ModDodgeSkill"),
            Self::ModDodgePercent => f.write_str("ModDodgePercent"),
            Self::ModBlockSkill => f.write_str("ModBlockSkill"),
            Self::ModBlockPercent => f.write_str("ModBlockPercent"),
            Self::ModCritPercent => f.write_str("ModCritPercent"),
            Self::PeriodicLeech => f.write_str("PeriodicLeech"),
            Self::ModHitChance => f.write_str("ModHitChance"),
            Self::ModSpellHitChance => f.write_str("ModSpellHitChance"),
            Self::Transform => f.write_str("Transform"),
            Self::ModSpellCritChance => f.write_str("ModSpellCritChance"),
            Self::ModIncreaseSwimSpeed => f.write_str("ModIncreaseSwimSpeed"),
            Self::ModDamageDoneCreature => f.write_str("ModDamageDoneCreature"),
            Self::ModPacifySilence => f.write_str("ModPacifySilence"),
            Self::ModScale => f.write_str("ModScale"),
            Self::PeriodicHealthFunnel => f.write_str("PeriodicHealthFunnel"),
            Self::PeriodicManaFunnel => f.write_str("PeriodicManaFunnel"),
            Self::PeriodicManaLeech => f.write_str("PeriodicManaLeech"),
            Self::ModCastingSpeedNotStack => f.write_str("ModCastingSpeedNotStack"),
            Self::FeignDeath => f.write_str("FeignDeath"),
            Self::ModDisarm => f.write_str("ModDisarm"),
            Self::ModStalked => f.write_str("ModStalked"),
            Self::SchoolAbsorb => f.write_str("SchoolAbsorb"),
            Self::ExtraAttacks => f.write_str("ExtraAttacks"),
            Self::ModSpellCritChanceSchool => f.write_str("ModSpellCritChanceSchool"),
            Self::ModPowerCostSchoolPct => f.write_str("ModPowerCostSchoolPct"),
            Self::ModPowerCostSchool => f.write_str("ModPowerCostSchool"),
            Self::ReflectSpellsSchool => f.write_str("ReflectSpellsSchool"),
            Self::ModLanguage => f.write_str("ModLanguage"),
            Self::FarSight => f.write_str("FarSight"),
            Self::MechanicImmunity => f.write_str("MechanicImmunity"),
            Self::Mounted => f.write_str("Mounted"),
            Self::ModDamagePercentDone => f.write_str("ModDamagePercentDone"),
            Self::ModPercentStat => f.write_str("ModPercentStat"),
            Self::SplitDamagePct => f.write_str("SplitDamagePct"),
            Self::WaterBreathing => f.write_str("WaterBreathing"),
            Self::ModBaseResistance => f.write_str("ModBaseResistance"),
            Self::ModRegen => f.write_str("ModRegen"),
            Self::ModPowerRegen => f.write_str("ModPowerRegen"),
            Self::ChannelDeathItem => f.write_str("ChannelDeathItem"),
            Self::ModDamagePercentTaken => f.write_str("ModDamagePercentTaken"),
            Self::ModHealthRegenPercent => f.write_str("ModHealthRegenPercent"),
            Self::PeriodicDamagePercent => f.write_str("PeriodicDamagePercent"),
            Self::ModResistChance => f.write_str("ModResistChance"),
            Self::ModDetectRange => f.write_str("ModDetectRange"),
            Self::PreventsFleeing => f.write_str("PreventsFleeing"),
            Self::ModUnattackable => f.write_str("ModUnattackable"),
            Self::InterruptRegen => f.write_str("InterruptRegen"),
            Self::Ghost => f.write_str("Ghost"),
            Self::SpellMagnet => f.write_str("SpellMagnet"),
            Self::ManaShield => f.write_str("ManaShield"),
            Self::ModSkillTalent => f.write_str("ModSkillTalent"),
            Self::ModAttackPower => f.write_str("ModAttackPower"),
            Self::AurasVisible => f.write_str("AurasVisible"),
            Self::ModResistancePct => f.write_str("ModResistancePct"),
            Self::ModMeleeAttackPowerVersus => f.write_str("ModMeleeAttackPowerVersus"),
            Self::ModTotalThreat => f.write_str("ModTotalThreat"),
            Self::WaterWalk => f.write_str("WaterWalk"),
            Self::FeatherFall => f.write_str("FeatherFall"),
            Self::Hover => f.write_str("Hover"),
            Self::AddFlatModifier => f.write_str("AddFlatModifier"),
            Self::AddPctModifier => f.write_str("AddPctModifier"),
            Self::AddTargetTrigger => f.write_str("AddTargetTrigger"),
            Self::ModPowerRegenPercent => f.write_str("ModPowerRegenPercent"),
            Self::AddCasterHitTrigger => f.write_str("AddCasterHitTrigger"),
            Self::OverrideClassScripts => f.write_str("OverrideClassScripts"),
            Self::ModRangedDamageTaken => f.write_str("ModRangedDamageTaken"),
            Self::ModRangedDamageTakenPct => f.write_str("ModRangedDamageTakenPct"),
            Self::ModHealing => f.write_str("ModHealing"),
            Self::ModRegenDuringCombat => f.write_str("ModRegenDuringCombat"),
            Self::ModMechanicResistance => f.write_str("ModMechanicResistance"),
            Self::ModHealingPct => f.write_str("ModHealingPct"),
            Self::SharePetTracking => f.write_str("SharePetTracking"),
            Self::Untrackable => f.write_str("Untrackable"),
            Self::Empathy => f.write_str("Empathy"),
            Self::ModOffhandDamagePct => f.write_str("ModOffhandDamagePct"),
            Self::ModTargetResistance => f.write_str("ModTargetResistance"),
            Self::ModRangedAttackPower => f.write_str("ModRangedAttackPower"),
            Self::ModMeleeDamageTaken => f.write_str("ModMeleeDamageTaken"),
            Self::ModMeleeDamageTakenPct => f.write_str("ModMeleeDamageTakenPct"),
            Self::RangedAttackPowerAttackerBonus => f.write_str("RangedAttackPowerAttackerBonus"),
            Self::ModPossessPet => f.write_str("ModPossessPet"),
            Self::ModSpeedAlways => f.write_str("ModSpeedAlways"),
            Self::ModMountedSpeedAlways => f.write_str("ModMountedSpeedAlways"),
            Self::ModRangedAttackPowerVersus => f.write_str("ModRangedAttackPowerVersus"),
            Self::ModIncreaseEnergyPercent => f.write_str("ModIncreaseEnergyPercent"),
            Self::ModIncreaseHealthPercent => f.write_str("ModIncreaseHealthPercent"),
            Self::ModManaRegenInterrupt => f.write_str("ModManaRegenInterrupt"),
            Self::ModHealingDone => f.write_str("ModHealingDone"),
            Self::ModHealingDonePercent => f.write_str("ModHealingDonePercent"),
            Self::ModTotalStatPercentage => f.write_str("ModTotalStatPercentage"),
            Self::ModMeleeHaste => f.write_str("ModMeleeHaste"),
            Self::ForceReaction => f.write_str("ForceReaction"),
            Self::ModRangedHaste => f.write_str("ModRangedHaste"),
            Self::ModRangedAmmoHaste => f.write_str("ModRangedAmmoHaste"),
            Self::ModBaseResistancePct => f.write_str("ModBaseResistancePct"),
            Self::ModResistanceExclusive => f.write_str("ModResistanceExclusive"),
            Self::SafeFall => f.write_str("SafeFall"),
            Self::Charisma => f.write_str("Charisma"),
            Self::Persuaded => f.write_str("Persuaded"),
            Self::MechanicImmunityMask => f.write_str("MechanicImmunityMask"),
            Self::RetainComboPoints => f.write_str("RetainComboPoints"),
            Self::ResistPushback => f.write_str("ResistPushback"),
            Self::ModShieldBlockvaluePct => f.write_str("ModShieldBlockvaluePct"),
            Self::TrackStealthed => f.write_str("TrackStealthed"),
            Self::ModDetectedRange => f.write_str("ModDetectedRange"),
            Self::SplitDamageFlat => f.write_str("SplitDamageFlat"),
            Self::ModStealthLevel => f.write_str("ModStealthLevel"),
            Self::ModWaterBreathing => f.write_str("ModWaterBreathing"),
            Self::ModReputationGain => f.write_str("ModReputationGain"),
            Self::PetDamageMulti => f.write_str("PetDamageMulti"),
            Self::ModShieldBlockvalue => f.write_str("ModShieldBlockvalue"),
            Self::NoPvpCredit => f.write_str("NoPvpCredit"),
            Self::ModAoeAvoidance => f.write_str("ModAoeAvoidance"),
            Self::ModHealthRegenInCombat => f.write_str("ModHealthRegenInCombat"),
            Self::PowerBurnMana => f.write_str("PowerBurnMana"),
            Self::ModCritDamageBonus => f.write_str("ModCritDamageBonus"),
            Self::Unknown164 => f.write_str("Unknown164"),
            Self::MeleeAttackPowerAttackerBonus => f.write_str("MeleeAttackPowerAttackerBonus"),
            Self::ModAttackPowerPct => f.write_str("ModAttackPowerPct"),
            Self::ModRangedAttackPowerPct => f.write_str("ModRangedAttackPowerPct"),
            Self::ModDamageDoneVersus => f.write_str("ModDamageDoneVersus"),
            Self::ModCritPercentVersus => f.write_str("ModCritPercentVersus"),
            Self::DetectAmore => f.write_str("DetectAmore"),
            Self::ModSpeedNotStack => f.write_str("ModSpeedNotStack"),
            Self::ModMountedSpeedNotStack => f.write_str("ModMountedSpeedNotStack"),
            Self::AllowChampionSpells => f.write_str("AllowChampionSpells"),
            Self::ModSpellDamageOfStatPercent => f.write_str("ModSpellDamageOfStatPercent"),
            Self::ModSpellHealingOfStatPercent => f.write_str("ModSpellHealingOfStatPercent"),
            Self::SpiritOfRedemption => f.write_str("SpiritOfRedemption"),
            Self::AoeCharm => f.write_str("AoeCharm"),
            Self::ModDebuffResistance => f.write_str("ModDebuffResistance"),
            Self::ModAttackerSpellCritChance => f.write_str("ModAttackerSpellCritChance"),
            Self::ModFlatSpellDamageVersus => f.write_str("ModFlatSpellDamageVersus"),
            Self::ModFlatSpellCritDamageVersus => f.write_str("ModFlatSpellCritDamageVersus"),
            Self::ModResistanceOfStatPercent => f.write_str("ModResistanceOfStatPercent"),
            Self::ModCriticalThreat => f.write_str("ModCriticalThreat"),
            Self::ModAttackerMeleeHitChance => f.write_str("ModAttackerMeleeHitChance"),
            Self::ModAttackerRangedHitChance => f.write_str("ModAttackerRangedHitChance"),
            Self::ModAttackerSpellHitChance => f.write_str("ModAttackerSpellHitChance"),
            Self::ModAttackerMeleeCritChance => f.write_str("ModAttackerMeleeCritChance"),
            Self::ModAttackerRangedCritChance => f.write_str("ModAttackerRangedCritChance"),
            Self::ModRating => f.write_str("ModRating"),
            Self::ModFactionReputationGain => f.write_str("ModFactionReputationGain"),
            Self::UseNormalMovementSpeed => f.write_str("UseNormalMovementSpeed"),
        }
    }
}

impl TryFrom<u32> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: u32) -> Result<Self, Self::Error> {
        Self::from_int(value)
    }
}

impl TryFrom<u8> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: u8) -> Result<Self, Self::Error> {
        Self::from_int(value.into())
    }
}

impl TryFrom<u16> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: u16) -> Result<Self, Self::Error> {
        Self::from_int(value.into())
    }
}

impl TryFrom<u64> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: u64) -> Result<Self, Self::Error> {
        TryInto::<u32>::try_into(value)
            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
            .try_into()
    }
}

impl TryFrom<i8> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: i8) -> Result<Self, Self::Error> {
        TryInto::<u32>::try_into(value)
            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
            .try_into()
    }
}

impl TryFrom<i16> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: i16) -> Result<Self, Self::Error> {
        TryInto::<u32>::try_into(value)
            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
            .try_into()
    }
}

impl TryFrom<i32> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: i32) -> Result<Self, Self::Error> {
        let v = u32::from_le_bytes(value.to_le_bytes());
        Self::from_int(v)
    }
}

impl TryFrom<i64> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: i64) -> Result<Self, Self::Error> {
        TryInto::<u32>::try_into(value)
            .map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
            .try_into()
    }
}

impl TryFrom<usize> for AuraMod {
    type Error = crate::errors::EnumError;
    fn try_from(value: usize) -> Result<Self, Self::Error> {
        TryInto::<u32>::try_into(value)
            .map_err(|_| crate::errors::EnumError::new(NAME, value as i128))?
            .try_into()
    }
}