@pkmn/engine 0.1.0-dev.02b7f810

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +332 -0
  3. package/build/pkg/addon.d.ts +7 -0
  4. package/build/pkg/addon.js +111 -0
  5. package/build/pkg/addon.js.map +1 -0
  6. package/build/pkg/data/ids.json +240 -0
  7. package/build/pkg/data/layout.json +86 -0
  8. package/build/pkg/data/protocol.json +173 -0
  9. package/build/pkg/data.d.ts +91 -0
  10. package/build/pkg/data.js +150 -0
  11. package/build/pkg/data.js.map +1 -0
  12. package/build/pkg/gen1.d.ts +109 -0
  13. package/build/pkg/gen1.js +668 -0
  14. package/build/pkg/gen1.js.map +1 -0
  15. package/build/pkg/index.d.ts +383 -0
  16. package/build/pkg/index.js +122 -0
  17. package/build/pkg/index.js.map +1 -0
  18. package/build/pkg/protocol.d.ts +71 -0
  19. package/build/pkg/protocol.js +452 -0
  20. package/build/pkg/protocol.js.map +1 -0
  21. package/build/test/display.js +382 -0
  22. package/build/test/display.js.map +1 -0
  23. package/build/tools/debug.js +133 -0
  24. package/build/tools/debug.js.map +1 -0
  25. package/build.zig +346 -0
  26. package/package.json +202 -0
  27. package/src/bin/install-pkmn-engine +391 -0
  28. package/src/bin/pkmn-debug +62 -0
  29. package/src/lib/binding/node.zig +229 -0
  30. package/src/lib/binding/wasm.zig +10 -0
  31. package/src/lib/common/data.zig +129 -0
  32. package/src/lib/common/debug.zig +64 -0
  33. package/src/lib/common/options.zig +40 -0
  34. package/src/lib/common/protocol.zig +1297 -0
  35. package/src/lib/common/rng.zig +234 -0
  36. package/src/lib/gen1/README.md +791 -0
  37. package/src/lib/gen1/data/moves.zig +1854 -0
  38. package/src/lib/gen1/data/species.zig +1105 -0
  39. package/src/lib/gen1/data/types.zig +131 -0
  40. package/src/lib/gen1/data.zig +620 -0
  41. package/src/lib/gen1/helpers.zig +234 -0
  42. package/src/lib/gen1/mechanics.zig +2819 -0
  43. package/src/lib/gen2/README.md +309 -0
  44. package/src/lib/gen2/data/items.zig +236 -0
  45. package/src/lib/gen2/data/moves.zig +2784 -0
  46. package/src/lib/gen2/data/species.zig +1798 -0
  47. package/src/lib/gen2/data/types.zig +123 -0
  48. package/src/lib/gen2/data.zig +425 -0
  49. package/src/lib/gen2/helpers.zig +225 -0
  50. package/src/lib/gen2/mechanics.zig +53 -0
  51. package/src/lib/pkmn.zig +54 -0
  52. package/src/test/display/pkmn.html.tmpl +368 -0
