@pkmn/engine 0.1.0-dev.bcb16a6c → 0.1.0-dev.be951af1

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.
@@ -0,0 +1,1239 @@
1
+ //! Code generated by `tools/generate` - manual edits will be overwritten
2
+
3
+ const common = @import("../common/data.zig");
4
+
5
+ const data = @import("data.zig");
6
+ const mechanics = @import("mechanics.zig");
7
+
8
+ const Player = common.Player;
9
+ const Result = common.Result;
10
+
11
+ const Move = data.Move;
12
+
13
+ const Effects = mechanics.Effects;
14
+ const State = mechanics.State;
15
+
16
+ const checkHit = mechanics.checkHit;
17
+ const checkCriticalHit = mechanics.checkCriticalHit;
18
+ const calcDamage = mechanics.calcDamage;
19
+ const adjustDamage = mechanics.adjustDamage;
20
+ const randomizeDamage = mechanics.randomizeDamage;
21
+ const applyDamage = mechanics.applyDamage;
22
+ const buildRage = mechanics.buildRage;
23
+ const rageDamage = mechanics.rageDamage;
24
+ const kingsRock = mechanics.kingsRock;
25
+ const destinyBond = mechanics.destinyBond;
26
+
27
+ pub fn doMove(battle: anytype, player: Player, state: *State, options: anytype) !?Result {
28
+ _ = .{ battle, player, options };
29
+
30
+ switch (Move.get(state.move).effect) {
31
+ .AlwaysHit, .HighCritical, .Priority, .JumpKick, .None => {
32
+ // TODO usedmovetext
33
+ // TODO doturn
34
+ // TODO critical
35
+ // TODO damagestats
36
+ // TODO damagecalc
37
+ // TODO stab
38
+ // TODO damagevariation
39
+ // TODO checkhit
40
+ // TODO failuretext
41
+ // TODO applydamage
42
+ // TODO criticaltext
43
+ // TODO supereffectivetext
44
+ // TODO checkfaint
45
+ // TODO buildopponentrage
46
+ // TODO kingsrock
47
+ },
48
+ .DoubleHit, .MultiHit => {
49
+ // TODO usedmovetext
50
+ // TODO doturn
51
+ // TODO startloop
52
+ // TODO checkhit
53
+ // TODO critical
54
+ // TODO damagestats
55
+ // TODO damagecalc
56
+ // TODO stab
57
+ // TODO damagevariation
58
+ // TODO clearmissdamage
59
+ // TODO failuretext
60
+ // TODO applydamage
61
+ // TODO criticaltext
62
+ // TODO cleartext
63
+ // TODO supereffectivelooptext
64
+ // TODO checkfaint
65
+ // TODO buildopponentrage
66
+ // TODO endloop
67
+ // TODO kingsrock
68
+ },
69
+ .PayDay => {
70
+ // TODO usedmovetext
71
+ // TODO doturn
72
+ // TODO critical
73
+ // TODO damagestats
74
+ // TODO damagecalc
75
+ // TODO stab
76
+ // TODO damagevariation
77
+ // TODO checkhit
78
+ // TODO failuretext
79
+ // TODO applydamage
80
+ // TODO criticaltext
81
+ // TODO supereffectivetext
82
+ // TODO payday
83
+ // TODO checkfaint
84
+ // TODO buildopponentrage
85
+ // TODO kingsrock
86
+ },
87
+ .BurnChance => {
88
+ // TODO usedmovetext
89
+ // TODO doturn
90
+ // TODO critical
91
+ // TODO damagestats
92
+ // TODO damagecalc
93
+ // TODO stab
94
+ // TODO damagevariation
95
+ // TODO checkhit
96
+ // TODO effectchance
97
+ // TODO failuretext
98
+ // TODO applydamage
99
+ // TODO criticaltext
100
+ // TODO supereffectivetext
101
+ // TODO checkfaint
102
+ // TODO buildopponentrage
103
+ // TODO burntarget
104
+ },
105
+ .FreezeChance => {
106
+ // TODO usedmovetext
107
+ // TODO doturn
108
+ // TODO critical
109
+ // TODO damagestats
110
+ // TODO damagecalc
111
+ // TODO stab
112
+ // TODO damagevariation
113
+ // TODO checkhit
114
+ // TODO effectchance
115
+ // TODO failuretext
116
+ // TODO applydamage
117
+ // TODO criticaltext
118
+ // TODO supereffectivetext
119
+ // TODO checkfaint
120
+ // TODO buildopponentrage
121
+ // TODO freezetarget
122
+ },
123
+ .ParalyzeChance => {
124
+ // TODO usedmovetext
125
+ // TODO doturn
126
+ // TODO critical
127
+ // TODO damagestats
128
+ // TODO damagecalc
129
+ // TODO stab
130
+ // TODO damagevariation
131
+ // TODO checkhit
132
+ // TODO effectchance
133
+ // TODO failuretext
134
+ // TODO applydamage
135
+ // TODO criticaltext
136
+ // TODO supereffectivetext
137
+ // TODO checkfaint
138
+ // TODO buildopponentrage
139
+ // TODO paralyzetarget
140
+ },
141
+ .OHKO => {
142
+ // TODO usedmovetext
143
+ // TODO doturn
144
+ // TODO stab
145
+ // TODO ohko
146
+ // TODO failuretext
147
+ // TODO applydamage
148
+ // TODO criticaltext
149
+ // TODO supereffectivetext
150
+ // TODO checkfaint
151
+ // TODO buildopponentrage
152
+ },
153
+ .RazorWind => {
154
+ // TODO checkcharge
155
+ // TODO doturn
156
+ // TODO charge
157
+ // TODO usedmovetext
158
+ // TODO critical
159
+ // TODO damagestats
160
+ // TODO damagecalc
161
+ // TODO stab
162
+ // TODO damagevariation
163
+ // TODO checkhit
164
+ // TODO failuretext
165
+ // TODO applydamage
166
+ // TODO criticaltext
167
+ // TODO supereffectivetext
168
+ // TODO checkfaint
169
+ // TODO buildopponentrage
170
+ // TODO kingsrock
171
+ },
172
+ .Gust => {
173
+ // TODO usedmovetext
174
+ // TODO doturn
175
+ // TODO critical
176
+ // TODO damagestats
177
+ // TODO damagecalc
178
+ // TODO stab
179
+ // TODO damagevariation
180
+ // TODO doubleflyingdamage
181
+ // TODO checkhit
182
+ // TODO failuretext
183
+ // TODO applydamage
184
+ // TODO criticaltext
185
+ // TODO supereffectivetext
186
+ // TODO checkfaint
187
+ // TODO buildopponentrage
188
+ },
189
+ .ForceSwitch => {
190
+ // TODO usedmovetext
191
+ // TODO doturn
192
+ // TODO checkhit
193
+ // TODO forceswitch
194
+ },
195
+ .FlyDig => {
196
+ // TODO checkcharge
197
+ // TODO doturn
198
+ // TODO charge
199
+ // TODO usedmovetext
200
+ // TODO critical
201
+ // TODO damagestats
202
+ // TODO damagecalc
203
+ // TODO stab
204
+ // TODO damagevariation
205
+ // TODO checkhit
206
+ // TODO failuretext
207
+ // TODO applydamage
208
+ // TODO criticaltext
209
+ // TODO supereffectivetext
210
+ // TODO checkfaint
211
+ // TODO buildopponentrage
212
+ // TODO kingsrock
213
+ },
214
+ .Binding => {
215
+ // TODO usedmovetext
216
+ // TODO doturn
217
+ // TODO checkhit
218
+ // TODO critical
219
+ // TODO damagestats
220
+ // TODO damagecalc
221
+ // TODO stab
222
+ // TODO damagevariation
223
+ // TODO clearmissdamage
224
+ // TODO failuretext
225
+ // TODO applydamage
226
+ // TODO criticaltext
227
+ // TODO supereffectivetext
228
+ // TODO checkfaint
229
+ // TODO buildopponentrage
230
+ // TODO traptarget
231
+ },
232
+ .Stomp => {
233
+ // TODO usedmovetext
234
+ // TODO doturn
235
+ // TODO critical
236
+ // TODO damagestats
237
+ // TODO damagecalc
238
+ // TODO stab
239
+ // TODO damagevariation
240
+ // TODO doubleminimizedamage
241
+ // TODO checkhit
242
+ // TODO effectchance
243
+ // TODO failuretext
244
+ // TODO applydamage
245
+ // TODO criticaltext
246
+ // TODO supereffectivetext
247
+ // TODO checkfaint
248
+ // TODO buildopponentrage
249
+ // TODO flinchtarget
250
+ },
251
+ .FlinchChance => {
252
+ // TODO usedmovetext
253
+ // TODO doturn
254
+ // TODO critical
255
+ // TODO damagestats
256
+ // TODO damagecalc
257
+ // TODO stab
258
+ // TODO damagevariation
259
+ // TODO checkhit
260
+ // TODO effectchance
261
+ // TODO failuretext
262
+ // TODO applydamage
263
+ // TODO criticaltext
264
+ // TODO supereffectivetext
265
+ // TODO checkfaint
266
+ // TODO buildopponentrage
267
+ // TODO flinchtarget
268
+ },
269
+ .Recoil => {
270
+ // TODO usedmovetext
271
+ // TODO doturn
272
+ // TODO critical
273
+ // TODO damagestats
274
+ // TODO damagecalc
275
+ // TODO stab
276
+ // TODO damagevariation
277
+ // TODO checkhit
278
+ // TODO failuretext
279
+ // TODO applydamage
280
+ // TODO criticaltext
281
+ // TODO supereffectivetext
282
+ // TODO recoil
283
+ // TODO checkfaint
284
+ // TODO buildopponentrage
285
+ // TODO kingsrock
286
+ },
287
+ .Thrashing => {
288
+ // TODO checkrampage
289
+ // TODO doturn
290
+ // TODO rampage
291
+ // TODO usedmovetext
292
+ // TODO checkhit
293
+ // TODO critical
294
+ // TODO damagestats
295
+ // TODO damagecalc
296
+ // TODO stab
297
+ // TODO damagevariation
298
+ // TODO clearmissdamage
299
+ // TODO failuretext
300
+ // TODO applydamage
301
+ // TODO criticaltext
302
+ // TODO supereffectivetext
303
+ // TODO checkfaint
304
+ // TODO buildopponentrage
305
+ // TODO kingsrock
306
+ },
307
+ .PoisonChance => {
308
+ // TODO usedmovetext
309
+ // TODO doturn
310
+ // TODO critical
311
+ // TODO damagestats
312
+ // TODO damagecalc
313
+ // TODO stab
314
+ // TODO damagevariation
315
+ // TODO checkhit
316
+ // TODO effectchance
317
+ // TODO failuretext
318
+ // TODO applydamage
319
+ // TODO criticaltext
320
+ // TODO supereffectivetext
321
+ // TODO checkfaint
322
+ // TODO buildopponentrage
323
+ // TODO poisontarget
324
+ },
325
+ .Twineedle => {
326
+ // TODO usedmovetext
327
+ // TODO doturn
328
+ // TODO startloop
329
+ // TODO checkhit
330
+ // TODO effectchance
331
+ // TODO critical
332
+ // TODO damagestats
333
+ // TODO damagecalc
334
+ // TODO stab
335
+ // TODO damagevariation
336
+ // TODO clearmissdamage
337
+ // TODO failuretext
338
+ // TODO applydamage
339
+ // TODO criticaltext
340
+ // TODO cleartext
341
+ // TODO supereffectivelooptext
342
+ // TODO checkfaint
343
+ // TODO buildopponentrage
344
+ // TODO endloop
345
+ // TODO kingsrock
346
+ // TODO poisontarget
347
+ },
348
+ .Sleep => {
349
+ // TODO usedmovetext
350
+ // TODO doturn
351
+ // TODO checkhit
352
+ // TODO checksafeguard
353
+ // TODO sleeptarget
354
+ },
355
+ .Confusion => {
356
+ // TODO usedmovetext
357
+ // TODO doturn
358
+ // TODO checkhit
359
+ // TODO checksafeguard
360
+ // TODO confuse
361
+ },
362
+ .SuperFang, .LevelDamage, .Psywave, .FixedDamage => {
363
+ // TODO usedmovetext
364
+ // TODO doturn
365
+ // TODO constantdamage
366
+ // TODO checkhit
367
+ // TODO resettypematchup
368
+ // TODO failuretext
369
+ // TODO applydamage
370
+ // TODO checkfaint
371
+ // TODO buildopponentrage
372
+ // TODO kingsrock
373
+ },
374
+ .Disable => {
375
+ // TODO usedmovetext
376
+ // TODO doturn
377
+ // TODO checkhit
378
+ // TODO disable
379
+ },
380
+ .Mist => {
381
+ // TODO usedmovetext
382
+ // TODO doturn
383
+ // TODO mist
384
+ },
385
+ .ConfusionChance => {
386
+ // TODO usedmovetext
387
+ // TODO doturn
388
+ // TODO critical
389
+ // TODO damagestats
390
+ // TODO damagecalc
391
+ // TODO stab
392
+ // TODO damagevariation
393
+ // TODO checkhit
394
+ // TODO effectchance
395
+ // TODO failuretext
396
+ // TODO applydamage
397
+ // TODO criticaltext
398
+ // TODO supereffectivetext
399
+ // TODO checkfaint
400
+ // TODO buildopponentrage
401
+ // TODO confusetarget
402
+ },
403
+ .HyperBeam => {
404
+ // TODO usedmovetext
405
+ // TODO doturn
406
+ // TODO critical
407
+ // TODO damagestats
408
+ // TODO damagecalc
409
+ // TODO stab
410
+ // TODO damagevariation
411
+ // TODO checkhit
412
+ // TODO failuretext
413
+ // TODO applydamage
414
+ // TODO criticaltext
415
+ // TODO supereffectivetext
416
+ // TODO rechargenextturn
417
+ // TODO checkfaint
418
+ // TODO buildopponentrage
419
+ },
420
+ .Counter => {
421
+ // TODO usedmovetext
422
+ // TODO doturn
423
+ // TODO counter
424
+ // TODO failuretext
425
+ // TODO applydamage
426
+ // TODO checkfaint
427
+ // TODO buildopponentrage
428
+ // TODO kingsrock
429
+ },
430
+ .DrainHP => {
431
+ // TODO usedmovetext
432
+ // TODO doturn
433
+ // TODO critical
434
+ // TODO damagestats
435
+ // TODO damagecalc
436
+ // TODO stab
437
+ // TODO damagevariation
438
+ // TODO checkhit
439
+ // TODO failuretext
440
+ // TODO applydamage
441
+ // TODO criticaltext
442
+ // TODO supereffectivetext
443
+ // TODO draintarget
444
+ // TODO checkfaint
445
+ // TODO buildopponentrage
446
+ // TODO kingsrock
447
+ },
448
+ .LeechSeed => {
449
+ // TODO usedmovetext
450
+ // TODO doturn
451
+ // TODO checkhit
452
+ // TODO leechseed
453
+ },
454
+ .Solarbeam => {
455
+ // TODO checkcharge
456
+ // TODO doturn
457
+ // TODO skipsuncharge
458
+ // TODO charge
459
+ // TODO usedmovetext
460
+ // TODO critical
461
+ // TODO damagestats
462
+ // TODO damagecalc
463
+ // TODO stab
464
+ // TODO damagevariation
465
+ // TODO checkhit
466
+ // TODO failuretext
467
+ // TODO applydamage
468
+ // TODO criticaltext
469
+ // TODO supereffectivetext
470
+ // TODO checkfaint
471
+ // TODO buildopponentrage
472
+ // TODO kingsrock
473
+ },
474
+ .Toxic, .Poison => {
475
+ // TODO usedmovetext
476
+ // TODO doturn
477
+ // TODO checkhit
478
+ // TODO stab
479
+ // TODO checksafeguard
480
+ // TODO poison
481
+ },
482
+ .Paralyze => {
483
+ // TODO usedmovetext
484
+ // TODO doturn
485
+ // TODO stab
486
+ // TODO checkhit
487
+ // TODO checksafeguard
488
+ // TODO paralyze
489
+ },
490
+ .Thunder => {
491
+ // TODO usedmovetext
492
+ // TODO doturn
493
+ // TODO critical
494
+ // TODO damagestats
495
+ // TODO damagecalc
496
+ // TODO thunderaccuracy
497
+ // TODO checkhit
498
+ // TODO effectchance
499
+ // TODO stab
500
+ // TODO damagevariation
501
+ // TODO failuretext
502
+ // TODO applydamage
503
+ // TODO criticaltext
504
+ // TODO supereffectivetext
505
+ // TODO checkfaint
506
+ // TODO buildopponentrage
507
+ // TODO paralyzetarget
508
+ },
509
+ .Earthquake => {
510
+ // TODO usedmovetext
511
+ // TODO doturn
512
+ // TODO critical
513
+ // TODO damagestats
514
+ // TODO damagecalc
515
+ // TODO stab
516
+ // TODO damagevariation
517
+ // TODO doubleundergrounddamage
518
+ // TODO checkhit
519
+ // TODO effectchance
520
+ // TODO failuretext
521
+ // TODO applydamage
522
+ // TODO criticaltext
523
+ // TODO supereffectivetext
524
+ // TODO checkfaint
525
+ // TODO buildopponentrage
526
+ },
527
+ .Rage => {
528
+ // TODO usedmovetext
529
+ // TODO doturn
530
+ // TODO critical
531
+ // TODO damagestats
532
+ // TODO damagecalc
533
+ // TODO stab
534
+ // TODO checkhit
535
+ // TODO ragedamage
536
+ // TODO damagevariation
537
+ // TODO failuretext
538
+ // TODO rage
539
+ // TODO applydamage
540
+ // TODO criticaltext
541
+ // TODO supereffectivetext
542
+ // TODO checkfaint
543
+ // TODO buildopponentrage
544
+ // TODO kingsrock
545
+ },
546
+ .Teleport => {
547
+ // TODO usedmovetext
548
+ // TODO doturn
549
+ // TODO teleport
550
+ },
551
+ .Mimic => {
552
+ // TODO usedmovetext
553
+ // TODO doturn
554
+ // TODO checkhit
555
+ // TODO mimic
556
+ },
557
+ .Heal => {
558
+ // TODO usedmovetext
559
+ // TODO doturn
560
+ // TODO heal
561
+ },
562
+ .DefenseCurl => {
563
+ // TODO usedmovetext
564
+ // TODO doturn
565
+ // TODO defenseup
566
+ // TODO curl
567
+ // TODO statupanim
568
+ // TODO statupmessage
569
+ // TODO statupfailtext
570
+ },
571
+ .Haze => {
572
+ // TODO usedmovetext
573
+ // TODO doturn
574
+ // TODO resetstats
575
+ },
576
+ .LightScreen, .Reflect => {
577
+ // TODO usedmovetext
578
+ // TODO doturn
579
+ // TODO screen
580
+ },
581
+ .FocusEnergy => {
582
+ // TODO usedmovetext
583
+ // TODO doturn
584
+ // TODO focusenergy
585
+ },
586
+ .Bide => {
587
+ // TODO storeenergy
588
+ // TODO doturn
589
+ // TODO usedmovetext
590
+ // TODO unleashenergy
591
+ // TODO resettypematchup
592
+ // TODO checkhit
593
+ // TODO bidefailtext
594
+ // TODO applydamage
595
+ // TODO checkfaint
596
+ // TODO buildopponentrage
597
+ // TODO kingsrock
598
+ },
599
+ .Metronome => {
600
+ // TODO usedmovetext
601
+ // TODO doturn
602
+ // TODO metronome
603
+ },
604
+ .MirrorMove => {
605
+ // TODO usedmovetext
606
+ // TODO doturn
607
+ // TODO mirrormove
608
+ },
609
+ .Explode => {
610
+ // TODO usedmovetext
611
+ // TODO doturn
612
+ // TODO critical
613
+ // TODO damagestats
614
+ // TODO damagecalc
615
+ // TODO stab
616
+ // TODO damagevariation
617
+ // TODO checkhit
618
+ // TODO selfdestruct
619
+ // TODO failuretext
620
+ // TODO applydamage
621
+ // TODO criticaltext
622
+ // TODO supereffectivetext
623
+ // TODO checkfaint
624
+ // TODO buildopponentrage
625
+ // TODO kingsrock
626
+ },
627
+ .SkullBash => {
628
+ // TODO checkcharge
629
+ // TODO doturn
630
+ // TODO charge
631
+ // TODO usedmovetext
632
+ // TODO critical
633
+ // TODO damagestats
634
+ // TODO damagecalc
635
+ // TODO stab
636
+ // TODO damagevariation
637
+ // TODO checkhit
638
+ // TODO failuretext
639
+ // TODO applydamage
640
+ // TODO criticaltext
641
+ // TODO supereffectivetext
642
+ // TODO checkfaint
643
+ // TODO buildopponentrage
644
+ // TODO kingsrock
645
+ // TODO endturn
646
+ // TODO defenseup
647
+ // TODO statupmessage
648
+ },
649
+ .DreamEater => {
650
+ // TODO usedmovetext
651
+ // TODO doturn
652
+ // TODO critical
653
+ // TODO damagestats
654
+ // TODO damagecalc
655
+ // TODO stab
656
+ // TODO damagevariation
657
+ // TODO checkhit
658
+ // TODO failuretext
659
+ // TODO applydamage
660
+ // TODO criticaltext
661
+ // TODO supereffectivetext
662
+ // TODO eatdream
663
+ // TODO checkfaint
664
+ // TODO buildopponentrage
665
+ },
666
+ .SkyAttack => {
667
+ // TODO checkcharge
668
+ // TODO doturn
669
+ // TODO charge
670
+ // TODO usedmovetext
671
+ // TODO critical
672
+ // TODO damagestats
673
+ // TODO damagecalc
674
+ // TODO stab
675
+ // TODO damagevariation
676
+ // TODO checkhit
677
+ // TODO effectchance
678
+ // TODO failuretext
679
+ // TODO applydamage
680
+ // TODO criticaltext
681
+ // TODO supereffectivetext
682
+ // TODO checkfaint
683
+ // TODO buildopponentrage
684
+ // TODO flinchtarget
685
+ // TODO kingsrock
686
+ },
687
+ .Transform => {
688
+ // TODO usedmovetext
689
+ // TODO doturn
690
+ // TODO transform
691
+ },
692
+ .Splash => {
693
+ // TODO usedmovetext
694
+ // TODO doturn
695
+ // TODO splash
696
+ },
697
+ .Conversion => {
698
+ // TODO usedmovetext
699
+ // TODO doturn
700
+ // TODO conversion
701
+ },
702
+ .TriAttack => {
703
+ // TODO usedmovetext
704
+ // TODO doturn
705
+ // TODO critical
706
+ // TODO damagestats
707
+ // TODO damagecalc
708
+ // TODO stab
709
+ // TODO damagevariation
710
+ // TODO checkhit
711
+ // TODO failuretext
712
+ // TODO applydamage
713
+ // TODO criticaltext
714
+ // TODO supereffectivetext
715
+ // TODO checkfaint
716
+ // TODO buildopponentrage
717
+ // TODO tristatuschance
718
+ },
719
+ .Substitute => {
720
+ // TODO usedmovetext
721
+ // TODO doturn
722
+ // TODO substitute
723
+ },
724
+ .Sketch => {
725
+ // TODO usedmovetext
726
+ // TODO doturn
727
+ // TODO sketch
728
+ },
729
+ .TripleKick => {
730
+ // TODO usedmovetext
731
+ // TODO doturn
732
+ // TODO startloop
733
+ // TODO checkhit
734
+ // TODO critical
735
+ // TODO damagestats
736
+ // TODO damagecalc
737
+ // TODO triplekick
738
+ // TODO stab
739
+ // TODO damagevariation
740
+ // TODO clearmissdamage
741
+ // TODO failuretext
742
+ // TODO applydamage
743
+ // TODO criticaltext
744
+ // TODO cleartext
745
+ // TODO supereffectivelooptext
746
+ // TODO checkfaint
747
+ // TODO buildopponentrage
748
+ // TODO kickcounter
749
+ // TODO endloop
750
+ // TODO kingsrock
751
+ },
752
+ .Thief => {
753
+ // TODO usedmovetext
754
+ // TODO doturn
755
+ // TODO critical
756
+ // TODO damagestats
757
+ // TODO damagecalc
758
+ // TODO stab
759
+ // TODO damagevariation
760
+ // TODO checkhit
761
+ // TODO effectchance
762
+ // TODO failuretext
763
+ // TODO applydamage
764
+ // TODO criticaltext
765
+ // TODO supereffectivetext
766
+ // TODO thief
767
+ // TODO checkfaint
768
+ // TODO buildopponentrage
769
+ // TODO kingsrock
770
+ },
771
+ .MeanLook => {
772
+ // TODO usedmovetext
773
+ // TODO doturn
774
+ // TODO arenatrap
775
+ },
776
+ .LockOn => {
777
+ // TODO usedmovetext
778
+ // TODO doturn
779
+ // TODO checkhit
780
+ // TODO lockon
781
+ },
782
+ .Nightmare => {
783
+ // TODO usedmovetext
784
+ // TODO doturn
785
+ // TODO nightmare
786
+ },
787
+ .FlameWheel => {
788
+ // TODO usedmovetext
789
+ // TODO doturn
790
+ // TODO critical
791
+ // TODO damagestats
792
+ // TODO damagecalc
793
+ // TODO stab
794
+ // TODO damagevariation
795
+ // TODO checkhit
796
+ // TODO effectchance
797
+ // TODO failuretext
798
+ // TODO applydamage
799
+ // TODO criticaltext
800
+ // TODO supereffectivetext
801
+ // TODO defrost
802
+ // TODO checkfaint
803
+ // TODO buildopponentrage
804
+ // TODO burntarget
805
+ },
806
+ .Snore => {
807
+ // TODO usedmovetext
808
+ // TODO doturn
809
+ // TODO critical
810
+ // TODO damagestats
811
+ // TODO damagecalc
812
+ // TODO stab
813
+ // TODO damagevariation
814
+ // TODO checkhit
815
+ // TODO effectchance
816
+ // TODO snore
817
+ // TODO failuretext
818
+ // TODO applydamage
819
+ // TODO criticaltext
820
+ // TODO supereffectivetext
821
+ // TODO checkfaint
822
+ // TODO buildopponentrage
823
+ // TODO flinchtarget
824
+ // TODO kingsrock
825
+ },
826
+ .Curse => {
827
+ // TODO usedmovetext
828
+ // TODO doturn
829
+ // TODO curse
830
+ },
831
+ .Reversal => {
832
+ // TODO usedmovetext
833
+ // TODO doturn
834
+ // TODO constantdamage
835
+ // TODO stab
836
+ // TODO checkhit
837
+ // TODO failuretext
838
+ // TODO applydamage
839
+ // TODO supereffectivetext
840
+ // TODO checkfaint
841
+ // TODO buildopponentrage
842
+ // TODO kingsrock
843
+ },
844
+ .Conversion2 => {
845
+ // TODO usedmovetext
846
+ // TODO doturn
847
+ // TODO checkhit
848
+ // TODO conversion2
849
+ },
850
+ .Spite => {
851
+ // TODO usedmovetext
852
+ // TODO doturn
853
+ // TODO checkhit
854
+ // TODO spite
855
+ },
856
+ .Protect => {
857
+ // TODO usedmovetext
858
+ // TODO doturn
859
+ // TODO protect
860
+ },
861
+ .BellyDrum => {
862
+ // TODO usedmovetext
863
+ // TODO doturn
864
+ // TODO bellydrum
865
+ },
866
+ .Spikes => {
867
+ // TODO usedmovetext
868
+ // TODO doturn
869
+ // TODO spikes
870
+ },
871
+ .Foresight => {
872
+ // TODO usedmovetext
873
+ // TODO doturn
874
+ // TODO checkhit
875
+ // TODO foresight
876
+ },
877
+ .DestinyBond => {
878
+ // TODO usedmovetext
879
+ // TODO doturn
880
+ // TODO destinybond
881
+ },
882
+ .PerishSong => {
883
+ // TODO usedmovetext
884
+ // TODO doturn
885
+ // TODO perishsong
886
+ },
887
+ .Sandstorm => {
888
+ // TODO usedmovetext
889
+ // TODO doturn
890
+ // TODO startsandstorm
891
+ },
892
+ .Endure => {
893
+ // TODO usedmovetext
894
+ // TODO doturn
895
+ // TODO endure
896
+ },
897
+ .Rollout => {
898
+ // TODO checkcurl
899
+ // TODO doturn
900
+ // TODO usedmovetext
901
+ // TODO critical
902
+ // TODO damagestats
903
+ // TODO damagecalc
904
+ // TODO stab
905
+ // TODO checkhit
906
+ // TODO rolloutpower
907
+ // TODO damagevariation
908
+ // TODO failuretext
909
+ // TODO applydamage
910
+ // TODO criticaltext
911
+ // TODO supereffectivetext
912
+ // TODO checkfaint
913
+ // TODO buildopponentrage
914
+ // TODO kingsrock
915
+ },
916
+ .FalseSwipe => {
917
+ // TODO usedmovetext
918
+ // TODO doturn
919
+ // TODO critical
920
+ // TODO damagestats
921
+ // TODO damagecalc
922
+ // TODO stab
923
+ // TODO damagevariation
924
+ // TODO falseswipe
925
+ // TODO checkhit
926
+ // TODO failuretext
927
+ // TODO applydamage
928
+ // TODO criticaltext
929
+ // TODO supereffectivetext
930
+ // TODO checkfaint
931
+ // TODO buildopponentrage
932
+ // TODO kingsrock
933
+ },
934
+ .Swagger => {
935
+ // TODO usedmovetext
936
+ // TODO doturn
937
+ // TODO checkhit
938
+ // TODO switchturn
939
+ // TODO attackup2
940
+ // TODO switchturn
941
+ // TODO statupanim
942
+ // TODO failuretext
943
+ // TODO switchturn
944
+ // TODO statupmessage
945
+ // TODO switchturn
946
+ // TODO confusetarget
947
+ },
948
+ .FuryCutter => {
949
+ // TODO usedmovetext
950
+ // TODO doturn
951
+ // TODO critical
952
+ // TODO damagestats
953
+ // TODO damagecalc
954
+ // TODO stab
955
+ // TODO checkhit
956
+ // TODO furycutter
957
+ // TODO damagevariation
958
+ // TODO failuretext
959
+ // TODO applydamage
960
+ // TODO criticaltext
961
+ // TODO supereffectivetext
962
+ // TODO checkfaint
963
+ // TODO buildopponentrage
964
+ // TODO kingsrock
965
+ },
966
+ .Attract => {
967
+ // TODO usedmovetext
968
+ // TODO doturn
969
+ // TODO checkhit
970
+ // TODO attract
971
+ },
972
+ .SleepTalk => {
973
+ // TODO usedmovetext
974
+ // TODO doturn
975
+ // TODO sleeptalk
976
+ },
977
+ .HealBell => {
978
+ // TODO usedmovetext
979
+ // TODO doturn
980
+ // TODO healbell
981
+ },
982
+ .Frustration, .Return => {
983
+ // TODO usedmovetext
984
+ // TODO doturn
985
+ // TODO critical
986
+ // TODO damagestats
987
+ // TODO happinesspower
988
+ // TODO damagecalc
989
+ // TODO stab
990
+ // TODO damagevariation
991
+ // TODO checkhit
992
+ // TODO failuretext
993
+ // TODO applydamage
994
+ // TODO criticaltext
995
+ // TODO supereffectivetext
996
+ // TODO checkfaint
997
+ // TODO buildopponentrage
998
+ // TODO kingsrock
999
+ },
1000
+ .Present => {
1001
+ // TODO usedmovetext
1002
+ // TODO doturn
1003
+ // TODO checkhit
1004
+ // TODO critical
1005
+ // TODO damagestats
1006
+ // TODO present
1007
+ // TODO damagecalc
1008
+ // TODO stab
1009
+ // TODO damagevariation
1010
+ // TODO clearmissdamage
1011
+ // TODO failuretext
1012
+ // TODO applydamage
1013
+ // TODO criticaltext
1014
+ // TODO supereffectivetext
1015
+ // TODO checkfaint
1016
+ // TODO buildopponentrage
1017
+ // TODO kingsrock
1018
+ },
1019
+ .Safeguard => {
1020
+ // TODO usedmovetext
1021
+ // TODO doturn
1022
+ // TODO safeguard
1023
+ },
1024
+ .PainSplit => {
1025
+ // TODO usedmovetext
1026
+ // TODO doturn
1027
+ // TODO checkhit
1028
+ // TODO painsplit
1029
+ },
1030
+ .SacredFire => {
1031
+ // TODO usedmovetext
1032
+ // TODO doturn
1033
+ // TODO critical
1034
+ // TODO damagestats
1035
+ // TODO damagecalc
1036
+ // TODO stab
1037
+ // TODO damagevariation
1038
+ // TODO checkhit
1039
+ // TODO effectchance
1040
+ // TODO failuretext
1041
+ // TODO applydamage
1042
+ // TODO criticaltext
1043
+ // TODO supereffectivetext
1044
+ // TODO defrost
1045
+ // TODO checkfaint
1046
+ // TODO buildopponentrage
1047
+ // TODO burntarget
1048
+ },
1049
+ .Magnitude => {
1050
+ // TODO usedmovetext
1051
+ // TODO doturn
1052
+ // TODO critical
1053
+ // TODO damagestats
1054
+ // TODO getmagnitude
1055
+ // TODO damagecalc
1056
+ // TODO stab
1057
+ // TODO damagevariation
1058
+ // TODO checkhit
1059
+ // TODO doubleundergrounddamage
1060
+ // TODO failuretext
1061
+ // TODO applydamage
1062
+ // TODO criticaltext
1063
+ // TODO supereffectivetext
1064
+ // TODO checkfaint
1065
+ // TODO buildopponentrage
1066
+ // TODO kingsrock
1067
+ },
1068
+ .BatonPass => {
1069
+ // TODO usedmovetext
1070
+ // TODO doturn
1071
+ // TODO batonpass
1072
+ },
1073
+ .Encore => {
1074
+ // TODO usedmovetext
1075
+ // TODO doturn
1076
+ // TODO checkhit
1077
+ // TODO encore
1078
+ },
1079
+ .Pursuit => {
1080
+ // TODO usedmovetext
1081
+ // TODO doturn
1082
+ // TODO critical
1083
+ // TODO damagestats
1084
+ // TODO damagecalc
1085
+ // TODO stab
1086
+ // TODO damagevariation
1087
+ // TODO pursuit
1088
+ // TODO checkhit
1089
+ // TODO failuretext
1090
+ // TODO applydamage
1091
+ // TODO criticaltext
1092
+ // TODO supereffectivetext
1093
+ // TODO checkfaint
1094
+ // TODO buildopponentrage
1095
+ // TODO kingsrock
1096
+ },
1097
+ .RapidSpin => {
1098
+ // TODO usedmovetext
1099
+ // TODO doturn
1100
+ // TODO critical
1101
+ // TODO damagestats
1102
+ // TODO damagecalc
1103
+ // TODO stab
1104
+ // TODO damagevariation
1105
+ // TODO checkhit
1106
+ // TODO failuretext
1107
+ // TODO applydamage
1108
+ // TODO criticaltext
1109
+ // TODO supereffectivetext
1110
+ // TODO clearhazards
1111
+ // TODO checkfaint
1112
+ // TODO buildopponentrage
1113
+ // TODO kingsrock
1114
+ },
1115
+ .MorningSun => {
1116
+ // TODO usedmovetext
1117
+ // TODO doturn
1118
+ // TODO healmorn
1119
+ },
1120
+ .Synthesis => {
1121
+ // TODO usedmovetext
1122
+ // TODO doturn
1123
+ // TODO healday
1124
+ },
1125
+ .Moonlight => {
1126
+ // TODO usedmovetext
1127
+ // TODO doturn
1128
+ // TODO healnite
1129
+ },
1130
+ .HiddenPower => {
1131
+ // TODO usedmovetext
1132
+ // TODO doturn
1133
+ // TODO critical
1134
+ // TODO hiddenpower
1135
+ // TODO damagecalc
1136
+ // TODO stab
1137
+ // TODO damagevariation
1138
+ // TODO checkhit
1139
+ // TODO failuretext
1140
+ // TODO applydamage
1141
+ // TODO criticaltext
1142
+ // TODO supereffectivetext
1143
+ // TODO checkfaint
1144
+ // TODO buildopponentrage
1145
+ // TODO kingsrock
1146
+ },
1147
+ .Twister => {
1148
+ // TODO usedmovetext
1149
+ // TODO doturn
1150
+ // TODO critical
1151
+ // TODO damagestats
1152
+ // TODO damagecalc
1153
+ // TODO stab
1154
+ // TODO damagevariation
1155
+ // TODO doubleflyingdamage
1156
+ // TODO checkhit
1157
+ // TODO effectchance
1158
+ // TODO failuretext
1159
+ // TODO applydamage
1160
+ // TODO criticaltext
1161
+ // TODO supereffectivetext
1162
+ // TODO checkfaint
1163
+ // TODO buildopponentrage
1164
+ // TODO flinchtarget
1165
+ },
1166
+ .RainDance => {
1167
+ // TODO usedmovetext
1168
+ // TODO doturn
1169
+ // TODO startrain
1170
+ },
1171
+ .SunnyDay => {
1172
+ // TODO usedmovetext
1173
+ // TODO doturn
1174
+ // TODO startsun
1175
+ },
1176
+ .MirrorCoat => {
1177
+ // TODO usedmovetext
1178
+ // TODO doturn
1179
+ // TODO mirrorcoat
1180
+ // TODO failuretext
1181
+ // TODO applydamage
1182
+ // TODO checkfaint
1183
+ // TODO buildopponentrage
1184
+ // TODO kingsrock
1185
+ },
1186
+ .PsychUp => {
1187
+ // TODO usedmovetext
1188
+ // TODO doturn
1189
+ // TODO psychup
1190
+ },
1191
+ .FutureSight => {
1192
+ // TODO checkfuturesight
1193
+ // TODO usedmovetext
1194
+ // TODO doturn
1195
+ // TODO damagestats
1196
+ // TODO damagecalc
1197
+ // TODO futuresight
1198
+ // TODO damagevariation ; skip here if last turn
1199
+ // TODO checkhit
1200
+ // TODO failuretext
1201
+ // TODO applydamage
1202
+ // TODO checkfaint
1203
+ // TODO buildopponentrage
1204
+ },
1205
+ .BeatUp => {
1206
+ // TODO usedmovetext
1207
+ // TODO movedelay
1208
+ // TODO doturn
1209
+ // TODO startloop
1210
+ // TODO checkhit
1211
+ // TODO critical
1212
+ // TODO beatup
1213
+ // TODO damagecalc
1214
+ // TODO damagevariation
1215
+ // TODO clearmissdamage
1216
+ // TODO failuretext
1217
+ // TODO applydamage
1218
+ // TODO criticaltext
1219
+ // TODO cleartext
1220
+ // TODO supereffectivetext
1221
+ // TODO checkfaint
1222
+ // TODO buildopponentrage
1223
+ // TODO endloop
1224
+ // TODO beatupfailtext
1225
+ // TODO kingsrock
1226
+ },
1227
+ // zig fmt: off
1228
+ .AllStatUpChance, .AttackUp1, .AttackUp2, .AttackUpChance, .DefenseUp1,
1229
+ .DefenseUp2, .DefenseUpChance, .EvasionUp1, .SpAtkUp1, .SpDefUp2, .SpeedUp2 => {}, // TODO
1230
+ // zig fmt: on
1231
+ // zig fmt: off
1232
+ .AccuracyDown1, .AccuracyDownChance, .AttackDown1, .AttackDown2,
1233
+ .AttackDownChance, .DefenseDown1, .DefenseDown2, .DefenseDownChance,
1234
+ .EvasionDown1, .SpDefDownChance, .SpeedDown1, .SpeedDown2, .SpeedDownChance => {}, // TODO
1235
+ // zig fmt: on
1236
+ }
1237
+
1238
+ return null;
1239
+ }