@@ -0,0 +1,2784 @@
1
+ //! Code generated by `tools/generate` - manual edits will be overwritten
2
+
3
+ const std = @import("std");
4
+
5
+ const gen2 = @import("../../gen2/data.zig");
6
+
7
+ const assert = std.debug.assert;
8
+
9
+ const Type = gen2.Type;
10
+
11
+ /// Representation of a Generation II Pokémon move.
12
+ pub const Move = enum(u8) {
13
+ None,
14
+ Pound,
15
+ KarateChop,
16
+ DoubleSlap,
17
+ CometPunch,
18
+ MegaPunch,
19
+ PayDay,
20
+ FirePunch,
21
+ IcePunch,
22
+ ThunderPunch,
23
+ Scratch,
24
+ ViseGrip,
25
+ Guillotine,
26
+ RazorWind,
27
+ SwordsDance,
28
+ Cut,
29
+ Gust,
30
+ WingAttack,
31
+ Whirlwind,
32
+ Fly,
33
+ Bind,
34
+ Slam,
35
+ VineWhip,
36
+ Stomp,
37
+ DoubleKick,
38
+ MegaKick,
39
+ JumpKick,
40
+ RollingKick,
41
+ SandAttack,
42
+ Headbutt,
43
+ HornAttack,
44
+ FuryAttack,
45
+ HornDrill,
46
+ Tackle,
47
+ BodySlam,
48
+ Wrap,
49
+ TakeDown,
50
+ Thrash,
51
+ DoubleEdge,
52
+ TailWhip,
53
+ PoisonSting,
54
+ Twineedle,
55
+ PinMissile,
56
+ Leer,
57
+ Bite,
58
+ Growl,
59
+ Roar,
60
+ Sing,
61
+ Supersonic,
62
+ SonicBoom,
63
+ Disable,
64
+ Acid,
65
+ Ember,
66
+ Flamethrower,
67
+ Mist,
68
+ WaterGun,
69
+ HydroPump,
70
+ Surf,
71
+ IceBeam,
72
+ Blizzard,
73
+ Psybeam,
74
+ BubbleBeam,
75
+ AuroraBeam,
76
+ HyperBeam,
77
+ Peck,
78
+ DrillPeck,
79
+ Submission,
80
+ LowKick,
81
+ Counter,
82
+ SeismicToss,
83
+ Strength,
84
+ Absorb,
85
+ MegaDrain,
86
+ LeechSeed,
87
+ Growth,
88
+ RazorLeaf,
89
+ SolarBeam,
90
+ PoisonPowder,
91
+ StunSpore,
92
+ SleepPowder,
93
+ PetalDance,
94
+ StringShot,
95
+ DragonRage,
96
+ FireSpin,
97
+ ThunderShock,
98
+ Thunderbolt,
99
+ ThunderWave,
100
+ Thunder,
101
+ RockThrow,
102
+ Earthquake,
103
+ Fissure,
104
+ Dig,
105
+ Toxic,
106
+ Confusion,
107
+ Psychic,
108
+ Hypnosis,
109
+ Meditate,
110
+ Agility,
111
+ QuickAttack,
112
+ Rage,
113
+ Teleport,
114
+ NightShade,
115
+ Mimic,
116
+ Screech,
117
+ DoubleTeam,
118
+ Recover,
119
+ Harden,
120
+ Minimize,
121
+ Smokescreen,
122
+ ConfuseRay,
123
+ Withdraw,
124
+ DefenseCurl,
125
+ Barrier,
126
+ LightScreen,
127
+ Haze,
128
+ Reflect,
129
+ FocusEnergy,
130
+ Bide,
131
+ Metronome,
132
+ MirrorMove,
133
+ SelfDestruct,
134
+ EggBomb,
135
+ Lick,
136
+ Smog,
137
+ Sludge,
138
+ BoneClub,
139
+ FireBlast,
140
+ Waterfall,
141
+ Clamp,
142
+ Swift,
143
+ SkullBash,
144
+ SpikeCannon,
145
+ Constrict,
146
+ Amnesia,
147
+ Kinesis,
148
+ SoftBoiled,
149
+ HighJumpKick,
150
+ Glare,
151
+ DreamEater,
152
+ PoisonGas,
153
+ Barrage,
154
+ LeechLife,
155
+ LovelyKiss,
156
+ SkyAttack,
157
+ Transform,
158
+ Bubble,
159
+ DizzyPunch,
160
+ Spore,
161
+ Flash,
162
+ Psywave,
163
+ Splash,
164
+ AcidArmor,
165
+ Crabhammer,
166
+ Explosion,
167
+ FurySwipes,
168
+ Bonemerang,
169
+ Rest,
170
+ RockSlide,
171
+ HyperFang,
172
+ Sharpen,
173
+ Conversion,
174
+ TriAttack,
175
+ SuperFang,
176
+ Slash,
177
+ Substitute,
178
+ Struggle,
179
+ Sketch,
180
+ TripleKick,
181
+ Thief,
182
+ SpiderWeb,
183
+ MindReader,
184
+ Nightmare,
185
+ FlameWheel,
186
+ Snore,
187
+ Curse,
188
+ Flail,
189
+ Conversion2,
190
+ Aeroblast,
191
+ CottonSpore,
192
+ Reversal,
193
+ Spite,
194
+ PowderSnow,
195
+ Protect,
196
+ MachPunch,
197
+ ScaryFace,
198
+ FeintAttack,
199
+ SweetKiss,
200
+ BellyDrum,
201
+ SludgeBomb,
202
+ MudSlap,
203
+ Octazooka,
204
+ Spikes,
205
+ ZapCannon,
206
+ Foresight,
207
+ DestinyBond,
208
+ PerishSong,
209
+ IcyWind,
210
+ Detect,
211
+ BoneRush,
212
+ LockOn,
213
+ Outrage,
214
+ Sandstorm,
215
+ GigaDrain,
216
+ Endure,
217
+ Charm,
218
+ Rollout,
219
+ FalseSwipe,
220
+ Swagger,
221
+ MilkDrink,
222
+ Spark,
223
+ FuryCutter,
224
+ SteelWing,
225
+ MeanLook,
226
+ Attract,
227
+ SleepTalk,
228
+ HealBell,
229
+ Return,
230
+ Present,
231
+ Frustration,
232
+ Safeguard,
233
+ PainSplit,
234
+ SacredFire,
235
+ Magnitude,
236
+ DynamicPunch,
237
+ Megahorn,
238
+ DragonBreath,
239
+ BatonPass,
240
+ Encore,
241
+ Pursuit,
242
+ RapidSpin,
243
+ SweetScent,
244
+ IronTail,
245
+ MetalClaw,
246
+ VitalThrow,
247
+ MorningSun,
248
+ Synthesis,
249
+ Moonlight,
250
+ HiddenPower,
251
+ CrossChop,
252
+ Twister,
253
+ RainDance,
254
+ SunnyDay,
255
+ Crunch,
256
+ MirrorCoat,
257
+ PsychUp,
258
+ ExtremeSpeed,
259
+ AncientPower,
260
+ ShadowBall,
261
+ FutureSight,
262
+ RockSmash,
263
+ Whirlpool,
264
+ BeatUp,
265
+
266
+ /// Data associated with a Pokémon move.
267
+ pub const Data = extern struct {
268
+ /// The move's effect.
269
+ effect: Effect,
270
+ /// The move's base power.
271
+ bp: u8,
272
+ /// The move's type.
273
+ type: Type,
274
+ /// The move's base PP.
275
+ pp: u8,
276
+ /// The move's accuracy percentage.
277
+ accuracy: u8,
278
+ /// The move's targeting behavior.
279
+ target: Target,
280
+ /// The chance of the move's secondary effect occurring.
281
+ chance: u8 = 0,
282
+
283
+ comptime {
284
+ assert(@sizeOf(Data) == 7);
285
+ }
286
+ };
287
+
288
+ const DATA = [_]Data{
289
+ // Pound
290
+ .{
291
+ .effect = .None,
292
+ .bp = 40,
293
+ .type = .Normal,
294
+ .pp = 35,
295
+ .accuracy = 100,
296
+ .target = .Other,
297
+ },
298
+ // KarateChop
299
+ .{
300
+ .effect = .HighCritical,
301
+ .bp = 50,
302
+ .type = .Fighting,
303
+ .pp = 25,
304
+ .accuracy = 100,
305
+ .target = .Other,
306
+ },
307
+ // DoubleSlap
308
+ .{
309
+ .effect = .MultiHit,
310
+ .bp = 15,
311
+ .type = .Normal,
312
+ .pp = 10,
313
+ .accuracy = 85,
314
+ .target = .Other,
315
+ },
316
+ // CometPunch
317
+ .{
318
+ .effect = .MultiHit,
319
+ .bp = 18,
320
+ .type = .Normal,
321
+ .pp = 15,
322
+ .accuracy = 85,
323
+ .target = .Other,
324
+ },
325
+ // MegaPunch
326
+ .{
327
+ .effect = .None,
328
+ .bp = 80,
329
+ .type = .Normal,
330
+ .pp = 20,
331
+ .accuracy = 85,
332
+ .target = .Other,
333
+ },
334
+ // PayDay
335
+ .{
336
+ .effect = .PayDay,
337
+ .bp = 40,
338
+ .type = .Normal,
339
+ .pp = 20,
340
+ .accuracy = 100,
341
+ .target = .Other,
342
+ },
343
+ // FirePunch
344
+ .{
345
+ .effect = .BurnChance,
346
+ .bp = 75,
347
+ .type = .Fire,
348
+ .pp = 15,
349
+ .accuracy = 100,
350
+ .target = .Other,
351
+ .chance = 1, // * 10 = 10
352
+ },
353
+ // IcePunch
354
+ .{
355
+ .effect = .FreezeChance,
356
+ .bp = 75,
357
+ .type = .Ice,
358
+ .pp = 15,
359
+ .accuracy = 100,
360
+ .target = .Other,
361
+ .chance = 1, // * 10 = 10
362
+ },
363
+ // ThunderPunch
364
+ .{
365
+ .effect = .ParalyzeChance,
366
+ .bp = 75,
367
+ .type = .Electric,
368
+ .pp = 15,
369
+ .accuracy = 100,
370
+ .target = .Other,
371
+ .chance = 1, // * 10 = 10
372
+ },
373
+ // Scratch
374
+ .{
375
+ .effect = .None,
376
+ .bp = 40,
377
+ .type = .Normal,
378
+ .pp = 35,
379
+ .accuracy = 100,
380
+ .target = .Other,
381
+ },
382
+ // ViseGrip
383
+ .{
384
+ .effect = .None,
385
+ .bp = 55,
386
+ .type = .Normal,
387
+ .pp = 30,
388
+ .accuracy = 100,
389
+ .target = .Other,
390
+ },
391
+ // Guillotine
392
+ .{
393
+ .effect = .OHKO,
394
+ .bp = 0,
395
+ .type = .Normal,
396
+ .pp = 5,
397
+ .accuracy = 30,
398
+ .target = .Other,
399
+ },
400
+ // RazorWind
401
+ .{
402
+ .effect = .RazorWind,
403
+ .bp = 80,
404
+ .type = .Normal,
405
+ .pp = 10,
406
+ .accuracy = 75,
407
+ .target = .Foes,
408
+ },
409
+ // SwordsDance
410
+ .{
411
+ .effect = .AttackUp2,
412
+ .bp = 0,
413
+ .type = .Normal,
414
+ .pp = 30,
415
+ .accuracy = 100,
416
+ .target = .Self,
417
+ },
418
+ // Cut
419
+ .{
420
+ .effect = .None,
421
+ .bp = 50,
422
+ .type = .Normal,
423
+ .pp = 30,
424
+ .accuracy = 95,
425
+ .target = .Other,
426
+ },
427
+ // Gust
428
+ .{
429
+ .effect = .Gust,
430
+ .bp = 40,
431
+ .type = .Flying,
432
+ .pp = 35,
433
+ .accuracy = 100,
434
+ .target = .Any,
435
+ },
436
+ // WingAttack
437
+ .{
438
+ .effect = .None,
439
+ .bp = 60,
440
+ .type = .Flying,
441
+ .pp = 35,
442
+ .accuracy = 100,
443
+ .target = .Any,
444
+ },
445
+ // Whirlwind
446
+ .{
447
+ .effect = .ForceSwitch,
448
+ .bp = 0,
449
+ .type = .Normal,
450
+ .pp = 20,
451
+ .accuracy = 100,
452
+ .target = .Other,
453
+ },
454
+ // Fly
455
+ .{
456
+ .effect = .Fly,
457
+ .bp = 70,
458
+ .type = .Flying,
459
+ .pp = 15,
460
+ .accuracy = 95,
461
+ .target = .Any,
462
+ },
463
+ // Bind
464
+ .{
465
+ .effect = .Binding,
466
+ .bp = 15,
467
+ .type = .Normal,
468
+ .pp = 20,
469
+ .accuracy = 75,
470
+ .target = .Other,
471
+ },
472
+ // Slam
473
+ .{
474
+ .effect = .None,
475
+ .bp = 80,
476
+ .type = .Normal,
477
+ .pp = 20,
478
+ .accuracy = 75,
479
+ .target = .Other,
480
+ },
481
+ // VineWhip
482
+ .{
483
+ .effect = .None,
484
+ .bp = 35,
485
+ .type = .Grass,
486
+ .pp = 10,
487
+ .accuracy = 100,
488
+ .target = .Other,
489
+ },
490
+ // Stomp
491
+ .{
492
+ .effect = .Stomp,
493
+ .bp = 65,
494
+ .type = .Normal,
495
+ .pp = 20,
496
+ .accuracy = 100,
497
+ .target = .Other,
498
+ .chance = 3, // * 10 = 30
499
+ },
500
+ // DoubleKick
501
+ .{
502
+ .effect = .DoubleHit,
503
+ .bp = 30,
504
+ .type = .Fighting,
505
+ .pp = 30,
506
+ .accuracy = 100,
507
+ .target = .Other,
508
+ },
509
+ // MegaKick
510
+ .{
511
+ .effect = .None,
512
+ .bp = 120,
513
+ .type = .Normal,
514
+ .pp = 5,
515
+ .accuracy = 75,
516
+ .target = .Other,
517
+ },
518
+ // JumpKick
519
+ .{
520
+ .effect = .JumpKick,
521
+ .bp = 70,
522
+ .type = .Fighting,
523
+ .pp = 25,
524
+ .accuracy = 95,
525
+ .target = .Other,
526
+ },
527
+ // RollingKick
528
+ .{
529
+ .effect = .FlinchChance,
530
+ .bp = 60,
531
+ .type = .Fighting,
532
+ .pp = 15,
533
+ .accuracy = 85,
534
+ .target = .Other,
535
+ .chance = 3, // * 10 = 30
536
+ },
537
+ // SandAttack
538
+ .{
539
+ .effect = .AccuracyDown1,
540
+ .bp = 0,
541
+ .type = .Ground,
542
+ .pp = 15,
543
+ .accuracy = 100,
544
+ .target = .Other,
545
+ },
546
+ // Headbutt
547
+ .{
548
+ .effect = .FlinchChance,
549
+ .bp = 70,
550
+ .type = .Normal,
551
+ .pp = 15,
552
+ .accuracy = 100,
553
+ .target = .Other,
554
+ .chance = 3, // * 10 = 30
555
+ },
556
+ // HornAttack
557
+ .{
558
+ .effect = .None,
559
+ .bp = 65,
560
+ .type = .Normal,
561
+ .pp = 25,
562
+ .accuracy = 100,
563
+ .target = .Other,
564
+ },
565
+ // FuryAttack
566
+ .{
567
+ .effect = .MultiHit,
568
+ .bp = 15,
569
+ .type = .Normal,
570
+ .pp = 20,
571
+ .accuracy = 85,
572
+ .target = .Other,
573
+ },
574
+ // HornDrill
575
+ .{
576
+ .effect = .OHKO,
577
+ .bp = 0,
578
+ .type = .Normal,
579
+ .pp = 5,
580
+ .accuracy = 30,
581
+ .target = .Other,
582
+ },
583
+ // Tackle
584
+ .{
585
+ .effect = .None,
586
+ .bp = 35,
587
+ .type = .Normal,
588
+ .pp = 35,
589
+ .accuracy = 95,
590
+ .target = .Other,
591
+ },
592
+ // BodySlam
593
+ .{
594
+ .effect = .ParalyzeChance,
595
+ .bp = 85,
596
+ .type = .Normal,
597
+ .pp = 15,
598
+ .accuracy = 100,
599
+ .target = .Other,
600
+ .chance = 3, // * 10 = 30
601
+ },
602
+ // Wrap
603
+ .{
604
+ .effect = .Binding,
605
+ .bp = 15,
606
+ .type = .Normal,
607
+ .pp = 20,
608
+ .accuracy = 85,
609
+ .target = .Other,
610
+ },
611
+ // TakeDown
612
+ .{
613
+ .effect = .Recoil,
614
+ .bp = 90,
615
+ .type = .Normal,
616
+ .pp = 20,
617
+ .accuracy = 85,
618
+ .target = .Other,
619
+ },
620
+ // Thrash
621
+ .{
622
+ .effect = .Thrashing,
623
+ .bp = 90,
624
+ .type = .Normal,
625
+ .pp = 20,
626
+ .accuracy = 100,
627
+ .target = .RandomFoe,
628
+ },
629
+ // DoubleEdge
630
+ .{
631
+ .effect = .Recoil,
632
+ .bp = 120,
633
+ .type = .Normal,
634
+ .pp = 15,
635
+ .accuracy = 100,
636
+ .target = .Other,
637
+ },
638
+ // TailWhip
639
+ .{
640
+ .effect = .DefenseDown1,
641
+ .bp = 0,
642
+ .type = .Normal,
643
+ .pp = 30,
644
+ .accuracy = 100,
645
+ .target = .Foes,
646
+ },
647
+ // PoisonSting
648
+ .{
649
+ .effect = .PoisonChance,
650
+ .bp = 15,
651
+ .type = .Poison,
652
+ .pp = 35,
653
+ .accuracy = 100,
654
+ .target = .Other,
655
+ .chance = 3, // * 10 = 30
656
+ },
657
+ // Twineedle
658
+ .{
659
+ .effect = .Twineedle,
660
+ .bp = 25,
661
+ .type = .Bug,
662
+ .pp = 20,
663
+ .accuracy = 100,
664
+ .target = .Other,
665
+ .chance = 2, // * 10 = 20
666
+ },
667
+ // PinMissile
668
+ .{
669
+ .effect = .MultiHit,
670
+ .bp = 14,
671
+ .type = .Bug,
672
+ .pp = 20,
673
+ .accuracy = 85,
674
+ .target = .Other,
675
+ },
676
+ // Leer
677
+ .{
678
+ .effect = .DefenseDown1,
679
+ .bp = 0,
680
+ .type = .Normal,
681
+ .pp = 30,
682
+ .accuracy = 100,
683
+ .target = .Foes,
684
+ },
685
+ // Bite
686
+ .{
687
+ .effect = .FlinchChance,
688
+ .bp = 60,
689
+ .type = .Dark,
690
+ .pp = 25,
691
+ .accuracy = 100,
692
+ .target = .Other,
693
+ .chance = 3, // * 10 = 30
694
+ },
695
+ // Growl
696
+ .{
697
+ .effect = .AttackDown1,
698
+ .bp = 0,
699
+ .type = .Normal,
700
+ .pp = 40,
701
+ .accuracy = 100,
702
+ .target = .Foes,
703
+ },
704
+ // Roar
705
+ .{
706
+ .effect = .ForceSwitch,
707
+ .bp = 0,
708
+ .type = .Normal,
709
+ .pp = 20,
710
+ .accuracy = 100,
711
+ .target = .Other,
712
+ },
713
+ // Sing
714
+ .{
715
+ .effect = .Sleep,
716
+ .bp = 0,
717
+ .type = .Normal,
718
+ .pp = 15,
719
+ .accuracy = 55,
720
+ .target = .Other,
721
+ },
722
+ // Supersonic
723
+ .{
724
+ .effect = .Confusion,
725
+ .bp = 0,
726
+ .type = .Normal,
727
+ .pp = 20,
728
+ .accuracy = 55,
729
+ .target = .Other,
730
+ },
731
+ // SonicBoom
732
+ .{
733
+ .effect = .FixedDamage,
734
+ .bp = 0,
735
+ .type = .Normal,
736
+ .pp = 20,
737
+ .accuracy = 90,
738
+ .target = .Other,
739
+ },
740
+ // Disable
741
+ .{
742
+ .effect = .Disable,
743
+ .bp = 0,
744
+ .type = .Normal,
745
+ .pp = 20,
746
+ .accuracy = 55,
747
+ .target = .Other,
748
+ },
749
+ // Acid
750
+ .{
751
+ .effect = .DefenseDownChance,
752
+ .bp = 40,
753
+ .type = .Poison,
754
+ .pp = 30,
755
+ .accuracy = 100,
756
+ .target = .Foes,
757
+ .chance = 1, // * 10 = 10
758
+ },
759
+ // Ember
760
+ .{
761
+ .effect = .BurnChance,
762
+ .bp = 40,
763
+ .type = .Fire,
764
+ .pp = 25,
765
+ .accuracy = 100,
766
+ .target = .Other,
767
+ .chance = 1, // * 10 = 10
768
+ },
769
+ // Flamethrower
770
+ .{
771
+ .effect = .BurnChance,
772
+ .bp = 95,
773
+ .type = .Fire,
774
+ .pp = 15,
775
+ .accuracy = 100,
776
+ .target = .Other,
777
+ .chance = 1, // * 10 = 10
778
+ },
779
+ // Mist
780
+ .{
781
+ .effect = .Mist,
782
+ .bp = 0,
783
+ .type = .Ice,
784
+ .pp = 30,
785
+ .accuracy = 100,
786
+ .target = .Self,
787
+ },
788
+ // WaterGun
789
+ .{
790
+ .effect = .None,
791
+ .bp = 40,
792
+ .type = .Water,
793
+ .pp = 25,
794
+ .accuracy = 100,
795
+ .target = .Other,
796
+ },
797
+ // HydroPump
798
+ .{
799
+ .effect = .None,
800
+ .bp = 120,
801
+ .type = .Water,
802
+ .pp = 5,
803
+ .accuracy = 80,
804
+ .target = .Other,
805
+ },
806
+ // Surf
807
+ .{
808
+ .effect = .None,
809
+ .bp = 95,
810
+ .type = .Water,
811
+ .pp = 15,
812
+ .accuracy = 100,
813
+ .target = .Foes,
814
+ },
815
+ // IceBeam
816
+ .{
817
+ .effect = .FreezeChance,
818
+ .bp = 95,
819
+ .type = .Ice,
820
+ .pp = 10,
821
+ .accuracy = 100,
822
+ .target = .Other,
823
+ .chance = 1, // * 10 = 10
824
+ },
825
+ // Blizzard
826
+ .{
827
+ .effect = .FreezeChance,
828
+ .bp = 120,
829
+ .type = .Ice,
830
+ .pp = 5,
831
+ .accuracy = 70,
832
+ .target = .Foes,
833
+ .chance = 1, // * 10 = 10
834
+ },
835
+ // Psybeam
836
+ .{
837
+ .effect = .ConfusionChance,
838
+ .bp = 65,
839
+ .type = .Psychic,
840
+ .pp = 20,
841
+ .accuracy = 100,
842
+ .target = .Other,
843
+ .chance = 1, // * 10 = 10
844
+ },
845
+ // BubbleBeam
846
+ .{
847
+ .effect = .SpeedDownChance,
848
+ .bp = 65,
849
+ .type = .Water,
850
+ .pp = 20,
851
+ .accuracy = 100,
852
+ .target = .Other,
853
+ .chance = 1, // * 10 = 10
854
+ },
855
+ // AuroraBeam
856
+ .{
857
+ .effect = .AttackDownChance,
858
+ .bp = 65,
859
+ .type = .Ice,
860
+ .pp = 20,
861
+ .accuracy = 100,
862
+ .target = .Other,
863
+ .chance = 1, // * 10 = 10
864
+ },
865
+ // HyperBeam
866
+ .{
867
+ .effect = .HyperBeam,
868
+ .bp = 150,
869
+ .type = .Normal,
870
+ .pp = 5,
871
+ .accuracy = 90,
872
+ .target = .Other,
873
+ },
874
+ // Peck
875
+ .{
876
+ .effect = .None,
877
+ .bp = 35,
878
+ .type = .Flying,
879
+ .pp = 35,
880
+ .accuracy = 100,
881
+ .target = .Any,
882
+ },
883
+ // DrillPeck
884
+ .{
885
+ .effect = .None,
886
+ .bp = 80,
887
+ .type = .Flying,
888
+ .pp = 20,
889
+ .accuracy = 100,
890
+ .target = .Any,
891
+ },
892
+ // Submission
893
+ .{
894
+ .effect = .Recoil,
895
+ .bp = 80,
896
+ .type = .Fighting,
897
+ .pp = 25,
898
+ .accuracy = 80,
899
+ .target = .Other,
900
+ },
901
+ // LowKick
902
+ .{
903
+ .effect = .FlinchChance,
904
+ .bp = 50,
905
+ .type = .Fighting,
906
+ .pp = 20,
907
+ .accuracy = 90,
908
+ .target = .Other,
909
+ .chance = 3, // * 10 = 30
910
+ },
911
+ // Counter
912
+ .{
913
+ .effect = .Counter,
914
+ .bp = 0,
915
+ .type = .Fighting,
916
+ .pp = 20,
917
+ .accuracy = 100,
918
+ .target = .Depends,
919
+ },
920
+ // SeismicToss
921
+ .{
922
+ .effect = .LevelDamage,
923
+ .bp = 0,
924
+ .type = .Fighting,
925
+ .pp = 20,
926
+ .accuracy = 100,
927
+ .target = .Other,
928
+ },
929
+ // Strength
930
+ .{
931
+ .effect = .None,
932
+ .bp = 80,
933
+ .type = .Normal,
934
+ .pp = 15,
935
+ .accuracy = 100,
936
+ .target = .Other,
937
+ },
938
+ // Absorb
939
+ .{
940
+ .effect = .DrainHP,
941
+ .bp = 20,
942
+ .type = .Grass,
943
+ .pp = 20,
944
+ .accuracy = 100,
945
+ .target = .Other,
946
+ },
947
+ // MegaDrain
948
+ .{
949
+ .effect = .DrainHP,
950
+ .bp = 40,
951
+ .type = .Grass,
952
+ .pp = 10,
953
+ .accuracy = 100,
954
+ .target = .Other,
955
+ },
956
+ // LeechSeed
957
+ .{
958
+ .effect = .LeechSeed,
959
+ .bp = 0,
960
+ .type = .Grass,
961
+ .pp = 10,
962
+ .accuracy = 90,
963
+ .target = .Other,
964
+ },
965
+ // Growth
966
+ .{
967
+ .effect = .SpAtkUp1,
968
+ .bp = 0,
969
+ .type = .Normal,
970
+ .pp = 40,
971
+ .accuracy = 100,
972
+ .target = .Self,
973
+ },
974
+ // RazorLeaf
975
+ .{
976
+ .effect = .HighCritical,
977
+ .bp = 55,
978
+ .type = .Grass,
979
+ .pp = 25,
980
+ .accuracy = 95,
981
+ .target = .Foes,
982
+ },
983
+ // SolarBeam
984
+ .{
985
+ .effect = .Solarbeam,
986
+ .bp = 120,
987
+ .type = .Grass,
988
+ .pp = 10,
989
+ .accuracy = 100,
990
+ .target = .Other,
991
+ },
992
+ // PoisonPowder
993
+ .{
994
+ .effect = .Poison,
995
+ .bp = 0,
996
+ .type = .Poison,
997
+ .pp = 35,
998
+ .accuracy = 75,
999
+ .target = .Other,
1000
+ },
1001
+ // StunSpore
1002
+ .{
1003
+ .effect = .Paralyze,
1004
+ .bp = 0,
1005
+ .type = .Grass,
1006
+ .pp = 30,
1007
+ .accuracy = 75,
1008
+ .target = .Other,
1009
+ },
1010
+ // SleepPowder
1011
+ .{
1012
+ .effect = .Sleep,
1013
+ .bp = 0,
1014
+ .type = .Grass,
1015
+ .pp = 15,
1016
+ .accuracy = 75,
1017
+ .target = .Other,
1018
+ },
1019
+ // PetalDance
1020
+ .{
1021
+ .effect = .Thrashing,
1022
+ .bp = 70,
1023
+ .type = .Grass,
1024
+ .pp = 20,
1025
+ .accuracy = 100,
1026
+ .target = .RandomFoe,
1027
+ },
1028
+ // StringShot
1029
+ .{
1030
+ .effect = .SpeedDown1,
1031
+ .bp = 0,
1032
+ .type = .Bug,
1033
+ .pp = 40,
1034
+ .accuracy = 95,
1035
+ .target = .Foes,
1036
+ },
1037
+ // DragonRage
1038
+ .{
1039
+ .effect = .FixedDamage,
1040
+ .bp = 0,
1041
+ .type = .Dragon,
1042
+ .pp = 10,
1043
+ .accuracy = 100,
1044
+ .target = .Other,
1045
+ },
1046
+ // FireSpin
1047
+ .{
1048
+ .effect = .Binding,
1049
+ .bp = 15,
1050
+ .type = .Fire,
1051
+ .pp = 15,
1052
+ .accuracy = 70,
1053
+ .target = .Other,
1054
+ },
1055
+ // ThunderShock
1056
+ .{
1057
+ .effect = .ParalyzeChance,
1058
+ .bp = 40,
1059
+ .type = .Electric,
1060
+ .pp = 30,
1061
+ .accuracy = 100,
1062
+ .target = .Other,
1063
+ .chance = 1, // * 10 = 10
1064
+ },
1065
+ // Thunderbolt
1066
+ .{
1067
+ .effect = .ParalyzeChance,
1068
+ .bp = 95,
1069
+ .type = .Electric,
1070
+ .pp = 15,
1071
+ .accuracy = 100,
1072
+ .target = .Other,
1073
+ .chance = 1, // * 10 = 10
1074
+ },
1075
+ // ThunderWave
1076
+ .{
1077
+ .effect = .Paralyze,
1078
+ .bp = 0,
1079
+ .type = .Electric,
1080
+ .pp = 20,
1081
+ .accuracy = 100,
1082
+ .target = .Other,
1083
+ },
1084
+ // Thunder
1085
+ .{
1086
+ .effect = .Thunder,
1087
+ .bp = 120,
1088
+ .type = .Electric,
1089
+ .pp = 10,
1090
+ .accuracy = 70,
1091
+ .target = .Other,
1092
+ .chance = 3, // * 10 = 30
1093
+ },
1094
+ // RockThrow
1095
+ .{
1096
+ .effect = .None,
1097
+ .bp = 50,
1098
+ .type = .Rock,
1099
+ .pp = 15,
1100
+ .accuracy = 90,
1101
+ .target = .Other,
1102
+ },
1103
+ // Earthquake
1104
+ .{
1105
+ .effect = .Earthquake,
1106
+ .bp = 100,
1107
+ .type = .Ground,
1108
+ .pp = 10,
1109
+ .accuracy = 100,
1110
+ .target = .AllOthers,
1111
+ },
1112
+ // Fissure
1113
+ .{
1114
+ .effect = .OHKO,
1115
+ .bp = 0,
1116
+ .type = .Ground,
1117
+ .pp = 5,
1118
+ .accuracy = 30,
1119
+ .target = .Other,
1120
+ },
1121
+ // Dig
1122
+ .{
1123
+ .effect = .Fly,
1124
+ .bp = 60,
1125
+ .type = .Ground,
1126
+ .pp = 10,
1127
+ .accuracy = 100,
1128
+ .target = .Other,
1129
+ },
1130
+ // Toxic
1131
+ .{
1132
+ .effect = .Toxic,
1133
+ .bp = 0,
1134
+ .type = .Poison,
1135
+ .pp = 10,
1136
+ .accuracy = 85,
1137
+ .target = .Other,
1138
+ },
1139
+ // Confusion
1140
+ .{
1141
+ .effect = .ConfusionChance,
1142
+ .bp = 50,
1143
+ .type = .Psychic,
1144
+ .pp = 25,
1145
+ .accuracy = 100,
1146
+ .target = .Other,
1147
+ .chance = 1, // * 10 = 10
1148
+ },
1149
+ // Psychic
1150
+ .{
1151
+ .effect = .SpDefDownChance,
1152
+ .bp = 90,
1153
+ .type = .Psychic,
1154
+ .pp = 10,
1155
+ .accuracy = 100,
1156
+ .target = .Other,
1157
+ .chance = 1, // * 10 = 10
1158
+ },
1159
+ // Hypnosis
1160
+ .{
1161
+ .effect = .Sleep,
1162
+ .bp = 0,
1163
+ .type = .Psychic,
1164
+ .pp = 20,
1165
+ .accuracy = 60,
1166
+ .target = .Other,
1167
+ },
1168
+ // Meditate
1169
+ .{
1170
+ .effect = .AttackUp1,
1171
+ .bp = 0,
1172
+ .type = .Psychic,
1173
+ .pp = 40,
1174
+ .accuracy = 100,
1175
+ .target = .Self,
1176
+ },
1177
+ // Agility
1178
+ .{
1179
+ .effect = .SpeedUp2,
1180
+ .bp = 0,
1181
+ .type = .Psychic,
1182
+ .pp = 30,
1183
+ .accuracy = 100,
1184
+ .target = .Self,
1185
+ },
1186
+ // QuickAttack
1187
+ .{
1188
+ .effect = .Priority,
1189
+ .bp = 40,
1190
+ .type = .Normal,
1191
+ .pp = 30,
1192
+ .accuracy = 100,
1193
+ .target = .Other,
1194
+ },
1195
+ // Rage
1196
+ .{
1197
+ .effect = .Rage,
1198
+ .bp = 20,
1199
+ .type = .Normal,
1200
+ .pp = 20,
1201
+ .accuracy = 100,
1202
+ .target = .Other,
1203
+ },
1204
+ // Teleport
1205
+ .{
1206
+ .effect = .Teleport,
1207
+ .bp = 0,
1208
+ .type = .Psychic,
1209
+ .pp = 20,
1210
+ .accuracy = 100,
1211
+ .target = .Self,
1212
+ },
1213
+ // NightShade
1214
+ .{
1215
+ .effect = .LevelDamage,
1216
+ .bp = 0,
1217
+ .type = .Ghost,
1218
+ .pp = 15,
1219
+ .accuracy = 100,
1220
+ .target = .Other,
1221
+ },
1222
+ // Mimic
1223
+ .{
1224
+ .effect = .Mimic,
1225
+ .bp = 0,
1226
+ .type = .Normal,
1227
+ .pp = 10,
1228
+ .accuracy = 100,
1229
+ .target = .Other,
1230
+ },
1231
+ // Screech
1232
+ .{
1233
+ .effect = .DefenseDown2,
1234
+ .bp = 0,
1235
+ .type = .Normal,
1236
+ .pp = 40,
1237
+ .accuracy = 85,
1238
+ .target = .Other,
1239
+ },
1240
+ // DoubleTeam
1241
+ .{
1242
+ .effect = .EvasionUp1,
1243
+ .bp = 0,
1244
+ .type = .Normal,
1245
+ .pp = 15,
1246
+ .accuracy = 100,
1247
+ .target = .Self,
1248
+ },
1249
+ // Recover
1250
+ .{
1251
+ .effect = .Heal,
1252
+ .bp = 0,
1253
+ .type = .Normal,
1254
+ .pp = 20,
1255
+ .accuracy = 100,
1256
+ .target = .Self,
1257
+ },
1258
+ // Harden
1259
+ .{
1260
+ .effect = .DefenseUp1,
1261
+ .bp = 0,
1262
+ .type = .Normal,
1263
+ .pp = 30,
1264
+ .accuracy = 100,
1265
+ .target = .Self,
1266
+ },
1267
+ // Minimize
1268
+ .{
1269
+ .effect = .EvasionUp1,
1270
+ .bp = 0,
1271
+ .type = .Normal,
1272
+ .pp = 20,
1273
+ .accuracy = 100,
1274
+ .target = .Self,
1275
+ },
1276
+ // Smokescreen
1277
+ .{
1278
+ .effect = .AccuracyDown1,
1279
+ .bp = 0,
1280
+ .type = .Normal,
1281
+ .pp = 20,
1282
+ .accuracy = 100,
1283
+ .target = .Other,
1284
+ },
1285
+ // ConfuseRay
1286
+ .{
1287
+ .effect = .Confusion,
1288
+ .bp = 0,
1289
+ .type = .Ghost,
1290
+ .pp = 10,
1291
+ .accuracy = 100,
1292
+ .target = .Other,
1293
+ },
1294
+ // Withdraw
1295
+ .{
1296
+ .effect = .DefenseUp1,
1297
+ .bp = 0,
1298
+ .type = .Water,
1299
+ .pp = 40,
1300
+ .accuracy = 100,
1301
+ .target = .Self,
1302
+ },
1303
+ // DefenseCurl
1304
+ .{
1305
+ .effect = .DefenseCurl,
1306
+ .bp = 0,
1307
+ .type = .Normal,
1308
+ .pp = 40,
1309
+ .accuracy = 100,
1310
+ .target = .Self,
1311
+ },
1312
+ // Barrier
1313
+ .{
1314
+ .effect = .DefenseUp2,
1315
+ .bp = 0,
1316
+ .type = .Psychic,
1317
+ .pp = 30,
1318
+ .accuracy = 100,
1319
+ .target = .Self,
1320
+ },
1321
+ // LightScreen
1322
+ .{
1323
+ .effect = .LightScreen,
1324
+ .bp = 0,
1325
+ .type = .Psychic,
1326
+ .pp = 30,
1327
+ .accuracy = 100,
1328
+ .target = .AllySide,
1329
+ },
1330
+ // Haze
1331
+ .{
1332
+ .effect = .Haze,
1333
+ .bp = 0,
1334
+ .type = .Ice,
1335
+ .pp = 30,
1336
+ .accuracy = 100,
1337
+ .target = .All,
1338
+ },
1339
+ // Reflect
1340
+ .{
1341
+ .effect = .Reflect,
1342
+ .bp = 0,
1343
+ .type = .Psychic,
1344
+ .pp = 20,
1345
+ .accuracy = 100,
1346
+ .target = .AllySide,
1347
+ },
1348
+ // FocusEnergy
1349
+ .{
1350
+ .effect = .FocusEnergy,
1351
+ .bp = 0,
1352
+ .type = .Normal,
1353
+ .pp = 30,
1354
+ .accuracy = 100,
1355
+ .target = .Self,
1356
+ },
1357
+ // Bide
1358
+ .{
1359
+ .effect = .Bide,
1360
+ .bp = 0,
1361
+ .type = .Normal,
1362
+ .pp = 10,
1363
+ .accuracy = 100,
1364
+ .target = .Self,
1365
+ },
1366
+ // Metronome
1367
+ .{
1368
+ .effect = .Metronome,
1369
+ .bp = 0,
1370
+ .type = .Normal,
1371
+ .pp = 10,
1372
+ .accuracy = 100,
1373
+ .target = .Self,
1374
+ },
1375
+ // MirrorMove
1376
+ .{
1377
+ .effect = .MirrorMove,
1378
+ .bp = 0,
1379
+ .type = .Flying,
1380
+ .pp = 20,
1381
+ .accuracy = 100,
1382
+ .target = .Self,
1383
+ },
1384
+ // SelfDestruct
1385
+ .{
1386
+ .effect = .Explode,
1387
+ .bp = 200,
1388
+ .type = .Normal,
1389
+ .pp = 5,
1390
+ .accuracy = 100,
1391
+ .target = .AllOthers,
1392
+ },
1393
+ // EggBomb
1394
+ .{
1395
+ .effect = .None,
1396
+ .bp = 100,
1397
+ .type = .Normal,
1398
+ .pp = 10,
1399
+ .accuracy = 75,
1400
+ .target = .Other,
1401
+ },
1402
+ // Lick
1403
+ .{
1404
+ .effect = .ParalyzeChance,
1405
+ .bp = 20,
1406
+ .type = .Ghost,
1407
+ .pp = 30,
1408
+ .accuracy = 100,
1409
+ .target = .Other,
1410
+ .chance = 3, // * 10 = 30
1411
+ },
1412
+ // Smog
1413
+ .{
1414
+ .effect = .PoisonChance,
1415
+ .bp = 20,
1416
+ .type = .Poison,
1417
+ .pp = 20,
1418
+ .accuracy = 70,
1419
+ .target = .Other,
1420
+ .chance = 4, // * 10 = 40
1421
+ },
1422
+ // Sludge
1423
+ .{
1424
+ .effect = .PoisonChance,
1425
+ .bp = 65,
1426
+ .type = .Poison,
1427
+ .pp = 20,
1428
+ .accuracy = 100,
1429
+ .target = .Other,
1430
+ .chance = 3, // * 10 = 30
1431
+ },
1432
+ // BoneClub
1433
+ .{
1434
+ .effect = .FlinchChance,
1435
+ .bp = 65,
1436
+ .type = .Ground,
1437
+ .pp = 20,
1438
+ .accuracy = 85,
1439
+ .target = .Other,
1440
+ .chance = 1, // * 10 = 10
1441
+ },
1442
+ // FireBlast
1443
+ .{
1444
+ .effect = .BurnChance,
1445
+ .bp = 120,
1446
+ .type = .Fire,
1447
+ .pp = 5,
1448
+ .accuracy = 85,
1449
+ .target = .Other,
1450
+ .chance = 1, // * 10 = 10
1451
+ },
1452
+ // Waterfall
1453
+ .{
1454
+ .effect = .None,
1455
+ .bp = 80,
1456
+ .type = .Water,
1457
+ .pp = 15,
1458
+ .accuracy = 100,
1459
+ .target = .Other,
1460
+ },
1461
+ // Clamp
1462
+ .{
1463
+ .effect = .Binding,
1464
+ .bp = 35,
1465
+ .type = .Water,
1466
+ .pp = 10,
1467
+ .accuracy = 75,
1468
+ .target = .Other,
1469
+ },
1470
+ // Swift
1471
+ .{
1472
+ .effect = .AlwaysHit,
1473
+ .bp = 60,
1474
+ .type = .Normal,
1475
+ .pp = 20,
1476
+ .accuracy = 100,
1477
+ .target = .Foes,
1478
+ },
1479
+ // SkullBash
1480
+ .{
1481
+ .effect = .SkullBash,
1482
+ .bp = 100,
1483
+ .type = .Normal,
1484
+ .pp = 15,
1485
+ .accuracy = 100,
1486
+ .target = .Other,
1487
+ },
1488
+ // SpikeCannon
1489
+ .{
1490
+ .effect = .MultiHit,
1491
+ .bp = 20,
1492
+ .type = .Normal,
1493
+ .pp = 15,
1494
+ .accuracy = 100,
1495
+ .target = .Other,
1496
+ },
1497
+ // Constrict
1498
+ .{
1499
+ .effect = .SpeedDownChance,
1500
+ .bp = 10,
1501
+ .type = .Normal,
1502
+ .pp = 35,
1503
+ .accuracy = 100,
1504
+ .target = .Other,
1505
+ .chance = 1, // * 10 = 10
1506
+ },
1507
+ // Amnesia
1508
+ .{
1509
+ .effect = .SpDefUp2,
1510
+ .bp = 0,
1511
+ .type = .Psychic,
1512
+ .pp = 20,
1513
+ .accuracy = 100,
1514
+ .target = .Self,
1515
+ },
1516
+ // Kinesis
1517
+ .{
1518
+ .effect = .AccuracyDown1,
1519
+ .bp = 0,
1520
+ .type = .Psychic,
1521
+ .pp = 15,
1522
+ .accuracy = 80,
1523
+ .target = .Other,
1524
+ },
1525
+ // SoftBoiled
1526
+ .{
1527
+ .effect = .Heal,
1528
+ .bp = 0,
1529
+ .type = .Normal,
1530
+ .pp = 10,
1531
+ .accuracy = 100,
1532
+ .target = .Self,
1533
+ },
1534
+ // HighJumpKick
1535
+ .{
1536
+ .effect = .JumpKick,
1537
+ .bp = 85,
1538
+ .type = .Fighting,
1539
+ .pp = 20,
1540
+ .accuracy = 90,
1541
+ .target = .Other,
1542
+ },
1543
+ // Glare
1544
+ .{
1545
+ .effect = .Paralyze,
1546
+ .bp = 0,
1547
+ .type = .Normal,
1548
+ .pp = 30,
1549
+ .accuracy = 75,
1550
+ .target = .Other,
1551
+ },
1552
+ // DreamEater
1553
+ .{
1554
+ .effect = .DreamEater,
1555
+ .bp = 100,
1556
+ .type = .Psychic,
1557
+ .pp = 15,
1558
+ .accuracy = 100,
1559
+ .target = .Other,
1560
+ },
1561
+ // PoisonGas
1562
+ .{
1563
+ .effect = .Poison,
1564
+ .bp = 0,
1565
+ .type = .Poison,
1566
+ .pp = 40,
1567
+ .accuracy = 55,
1568
+ .target = .Other,
1569
+ },
1570
+ // Barrage
1571
+ .{
1572
+ .effect = .MultiHit,
1573
+ .bp = 15,
1574
+ .type = .Normal,
1575
+ .pp = 20,
1576
+ .accuracy = 85,
1577
+ .target = .Other,
1578
+ },
1579
+ // LeechLife
1580
+ .{
1581
+ .effect = .DrainHP,
1582
+ .bp = 20,
1583
+ .type = .Bug,
1584
+ .pp = 15,
1585
+ .accuracy = 100,
1586
+ .target = .Other,
1587
+ },
1588
+ // LovelyKiss
1589
+ .{
1590
+ .effect = .Sleep,
1591
+ .bp = 0,
1592
+ .type = .Normal,
1593
+ .pp = 10,
1594
+ .accuracy = 75,
1595
+ .target = .Other,
1596
+ },
1597
+ // SkyAttack
1598
+ .{
1599
+ .effect = .SkyAttack,
1600
+ .bp = 140,
1601
+ .type = .Flying,
1602
+ .pp = 5,
1603
+ .accuracy = 90,
1604
+ .target = .Any,
1605
+ },
1606
+ // Transform
1607
+ .{
1608
+ .effect = .Transform,
1609
+ .bp = 0,
1610
+ .type = .Normal,
1611
+ .pp = 10,
1612
+ .accuracy = 100,
1613
+ .target = .Other,
1614
+ },
1615
+ // Bubble
1616
+ .{
1617
+ .effect = .SpeedDownChance,
1618
+ .bp = 20,
1619
+ .type = .Water,
1620
+ .pp = 30,
1621
+ .accuracy = 100,
1622
+ .target = .Foes,
1623
+ .chance = 1, // * 10 = 10
1624
+ },
1625
+ // DizzyPunch
1626
+ .{
1627
+ .effect = .ConfusionChance,
1628
+ .bp = 70,
1629
+ .type = .Normal,
1630
+ .pp = 10,
1631
+ .accuracy = 100,
1632
+ .target = .Other,
1633
+ .chance = 2, // * 10 = 20
1634
+ },
1635
+ // Spore
1636
+ .{
1637
+ .effect = .Sleep,
1638
+ .bp = 0,
1639
+ .type = .Grass,
1640
+ .pp = 15,
1641
+ .accuracy = 100,
1642
+ .target = .Other,
1643
+ },
1644
+ // Flash
1645
+ .{
1646
+ .effect = .AccuracyDown1,
1647
+ .bp = 0,
1648
+ .type = .Normal,
1649
+ .pp = 20,
1650
+ .accuracy = 70,
1651
+ .target = .Other,
1652
+ },
1653
+ // Psywave
1654
+ .{
1655
+ .effect = .Psywave,
1656
+ .bp = 0,
1657
+ .type = .Psychic,
1658
+ .pp = 15,
1659
+ .accuracy = 80,
1660
+ .target = .Other,
1661
+ },
1662
+ // Splash
1663
+ .{
1664
+ .effect = .Splash,
1665
+ .bp = 0,
1666
+ .type = .Normal,
1667
+ .pp = 40,
1668
+ .accuracy = 100,
1669
+ .target = .Self,
1670
+ },
1671
+ // AcidArmor
1672
+ .{
1673
+ .effect = .DefenseUp2,
1674
+ .bp = 0,
1675
+ .type = .Poison,
1676
+ .pp = 40,
1677
+ .accuracy = 100,
1678
+ .target = .Self,
1679
+ },
1680
+ // Crabhammer
1681
+ .{
1682
+ .effect = .HighCritical,
1683
+ .bp = 90,
1684
+ .type = .Water,
1685
+ .pp = 10,
1686
+ .accuracy = 85,
1687
+ .target = .Other,
1688
+ },
1689
+ // Explosion
1690
+ .{
1691
+ .effect = .Explode,
1692
+ .bp = 250,
1693
+ .type = .Normal,
1694
+ .pp = 5,
1695
+ .accuracy = 100,
1696
+ .target = .AllOthers,
1697
+ },
1698
+ // FurySwipes
1699
+ .{
1700
+ .effect = .MultiHit,
1701
+ .bp = 18,
1702
+ .type = .Normal,
1703
+ .pp = 15,
1704
+ .accuracy = 80,
1705
+ .target = .Other,
1706
+ },
1707
+ // Bonemerang
1708
+ .{
1709
+ .effect = .DoubleHit,
1710
+ .bp = 50,
1711
+ .type = .Ground,
1712
+ .pp = 10,
1713
+ .accuracy = 90,
1714
+ .target = .Other,
1715
+ },
1716
+ // Rest
1717
+ .{
1718
+ .effect = .Heal,
1719
+ .bp = 0,
1720
+ .type = .Psychic,
1721
+ .pp = 10,
1722
+ .accuracy = 100,
1723
+ .target = .Self,
1724
+ },
1725
+ // RockSlide
1726
+ .{
1727
+ .effect = .FlinchChance,
1728
+ .bp = 75,
1729
+ .type = .Rock,
1730
+ .pp = 10,
1731
+ .accuracy = 90,
1732
+ .target = .Foes,
1733
+ .chance = 3, // * 10 = 30
1734
+ },
1735
+ // HyperFang
1736
+ .{
1737
+ .effect = .FlinchChance,
1738
+ .bp = 80,
1739
+ .type = .Normal,
1740
+ .pp = 15,
1741
+ .accuracy = 90,
1742
+ .target = .Other,
1743
+ .chance = 1, // * 10 = 10
1744
+ },
1745
+ // Sharpen
1746
+ .{
1747
+ .effect = .AttackUp1,
1748
+ .bp = 0,
1749
+ .type = .Normal,
1750
+ .pp = 30,
1751
+ .accuracy = 100,
1752
+ .target = .Self,
1753
+ },
1754
+ // Conversion
1755
+ .{
1756
+ .effect = .Conversion,
1757
+ .bp = 0,
1758
+ .type = .Normal,
1759
+ .pp = 30,
1760
+ .accuracy = 100,
1761
+ .target = .Self,
1762
+ },
1763
+ // TriAttack
1764
+ .{
1765
+ .effect = .TriAttack,
1766
+ .bp = 80,
1767
+ .type = .Normal,
1768
+ .pp = 10,
1769
+ .accuracy = 100,
1770
+ .target = .Other,
1771
+ .chance = 2, // * 10 = 20
1772
+ },
1773
+ // SuperFang
1774
+ .{
1775
+ .effect = .SuperFang,
1776
+ .bp = 0,
1777
+ .type = .Normal,
1778
+ .pp = 10,
1779
+ .accuracy = 90,
1780
+ .target = .Other,
1781
+ },
1782
+ // Slash
1783
+ .{
1784
+ .effect = .HighCritical,
1785
+ .bp = 70,
1786
+ .type = .Normal,
1787
+ .pp = 20,
1788
+ .accuracy = 100,
1789
+ .target = .Other,
1790
+ },
1791
+ // Substitute
1792
+ .{
1793
+ .effect = .Substitute,
1794
+ .bp = 0,
1795
+ .type = .Normal,
1796
+ .pp = 10,
1797
+ .accuracy = 100,
1798
+ .target = .Self,
1799
+ },
1800
+ // Struggle
1801
+ .{
1802
+ .effect = .Recoil,
1803
+ .bp = 50,
1804
+ .type = .Normal,
1805
+ .pp = 1,
1806
+ .accuracy = 100,
1807
+ .target = .RandomFoe,
1808
+ },
1809
+ // Sketch
1810
+ .{
1811
+ .effect = .Sketch,
1812
+ .bp = 0,
1813
+ .type = .Normal,
1814
+ .pp = 1,
1815
+ .accuracy = 100,
1816
+ .target = .Other,
1817
+ },
1818
+ // TripleKick
1819
+ .{
1820
+ .effect = .TripleKick,
1821
+ .bp = 10,
1822
+ .type = .Fighting,
1823
+ .pp = 10,
1824
+ .accuracy = 90,
1825
+ .target = .Other,
1826
+ },
1827
+ // Thief
1828
+ .{
1829
+ .effect = .Thief,
1830
+ .bp = 40,
1831
+ .type = .Dark,
1832
+ .pp = 10,
1833
+ .accuracy = 100,
1834
+ .target = .Other,
1835
+ .chance = 10, // * 10 = 100
1836
+ },
1837
+ // SpiderWeb
1838
+ .{
1839
+ .effect = .MeanLook,
1840
+ .bp = 0,
1841
+ .type = .Bug,
1842
+ .pp = 10,
1843
+ .accuracy = 100,
1844
+ .target = .Other,
1845
+ },
1846
+ // MindReader
1847
+ .{
1848
+ .effect = .LockOn,
1849
+ .bp = 0,
1850
+ .type = .Normal,
1851
+ .pp = 5,
1852
+ .accuracy = 100,
1853
+ .target = .Other,
1854
+ },
1855
+ // Nightmare
1856
+ .{
1857
+ .effect = .Nightmare,
1858
+ .bp = 0,
1859
+ .type = .Ghost,
1860
+ .pp = 15,
1861
+ .accuracy = 100,
1862
+ .target = .Other,
1863
+ },
1864
+ // FlameWheel
1865
+ .{
1866
+ .effect = .FlameWheel,
1867
+ .bp = 60,
1868
+ .type = .Fire,
1869
+ .pp = 25,
1870
+ .accuracy = 100,
1871
+ .target = .Other,
1872
+ .chance = 1, // * 10 = 10
1873
+ },
1874
+ // Snore
1875
+ .{
1876
+ .effect = .Snore,
1877
+ .bp = 40,
1878
+ .type = .Normal,
1879
+ .pp = 15,
1880
+ .accuracy = 100,
1881
+ .target = .Other,
1882
+ .chance = 3, // * 10 = 30
1883
+ },
1884
+ // Curse
1885
+ .{
1886
+ .effect = .Curse,
1887
+ .bp = 0,
1888
+ .type = .@"???",
1889
+ .pp = 10,
1890
+ .accuracy = 100,
1891
+ .target = .Other,
1892
+ },
1893
+ // Flail
1894
+ .{
1895
+ .effect = .Reversal,
1896
+ .bp = 0,
1897
+ .type = .Normal,
1898
+ .pp = 15,
1899
+ .accuracy = 100,
1900
+ .target = .Other,
1901
+ },
1902
+ // Conversion2
1903
+ .{
1904
+ .effect = .Conversion2,
1905
+ .bp = 0,
1906
+ .type = .Normal,
1907
+ .pp = 30,
1908
+ .accuracy = 100,
1909
+ .target = .Other,
1910
+ },
1911
+ // Aeroblast
1912
+ .{
1913
+ .effect = .HighCritical,
1914
+ .bp = 100,
1915
+ .type = .Flying,
1916
+ .pp = 5,
1917
+ .accuracy = 95,
1918
+ .target = .Any,
1919
+ },
1920
+ // CottonSpore
1921
+ .{
1922
+ .effect = .SpeedDown2,
1923
+ .bp = 0,
1924
+ .type = .Grass,
1925
+ .pp = 40,
1926
+ .accuracy = 85,
1927
+ .target = .Other,
1928
+ },
1929
+ // Reversal
1930
+ .{
1931
+ .effect = .Reversal,
1932
+ .bp = 0,
1933
+ .type = .Fighting,
1934
+ .pp = 15,
1935
+ .accuracy = 100,
1936
+ .target = .Other,
1937
+ },
1938
+ // Spite
1939
+ .{
1940
+ .effect = .Spite,
1941
+ .bp = 0,
1942
+ .type = .Ghost,
1943
+ .pp = 10,
1944
+ .accuracy = 100,
1945
+ .target = .Other,
1946
+ },
1947
+ // PowderSnow
1948
+ .{
1949
+ .effect = .FreezeChance,
1950
+ .bp = 40,
1951
+ .type = .Ice,
1952
+ .pp = 25,
1953
+ .accuracy = 100,
1954
+ .target = .Foes,
1955
+ .chance = 1, // * 10 = 10
1956
+ },
1957
+ // Protect
1958
+ .{
1959
+ .effect = .Protect,
1960
+ .bp = 0,
1961
+ .type = .Normal,
1962
+ .pp = 10,
1963
+ .accuracy = 100,
1964
+ .target = .Self,
1965
+ },
1966
+ // MachPunch
1967
+ .{
1968
+ .effect = .Priority,
1969
+ .bp = 40,
1970
+ .type = .Fighting,
1971
+ .pp = 30,
1972
+ .accuracy = 100,
1973
+ .target = .Other,
1974
+ },
1975
+ // ScaryFace
1976
+ .{
1977
+ .effect = .SpeedDown2,
1978
+ .bp = 0,
1979
+ .type = .Normal,
1980
+ .pp = 10,
1981
+ .accuracy = 90,
1982
+ .target = .Other,
1983
+ },
1984
+ // FeintAttack
1985
+ .{
1986
+ .effect = .AlwaysHit,
1987
+ .bp = 60,
1988
+ .type = .Dark,
1989
+ .pp = 20,
1990
+ .accuracy = 100,
1991
+ .target = .Other,
1992
+ },
1993
+ // SweetKiss
1994
+ .{
1995
+ .effect = .Confusion,
1996
+ .bp = 0,
1997
+ .type = .Normal,
1998
+ .pp = 10,
1999
+ .accuracy = 75,
2000
+ .target = .Other,
2001
+ },
2002
+ // BellyDrum
2003
+ .{
2004
+ .effect = .BellyDrum,
2005
+ .bp = 0,
2006
+ .type = .Normal,
2007
+ .pp = 10,
2008
+ .accuracy = 100,
2009
+ .target = .Self,
2010
+ },
2011
+ // SludgeBomb
2012
+ .{
2013
+ .effect = .PoisonChance,
2014
+ .bp = 90,
2015
+ .type = .Poison,
2016
+ .pp = 10,
2017
+ .accuracy = 100,
2018
+ .target = .Other,
2019
+ .chance = 3, // * 10 = 30
2020
+ },
2021
+ // MudSlap
2022
+ .{
2023
+ .effect = .AccuracyDownChance,
2024
+ .bp = 20,
2025
+ .type = .Ground,
2026
+ .pp = 10,
2027
+ .accuracy = 100,
2028
+ .target = .Other,
2029
+ .chance = 10, // * 10 = 100
2030
+ },
2031
+ // Octazooka
2032
+ .{
2033
+ .effect = .AccuracyDownChance,
2034
+ .bp = 65,
2035
+ .type = .Water,
2036
+ .pp = 10,
2037
+ .accuracy = 85,
2038
+ .target = .Other,
2039
+ .chance = 5, // * 10 = 50
2040
+ },
2041
+ // Spikes
2042
+ .{
2043
+ .effect = .Spikes,
2044
+ .bp = 0,
2045
+ .type = .Ground,
2046
+ .pp = 20,
2047
+ .accuracy = 100,
2048
+ .target = .FoeSide,
2049
+ },
2050
+ // ZapCannon
2051
+ .{
2052
+ .effect = .ParalyzeChance,
2053
+ .bp = 100,
2054
+ .type = .Electric,
2055
+ .pp = 5,
2056
+ .accuracy = 50,
2057
+ .target = .Other,
2058
+ .chance = 10, // * 10 = 100
2059
+ },
2060
+ // Foresight
2061
+ .{
2062
+ .effect = .Foresight,
2063
+ .bp = 0,
2064
+ .type = .Normal,
2065
+ .pp = 40,
2066
+ .accuracy = 100,
2067
+ .target = .Other,
2068
+ },
2069
+ // DestinyBond
2070
+ .{
2071
+ .effect = .DestinyBond,
2072
+ .bp = 0,
2073
+ .type = .Ghost,
2074
+ .pp = 5,
2075
+ .accuracy = 100,
2076
+ .target = .Self,
2077
+ },
2078
+ // PerishSong
2079
+ .{
2080
+ .effect = .PerishSong,
2081
+ .bp = 0,
2082
+ .type = .Normal,
2083
+ .pp = 5,
2084
+ .accuracy = 100,
2085
+ .target = .All,
2086
+ },
2087
+ // IcyWind
2088
+ .{
2089
+ .effect = .SpeedDownChance,
2090
+ .bp = 55,
2091
+ .type = .Ice,
2092
+ .pp = 15,
2093
+ .accuracy = 95,
2094
+ .target = .Foes,
2095
+ .chance = 10, // * 10 = 100
2096
+ },
2097
+ // Detect
2098
+ .{
2099
+ .effect = .Protect,
2100
+ .bp = 0,
2101
+ .type = .Fighting,
2102
+ .pp = 5,
2103
+ .accuracy = 100,
2104
+ .target = .Self,
2105
+ },
2106
+ // BoneRush
2107
+ .{
2108
+ .effect = .MultiHit,
2109
+ .bp = 25,
2110
+ .type = .Ground,
2111
+ .pp = 10,
2112
+ .accuracy = 80,
2113
+ .target = .Other,
2114
+ },
2115
+ // LockOn
2116
+ .{
2117
+ .effect = .LockOn,
2118
+ .bp = 0,
2119
+ .type = .Normal,
2120
+ .pp = 5,
2121
+ .accuracy = 100,
2122
+ .target = .Other,
2123
+ },
2124
+ // Outrage
2125
+ .{
2126
+ .effect = .Thrashing,
2127
+ .bp = 90,
2128
+ .type = .Dragon,
2129
+ .pp = 15,
2130
+ .accuracy = 100,
2131
+ .target = .RandomFoe,
2132
+ },
2133
+ // Sandstorm
2134
+ .{
2135
+ .effect = .Sandstorm,
2136
+ .bp = 0,
2137
+ .type = .Rock,
2138
+ .pp = 10,
2139
+ .accuracy = 100,
2140
+ .target = .All,
2141
+ },
2142
+ // GigaDrain
2143
+ .{
2144
+ .effect = .DrainHP,
2145
+ .bp = 60,
2146
+ .type = .Grass,
2147
+ .pp = 5,
2148
+ .accuracy = 100,
2149
+ .target = .Other,
2150
+ },
2151
+ // Endure
2152
+ .{
2153
+ .effect = .Endure,
2154
+ .bp = 0,
2155
+ .type = .Normal,
2156
+ .pp = 10,
2157
+ .accuracy = 100,
2158
+ .target = .Self,
2159
+ },
2160
+ // Charm
2161
+ .{
2162
+ .effect = .AttackDown2,
2163
+ .bp = 0,
2164
+ .type = .Normal,
2165
+ .pp = 20,
2166
+ .accuracy = 100,
2167
+ .target = .Other,
2168
+ },
2169
+ // Rollout
2170
+ .{
2171
+ .effect = .Rollout,
2172
+ .bp = 30,
2173
+ .type = .Rock,
2174
+ .pp = 20,
2175
+ .accuracy = 90,
2176
+ .target = .Other,
2177
+ },
2178
+ // FalseSwipe
2179
+ .{
2180
+ .effect = .FalseSwipe,
2181
+ .bp = 40,
2182
+ .type = .Normal,
2183
+ .pp = 40,
2184
+ .accuracy = 100,
2185
+ .target = .Other,
2186
+ },
2187
+ // Swagger
2188
+ .{
2189
+ .effect = .Swagger,
2190
+ .bp = 0,
2191
+ .type = .Normal,
2192
+ .pp = 15,
2193
+ .accuracy = 90,
2194
+ .target = .Other,
2195
+ },
2196
+ // MilkDrink
2197
+ .{
2198
+ .effect = .Heal,
2199
+ .bp = 0,
2200
+ .type = .Normal,
2201
+ .pp = 10,
2202
+ .accuracy = 100,
2203
+ .target = .Self,
2204
+ },
2205
+ // Spark
2206
+ .{
2207
+ .effect = .ParalyzeChance,
2208
+ .bp = 65,
2209
+ .type = .Electric,
2210
+ .pp = 20,
2211
+ .accuracy = 100,
2212
+ .target = .Other,
2213
+ .chance = 3, // * 10 = 30
2214
+ },
2215
+ // FuryCutter
2216
+ .{
2217
+ .effect = .FuryCutter,
2218
+ .bp = 10,
2219
+ .type = .Bug,
2220
+ .pp = 20,
2221
+ .accuracy = 95,
2222
+ .target = .Other,
2223
+ },
2224
+ // SteelWing
2225
+ .{
2226
+ .effect = .DefenseUpChance,
2227
+ .bp = 70,
2228
+ .type = .Steel,
2229
+ .pp = 25,
2230
+ .accuracy = 90,
2231
+ .target = .Other,
2232
+ .chance = 1, // * 10 = 10
2233
+ },
2234
+ // MeanLook
2235
+ .{
2236
+ .effect = .MeanLook,
2237
+ .bp = 0,
2238
+ .type = .Normal,
2239
+ .pp = 5,
2240
+ .accuracy = 100,
2241
+ .target = .Other,
2242
+ },
2243
+ // Attract
2244
+ .{
2245
+ .effect = .Attract,
2246
+ .bp = 0,
2247
+ .type = .Normal,
2248
+ .pp = 15,
2249
+ .accuracy = 100,
2250
+ .target = .Other,
2251
+ },
2252
+ // SleepTalk
2253
+ .{
2254
+ .effect = .SleepTalk,
2255
+ .bp = 0,
2256
+ .type = .Normal,
2257
+ .pp = 10,
2258
+ .accuracy = 100,
2259
+ .target = .Self,
2260
+ },
2261
+ // HealBell
2262
+ .{
2263
+ .effect = .HealBell,
2264
+ .bp = 0,
2265
+ .type = .Normal,
2266
+ .pp = 5,
2267
+ .accuracy = 100,
2268
+ .target = .Self,
2269
+ },
2270
+ // Return
2271
+ .{
2272
+ .effect = .Return,
2273
+ .bp = 0,
2274
+ .type = .Normal,
2275
+ .pp = 20,
2276
+ .accuracy = 100,
2277
+ .target = .Other,
2278
+ },
2279
+ // Present
2280
+ .{
2281
+ .effect = .Present,
2282
+ .bp = 0,
2283
+ .type = .Normal,
2284
+ .pp = 15,
2285
+ .accuracy = 90,
2286
+ .target = .Other,
2287
+ },
2288
+ // Frustration
2289
+ .{
2290
+ .effect = .Frustration,
2291
+ .bp = 0,
2292
+ .type = .Normal,
2293
+ .pp = 20,
2294
+ .accuracy = 100,
2295
+ .target = .Other,
2296
+ },
2297
+ // Safeguard
2298
+ .{
2299
+ .effect = .Safeguard,
2300
+ .bp = 0,
2301
+ .type = .Normal,
2302
+ .pp = 25,
2303
+ .accuracy = 100,
2304
+ .target = .AllySide,
2305
+ },
2306
+ // PainSplit
2307
+ .{
2308
+ .effect = .PainSplit,
2309
+ .bp = 0,
2310
+ .type = .Normal,
2311
+ .pp = 20,
2312
+ .accuracy = 100,
2313
+ .target = .Other,
2314
+ },
2315
+ // SacredFire
2316
+ .{
2317
+ .effect = .SacredFire,
2318
+ .bp = 100,
2319
+ .type = .Fire,
2320
+ .pp = 5,
2321
+ .accuracy = 95,
2322
+ .target = .Other,
2323
+ .chance = 5, // * 10 = 50
2324
+ },
2325
+ // Magnitude
2326
+ .{
2327
+ .effect = .Magnitude,
2328
+ .bp = 0,
2329
+ .type = .Ground,
2330
+ .pp = 30,
2331
+ .accuracy = 100,
2332
+ .target = .AllOthers,
2333
+ },
2334
+ // DynamicPunch
2335
+ .{
2336
+ .effect = .ConfusionChance,
2337
+ .bp = 100,
2338
+ .type = .Fighting,
2339
+ .pp = 5,
2340
+ .accuracy = 50,
2341
+ .target = .Other,
2342
+ .chance = 10, // * 10 = 100
2343
+ },
2344
+ // Megahorn
2345
+ .{
2346
+ .effect = .None,
2347
+ .bp = 120,
2348
+ .type = .Bug,
2349
+ .pp = 10,
2350
+ .accuracy = 85,
2351
+ .target = .Other,
2352
+ },
2353
+ // DragonBreath
2354
+ .{
2355
+ .effect = .ParalyzeChance,
2356
+ .bp = 60,
2357
+ .type = .Dragon,
2358
+ .pp = 20,
2359
+ .accuracy = 100,
2360
+ .target = .Other,
2361
+ .chance = 3, // * 10 = 30
2362
+ },
2363
+ // BatonPass
2364
+ .{
2365
+ .effect = .BatonPass,
2366
+ .bp = 0,
2367
+ .type = .Normal,
2368
+ .pp = 40,
2369
+ .accuracy = 100,
2370
+ .target = .Self,
2371
+ },
2372
+ // Encore
2373
+ .{
2374
+ .effect = .Encore,
2375
+ .bp = 0,
2376
+ .type = .Normal,
2377
+ .pp = 5,
2378
+ .accuracy = 100,
2379
+ .target = .Other,
2380
+ },
2381
+ // Pursuit
2382
+ .{
2383
+ .effect = .Pursuit,
2384
+ .bp = 40,
2385
+ .type = .Dark,
2386
+ .pp = 20,
2387
+ .accuracy = 100,
2388
+ .target = .Other,
2389
+ },
2390
+ // RapidSpin
2391
+ .{
2392
+ .effect = .RapidSpin,
2393
+ .bp = 20,
2394
+ .type = .Normal,
2395
+ .pp = 40,
2396
+ .accuracy = 100,
2397
+ .target = .Other,
2398
+ },
2399
+ // SweetScent
2400
+ .{
2401
+ .effect = .EvasionDown1,
2402
+ .bp = 0,
2403
+ .type = .Normal,
2404
+ .pp = 20,
2405
+ .accuracy = 100,
2406
+ .target = .Foes,
2407
+ },
2408
+ // IronTail
2409
+ .{
2410
+ .effect = .DefenseDownChance,
2411
+ .bp = 100,
2412
+ .type = .Steel,
2413
+ .pp = 15,
2414
+ .accuracy = 75,
2415
+ .target = .Other,
2416
+ .chance = 3, // * 10 = 30
2417
+ },
2418
+ // MetalClaw
2419
+ .{
2420
+ .effect = .AttackUpChance,
2421
+ .bp = 50,
2422
+ .type = .Steel,
2423
+ .pp = 35,
2424
+ .accuracy = 95,
2425
+ .target = .Other,
2426
+ .chance = 1, // * 10 = 10
2427
+ },
2428
+ // VitalThrow
2429
+ .{
2430
+ .effect = .AlwaysHit,
2431
+ .bp = 70,
2432
+ .type = .Fighting,
2433
+ .pp = 10,
2434
+ .accuracy = 100,
2435
+ .target = .Other,
2436
+ },
2437
+ // MorningSun
2438
+ .{
2439
+ .effect = .MorningSun,
2440
+ .bp = 0,
2441
+ .type = .Normal,
2442
+ .pp = 5,
2443
+ .accuracy = 100,
2444
+ .target = .Self,
2445
+ },
2446
+ // Synthesis
2447
+ .{
2448
+ .effect = .Synthesis,
2449
+ .bp = 0,
2450
+ .type = .Grass,
2451
+ .pp = 5,
2452
+ .accuracy = 100,
2453
+ .target = .Self,
2454
+ },
2455
+ // Moonlight
2456
+ .{
2457
+ .effect = .Moonlight,
2458
+ .bp = 0,
2459
+ .type = .Normal,
2460
+ .pp = 5,
2461
+ .accuracy = 100,
2462
+ .target = .Self,
2463
+ },
2464
+ // HiddenPower
2465
+ .{
2466
+ .effect = .HiddenPower,
2467
+ .bp = 0,
2468
+ .type = .Normal,
2469
+ .pp = 15,
2470
+ .accuracy = 100,
2471
+ .target = .Other,
2472
+ },
2473
+ // CrossChop
2474
+ .{
2475
+ .effect = .HighCritical,
2476
+ .bp = 100,
2477
+ .type = .Fighting,
2478
+ .pp = 5,
2479
+ .accuracy = 80,
2480
+ .target = .Other,
2481
+ },
2482
+ // Twister
2483
+ .{
2484
+ .effect = .Twister,
2485
+ .bp = 40,
2486
+ .type = .Dragon,
2487
+ .pp = 20,
2488
+ .accuracy = 100,
2489
+ .target = .Foes,
2490
+ .chance = 2, // * 10 = 20
2491
+ },
2492
+ // RainDance
2493
+ .{
2494
+ .effect = .RainDance,
2495
+ .bp = 0,
2496
+ .type = .Water,
2497
+ .pp = 5,
2498
+ .accuracy = 100,
2499
+ .target = .All,
2500
+ },
2501
+ // SunnyDay
2502
+ .{
2503
+ .effect = .SunnyDay,
2504
+ .bp = 0,
2505
+ .type = .Fire,
2506
+ .pp = 5,
2507
+ .accuracy = 100,
2508
+ .target = .All,
2509
+ },
2510
+ // Crunch
2511
+ .{
2512
+ .effect = .SpDefDownChance,
2513
+ .bp = 80,
2514
+ .type = .Dark,
2515
+ .pp = 15,
2516
+ .accuracy = 100,
2517
+ .target = .Other,
2518
+ .chance = 2, // * 10 = 20
2519
+ },
2520
+ // MirrorCoat
2521
+ .{
2522
+ .effect = .MirrorCoat,
2523
+ .bp = 0,
2524
+ .type = .Psychic,
2525
+ .pp = 20,
2526
+ .accuracy = 100,
2527
+ .target = .Depends,
2528
+ },
2529
+ // PsychUp
2530
+ .{
2531
+ .effect = .PsychUp,
2532
+ .bp = 0,
2533
+ .type = .Normal,
2534
+ .pp = 10,
2535
+ .accuracy = 100,
2536
+ .target = .Other,
2537
+ },
2538
+ // ExtremeSpeed
2539
+ .{
2540
+ .effect = .Priority,
2541
+ .bp = 80,
2542
+ .type = .Normal,
2543
+ .pp = 5,
2544
+ .accuracy = 100,
2545
+ .target = .Other,
2546
+ },
2547
+ // AncientPower
2548
+ .{
2549
+ .effect = .AllStatUpChance,
2550
+ .bp = 60,
2551
+ .type = .Rock,
2552
+ .pp = 5,
2553
+ .accuracy = 100,
2554
+ .target = .Other,
2555
+ .chance = 1, // * 10 = 10
2556
+ },
2557
+ // ShadowBall
2558
+ .{
2559
+ .effect = .SpDefDownChance,
2560
+ .bp = 80,
2561
+ .type = .Ghost,
2562
+ .pp = 15,
2563
+ .accuracy = 100,
2564
+ .target = .Other,
2565
+ .chance = 2, // * 10 = 20
2566
+ },
2567
+ // FutureSight
2568
+ .{
2569
+ .effect = .FutureSight,
2570
+ .bp = 80,
2571
+ .type = .Psychic,
2572
+ .pp = 15,
2573
+ .accuracy = 90,
2574
+ .target = .Other,
2575
+ },
2576
+ // RockSmash
2577
+ .{
2578
+ .effect = .DefenseDownChance,
2579
+ .bp = 20,
2580
+ .type = .Fighting,
2581
+ .pp = 15,
2582
+ .accuracy = 100,
2583
+ .target = .Other,
2584
+ .chance = 5, // * 10 = 50
2585
+ },
2586
+ // Whirlpool
2587
+ .{
2588
+ .effect = .Binding,
2589
+ .bp = 15,
2590
+ .type = .Water,
2591
+ .pp = 15,
2592
+ .accuracy = 70,
2593
+ .target = .Other,
2594
+ },
2595
+ // BeatUp
2596
+ .{
2597
+ .effect = .BeatUp,
2598
+ .bp = 10,
2599
+ .type = .Dark,
2600
+ .pp = 10,
2601
+ .accuracy = 100,
2602
+ .target = .Other,
2603
+ },
2604
+ };
2605
+
2606
+ /// Representation of a move's effect.
2607
+ pub const Effect = enum(u8) {
2608
+ None,
2609
+ AccuracyDown1,
2610
+ AccuracyDownChance,
2611
+ AllStatUpChance,
2612
+ AlwaysHit,
2613
+ AttackDown1,
2614
+ AttackDown2,
2615
+ AttackDownChance,
2616
+ AttackUp1,
2617
+ AttackUp2,
2618
+ AttackUpChance,
2619
+ Attract,
2620
+ BatonPass,
2621
+ BeatUp,
2622
+ BellyDrum,
2623
+ Bide,
2624
+ Binding,
2625
+ BurnChance,
2626
+ Confusion,
2627
+ ConfusionChance,
2628
+ Conversion,
2629
+ Conversion2,
2630
+ Counter,
2631
+ Curse,
2632
+ DefenseCurl,
2633
+ DefenseDown1,
2634
+ DefenseDown2,
2635
+ DefenseDownChance,
2636
+ DefenseUp1,
2637
+ DefenseUp2,
2638
+ DefenseUpChance,
2639
+ DestinyBond,
2640
+ Disable,
2641
+ DoubleHit,
2642
+ DrainHP,
2643
+ DreamEater,
2644
+ Earthquake,
2645
+ Encore,
2646
+ Endure,
2647
+ EvasionDown1,
2648
+ EvasionUp1,
2649
+ Explode,
2650
+ FalseSwipe,
2651
+ FixedDamage,
2652
+ FlameWheel,
2653
+ FlinchChance,
2654
+ Fly,
2655
+ FocusEnergy,
2656
+ ForceSwitch,
2657
+ Foresight,
2658
+ FreezeChance,
2659
+ Frustration,
2660
+ FuryCutter,
2661
+ FutureSight,
2662
+ Gust,
2663
+ Haze,
2664
+ Heal,
2665
+ HealBell,
2666
+ HiddenPower,
2667
+ HighCritical,
2668
+ HyperBeam,
2669
+ JumpKick,
2670
+ LeechSeed,
2671
+ LevelDamage,
2672
+ LightScreen,
2673
+ LockOn,
2674
+ Magnitude,
2675
+ MeanLook,
2676
+ Metronome,
2677
+ Mimic,
2678
+ MirrorCoat,
2679
+ MirrorMove,
2680
+ Mist,
2681
+ Moonlight,
2682
+ MorningSun,
2683
+ MultiHit,
2684
+ Nightmare,
2685
+ OHKO,
2686
+ PainSplit,
2687
+ Paralyze,
2688
+ ParalyzeChance,
2689
+ PayDay,
2690
+ PerishSong,
2691
+ Poison,
2692
+ PoisonChance,
2693
+ Present,
2694
+ Priority,
2695
+ Protect,
2696
+ PsychUp,
2697
+ Psywave,
2698
+ Pursuit,
2699
+ Rage,
2700
+ RainDance,
2701
+ RapidSpin,
2702
+ RazorWind,
2703
+ Recoil,
2704
+ Reflect,
2705
+ Return,
2706
+ Reversal,
2707
+ Rollout,
2708
+ SacredFire,
2709
+ Safeguard,
2710
+ Sandstorm,
2711
+ Sketch,
2712
+ SkullBash,
2713
+ SkyAttack,
2714
+ Sleep,
2715
+ SleepTalk,
2716
+ Snore,
2717
+ Solarbeam,
2718
+ SpAtkUp1,
2719
+ SpDefDownChance,
2720
+ SpDefUp2,
2721
+ SpeedDown1,
2722
+ SpeedDown2,
2723
+ SpeedDownChance,
2724
+ SpeedUp2,
2725
+ Spikes,
2726
+ Spite,
2727
+ Splash,
2728
+ Stomp,
2729
+ Substitute,
2730
+ SunnyDay,
2731
+ SuperFang,
2732
+ Swagger,
2733
+ Synthesis,
2734
+ Teleport,
2735
+ Thief,
2736
+ Thrashing,
2737
+ Thunder,
2738
+ Toxic,
2739
+ Transform,
2740
+ TriAttack,
2741
+ TripleKick,
2742
+ Twineedle,
2743
+ Twister,
2744
+
2745
+ comptime {
2746
+ assert(@sizeOf(Effect) == 1);
2747
+ }
2748
+ };
2749
+
2750
+ const Target = enum(u8) {
2751
+ // none
2752
+ All,
2753
+ AllySide,
2754
+ Field,
2755
+ Self,
2756
+ // resolve
2757
+ AllOthers,
2758
+ Depends,
2759
+ Other,
2760
+ Any,
2761
+ Allies,
2762
+ Ally,
2763
+ AllyOrSelf,
2764
+ Foe,
2765
+ // resolve + run
2766
+ Foes,
2767
+ FoeSide,
2768
+ RandomFoe,
2769
+ };
2770
+
2771
+ comptime {
2772
+ assert(@sizeOf(Move) == 1);
2773
+ assert(@sizeOf(@TypeOf(DATA)) == 1757);
2774
+ }
2775
+
2776
+ /// The number of Pokémon moves in this generation.
2777
+ pub const size = 251;
2778
+
2779
+ /// Returns the `Data` corresponding to the move.
2780
+ pub inline fn get(id: Move) Data {
2781
+ assert(id != .None);
2782
+ return DATA[@enumToInt(id) - 1];
2783
+ }
2784
+ };