1use crate::define_enum_with_from_str;
2use crate::engine::state::PokemonVolatileStatus;
3use crate::state::{
4 PokemonBoostableStat, PokemonIndex, PokemonMoveIndex, PokemonSideCondition, PokemonStatus,
5 PokemonType,
6};
7use lazy_static::lazy_static;
8use std::collections::HashMap;
9use std::fmt;
10
11lazy_static! {
12 pub static ref MOVES: HashMap<Choices, Choice> = {
13 let mut moves: HashMap<Choices, Choice> = HashMap::new();
14 moves.insert(
15 Choices::NONE,
16 Choice {
17 move_id: Choices::NONE,
18 ..Default::default()
19 },
20 );
21 moves.insert(
22 Choices::ABSORB,
23 Choice {
24 move_id: Choices::ABSORB,
25 base_power: 20.0,
26 category: MoveCategory::Special,
27 move_type: PokemonType::GRASS,
28 flags: Flags {
29 heal: true,
30 protect: true,
31 ..Default::default()
32 },
33 drain: Some(0.5),
34 ..Default::default()
35 },
36 );
37 moves.insert(
38 Choices::ACCELEROCK,
39 Choice {
40 move_id: Choices::ACCELEROCK,
41 base_power: 40.0,
42 category: MoveCategory::Physical,
43 priority: 1,
44 move_type: PokemonType::ROCK,
45 flags: Flags {
46 contact: true,
47 protect: true,
48 ..Default::default()
49 },
50 ..Default::default()
51 },
52 );
53 if cfg!(feature = "gen1") {
54 moves.insert(
55 Choices::ACID,
56 Choice {
57 move_id: Choices::ACID,
58 base_power: 40.0,
59 category: MoveCategory::Special,
60 move_type: PokemonType::POISON,
61 flags: Flags {
62 protect: true,
63 ..Default::default()
64 },
65 secondaries: Some(vec![Secondary {
66 chance: 33.2,
67 target: MoveTarget::Opponent,
68 effect: Effect::Boost(StatBoosts {
69 attack: 0,
70 defense: -1,
71 special_attack: 0,
72 special_defense: 0,
73 speed: 0,
74 accuracy: 0,
75 }),
76 }]),
77 ..Default::default()
78 },
79 );
80 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") {
81 moves.insert(
82 Choices::ACID,
83 Choice {
84 move_id: Choices::ACID,
85 base_power: 40.0,
86 category: MoveCategory::Special,
87 move_type: PokemonType::POISON,
88 flags: Flags {
89 protect: true,
90 ..Default::default()
91 },
92 secondaries: Some(vec![Secondary {
93 chance: 10.0,
94 target: MoveTarget::Opponent,
95 effect: Effect::Boost(StatBoosts {
96 attack: 0,
97 defense: -1,
98 special_attack: 0,
99 special_defense: 0,
100 speed: 0,
101 accuracy: 0,
102 }),
103 }]),
104 ..Default::default()
105 },
106 );
107 } else {
108 moves.insert(
109 Choices::ACID,
110 Choice {
111 move_id: Choices::ACID,
112 base_power: 40.0,
113 category: MoveCategory::Special,
114 move_type: PokemonType::POISON,
115 flags: Flags {
116 protect: true,
117 ..Default::default()
118 },
119 secondaries: Some(vec![Secondary {
120 chance: 10.0,
121 target: MoveTarget::Opponent,
122 effect: Effect::Boost(StatBoosts {
123 attack: 0,
124 defense: 0,
125 special_attack: 0,
126 special_defense: -1,
127 speed: 0,
128 accuracy: 0,
129 }),
130 }]),
131 ..Default::default()
132 },
133 );
134 }
135 moves.insert(
136 Choices::ACIDARMOR,
137 Choice {
138 move_id: Choices::ACIDARMOR,
139 target: MoveTarget::User,
140 move_type: PokemonType::POISON,
141 flags: Flags {
142 ..Default::default()
143 },
144 boost: Some(Boost {
145 target: MoveTarget::User,
146 boosts: StatBoosts {
147 attack: 0,
148 defense: 2,
149 special_attack: 0,
150 special_defense: 0,
151 speed: 0,
152 accuracy: 0,
153 },
154 }),
155 ..Default::default()
156 },
157 );
158 moves.insert(
159 Choices::ACIDSPRAY,
160 Choice {
161 move_id: Choices::ACIDSPRAY,
162 base_power: 40.0,
163 category: MoveCategory::Special,
164 move_type: PokemonType::POISON,
165 flags: Flags {
166 bullet: true,
167 protect: true,
168 ..Default::default()
169 },
170 secondaries: Some(vec![Secondary {
171 chance: 100.0,
172 target: MoveTarget::Opponent,
173 effect: Effect::Boost(StatBoosts {
174 attack: 0,
175 defense: 0,
176 special_attack: 0,
177 special_defense: -2,
178 speed: 0,
179 accuracy: 0,
180 }),
181 }]),
182 ..Default::default()
183 },
184 );
185 moves.insert(
186 Choices::ACROBATICS,
187 Choice {
188 move_id: Choices::ACROBATICS,
189 base_power: 55.0,
190 category: MoveCategory::Physical,
191 move_type: PokemonType::FLYING,
192 flags: Flags {
193 contact: true,
194 protect: true,
195 ..Default::default()
196 },
197 ..Default::default()
198 },
199 );
200 moves.insert(
201 Choices::ACUPRESSURE,
202 Choice {
203 move_id: Choices::ACUPRESSURE,
204 target: MoveTarget::User,
205 move_type: PokemonType::NORMAL,
206 flags: Flags {
207 ..Default::default()
208 },
209 ..Default::default()
210 },
211 );
212 moves.insert(
213 Choices::AERIALACE,
214 Choice {
215 move_id: Choices::AERIALACE,
216 base_power: 60.0,
217 category: MoveCategory::Physical,
218 move_type: PokemonType::FLYING,
219 flags: Flags {
220 contact: true,
221 protect: true,
222 slicing: true,
223 ..Default::default()
224 },
225 ..Default::default()
226 },
227 );
228 moves.insert(
229 Choices::AEROBLAST,
230 Choice {
231 move_id: Choices::AEROBLAST,
232 accuracy: 95.0,
233 base_power: 100.0,
234 category: MoveCategory::Special,
235 move_type: PokemonType::FLYING,
236 flags: Flags {
237 protect: true,
238 wind: true,
239 ..Default::default()
240 },
241 ..Default::default()
242 },
243 );
244 moves.insert(
245 Choices::AFTERYOU,
246 Choice {
247 move_id: Choices::AFTERYOU,
248 move_type: PokemonType::NORMAL,
249 flags: Flags {
250 ..Default::default()
251 },
252 ..Default::default()
253 },
254 );
255 moves.insert(
256 Choices::AGILITY,
257 Choice {
258 move_id: Choices::AGILITY,
259 target: MoveTarget::User,
260 move_type: PokemonType::PSYCHIC,
261 flags: Flags {
262 ..Default::default()
263 },
264 boost: Some(Boost {
265 target: MoveTarget::User,
266 boosts: StatBoosts {
267 attack: 0,
268 defense: 0,
269 special_attack: 0,
270 special_defense: 0,
271 speed: 2,
272 accuracy: 0,
273 },
274 }),
275 ..Default::default()
276 },
277 );
278 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
279 moves.insert(
280 Choices::AIRCUTTER,
281 Choice {
282 move_id: Choices::AIRCUTTER,
283 accuracy: 95.0,
284 base_power: 55.0,
285 category: MoveCategory::Special,
286 move_type: PokemonType::FLYING,
287 flags: Flags {
288 protect: true,
289 slicing: true,
290 wind: true,
291 ..Default::default()
292 },
293 ..Default::default()
294 },
295 );
296 } else {
297 moves.insert(
298 Choices::AIRCUTTER,
299 Choice {
300 move_id: Choices::AIRCUTTER,
301 accuracy: 95.0,
302 base_power: 60.0,
303 category: MoveCategory::Special,
304 move_type: PokemonType::FLYING,
305 flags: Flags {
306 protect: true,
307 ..Default::default()
308 },
309 ..Default::default()
310 },
311 );
312 }
313 moves.insert(
314 Choices::AIRSLASH,
315 Choice {
316 move_id: Choices::AIRSLASH,
317 accuracy: 95.0,
318 base_power: 75.0,
319 category: MoveCategory::Special,
320 move_type: PokemonType::FLYING,
321 flags: Flags {
322 protect: true,
323 slicing: true,
324 ..Default::default()
325 },
326 secondaries: Some(vec![Secondary {
327 chance: 30.0,
328 target: MoveTarget::Opponent,
329 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
330 }]),
331 ..Default::default()
332 },
333 );
334 moves.insert(
335 Choices::ALLURINGVOICE,
336 Choice {
337 base_power: 80.0,
338 category: MoveCategory::Special,
339 move_id: Choices::ALLURINGVOICE,
340 move_type: PokemonType::FAIRY,
341 flags: Flags {
342 sound: true,
343 protect: true,
344 ..Default::default()
345 },
346 ..Default::default()
347 },
348 );
349 moves.insert(
350 Choices::ALLYSWITCH,
351 Choice {
352 move_id: Choices::ALLYSWITCH,
353 priority: 2,
354 target: MoveTarget::User,
355 move_type: PokemonType::PSYCHIC,
356 flags: Flags {
357 ..Default::default()
358 },
359 ..Default::default()
360 },
361 );
362 if cfg!(feature = "gen1") {
363 moves.insert(
364 Choices::AMNESIA,
365 Choice {
366 move_id: Choices::AMNESIA,
367 target: MoveTarget::User,
368 move_type: PokemonType::PSYCHIC,
369 flags: Flags {
370 ..Default::default()
371 },
372 boost: Some(Boost {
373 target: MoveTarget::User,
374 boosts: StatBoosts {
375 attack: 0,
376 defense: 0,
377 special_attack: 2,
378 special_defense: 0,
379 speed: 0,
380 accuracy: 0,
381 },
382 }),
383 ..Default::default()
384 },
385 );
386 } else {
387 moves.insert(
388 Choices::AMNESIA,
389 Choice {
390 move_id: Choices::AMNESIA,
391 target: MoveTarget::User,
392 move_type: PokemonType::PSYCHIC,
393 flags: Flags {
394 ..Default::default()
395 },
396 boost: Some(Boost {
397 target: MoveTarget::User,
398 boosts: StatBoosts {
399 attack: 0,
400 defense: 0,
401 special_attack: 0,
402 special_defense: 2,
403 speed: 0,
404 accuracy: 0,
405 },
406 }),
407 ..Default::default()
408 },
409 );
410 }
411 moves.insert(
412 Choices::ANCHORSHOT,
413 Choice {
414 move_id: Choices::ANCHORSHOT,
415 base_power: 80.0,
416 category: MoveCategory::Physical,
417 move_type: PokemonType::STEEL,
418 flags: Flags {
419 contact: true,
420 protect: true,
421 ..Default::default()
422 },
423 ..Default::default()
424 },
425 );
426 moves.insert(
427 Choices::ANCIENTPOWER,
428 Choice {
429 move_id: Choices::ANCIENTPOWER,
430 base_power: 60.0,
431 category: MoveCategory::Special,
432 move_type: PokemonType::ROCK,
433 flags: Flags {
434 protect: true,
435 ..Default::default()
436 },
437 secondaries: Some(vec![Secondary {
438 chance: 10.0,
439 target: MoveTarget::User,
440 effect: Effect::Boost(StatBoosts {
441 attack: 1,
442 defense: 1,
443 special_attack: 1,
444 special_defense: 1,
445 speed: 1,
446 accuracy: 0,
447 }),
448 }]),
449 ..Default::default()
450 },
451 );
452 moves.insert(
453 Choices::APPLEACID,
454 Choice {
455 move_id: Choices::APPLEACID,
456 base_power: 80.0,
457 category: MoveCategory::Special,
458 move_type: PokemonType::GRASS,
459 flags: Flags {
460 protect: true,
461 ..Default::default()
462 },
463 secondaries: Some(vec![Secondary {
464 chance: 100.0,
465 target: MoveTarget::Opponent,
466 effect: Effect::Boost(StatBoosts {
467 attack: 0,
468 defense: 0,
469 special_attack: 0,
470 special_defense: -1,
471 speed: 0,
472 accuracy: 0,
473 }),
474 }]),
475 ..Default::default()
476 },
477 );
478 moves.insert(
479 Choices::AQUACUTTER,
480 Choice {
481 move_id: Choices::AQUACUTTER,
482 base_power: 70.0,
483 category: MoveCategory::Physical,
484 move_type: PokemonType::WATER,
485 flags: Flags {
486 protect: true,
487 slicing: true,
488 ..Default::default()
489 },
490 ..Default::default()
491 },
492 );
493 moves.insert(
494 Choices::AQUAJET,
495 Choice {
496 move_id: Choices::AQUAJET,
497 base_power: 40.0,
498 category: MoveCategory::Physical,
499 priority: 1,
500 move_type: PokemonType::WATER,
501 flags: Flags {
502 contact: true,
503 protect: true,
504 ..Default::default()
505 },
506 ..Default::default()
507 },
508 );
509 moves.insert(
510 Choices::AQUARING,
511 Choice {
512 move_id: Choices::AQUARING,
513 target: MoveTarget::User,
514 move_type: PokemonType::WATER,
515 flags: Flags {
516 ..Default::default()
517 },
518 volatile_status: Some(VolatileStatus {
519 target: MoveTarget::User,
520 volatile_status: PokemonVolatileStatus::AQUARING,
521 }),
522 ..Default::default()
523 },
524 );
525 moves.insert(
526 Choices::AQUASTEP,
527 Choice {
528 move_id: Choices::AQUASTEP,
529 base_power: 80.0,
530 category: MoveCategory::Physical,
531 move_type: PokemonType::WATER,
532 flags: Flags {
533 contact: true,
534 protect: true,
535 ..Default::default()
536 },
537 secondaries: Some(vec![Secondary {
538 chance: 100.0,
539 target: MoveTarget::User,
540 effect: Effect::Boost(StatBoosts {
541 attack: 0,
542 defense: 0,
543 special_attack: 0,
544 special_defense: 0,
545 speed: 1,
546 accuracy: 0,
547 }),
548 }]),
549 ..Default::default()
550 },
551 );
552 moves.insert(
553 Choices::AQUATAIL,
554 Choice {
555 move_id: Choices::AQUATAIL,
556 accuracy: 90.0,
557 base_power: 90.0,
558 category: MoveCategory::Physical,
559 move_type: PokemonType::WATER,
560 flags: Flags {
561 contact: true,
562 protect: true,
563 ..Default::default()
564 },
565 ..Default::default()
566 },
567 );
568 moves.insert(
569 Choices::ARMORCANNON,
570 Choice {
571 move_id: Choices::ARMORCANNON,
572 base_power: 120.0,
573 category: MoveCategory::Special,
574 move_type: PokemonType::FIRE,
575 flags: Flags {
576 protect: true,
577 ..Default::default()
578 },
579 ..Default::default()
580 },
581 );
582 moves.insert(
583 Choices::ARMTHRUST,
584 Choice {
585 move_id: Choices::ARMTHRUST,
586 base_power: 15.0,
587 category: MoveCategory::Physical,
588 move_type: PokemonType::FIGHTING,
589 flags: Flags {
590 contact: true,
591 protect: true,
592 ..Default::default()
593 },
594 ..Default::default()
595 },
596 );
597 moves.insert(
598 Choices::AROMATHERAPY,
599 Choice {
600 move_id: Choices::AROMATHERAPY,
601 target: MoveTarget::User,
602 move_type: PokemonType::GRASS,
603 flags: Flags {
604 ..Default::default()
605 },
606 ..Default::default()
607 },
608 );
609 moves.insert(
610 Choices::AROMATICMIST,
611 Choice {
612 move_id: Choices::AROMATICMIST,
613 target: MoveTarget::User,
614 move_type: PokemonType::FAIRY,
615 flags: Flags {
616 ..Default::default()
617 },
618 boost: Some(Boost {
619 target: MoveTarget::User,
620 boosts: StatBoosts {
621 attack: 0,
622 defense: 0,
623 special_attack: 0,
624 special_defense: 1,
625 speed: 0,
626 accuracy: 0,
627 },
628 }),
629 ..Default::default()
630 },
631 );
632 moves.insert(
633 Choices::ASSIST,
634 Choice {
635 move_id: Choices::ASSIST,
636 target: MoveTarget::User,
637 move_type: PokemonType::NORMAL,
638 flags: Flags {
639 ..Default::default()
640 },
641 ..Default::default()
642 },
643 );
644 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
645 moves.insert(
646 Choices::ASSURANCE,
647 Choice {
648 move_id: Choices::ASSURANCE,
649 base_power: 50.0,
650 category: MoveCategory::Physical,
651 move_type: PokemonType::DARK,
652 flags: Flags {
653 contact: true,
654 protect: true,
655 ..Default::default()
656 },
657 ..Default::default()
658 },
659 );
660 } else {
661 moves.insert(
662 Choices::ASSURANCE,
663 Choice {
664 move_id: Choices::ASSURANCE,
665 base_power: 60.0,
666 category: MoveCategory::Physical,
667 move_type: PokemonType::DARK,
668 flags: Flags {
669 contact: true,
670 protect: true,
671 ..Default::default()
672 },
673 ..Default::default()
674 },
675 );
676 }
677 moves.insert(
678 Choices::ASTONISH,
679 Choice {
680 move_id: Choices::ASTONISH,
681 base_power: 30.0,
682 category: MoveCategory::Physical,
683 move_type: PokemonType::GHOST,
684 flags: Flags {
685 contact: true,
686 protect: true,
687 ..Default::default()
688 },
689 secondaries: Some(vec![Secondary {
690 chance: 30.0,
691 target: MoveTarget::Opponent,
692 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
693 }]),
694 ..Default::default()
695 },
696 );
697 moves.insert(
698 Choices::ASTRALBARRAGE,
699 Choice {
700 move_id: Choices::ASTRALBARRAGE,
701 base_power: 120.0,
702 category: MoveCategory::Special,
703 move_type: PokemonType::GHOST,
704 flags: Flags {
705 protect: true,
706 ..Default::default()
707 },
708 ..Default::default()
709 },
710 );
711 moves.insert(
712 Choices::ATTACKORDER,
713 Choice {
714 move_id: Choices::ATTACKORDER,
715 base_power: 90.0,
716 category: MoveCategory::Physical,
717 move_type: PokemonType::BUG,
718 flags: Flags {
719 protect: true,
720 ..Default::default()
721 },
722 ..Default::default()
723 },
724 );
725 moves.insert(
726 Choices::ATTRACT,
727 Choice {
728 move_id: Choices::ATTRACT,
729 move_type: PokemonType::NORMAL,
730 flags: Flags {
731 protect: true,
732 reflectable: true,
733 ..Default::default()
734 },
735 volatile_status: Some(VolatileStatus {
736 target: MoveTarget::Opponent,
737 volatile_status: PokemonVolatileStatus::ATTRACT,
738 }),
739 ..Default::default()
740 },
741 );
742 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
743 moves.insert(
744 Choices::AURASPHERE,
745 Choice {
746 move_id: Choices::AURASPHERE,
747 base_power: 90.0,
748 category: MoveCategory::Special,
749 move_type: PokemonType::FIGHTING,
750 flags: Flags {
751 bullet: true,
752 protect: true,
753 pulse: true,
754 ..Default::default()
755 },
756 ..Default::default()
757 },
758 );
759 } else {
760 moves.insert(
761 Choices::AURASPHERE,
762 Choice {
763 move_id: Choices::AURASPHERE,
764 base_power: 80.0,
765 category: MoveCategory::Special,
766 move_type: PokemonType::FIGHTING,
767 flags: Flags {
768 bullet: true,
769 protect: true,
770 pulse: true,
771 ..Default::default()
772 },
773 ..Default::default()
774 },
775 );
776 }
777 moves.insert(
778 Choices::AURAWHEEL,
779 Choice {
780 move_id: Choices::AURAWHEEL,
781 base_power: 110.0,
782 category: MoveCategory::Physical,
783 move_type: PokemonType::ELECTRIC,
784 flags: Flags {
785 protect: true,
786 ..Default::default()
787 },
788 secondaries: Some(vec![Secondary {
789 chance: 100.0,
790 target: MoveTarget::User,
791 effect: Effect::Boost(StatBoosts {
792 attack: 0,
793 defense: 0,
794 special_attack: 0,
795 special_defense: 0,
796 speed: 1,
797 accuracy: 0,
798 }),
799 }]),
800 ..Default::default()
801 },
802 );
803 if cfg!(feature = "gen1") {
804 moves.insert(
805 Choices::AURORABEAM,
806 Choice {
807 move_id: Choices::AURORABEAM,
808 base_power: 65.0,
809 category: MoveCategory::Special,
810 move_type: PokemonType::ICE,
811 flags: Flags {
812 protect: true,
813 ..Default::default()
814 },
815 secondaries: Some(vec![Secondary {
816 chance: 33.2,
817 target: MoveTarget::Opponent,
818 effect: Effect::Boost(StatBoosts {
819 attack: -1,
820 defense: 0,
821 special_attack: 0,
822 special_defense: 0,
823 speed: 0,
824 accuracy: 0,
825 }),
826 }]),
827 ..Default::default()
828 },
829 );
830 } else {
831 moves.insert(
832 Choices::AURORABEAM,
833 Choice {
834 move_id: Choices::AURORABEAM,
835 base_power: 65.0,
836 category: MoveCategory::Special,
837 move_type: PokemonType::ICE,
838 flags: Flags {
839 protect: true,
840 ..Default::default()
841 },
842 secondaries: Some(vec![Secondary {
843 chance: 10.0,
844 target: MoveTarget::Opponent,
845 effect: Effect::Boost(StatBoosts {
846 attack: -1,
847 defense: 0,
848 special_attack: 0,
849 special_defense: 0,
850 speed: 0,
851 accuracy: 0,
852 }),
853 }]),
854 ..Default::default()
855 },
856 );
857 }
858 moves.insert(
859 Choices::AURORAVEIL,
860 Choice {
861 move_id: Choices::AURORAVEIL,
862 target: MoveTarget::User,
863 move_type: PokemonType::ICE,
864 flags: Flags {
865 ..Default::default()
866 },
867 side_condition: Some(SideCondition {
868 target: MoveTarget::User,
869 condition: PokemonSideCondition::AuroraVeil,
870 }),
871 ..Default::default()
872 },
873 );
874 moves.insert(
875 Choices::AUTOTOMIZE,
876 Choice {
877 move_id: Choices::AUTOTOMIZE,
878 target: MoveTarget::User,
879 move_type: PokemonType::STEEL,
880 flags: Flags {
881 ..Default::default()
882 },
883 boost: Some(Boost {
884 target: MoveTarget::User,
885 boosts: StatBoosts {
886 attack: 0,
887 defense: 0,
888 special_attack: 0,
889 special_defense: 0,
890 speed: 2,
891 accuracy: 0,
892 },
893 }),
894 ..Default::default()
895 },
896 );
897 moves.insert(
898 Choices::AVALANCHE,
899 Choice {
900 move_id: Choices::AVALANCHE,
901 base_power: 60.0,
902 category: MoveCategory::Physical,
903 priority: -4,
904 move_type: PokemonType::ICE,
905 flags: Flags {
906 contact: true,
907 protect: true,
908 ..Default::default()
909 },
910 ..Default::default()
911 },
912 );
913 moves.insert(
914 Choices::AXEKICK,
915 Choice {
916 move_id: Choices::AXEKICK,
917 accuracy: 90.0,
918 base_power: 120.0,
919 category: MoveCategory::Physical,
920 move_type: PokemonType::FIGHTING,
921 flags: Flags {
922 contact: true,
923 protect: true,
924 ..Default::default()
925 },
926 secondaries: Some(vec![Secondary {
927 chance: 30.0,
928 target: MoveTarget::Opponent,
929 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
930 }]),
931 crash: Some(0.5),
932 ..Default::default()
933 },
934 );
935 moves.insert(
936 Choices::BABYDOLLEYES,
937 Choice {
938 move_id: Choices::BABYDOLLEYES,
939 priority: 1,
940 move_type: PokemonType::FAIRY,
941 flags: Flags {
942 protect: true,
943 reflectable: true,
944 ..Default::default()
945 },
946 boost: Some(Boost {
947 target: MoveTarget::Opponent,
948 boosts: StatBoosts {
949 attack: -1,
950 defense: 0,
951 special_attack: 0,
952 special_defense: 0,
953 speed: 0,
954 accuracy: 0,
955 },
956 }),
957 ..Default::default()
958 },
959 );
960 moves.insert(
961 Choices::BADDYBAD,
962 Choice {
963 move_id: Choices::BADDYBAD,
964 accuracy: 95.0,
965 base_power: 80.0,
966 category: MoveCategory::Special,
967 move_type: PokemonType::DARK,
968 flags: Flags {
969 protect: true,
970 ..Default::default()
971 },
972 ..Default::default()
973 },
974 );
975 moves.insert(
976 Choices::BANEFULBUNKER,
977 Choice {
978 move_id: Choices::BANEFULBUNKER,
979 priority: 4,
980 target: MoveTarget::User,
981 move_type: PokemonType::POISON,
982 flags: Flags {
983 ..Default::default()
984 },
985 volatile_status: Some(VolatileStatus {
986 target: MoveTarget::User,
987 volatile_status: PokemonVolatileStatus::BANEFULBUNKER,
988 }),
989 ..Default::default()
990 },
991 );
992 moves.insert(
993 Choices::BARBBARRAGE,
994 Choice {
995 move_id: Choices::BARBBARRAGE,
996 base_power: 60.0,
997 category: MoveCategory::Physical,
998 move_type: PokemonType::POISON,
999 flags: Flags {
1000 protect: true,
1001 ..Default::default()
1002 },
1003 secondaries: Some(vec![Secondary {
1004 chance: 50.0,
1005 target: MoveTarget::Opponent,
1006 effect: Effect::Status(PokemonStatus::POISON),
1007 }]),
1008 ..Default::default()
1009 },
1010 );
1011 moves.insert(
1012 Choices::BARRAGE,
1013 Choice {
1014 move_id: Choices::BARRAGE,
1015 accuracy: 85.0,
1016 base_power: 15.0,
1017 category: MoveCategory::Physical,
1018 move_type: PokemonType::NORMAL,
1019 flags: Flags {
1020 bullet: true,
1021 protect: true,
1022 ..Default::default()
1023 },
1024 ..Default::default()
1025 },
1026 );
1027 moves.insert(
1028 Choices::BARRIER,
1029 Choice {
1030 move_id: Choices::BARRIER,
1031 target: MoveTarget::User,
1032 move_type: PokemonType::PSYCHIC,
1033 flags: Flags {
1034 ..Default::default()
1035 },
1036 boost: Some(Boost {
1037 target: MoveTarget::User,
1038 boosts: StatBoosts {
1039 attack: 0,
1040 defense: 2,
1041 special_attack: 0,
1042 special_defense: 0,
1043 speed: 0,
1044 accuracy: 0,
1045 },
1046 }),
1047 ..Default::default()
1048 },
1049 );
1050 moves.insert(
1051 Choices::BATONPASS,
1052 Choice {
1053 move_id: Choices::BATONPASS,
1054 target: MoveTarget::User,
1055 move_type: PokemonType::NORMAL,
1056 flags: Flags {
1057 pivot: true,
1058 ..Default::default()
1059 },
1060 ..Default::default()
1061 },
1062 );
1063 moves.insert(
1064 Choices::BEAKBLAST,
1065 Choice {
1066 move_id: Choices::BEAKBLAST,
1067 base_power: 100.0,
1068 category: MoveCategory::Physical,
1069 priority: -3,
1070 move_type: PokemonType::FLYING,
1071 flags: Flags {
1072 bullet: true,
1073 protect: true,
1074 ..Default::default()
1075 },
1076 ..Default::default()
1077 },
1078 );
1079 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1080 moves.insert(
1081 Choices::BEATUP,
1082 Choice {
1083 base_power: 10.0,
1084 move_id: Choices::BEATUP,
1085 category: MoveCategory::Physical,
1086 move_type: PokemonType::DARK,
1087 flags: Flags {
1088 protect: true,
1089 ..Default::default()
1090 },
1091 ..Default::default()
1092 },
1093 );
1094 } else {
1095 moves.insert(
1096 Choices::BEATUP,
1097 Choice {
1098 move_id: Choices::BEATUP,
1099 category: MoveCategory::Physical,
1100 move_type: PokemonType::DARK,
1101 flags: Flags {
1102 protect: true,
1103 ..Default::default()
1104 },
1105 ..Default::default()
1106 },
1107 );
1108 }
1109 moves.insert(
1110 Choices::BEHEMOTHBASH,
1111 Choice {
1112 move_id: Choices::BEHEMOTHBASH,
1113 base_power: 100.0,
1114 category: MoveCategory::Physical,
1115 move_type: PokemonType::STEEL,
1116 flags: Flags {
1117 contact: true,
1118 protect: true,
1119 ..Default::default()
1120 },
1121 ..Default::default()
1122 },
1123 );
1124 moves.insert(
1125 Choices::BEHEMOTHBLADE,
1126 Choice {
1127 move_id: Choices::BEHEMOTHBLADE,
1128 base_power: 100.0,
1129 category: MoveCategory::Physical,
1130 move_type: PokemonType::STEEL,
1131 flags: Flags {
1132 contact: true,
1133 protect: true,
1134 slicing: true,
1135 ..Default::default()
1136 },
1137 ..Default::default()
1138 },
1139 );
1140 moves.insert(
1141 Choices::BELCH,
1142 Choice {
1143 move_id: Choices::BELCH,
1144 accuracy: 90.0,
1145 base_power: 120.0,
1146 category: MoveCategory::Special,
1147 move_type: PokemonType::POISON,
1148 flags: Flags {
1149 protect: true,
1150 ..Default::default()
1151 },
1152 ..Default::default()
1153 },
1154 );
1155 moves.insert(
1156 Choices::BELLYDRUM,
1157 Choice {
1158 move_id: Choices::BELLYDRUM,
1159 target: MoveTarget::User,
1160 move_type: PokemonType::NORMAL,
1161 flags: Flags {
1162 ..Default::default()
1163 },
1164 ..Default::default()
1165 },
1166 );
1167 moves.insert(
1168 Choices::BESTOW,
1169 Choice {
1170 move_id: Choices::BESTOW,
1171 move_type: PokemonType::NORMAL,
1172 flags: Flags {
1173 ..Default::default()
1174 },
1175 ..Default::default()
1176 },
1177 );
1178 moves.insert(
1179 Choices::BIDE,
1180 Choice {
1181 move_id: Choices::BIDE,
1182 category: MoveCategory::Physical,
1183 priority: 1,
1184 target: MoveTarget::User,
1185 move_type: PokemonType::NORMAL,
1186 flags: Flags {
1187 contact: true,
1188 protect: true,
1189 ..Default::default()
1190 },
1191 volatile_status: Some(VolatileStatus {
1192 target: MoveTarget::User,
1193 volatile_status: PokemonVolatileStatus::BIDE,
1194 }),
1195 ..Default::default()
1196 },
1197 );
1198 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1199 moves.insert(
1200 Choices::BIND,
1201 Choice {
1202 move_id: Choices::BIND,
1203 accuracy: 75.0,
1204 base_power: 15.0,
1205 category: MoveCategory::Physical,
1206 move_type: PokemonType::NORMAL,
1207 flags: Flags {
1208 contact: true,
1209 protect: true,
1210 ..Default::default()
1211 },
1212 volatile_status: Some(VolatileStatus {
1213 target: MoveTarget::Opponent,
1214 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
1215 }),
1216 ..Default::default()
1217 },
1218 );
1219 } else {
1220 moves.insert(
1221 Choices::BIND,
1222 Choice {
1223 move_id: Choices::BIND,
1224 accuracy: 85.0,
1225 base_power: 15.0,
1226 category: MoveCategory::Physical,
1227 move_type: PokemonType::NORMAL,
1228 flags: Flags {
1229 contact: true,
1230 protect: true,
1231 ..Default::default()
1232 },
1233 volatile_status: Some(VolatileStatus {
1234 target: MoveTarget::Opponent,
1235 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
1236 }),
1237 ..Default::default()
1238 },
1239 );
1240 }
1241 if cfg!(feature = "gen1") {
1242 moves.insert(
1243 Choices::BITE,
1244 Choice {
1245 move_id: Choices::BITE,
1246 base_power: 60.0,
1247 category: MoveCategory::Physical,
1248 move_type: PokemonType::NORMAL,
1249 flags: Flags {
1250 bite: true,
1251 contact: true,
1252 protect: true,
1253 ..Default::default()
1254 },
1255 secondaries: Some(vec![Secondary {
1256 chance: 10.0,
1257 target: MoveTarget::Opponent,
1258 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1259 }]),
1260 ..Default::default()
1261 },
1262 );
1263 } else {
1264 moves.insert(
1265 Choices::BITE,
1266 Choice {
1267 move_id: Choices::BITE,
1268 base_power: 60.0,
1269 category: MoveCategory::Physical,
1270 move_type: PokemonType::DARK,
1271 flags: Flags {
1272 bite: true,
1273 contact: true,
1274 protect: true,
1275 ..Default::default()
1276 },
1277 secondaries: Some(vec![Secondary {
1278 chance: 30.0,
1279 target: MoveTarget::Opponent,
1280 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1281 }]),
1282 ..Default::default()
1283 },
1284 );
1285 }
1286 moves.insert(
1287 Choices::BITTERBLADE,
1288 Choice {
1289 move_id: Choices::BITTERBLADE,
1290 base_power: 90.0,
1291 category: MoveCategory::Physical,
1292 move_type: PokemonType::FIRE,
1293 flags: Flags {
1294 contact: true,
1295 protect: true,
1296 slicing: true,
1297 heal: true,
1298 ..Default::default()
1299 },
1300 drain: Some(0.5),
1301 ..Default::default()
1302 },
1303 );
1304 moves.insert(
1305 Choices::BITTERMALICE,
1306 Choice {
1307 move_id: Choices::BITTERMALICE,
1308 base_power: 75.0,
1309 category: MoveCategory::Special,
1310 move_type: PokemonType::GHOST,
1311 flags: Flags {
1312 protect: true,
1313 ..Default::default()
1314 },
1315 secondaries: Some(vec![Secondary {
1316 chance: 100.0,
1317 target: MoveTarget::Opponent,
1318 effect: Effect::Boost(StatBoosts {
1319 attack: -1,
1320 defense: 0,
1321 special_attack: 0,
1322 special_defense: 0,
1323 speed: 0,
1324 accuracy: 0,
1325 }),
1326 }]),
1327 ..Default::default()
1328 },
1329 );
1330 moves.insert(
1331 Choices::BLASTBURN,
1332 Choice {
1333 move_id: Choices::BLASTBURN,
1334 accuracy: 90.0,
1335 base_power: 150.0,
1336 category: MoveCategory::Special,
1337 move_type: PokemonType::FIRE,
1338 flags: Flags {
1339 protect: true,
1340 recharge: true,
1341 ..Default::default()
1342 },
1343 ..Default::default()
1344 },
1345 );
1346 moves.insert(
1347 Choices::BLAZEKICK,
1348 Choice {
1349 move_id: Choices::BLAZEKICK,
1350 accuracy: 90.0,
1351 base_power: 85.0,
1352 category: MoveCategory::Physical,
1353 move_type: PokemonType::FIRE,
1354 flags: Flags {
1355 contact: true,
1356 protect: true,
1357 ..Default::default()
1358 },
1359 secondaries: Some(vec![Secondary {
1360 chance: 10.0,
1361 target: MoveTarget::Opponent,
1362 effect: Effect::Status(PokemonStatus::BURN),
1363 }]),
1364 ..Default::default()
1365 },
1366 );
1367 moves.insert(
1368 Choices::BLAZINGTORQUE,
1369 Choice {
1370 move_id: Choices::BLAZINGTORQUE,
1371 base_power: 80.0,
1372 category: MoveCategory::Physical,
1373 move_type: PokemonType::FIRE,
1374 flags: Flags {
1375 protect: true,
1376 ..Default::default()
1377 },
1378 secondaries: Some(vec![Secondary {
1379 chance: 30.0,
1380 target: MoveTarget::Opponent,
1381 effect: Effect::Status(PokemonStatus::BURN),
1382 }]),
1383 ..Default::default()
1384 },
1385 );
1386 moves.insert(
1387 Choices::BLEAKWINDSTORM,
1388 Choice {
1389 move_id: Choices::BLEAKWINDSTORM,
1390 accuracy: 80.0,
1391 base_power: 100.0,
1392 category: MoveCategory::Special,
1393 move_type: PokemonType::FLYING,
1394 flags: Flags {
1395 protect: true,
1396 wind: true,
1397 ..Default::default()
1398 },
1399 secondaries: Some(vec![Secondary {
1400 chance: 30.0,
1401 target: MoveTarget::Opponent,
1402 effect: Effect::Boost(StatBoosts {
1403 attack: 0,
1404 defense: 0,
1405 special_attack: 0,
1406 special_defense: 0,
1407 speed: -1,
1408 accuracy: 0,
1409 }),
1410 }]),
1411 ..Default::default()
1412 },
1413 );
1414 if cfg!(feature = "gen1") {
1415 moves.insert(
1416 Choices::BLIZZARD,
1417 Choice {
1418 move_id: Choices::BLIZZARD,
1419 accuracy: 90.0,
1420 base_power: 120.0,
1421 category: MoveCategory::Special,
1422 move_type: PokemonType::ICE,
1423 flags: Flags {
1424 protect: true,
1425 wind: true,
1426 ..Default::default()
1427 },
1428 secondaries: Some(vec![Secondary {
1429 chance: 10.0,
1430 target: MoveTarget::Opponent,
1431 effect: Effect::Status(PokemonStatus::FREEZE),
1432 }]),
1433 ..Default::default()
1434 },
1435 );
1436 }
1437 else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
1438 moves.insert(
1439 Choices::BLIZZARD,
1440 Choice {
1441 move_id: Choices::BLIZZARD,
1442 accuracy: 70.0,
1443 base_power: 120.0,
1444 category: MoveCategory::Special,
1445 move_type: PokemonType::ICE,
1446 flags: Flags {
1447 protect: true,
1448 wind: true,
1449 ..Default::default()
1450 },
1451 secondaries: Some(vec![Secondary {
1452 chance: 10.0,
1453 target: MoveTarget::Opponent,
1454 effect: Effect::Status(PokemonStatus::FREEZE),
1455 }]),
1456 ..Default::default()
1457 },
1458 );
1459 } else {
1460 moves.insert(
1461 Choices::BLIZZARD,
1462 Choice {
1463 move_id: Choices::BLIZZARD,
1464 accuracy: 70.0,
1465 base_power: 110.0,
1466 category: MoveCategory::Special,
1467 move_type: PokemonType::ICE,
1468 flags: Flags {
1469 protect: true,
1470 ..Default::default()
1471 },
1472 secondaries: Some(vec![Secondary {
1473 chance: 10.0,
1474 target: MoveTarget::Opponent,
1475 effect: Effect::Status(PokemonStatus::FREEZE),
1476 }]),
1477 ..Default::default()
1478 },
1479 );
1480 }
1481 moves.insert(
1482 Choices::BLOCK,
1483 Choice {
1484 move_id: Choices::BLOCK,
1485 move_type: PokemonType::NORMAL,
1486 flags: Flags {
1487 reflectable: true,
1488 ..Default::default()
1489 },
1490 ..Default::default()
1491 },
1492 );
1493 moves.insert(
1494 Choices::BLOODMOON,
1495 Choice {
1496 move_id: Choices::BLOODMOON,
1497 base_power: 140.0,
1498 category: MoveCategory::Special,
1499 move_type: PokemonType::NORMAL,
1500 flags: Flags {
1501 protect: true,
1502 ..Default::default()
1503 },
1504 ..Default::default()
1505 },
1506 );
1507 moves.insert(
1508 Choices::BLUEFLARE,
1509 Choice {
1510 move_id: Choices::BLUEFLARE,
1511 accuracy: 85.0,
1512 base_power: 130.0,
1513 category: MoveCategory::Special,
1514 move_type: PokemonType::FIRE,
1515 flags: Flags {
1516 protect: true,
1517 ..Default::default()
1518 },
1519 secondaries: Some(vec![Secondary {
1520 chance: 20.0,
1521 target: MoveTarget::Opponent,
1522 effect: Effect::Status(PokemonStatus::BURN),
1523 }]),
1524 ..Default::default()
1525 },
1526 );
1527 moves.insert(
1528 Choices::BODYPRESS,
1529 Choice {
1530 move_id: Choices::BODYPRESS,
1531 base_power: 80.0,
1532 category: MoveCategory::Physical,
1533 move_type: PokemonType::FIGHTING,
1534 flags: Flags {
1535 contact: true,
1536 protect: true,
1537 ..Default::default()
1538 },
1539 ..Default::default()
1540 },
1541 );
1542 moves.insert(
1543 Choices::BODYSLAM,
1544 Choice {
1545 move_id: Choices::BODYSLAM,
1546 base_power: 85.0,
1547 category: MoveCategory::Physical,
1548 move_type: PokemonType::NORMAL,
1549 flags: Flags {
1550 contact: true,
1551 protect: true,
1552 ..Default::default()
1553 },
1554 secondaries: Some(vec![Secondary {
1555 chance: 30.0,
1556 target: MoveTarget::Opponent,
1557 effect: Effect::Status(PokemonStatus::PARALYZE),
1558 }]),
1559 ..Default::default()
1560 },
1561 );
1562 moves.insert(
1563 Choices::BOLTBEAK,
1564 Choice {
1565 move_id: Choices::BOLTBEAK,
1566 base_power: 85.0,
1567 category: MoveCategory::Physical,
1568 move_type: PokemonType::ELECTRIC,
1569 flags: Flags {
1570 contact: true,
1571 protect: true,
1572 ..Default::default()
1573 },
1574 ..Default::default()
1575 },
1576 );
1577 moves.insert(
1578 Choices::BOLTSTRIKE,
1579 Choice {
1580 move_id: Choices::BOLTSTRIKE,
1581 accuracy: 85.0,
1582 base_power: 130.0,
1583 category: MoveCategory::Physical,
1584 move_type: PokemonType::ELECTRIC,
1585 flags: Flags {
1586 contact: true,
1587 protect: true,
1588 ..Default::default()
1589 },
1590 secondaries: Some(vec![Secondary {
1591 chance: 20.0,
1592 target: MoveTarget::Opponent,
1593 effect: Effect::Status(PokemonStatus::PARALYZE),
1594 }]),
1595 ..Default::default()
1596 },
1597 );
1598 moves.insert(
1599 Choices::BONECLUB,
1600 Choice {
1601 move_id: Choices::BONECLUB,
1602 accuracy: 85.0,
1603 base_power: 65.0,
1604 category: MoveCategory::Physical,
1605 move_type: PokemonType::GROUND,
1606 flags: Flags {
1607 protect: true,
1608 ..Default::default()
1609 },
1610 secondaries: Some(vec![Secondary {
1611 chance: 10.0,
1612 target: MoveTarget::Opponent,
1613 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1614 }]),
1615 ..Default::default()
1616 },
1617 );
1618 moves.insert(
1619 Choices::BONEMERANG,
1620 Choice {
1621 move_id: Choices::BONEMERANG,
1622 accuracy: 90.0,
1623 base_power: 50.0,
1624 category: MoveCategory::Physical,
1625 move_type: PokemonType::GROUND,
1626 flags: Flags {
1627 protect: true,
1628 ..Default::default()
1629 },
1630 ..Default::default()
1631 },
1632 );
1633 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1634 moves.insert(
1635 Choices::BONERUSH,
1636 Choice {
1637 move_id: Choices::BONERUSH,
1638 accuracy: 80.0,
1639 base_power: 25.0,
1640 category: MoveCategory::Physical,
1641 move_type: PokemonType::GROUND,
1642 flags: Flags {
1643 protect: true,
1644 ..Default::default()
1645 },
1646 ..Default::default()
1647 },
1648 );
1649 } else {
1650 moves.insert(
1651 Choices::BONERUSH,
1652 Choice {
1653 move_id: Choices::BONERUSH,
1654 accuracy: 90.0,
1655 base_power: 25.0,
1656 category: MoveCategory::Physical,
1657 move_type: PokemonType::GROUND,
1658 flags: Flags {
1659 protect: true,
1660 ..Default::default()
1661 },
1662 ..Default::default()
1663 },
1664 );
1665 }
1666 moves.insert(
1667 Choices::BOOMBURST,
1668 Choice {
1669 move_id: Choices::BOOMBURST,
1670 base_power: 140.0,
1671 category: MoveCategory::Special,
1672 move_type: PokemonType::NORMAL,
1673 flags: Flags {
1674 protect: true,
1675 sound: true,
1676 ..Default::default()
1677 },
1678 ..Default::default()
1679 },
1680 );
1681 moves.insert(
1682 Choices::BOUNCE,
1683 Choice {
1684 move_id: Choices::BOUNCE,
1685 accuracy: 85.0,
1686 base_power: 85.0,
1687 category: MoveCategory::Physical,
1688 move_type: PokemonType::FLYING,
1689 flags: Flags {
1690 charge: true,
1691 contact: true,
1692 protect: true,
1693 ..Default::default()
1694 },
1695 secondaries: Some(vec![Secondary {
1696 chance: 30.0,
1697 target: MoveTarget::Opponent,
1698 effect: Effect::Status(PokemonStatus::PARALYZE),
1699 }]),
1700 ..Default::default()
1701 },
1702 );
1703 moves.insert(
1704 Choices::BOUNCYBUBBLE,
1705 Choice {
1706 move_id: Choices::BOUNCYBUBBLE,
1707 base_power: 60.0,
1708 category: MoveCategory::Special,
1709 move_type: PokemonType::WATER,
1710 flags: Flags {
1711 heal: true,
1712 protect: true,
1713 ..Default::default()
1714 },
1715 drain: Some(0.5),
1716 ..Default::default()
1717 },
1718 );
1719 moves.insert(
1720 Choices::BRANCHPOKE,
1721 Choice {
1722 move_id: Choices::BRANCHPOKE,
1723 base_power: 40.0,
1724 category: MoveCategory::Physical,
1725 move_type: PokemonType::GRASS,
1726 flags: Flags {
1727 contact: true,
1728 protect: true,
1729 ..Default::default()
1730 },
1731 ..Default::default()
1732 },
1733 );
1734 moves.insert(
1735 Choices::BRAVEBIRD,
1736 Choice {
1737 move_id: Choices::BRAVEBIRD,
1738 base_power: 120.0,
1739 category: MoveCategory::Physical,
1740 move_type: PokemonType::FLYING,
1741 flags: Flags {
1742 contact: true,
1743 protect: true,
1744 ..Default::default()
1745 },
1746 recoil: Some(0.33),
1747 ..Default::default()
1748 },
1749 );
1750 moves.insert(
1751 Choices::BREAKINGSWIPE,
1752 Choice {
1753 move_id: Choices::BREAKINGSWIPE,
1754 base_power: 60.0,
1755 category: MoveCategory::Physical,
1756 move_type: PokemonType::DRAGON,
1757 flags: Flags {
1758 contact: true,
1759 protect: true,
1760 ..Default::default()
1761 },
1762 secondaries: Some(vec![Secondary {
1763 chance: 100.0,
1764 target: MoveTarget::Opponent,
1765 effect: Effect::Boost(StatBoosts {
1766 attack: -1,
1767 defense: 0,
1768 special_attack: 0,
1769 special_defense: 0,
1770 speed: 0,
1771 accuracy: 0,
1772 }),
1773 }]),
1774 ..Default::default()
1775 },
1776 );
1777 moves.insert(
1778 Choices::BRICKBREAK,
1779 Choice {
1780 move_id: Choices::BRICKBREAK,
1781 base_power: 75.0,
1782 category: MoveCategory::Physical,
1783 move_type: PokemonType::FIGHTING,
1784 flags: Flags {
1785 contact: true,
1786 protect: true,
1787 ..Default::default()
1788 },
1789 ..Default::default()
1790 },
1791 );
1792 moves.insert(
1793 Choices::BRINE,
1794 Choice {
1795 move_id: Choices::BRINE,
1796 base_power: 65.0,
1797 category: MoveCategory::Special,
1798 move_type: PokemonType::WATER,
1799 flags: Flags {
1800 protect: true,
1801 ..Default::default()
1802 },
1803 ..Default::default()
1804 },
1805 );
1806 moves.insert(
1807 Choices::BRUTALSWING,
1808 Choice {
1809 move_id: Choices::BRUTALSWING,
1810 base_power: 60.0,
1811 category: MoveCategory::Physical,
1812 move_type: PokemonType::DARK,
1813 flags: Flags {
1814 contact: true,
1815 protect: true,
1816 ..Default::default()
1817 },
1818 ..Default::default()
1819 },
1820 );
1821 if cfg!(feature = "gen1") {
1822 moves.insert(
1823 Choices::BUBBLE,
1824 Choice {
1825 move_id: Choices::BUBBLE,
1826 base_power: 20.0,
1827 category: MoveCategory::Special,
1828 move_type: PokemonType::WATER,
1829 flags: Flags {
1830 protect: true,
1831 ..Default::default()
1832 },
1833 secondaries: Some(vec![Secondary {
1834 chance: 33.2,
1835 target: MoveTarget::Opponent,
1836 effect: Effect::Boost(StatBoosts {
1837 attack: 0,
1838 defense: 0,
1839 special_attack: 0,
1840 special_defense: 0,
1841 speed: -1,
1842 accuracy: 0,
1843 }),
1844 }]),
1845 ..Default::default()
1846 },
1847 );
1848 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
1849 moves.insert(
1850 Choices::BUBBLE,
1851 Choice {
1852 move_id: Choices::BUBBLE,
1853 base_power: 20.0,
1854 category: MoveCategory::Special,
1855 move_type: PokemonType::WATER,
1856 flags: Flags {
1857 protect: true,
1858 ..Default::default()
1859 },
1860 secondaries: Some(vec![Secondary {
1861 chance: 10.0,
1862 target: MoveTarget::Opponent,
1863 effect: Effect::Boost(StatBoosts {
1864 attack: 0,
1865 defense: 0,
1866 special_attack: 0,
1867 special_defense: 0,
1868 speed: -1,
1869 accuracy: 0,
1870 }),
1871 }]),
1872 ..Default::default()
1873 },
1874 );
1875 } else {
1876 moves.insert(
1877 Choices::BUBBLE,
1878 Choice {
1879 move_id: Choices::BUBBLE,
1880 base_power: 40.0,
1881 category: MoveCategory::Special,
1882 move_type: PokemonType::WATER,
1883 flags: Flags {
1884 protect: true,
1885 ..Default::default()
1886 },
1887 secondaries: Some(vec![Secondary {
1888 chance: 10.0,
1889 target: MoveTarget::Opponent,
1890 effect: Effect::Boost(StatBoosts {
1891 attack: 0,
1892 defense: 0,
1893 special_attack: 0,
1894 special_defense: 0,
1895 speed: -1,
1896 accuracy: 0,
1897 }),
1898 }]),
1899 ..Default::default()
1900 },
1901 );
1902 }
1903 if cfg!(feature = "gen1") {
1904 moves.insert(
1905 Choices::BUBBLEBEAM,
1906 Choice {
1907 move_id: Choices::BUBBLEBEAM,
1908 base_power: 65.0,
1909 category: MoveCategory::Special,
1910 move_type: PokemonType::WATER,
1911 flags: Flags {
1912 protect: true,
1913 ..Default::default()
1914 },
1915 secondaries: Some(vec![Secondary {
1916 chance: 33.2,
1917 target: MoveTarget::Opponent,
1918 effect: Effect::Boost(StatBoosts {
1919 attack: 0,
1920 defense: 0,
1921 special_attack: 0,
1922 special_defense: 0,
1923 speed: -1,
1924 accuracy: 0,
1925 }),
1926 }]),
1927 ..Default::default()
1928 },
1929 );
1930 } else {
1931 moves.insert(
1932 Choices::BUBBLEBEAM,
1933 Choice {
1934 move_id: Choices::BUBBLEBEAM,
1935 base_power: 65.0,
1936 category: MoveCategory::Special,
1937 move_type: PokemonType::WATER,
1938 flags: Flags {
1939 protect: true,
1940 ..Default::default()
1941 },
1942 secondaries: Some(vec![Secondary {
1943 chance: 10.0,
1944 target: MoveTarget::Opponent,
1945 effect: Effect::Boost(StatBoosts {
1946 attack: 0,
1947 defense: 0,
1948 special_attack: 0,
1949 special_defense: 0,
1950 speed: -1,
1951 accuracy: 0,
1952 }),
1953 }]),
1954 ..Default::default()
1955 },
1956 );
1957 }
1958 moves.insert(
1959 Choices::BUGBITE,
1960 Choice {
1961 move_id: Choices::BUGBITE,
1962 base_power: 60.0,
1963 category: MoveCategory::Physical,
1964 move_type: PokemonType::BUG,
1965 flags: Flags {
1966 contact: true,
1967 protect: true,
1968 ..Default::default()
1969 },
1970 ..Default::default()
1971 },
1972 );
1973 moves.insert(
1974 Choices::BUGBUZZ,
1975 Choice {
1976 move_id: Choices::BUGBUZZ,
1977 base_power: 90.0,
1978 category: MoveCategory::Special,
1979 move_type: PokemonType::BUG,
1980 flags: Flags {
1981 protect: true,
1982 sound: true,
1983 ..Default::default()
1984 },
1985 secondaries: Some(vec![Secondary {
1986 chance: 10.0,
1987 target: MoveTarget::Opponent,
1988 effect: Effect::Boost(StatBoosts {
1989 attack: 0,
1990 defense: 0,
1991 special_attack: 0,
1992 special_defense: -1,
1993 speed: 0,
1994 accuracy: 0,
1995 }),
1996 }]),
1997 ..Default::default()
1998 },
1999 );
2000 moves.insert(
2001 Choices::BULKUP,
2002 Choice {
2003 move_id: Choices::BULKUP,
2004 target: MoveTarget::User,
2005 move_type: PokemonType::FIGHTING,
2006 flags: Flags {
2007 ..Default::default()
2008 },
2009 boost: Some(Boost {
2010 target: MoveTarget::User,
2011 boosts: StatBoosts {
2012 attack: 1,
2013 defense: 1,
2014 special_attack: 0,
2015 special_defense: 0,
2016 speed: 0,
2017 accuracy: 0,
2018 },
2019 }),
2020 ..Default::default()
2021 },
2022 );
2023 moves.insert(
2024 Choices::BULLDOZE,
2025 Choice {
2026 move_id: Choices::BULLDOZE,
2027 base_power: 60.0,
2028 category: MoveCategory::Physical,
2029 move_type: PokemonType::GROUND,
2030 flags: Flags {
2031 protect: true,
2032 ..Default::default()
2033 },
2034 secondaries: Some(vec![Secondary {
2035 chance: 100.0,
2036 target: MoveTarget::Opponent,
2037 effect: Effect::Boost(StatBoosts {
2038 attack: 0,
2039 defense: 0,
2040 special_attack: 0,
2041 special_defense: 0,
2042 speed: -1,
2043 accuracy: 0,
2044 }),
2045 }]),
2046 ..Default::default()
2047 },
2048 );
2049 moves.insert(
2050 Choices::BULLETPUNCH,
2051 Choice {
2052 move_id: Choices::BULLETPUNCH,
2053 base_power: 40.0,
2054 category: MoveCategory::Physical,
2055 priority: 1,
2056 move_type: PokemonType::STEEL,
2057 flags: Flags {
2058 contact: true,
2059 protect: true,
2060 punch: true,
2061 ..Default::default()
2062 },
2063 ..Default::default()
2064 },
2065 );
2066 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2067 moves.insert(
2068 Choices::BULLETSEED,
2069 Choice {
2070 move_id: Choices::BULLETSEED,
2071 base_power: 10.0,
2072 category: MoveCategory::Physical,
2073 move_type: PokemonType::GRASS,
2074 flags: Flags {
2075 bullet: true,
2076 protect: true,
2077 ..Default::default()
2078 },
2079 ..Default::default()
2080 },
2081 );
2082 } else {
2083 moves.insert(
2084 Choices::BULLETSEED,
2085 Choice {
2086 move_id: Choices::BULLETSEED,
2087 base_power: 25.0,
2088 category: MoveCategory::Physical,
2089 move_type: PokemonType::GRASS,
2090 flags: Flags {
2091 bullet: true,
2092 protect: true,
2093 ..Default::default()
2094 },
2095 ..Default::default()
2096 },
2097 );
2098 }
2099 moves.insert(
2100 Choices::BURNINGBULWARK,
2101 Choice {
2102 move_id: Choices::BURNINGBULWARK,
2103 category: MoveCategory::Status,
2104 move_type: PokemonType::FIRE,
2105 priority: 4,
2106 flags: Flags {
2107 ..Default::default()
2108 },
2109 volatile_status: Some(VolatileStatus {
2110 target: MoveTarget::User,
2111 volatile_status: PokemonVolatileStatus::BURNINGBULWARK,
2112 }),
2113 ..Default::default()
2114 },
2115 );
2116 moves.insert(
2117 Choices::BURNINGJEALOUSY,
2118 Choice {
2119 move_id: Choices::BURNINGJEALOUSY,
2120 base_power: 70.0,
2121 category: MoveCategory::Special,
2122 move_type: PokemonType::FIRE,
2123 flags: Flags {
2124 protect: true,
2125 ..Default::default()
2126 },
2127 ..Default::default()
2128 },
2129 );
2130 moves.insert(
2131 Choices::BURNUP,
2132 Choice {
2133 move_id: Choices::BURNUP,
2134 base_power: 130.0,
2135 category: MoveCategory::Special,
2136 move_type: PokemonType::FIRE,
2137 flags: Flags {
2138 protect: true,
2139 ..Default::default()
2140 },
2141 ..Default::default()
2142 },
2143 );
2144 moves.insert(
2145 Choices::BUZZYBUZZ,
2146 Choice {
2147 move_id: Choices::BUZZYBUZZ,
2148 base_power: 60.0,
2149 category: MoveCategory::Special,
2150 move_type: PokemonType::ELECTRIC,
2151 flags: Flags {
2152 protect: true,
2153 ..Default::default()
2154 },
2155 secondaries: Some(vec![Secondary {
2156 chance: 100.0,
2157 target: MoveTarget::Opponent,
2158 effect: Effect::Status(PokemonStatus::PARALYZE),
2159 }]),
2160 ..Default::default()
2161 },
2162 );
2163 moves.insert(
2164 Choices::CALMMIND,
2165 Choice {
2166 move_id: Choices::CALMMIND,
2167 target: MoveTarget::User,
2168 move_type: PokemonType::PSYCHIC,
2169 flags: Flags {
2170 ..Default::default()
2171 },
2172 boost: Some(Boost {
2173 target: MoveTarget::User,
2174 boosts: StatBoosts {
2175 attack: 0,
2176 defense: 0,
2177 special_attack: 1,
2178 special_defense: 1,
2179 speed: 0,
2180 accuracy: 0,
2181 },
2182 }),
2183 ..Default::default()
2184 },
2185 );
2186 moves.insert(
2187 Choices::CAMOUFLAGE,
2188 Choice {
2189 move_id: Choices::CAMOUFLAGE,
2190 target: MoveTarget::User,
2191 move_type: PokemonType::NORMAL,
2192 flags: Flags {
2193 ..Default::default()
2194 },
2195 ..Default::default()
2196 },
2197 );
2198 moves.insert(
2199 Choices::CAPTIVATE,
2200 Choice {
2201 move_id: Choices::CAPTIVATE,
2202 move_type: PokemonType::NORMAL,
2203 flags: Flags {
2204 protect: true,
2205 reflectable: true,
2206 ..Default::default()
2207 },
2208 boost: Some(Boost {
2209 target: MoveTarget::Opponent,
2210 boosts: StatBoosts {
2211 attack: 0,
2212 defense: 0,
2213 special_attack: -2,
2214 special_defense: 0,
2215 speed: 0,
2216 accuracy: 0,
2217 },
2218 }),
2219 ..Default::default()
2220 },
2221 );
2222 moves.insert(
2223 Choices::CEASELESSEDGE,
2224 Choice {
2225 move_id: Choices::CEASELESSEDGE,
2226 accuracy: 90.0,
2227 base_power: 65.0,
2228 category: MoveCategory::Physical,
2229 move_type: PokemonType::DARK,
2230 flags: Flags {
2231 contact: true,
2232 protect: true,
2233 slicing: true,
2234 ..Default::default()
2235 },
2236 side_condition: Some(SideCondition {
2237 target: MoveTarget::Opponent,
2238 condition: PokemonSideCondition::Spikes,
2239 }),
2240 ..Default::default()
2241 },
2242 );
2243 moves.insert(
2244 Choices::CELEBRATE,
2245 Choice {
2246 move_id: Choices::CELEBRATE,
2247 target: MoveTarget::User,
2248 move_type: PokemonType::NORMAL,
2249 flags: Flags {
2250 ..Default::default()
2251 },
2252 ..Default::default()
2253 },
2254 );
2255 moves.insert(
2256 Choices::CHARGE,
2257 Choice {
2258 move_id: Choices::CHARGE,
2259 target: MoveTarget::User,
2260 move_type: PokemonType::ELECTRIC,
2261 flags: Flags {
2262 ..Default::default()
2263 },
2264 boost: Some(Boost {
2265 target: MoveTarget::User,
2266 boosts: StatBoosts {
2267 attack: 0,
2268 defense: 0,
2269 special_attack: 0,
2270 special_defense: 1,
2271 speed: 0,
2272 accuracy: 0,
2273 },
2274 }),
2275 volatile_status: Some(VolatileStatus {
2276 target: MoveTarget::User,
2277 volatile_status: PokemonVolatileStatus::CHARGE,
2278 }),
2279 ..Default::default()
2280 },
2281 );
2282 moves.insert(
2283 Choices::CHARGEBEAM,
2284 Choice {
2285 move_id: Choices::CHARGEBEAM,
2286 accuracy: 90.0,
2287 base_power: 50.0,
2288 category: MoveCategory::Special,
2289 move_type: PokemonType::ELECTRIC,
2290 flags: Flags {
2291 protect: true,
2292 ..Default::default()
2293 },
2294 secondaries: Some(vec![Secondary {
2295 chance: 70.0,
2296 target: MoveTarget::User,
2297 effect: Effect::Boost(StatBoosts {
2298 attack: 0,
2299 defense: 0,
2300 special_attack: 1,
2301 special_defense: 0,
2302 speed: 0,
2303 accuracy: 0,
2304 }),
2305 }]),
2306 ..Default::default()
2307 },
2308 );
2309 moves.insert(
2310 Choices::CHARM,
2311 Choice {
2312 move_id: Choices::CHARM,
2313 move_type: PokemonType::FAIRY,
2314 flags: Flags {
2315 protect: true,
2316 reflectable: true,
2317 ..Default::default()
2318 },
2319 boost: Some(Boost {
2320 target: MoveTarget::Opponent,
2321 boosts: StatBoosts {
2322 attack: -2,
2323 defense: 0,
2324 special_attack: 0,
2325 special_defense: 0,
2326 speed: 0,
2327 accuracy: 0,
2328 },
2329 }),
2330 ..Default::default()
2331 },
2332 );
2333 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
2334 moves.insert(
2335 Choices::CHATTER,
2336 Choice {
2337 move_id: Choices::CHATTER,
2338 base_power: 65.0,
2339 category: MoveCategory::Special,
2340 move_type: PokemonType::FLYING,
2341 flags: Flags {
2342 protect: true,
2343 sound: true,
2344 ..Default::default()
2345 },
2346 secondaries: Some(vec![Secondary {
2347 chance: 100.0,
2348 target: MoveTarget::Opponent,
2349 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2350 }]),
2351 ..Default::default()
2352 },
2353 );
2354 } else {
2355 moves.insert(
2356 Choices::CHATTER,
2357 Choice {
2358 move_id: Choices::CHATTER,
2359 base_power: 65.0,
2360 category: MoveCategory::Special,
2361 move_type: PokemonType::FLYING,
2362 flags: Flags {
2363 protect: true,
2364 sound: true,
2365 ..Default::default()
2366 },
2367 secondaries: Some(vec![Secondary {
2368 chance: 100.0,
2369 target: MoveTarget::Opponent,
2370 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2371 }]),
2372 ..Default::default()
2373 },
2374 );
2375 }
2376 moves.insert(
2377 Choices::CHILLINGWATER,
2378 Choice {
2379 move_id: Choices::CHILLINGWATER,
2380 base_power: 50.0,
2381 category: MoveCategory::Special,
2382 move_type: PokemonType::WATER,
2383 flags: Flags {
2384 protect: true,
2385 ..Default::default()
2386 },
2387 secondaries: Some(vec![Secondary {
2388 chance: 100.0,
2389 target: MoveTarget::Opponent,
2390 effect: Effect::Boost(StatBoosts {
2391 attack: -1,
2392 defense: 0,
2393 special_attack: 0,
2394 special_defense: 0,
2395 speed: 0,
2396 accuracy: 0,
2397 }),
2398 }]),
2399 ..Default::default()
2400 },
2401 );
2402 moves.insert(
2403 Choices::CHILLYRECEPTION,
2404 Choice {
2405 move_id: Choices::CHILLYRECEPTION,
2406 move_type: PokemonType::ICE,
2407 flags: Flags {
2408 pivot: true,
2409 ..Default::default()
2410 },
2411 ..Default::default()
2412 },
2413 );
2414 moves.insert(
2415 Choices::CHIPAWAY,
2416 Choice {
2417 move_id: Choices::CHIPAWAY,
2418 base_power: 70.0,
2419 category: MoveCategory::Physical,
2420 move_type: PokemonType::NORMAL,
2421 flags: Flags {
2422 contact: true,
2423 protect: true,
2424 ..Default::default()
2425 },
2426 ..Default::default()
2427 },
2428 );
2429 moves.insert(
2430 Choices::CHLOROBLAST,
2431 Choice {
2432 move_id: Choices::CHLOROBLAST,
2433 accuracy: 95.0,
2434 base_power: 150.0,
2435 category: MoveCategory::Special,
2436 move_type: PokemonType::GRASS,
2437 flags: Flags {
2438 protect: true,
2439 ..Default::default()
2440 },
2441 heal: Some(Heal {
2442 target: MoveTarget::User,
2443 amount: -0.5,
2444 }),
2445 ..Default::default()
2446 },
2447 );
2448 moves.insert(
2449 Choices::CIRCLETHROW,
2450 Choice {
2451 move_id: Choices::CIRCLETHROW,
2452 accuracy: 90.0,
2453 base_power: 60.0,
2454 category: MoveCategory::Physical,
2455 priority: -6,
2456 move_type: PokemonType::FIGHTING,
2457 flags: Flags {
2458 contact: true,
2459 drag: true,
2460 protect: true,
2461 ..Default::default()
2462 },
2463 ..Default::default()
2464 },
2465 );
2466 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2467 moves.insert(
2468 Choices::CLAMP,
2469 Choice {
2470 move_id: Choices::CLAMP,
2471 accuracy: 75.0,
2472 base_power: 35.0,
2473 category: MoveCategory::Physical,
2474 move_type: PokemonType::WATER,
2475 flags: Flags {
2476 contact: true,
2477 protect: true,
2478 ..Default::default()
2479 },
2480 volatile_status: Some(VolatileStatus {
2481 target: MoveTarget::Opponent,
2482 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
2483 }),
2484 ..Default::default()
2485 },
2486 );
2487 } else {
2488 moves.insert(
2489 Choices::CLAMP,
2490 Choice {
2491 move_id: Choices::CLAMP,
2492 accuracy: 85.0,
2493 base_power: 35.0,
2494 category: MoveCategory::Physical,
2495 move_type: PokemonType::WATER,
2496 flags: Flags {
2497 contact: true,
2498 protect: true,
2499 ..Default::default()
2500 },
2501 volatile_status: Some(VolatileStatus {
2502 target: MoveTarget::Opponent,
2503 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
2504 }),
2505 ..Default::default()
2506 },
2507 );
2508 }
2509 moves.insert(
2510 Choices::CLANGINGSCALES,
2511 Choice {
2512 move_id: Choices::CLANGINGSCALES,
2513 base_power: 110.0,
2514 category: MoveCategory::Special,
2515 move_type: PokemonType::DRAGON,
2516 flags: Flags {
2517 protect: true,
2518 sound: true,
2519 ..Default::default()
2520 },
2521 boost: Some(Boost {
2522 target: MoveTarget::User,
2523 boosts: StatBoosts {
2524 attack: 0,
2525 defense: -1,
2526 special_attack: 0,
2527 special_defense: 0,
2528 speed: 0,
2529 accuracy: 0,
2530 },
2531 }),
2532 ..Default::default()
2533 },
2534 );
2535 moves.insert(
2536 Choices::CLANGOROUSSOUL,
2537 Choice {
2538 move_id: Choices::CLANGOROUSSOUL,
2539 target: MoveTarget::User,
2540 move_type: PokemonType::DRAGON,
2541 flags: Flags {
2542 sound: true,
2543 ..Default::default()
2544 },
2545 ..Default::default()
2546 },
2547 );
2548 moves.insert(
2549 Choices::CLEARSMOG,
2550 Choice {
2551 move_id: Choices::CLEARSMOG,
2552 base_power: 50.0,
2553 category: MoveCategory::Special,
2554 move_type: PokemonType::POISON,
2555 flags: Flags {
2556 protect: true,
2557 ..Default::default()
2558 },
2559 ..Default::default()
2560 },
2561 );
2562 moves.insert(
2563 Choices::CLOSECOMBAT,
2564 Choice {
2565 move_id: Choices::CLOSECOMBAT,
2566 base_power: 120.0,
2567 category: MoveCategory::Physical,
2568 move_type: PokemonType::FIGHTING,
2569 flags: Flags {
2570 contact: true,
2571 protect: true,
2572 ..Default::default()
2573 },
2574 boost: Some(Boost {
2575 target: MoveTarget::User,
2576 boosts: StatBoosts {
2577 attack: 0,
2578 defense: -1,
2579 special_attack: 0,
2580 special_defense: -1,
2581 speed: 0,
2582 accuracy: 0,
2583 },
2584 }),
2585 ..Default::default()
2586 },
2587 );
2588 moves.insert(
2589 Choices::COACHING,
2590 Choice {
2591 move_id: Choices::COACHING,
2592 target: MoveTarget::User,
2593 move_type: PokemonType::FIGHTING,
2594 flags: Flags {
2595 ..Default::default()
2596 },
2597 boost: Some(Boost {
2598 target: MoveTarget::User,
2599 boosts: StatBoosts {
2600 attack: 1,
2601 defense: 1,
2602 special_attack: 0,
2603 special_defense: 0,
2604 speed: 0,
2605 accuracy: 0,
2606 },
2607 }),
2608 ..Default::default()
2609 },
2610 );
2611 moves.insert(
2612 Choices::COIL,
2613 Choice {
2614 move_id: Choices::COIL,
2615 target: MoveTarget::User,
2616 move_type: PokemonType::POISON,
2617 flags: Flags {
2618 ..Default::default()
2619 },
2620 boost: Some(Boost {
2621 target: MoveTarget::User,
2622 boosts: StatBoosts {
2623 attack: 1,
2624 defense: 1,
2625 special_attack: 0,
2626 special_defense: 0,
2627 speed: 0,
2628 accuracy: 1,
2629 },
2630 }),
2631 ..Default::default()
2632 },
2633 );
2634 moves.insert(
2635 Choices::COLLISIONCOURSE,
2636 Choice {
2637 move_id: Choices::COLLISIONCOURSE,
2638 base_power: 100.0,
2639 category: MoveCategory::Physical,
2640 move_type: PokemonType::FIGHTING,
2641 flags: Flags {
2642 contact: true,
2643 protect: true,
2644 ..Default::default()
2645 },
2646 ..Default::default()
2647 },
2648 );
2649 moves.insert(
2650 Choices::COMBATTORQUE,
2651 Choice {
2652 move_id: Choices::COMBATTORQUE,
2653 base_power: 100.0,
2654 category: MoveCategory::Physical,
2655 move_type: PokemonType::FIGHTING,
2656 flags: Flags {
2657 protect: true,
2658 ..Default::default()
2659 },
2660 secondaries: Some(vec![Secondary {
2661 chance: 30.0,
2662 target: MoveTarget::Opponent,
2663 effect: Effect::Status(PokemonStatus::PARALYZE),
2664 }]),
2665 ..Default::default()
2666 },
2667 );
2668 moves.insert(
2669 Choices::COMETPUNCH,
2670 Choice {
2671 move_id: Choices::COMETPUNCH,
2672 accuracy: 85.0,
2673 base_power: 18.0,
2674 category: MoveCategory::Physical,
2675 move_type: PokemonType::NORMAL,
2676 flags: Flags {
2677 contact: true,
2678 protect: true,
2679 punch: true,
2680 ..Default::default()
2681 },
2682 ..Default::default()
2683 },
2684 );
2685 moves.insert(
2686 Choices::COMEUPPANCE,
2687 Choice {
2688 move_id: Choices::COMEUPPANCE,
2689 category: MoveCategory::Physical,
2690 move_type: PokemonType::DARK,
2691 flags: Flags {
2692 contact: true,
2693 protect: true,
2694 ..Default::default()
2695 },
2696 ..Default::default()
2697 },
2698 );
2699 moves.insert(
2700 Choices::CONFIDE,
2701 Choice {
2702 move_id: Choices::CONFIDE,
2703 move_type: PokemonType::NORMAL,
2704 flags: Flags {
2705 reflectable: true,
2706 sound: true,
2707 ..Default::default()
2708 },
2709 boost: Some(Boost {
2710 target: MoveTarget::Opponent,
2711 boosts: StatBoosts {
2712 attack: 0,
2713 defense: 0,
2714 special_attack: -1,
2715 special_defense: 0,
2716 speed: 0,
2717 accuracy: 0,
2718 },
2719 }),
2720 ..Default::default()
2721 },
2722 );
2723 moves.insert(
2724 Choices::CONFUSERAY,
2725 Choice {
2726 move_id: Choices::CONFUSERAY,
2727 move_type: PokemonType::GHOST,
2728 flags: Flags {
2729 protect: true,
2730 reflectable: true,
2731 ..Default::default()
2732 },
2733 volatile_status: Some(VolatileStatus {
2734 target: MoveTarget::Opponent,
2735 volatile_status: PokemonVolatileStatus::CONFUSION,
2736 }),
2737 ..Default::default()
2738 },
2739 );
2740 moves.insert(
2741 Choices::CONFUSION,
2742 Choice {
2743 move_id: Choices::CONFUSION,
2744 base_power: 50.0,
2745 category: MoveCategory::Special,
2746 move_type: PokemonType::PSYCHIC,
2747 flags: Flags {
2748 protect: true,
2749 ..Default::default()
2750 },
2751 secondaries: Some(vec![Secondary {
2752 chance: 10.0,
2753 target: MoveTarget::Opponent,
2754 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2755 }]),
2756 ..Default::default()
2757 },
2758 );
2759 if cfg!(feature = "gen1") {
2760 moves.insert(
2761 Choices::CONSTRICT,
2762 Choice {
2763 move_id: Choices::CONSTRICT,
2764 base_power: 10.0,
2765 category: MoveCategory::Physical,
2766 move_type: PokemonType::NORMAL,
2767 flags: Flags {
2768 contact: true,
2769 protect: true,
2770 ..Default::default()
2771 },
2772 secondaries: Some(vec![Secondary {
2773 chance: 33.2,
2774 target: MoveTarget::Opponent,
2775 effect: Effect::Boost(StatBoosts {
2776 attack: 0,
2777 defense: 0,
2778 special_attack: 0,
2779 special_defense: 0,
2780 speed: -1,
2781 accuracy: 0,
2782 }),
2783 }]),
2784 ..Default::default()
2785 },
2786 );
2787 } else {
2788 moves.insert(
2789 Choices::CONSTRICT,
2790 Choice {
2791 move_id: Choices::CONSTRICT,
2792 base_power: 10.0,
2793 category: MoveCategory::Physical,
2794 move_type: PokemonType::NORMAL,
2795 flags: Flags {
2796 contact: true,
2797 protect: true,
2798 ..Default::default()
2799 },
2800 secondaries: Some(vec![Secondary {
2801 chance: 10.0,
2802 target: MoveTarget::Opponent,
2803 effect: Effect::Boost(StatBoosts {
2804 attack: 0,
2805 defense: 0,
2806 special_attack: 0,
2807 special_defense: 0,
2808 speed: -1,
2809 accuracy: 0,
2810 }),
2811 }]),
2812 ..Default::default()
2813 },
2814 );
2815 }
2816 moves.insert(
2817 Choices::CONVERSION,
2818 Choice {
2819 move_id: Choices::CONVERSION,
2820 target: MoveTarget::User,
2821 move_type: PokemonType::NORMAL,
2822 flags: Flags {
2823 ..Default::default()
2824 },
2825 ..Default::default()
2826 },
2827 );
2828 moves.insert(
2829 Choices::CONVERSION2,
2830 Choice {
2831 move_id: Choices::CONVERSION2,
2832 move_type: PokemonType::NORMAL,
2833 flags: Flags {
2834 ..Default::default()
2835 },
2836 ..Default::default()
2837 },
2838 );
2839 moves.insert(
2840 Choices::COPYCAT,
2841 Choice {
2842 move_id: Choices::COPYCAT,
2843 target: MoveTarget::User,
2844 move_type: PokemonType::NORMAL,
2845 flags: Flags {
2846 ..Default::default()
2847 },
2848 ..Default::default()
2849 },
2850 );
2851 moves.insert(
2852 Choices::COREENFORCER,
2853 Choice {
2854 move_id: Choices::COREENFORCER,
2855 base_power: 100.0,
2856 category: MoveCategory::Special,
2857 move_type: PokemonType::DRAGON,
2858 flags: Flags {
2859 protect: true,
2860 ..Default::default()
2861 },
2862 ..Default::default()
2863 },
2864 );
2865 moves.insert(
2866 Choices::CORROSIVEGAS,
2867 Choice {
2868 move_id: Choices::CORROSIVEGAS,
2869 move_type: PokemonType::POISON,
2870 flags: Flags {
2871 protect: true,
2872 reflectable: true,
2873 ..Default::default()
2874 },
2875 ..Default::default()
2876 },
2877 );
2878 moves.insert(
2879 Choices::COSMICPOWER,
2880 Choice {
2881 move_id: Choices::COSMICPOWER,
2882 target: MoveTarget::User,
2883 move_type: PokemonType::PSYCHIC,
2884 flags: Flags {
2885 ..Default::default()
2886 },
2887 boost: Some(Boost {
2888 target: MoveTarget::User,
2889 boosts: StatBoosts {
2890 attack: 0,
2891 defense: 1,
2892 special_attack: 0,
2893 special_defense: 1,
2894 speed: 0,
2895 accuracy: 0,
2896 },
2897 }),
2898 ..Default::default()
2899 },
2900 );
2901 moves.insert(
2902 Choices::COTTONGUARD,
2903 Choice {
2904 move_id: Choices::COTTONGUARD,
2905 target: MoveTarget::User,
2906 move_type: PokemonType::GRASS,
2907 flags: Flags {
2908 ..Default::default()
2909 },
2910 boost: Some(Boost {
2911 target: MoveTarget::User,
2912 boosts: StatBoosts {
2913 attack: 0,
2914 defense: 3,
2915 special_attack: 0,
2916 special_defense: 0,
2917 speed: 0,
2918 accuracy: 0,
2919 },
2920 }),
2921 ..Default::default()
2922 },
2923 );
2924 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2925 moves.insert(
2926 Choices::COTTONSPORE,
2927 Choice {
2928 move_id: Choices::COTTONSPORE,
2929 accuracy: 85.0,
2930 move_type: PokemonType::GRASS,
2931 flags: Flags {
2932 powder: true,
2933 protect: true,
2934 reflectable: true,
2935 ..Default::default()
2936 },
2937 boost: Some(Boost {
2938 target: MoveTarget::Opponent,
2939 boosts: StatBoosts {
2940 attack: 0,
2941 defense: 0,
2942 special_attack: 0,
2943 special_defense: 0,
2944 speed: -2,
2945 accuracy: 0,
2946 },
2947 }),
2948 ..Default::default()
2949 },
2950 );
2951 } else {
2952 moves.insert(
2953 Choices::COTTONSPORE,
2954 Choice {
2955 move_id: Choices::COTTONSPORE,
2956 move_type: PokemonType::GRASS,
2957 flags: Flags {
2958 powder: true,
2959 protect: true,
2960 reflectable: true,
2961 ..Default::default()
2962 },
2963 boost: Some(Boost {
2964 target: MoveTarget::Opponent,
2965 boosts: StatBoosts {
2966 attack: 0,
2967 defense: 0,
2968 special_attack: 0,
2969 special_defense: 0,
2970 speed: -2,
2971 accuracy: 0,
2972 },
2973 }),
2974 ..Default::default()
2975 },
2976 );
2977 }
2978 moves.insert(
2979 Choices::COUNTER,
2980 Choice {
2981 move_id: Choices::COUNTER,
2982 category: MoveCategory::Physical,
2983 priority: -5,
2984 move_type: PokemonType::FIGHTING,
2985 flags: Flags {
2986 contact: true,
2987 protect: true,
2988 ..Default::default()
2989 },
2990 ..Default::default()
2991 },
2992 );
2993 moves.insert(
2994 Choices::COURTCHANGE,
2995 Choice {
2996 move_id: Choices::COURTCHANGE,
2997 move_type: PokemonType::NORMAL,
2998 flags: Flags {
2999 ..Default::default()
3000 },
3001 ..Default::default()
3002 },
3003 );
3004 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3005 moves.insert(
3006 Choices::COVET,
3007 Choice {
3008 move_id: Choices::COVET,
3009 base_power: 40.0,
3010 category: MoveCategory::Physical,
3011 move_type: PokemonType::NORMAL,
3012 flags: Flags {
3013 contact: true,
3014 protect: true,
3015 ..Default::default()
3016 },
3017 ..Default::default()
3018 },
3019 );
3020 } else {
3021 moves.insert(
3022 Choices::COVET,
3023 Choice {
3024 move_id: Choices::COVET,
3025 base_power: 60.0,
3026 category: MoveCategory::Physical,
3027 move_type: PokemonType::NORMAL,
3028 flags: Flags {
3029 contact: true,
3030 protect: true,
3031 ..Default::default()
3032 },
3033 ..Default::default()
3034 },
3035 );
3036 }
3037 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
3038 moves.insert(
3039 Choices::CRABHAMMER,
3040 Choice {
3041 move_id: Choices::CRABHAMMER,
3042 accuracy: 85.0,
3043 base_power: 90.0,
3044 category: MoveCategory::Physical,
3045 move_type: PokemonType::WATER,
3046 flags: Flags {
3047 contact: true,
3048 protect: true,
3049 ..Default::default()
3050 },
3051 ..Default::default()
3052 },
3053 );
3054 } else {
3055 moves.insert(
3056 Choices::CRABHAMMER,
3057 Choice {
3058 move_id: Choices::CRABHAMMER,
3059 accuracy: 90.0,
3060 base_power: 100.0,
3061 category: MoveCategory::Physical,
3062 move_type: PokemonType::WATER,
3063 flags: Flags {
3064 contact: true,
3065 protect: true,
3066 ..Default::default()
3067 },
3068 ..Default::default()
3069 },
3070 );
3071 }
3072 moves.insert(
3073 Choices::CRAFTYSHIELD,
3074 Choice {
3075 move_id: Choices::CRAFTYSHIELD,
3076 priority: 3,
3077 target: MoveTarget::User,
3078 move_type: PokemonType::FAIRY,
3079 flags: Flags {
3080 ..Default::default()
3081 },
3082 side_condition: Some(SideCondition {
3083 target: MoveTarget::User,
3084 condition: PokemonSideCondition::CraftyShield,
3085 }),
3086 ..Default::default()
3087 },
3088 );
3089 moves.insert(
3090 Choices::CROSSCHOP,
3091 Choice {
3092 move_id: Choices::CROSSCHOP,
3093 accuracy: 80.0,
3094 base_power: 100.0,
3095 category: MoveCategory::Physical,
3096 move_type: PokemonType::FIGHTING,
3097 flags: Flags {
3098 contact: true,
3099 protect: true,
3100 ..Default::default()
3101 },
3102 ..Default::default()
3103 },
3104 );
3105 moves.insert(
3106 Choices::CROSSPOISON,
3107 Choice {
3108 move_id: Choices::CROSSPOISON,
3109 base_power: 70.0,
3110 category: MoveCategory::Physical,
3111 move_type: PokemonType::POISON,
3112 flags: Flags {
3113 contact: true,
3114 protect: true,
3115 slicing: true,
3116 ..Default::default()
3117 },
3118 secondaries: Some(vec![Secondary {
3119 chance: 10.0,
3120 target: MoveTarget::Opponent,
3121 effect: Effect::Status(PokemonStatus::POISON),
3122 }]),
3123 ..Default::default()
3124 },
3125 );
3126 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3127 moves.insert(
3128 Choices::CRUNCH,
3129 Choice {
3130 move_id: Choices::CRUNCH,
3131 base_power: 80.0,
3132 category: MoveCategory::Physical,
3133 move_type: PokemonType::DARK,
3134 flags: Flags {
3135 bite: true,
3136 contact: true,
3137 protect: true,
3138 ..Default::default()
3139 },
3140 secondaries: Some(vec![Secondary {
3141 chance: 20.0,
3142 target: MoveTarget::Opponent,
3143 effect: Effect::Boost(StatBoosts {
3144 attack: 0,
3145 defense: 0,
3146 special_attack: 0,
3147 special_defense: -1,
3148 speed: 0,
3149 accuracy: 0,
3150 }),
3151 }]),
3152 ..Default::default()
3153 },
3154 );
3155 }
3156 else {
3157 moves.insert(
3158 Choices::CRUNCH,
3159 Choice {
3160 move_id: Choices::CRUNCH,
3161 base_power: 80.0,
3162 category: MoveCategory::Physical,
3163 move_type: PokemonType::DARK,
3164 flags: Flags {
3165 bite: true,
3166 contact: true,
3167 protect: true,
3168 ..Default::default()
3169 },
3170 secondaries: Some(vec![Secondary {
3171 chance: 20.0,
3172 target: MoveTarget::Opponent,
3173 effect: Effect::Boost(StatBoosts {
3174 attack: 0,
3175 defense: -1,
3176 special_attack: 0,
3177 special_defense: 0,
3178 speed: 0,
3179 accuracy: 0,
3180 }),
3181 }]),
3182 ..Default::default()
3183 },
3184 );
3185 }
3186 moves.insert(
3187 Choices::CRUSHCLAW,
3188 Choice {
3189 move_id: Choices::CRUSHCLAW,
3190 accuracy: 95.0,
3191 base_power: 75.0,
3192 category: MoveCategory::Physical,
3193 move_type: PokemonType::NORMAL,
3194 flags: Flags {
3195 contact: true,
3196 protect: true,
3197 ..Default::default()
3198 },
3199 secondaries: Some(vec![Secondary {
3200 chance: 50.0,
3201 target: MoveTarget::Opponent,
3202 effect: Effect::Boost(StatBoosts {
3203 attack: 0,
3204 defense: -1,
3205 special_attack: 0,
3206 special_defense: 0,
3207 speed: 0,
3208 accuracy: 0,
3209 }),
3210 }]),
3211 ..Default::default()
3212 },
3213 );
3214 moves.insert(
3215 Choices::CRUSHGRIP,
3216 Choice {
3217 move_id: Choices::CRUSHGRIP,
3218 category: MoveCategory::Physical,
3219 move_type: PokemonType::NORMAL,
3220 flags: Flags {
3221 contact: true,
3222 protect: true,
3223 ..Default::default()
3224 },
3225 ..Default::default()
3226 },
3227 );
3228 moves.insert(
3229 Choices::CURSE,
3230 Choice {
3231 move_id: Choices::CURSE,
3232 move_type: PokemonType::GHOST,
3233 flags: Flags {
3234 ..Default::default()
3235 },
3236 boost: Some(Boost {
3237 target: MoveTarget::User,
3238 boosts: StatBoosts {
3239 attack: 1,
3240 defense: 1,
3241 special_attack: 0,
3242 special_defense: 0,
3243 speed: -1,
3244 accuracy: 0,
3245 },
3246 }),
3247 volatile_status: Some(VolatileStatus {
3248 target: MoveTarget::User,
3249 volatile_status: PokemonVolatileStatus::CURSE,
3250 }),
3251 ..Default::default()
3252 },
3253 );
3254 moves.insert(
3255 Choices::CUT,
3256 Choice {
3257 move_id: Choices::CUT,
3258 accuracy: 95.0,
3259 base_power: 50.0,
3260 category: MoveCategory::Physical,
3261 move_type: PokemonType::NORMAL,
3262 flags: Flags {
3263 contact: true,
3264 protect: true,
3265 slicing: true,
3266 ..Default::default()
3267 },
3268 ..Default::default()
3269 },
3270 );
3271 moves.insert(
3272 Choices::DARKESTLARIAT,
3273 Choice {
3274 move_id: Choices::DARKESTLARIAT,
3275 base_power: 85.0,
3276 category: MoveCategory::Physical,
3277 move_type: PokemonType::DARK,
3278 flags: Flags {
3279 contact: true,
3280 protect: true,
3281 ..Default::default()
3282 },
3283 ..Default::default()
3284 },
3285 );
3286 moves.insert(
3287 Choices::DARKPULSE,
3288 Choice {
3289 move_id: Choices::DARKPULSE,
3290 base_power: 80.0,
3291 category: MoveCategory::Special,
3292 move_type: PokemonType::DARK,
3293 flags: Flags {
3294 protect: true,
3295 pulse: true,
3296 ..Default::default()
3297 },
3298 secondaries: Some(vec![Secondary {
3299 chance: 20.0,
3300 target: MoveTarget::Opponent,
3301 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
3302 }]),
3303 ..Default::default()
3304 },
3305 );
3306 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
3307 moves.insert(
3308 Choices::DARKVOID,
3309 Choice {
3310 move_id: Choices::DARKVOID,
3311 accuracy: 80.0,
3312 status: Some(Status {
3313 target: MoveTarget::Opponent,
3314 status: PokemonStatus::SLEEP,
3315 }),
3316 move_type: PokemonType::DARK,
3317 flags: Flags {
3318 protect: true,
3319 reflectable: true,
3320 ..Default::default()
3321 },
3322 ..Default::default()
3323 },
3324 );
3325 } else {
3326 moves.insert(
3327 Choices::DARKVOID,
3328 Choice {
3329 move_id: Choices::DARKVOID,
3330 accuracy: 50.0,
3331 status: Some(Status {
3332 target: MoveTarget::Opponent,
3333 status: PokemonStatus::SLEEP,
3334 }),
3335 move_type: PokemonType::DARK,
3336 flags: Flags {
3337 protect: true,
3338 reflectable: true,
3339 ..Default::default()
3340 },
3341 ..Default::default()
3342 },
3343 );
3344 }
3345 moves.insert(
3346 Choices::DAZZLINGGLEAM,
3347 Choice {
3348 move_id: Choices::DAZZLINGGLEAM,
3349 base_power: 80.0,
3350 category: MoveCategory::Special,
3351 move_type: PokemonType::FAIRY,
3352 flags: Flags {
3353 protect: true,
3354 ..Default::default()
3355 },
3356 ..Default::default()
3357 },
3358 );
3359 moves.insert(
3360 Choices::DECORATE,
3361 Choice {
3362 move_id: Choices::DECORATE,
3363 move_type: PokemonType::FAIRY,
3364 flags: Flags {
3365 ..Default::default()
3366 },
3367 boost: Some(Boost {
3368 target: MoveTarget::Opponent,
3369 boosts: StatBoosts {
3370 attack: 2,
3371 defense: 0,
3372 special_attack: 2,
3373 special_defense: 0,
3374 speed: 0,
3375 accuracy: 0,
3376 },
3377 }),
3378 ..Default::default()
3379 },
3380 );
3381 moves.insert(
3382 Choices::DEFENDORDER,
3383 Choice {
3384 move_id: Choices::DEFENDORDER,
3385 target: MoveTarget::User,
3386 move_type: PokemonType::BUG,
3387 flags: Flags {
3388 ..Default::default()
3389 },
3390 boost: Some(Boost {
3391 target: MoveTarget::User,
3392 boosts: StatBoosts {
3393 attack: 0,
3394 defense: 1,
3395 special_attack: 0,
3396 special_defense: 1,
3397 speed: 0,
3398 accuracy: 0,
3399 },
3400 }),
3401 ..Default::default()
3402 },
3403 );
3404 moves.insert(
3405 Choices::DEFENSECURL,
3406 Choice {
3407 move_id: Choices::DEFENSECURL,
3408 target: MoveTarget::User,
3409 move_type: PokemonType::NORMAL,
3410 flags: Flags {
3411 ..Default::default()
3412 },
3413 boost: Some(Boost {
3414 target: MoveTarget::User,
3415 boosts: StatBoosts {
3416 attack: 0,
3417 defense: 1,
3418 special_attack: 0,
3419 special_defense: 0,
3420 speed: 0,
3421 accuracy: 0,
3422 },
3423 }),
3424 volatile_status: Some(VolatileStatus {
3425 target: MoveTarget::User,
3426 volatile_status: PokemonVolatileStatus::DEFENSECURL,
3427 }),
3428 ..Default::default()
3429 },
3430 );
3431 moves.insert(
3432 Choices::DEFOG,
3433 Choice {
3434 move_id: Choices::DEFOG,
3435 move_type: PokemonType::FLYING,
3436 flags: Flags {
3437 protect: true,
3438 reflectable: true,
3439 ..Default::default()
3440 },
3441 boost: Some(Boost {
3442 target: MoveTarget::Opponent,
3443 boosts: StatBoosts {
3444 attack: 0,
3445 defense: 0,
3446 special_attack: 0,
3447 special_defense: 0,
3448 speed: 0,
3449 accuracy: 0,
3450 },
3451 }),
3452 ..Default::default()
3453 },
3454 );
3455 moves.insert(
3456 Choices::DESTINYBOND,
3457 Choice {
3458 move_id: Choices::DESTINYBOND,
3459 target: MoveTarget::User,
3460 move_type: PokemonType::GHOST,
3461 flags: Flags {
3462 ..Default::default()
3463 },
3464 volatile_status: Some(VolatileStatus {
3465 target: MoveTarget::User,
3466 volatile_status: PokemonVolatileStatus::DESTINYBOND,
3467 }),
3468 ..Default::default()
3469 },
3470 );
3471 moves.insert(
3472 Choices::DETECT,
3473 Choice {
3474 move_id: Choices::DETECT,
3475 priority: 4,
3476 target: MoveTarget::User,
3477 move_type: PokemonType::FIGHTING,
3478 flags: Flags {
3479 ..Default::default()
3480 },
3481 volatile_status: Some(VolatileStatus {
3482 target: MoveTarget::User,
3483 volatile_status: PokemonVolatileStatus::PROTECT,
3484 }),
3485 ..Default::default()
3486 },
3487 );
3488
3489 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
3490 moves.insert(
3491 Choices::DIAMONDSTORM,
3492 Choice {
3493 move_id: Choices::DIAMONDSTORM,
3494 accuracy: 95.0,
3495 base_power: 100.0,
3496 category: MoveCategory::Physical,
3497 move_type: PokemonType::ROCK,
3498 flags: Flags {
3499 protect: true,
3500 ..Default::default()
3501 },
3502 secondaries: Some(vec![Secondary {
3503 chance: 50.0,
3504 target: MoveTarget::User,
3505 effect: Effect::Boost(StatBoosts {
3506 attack: 0,
3507 defense: 1,
3508 special_attack: 0,
3509 special_defense: 0,
3510 speed: 0,
3511 accuracy: 0,
3512 }),
3513 }]),
3514 ..Default::default()
3515 },
3516 );
3517 } else {
3518 moves.insert(
3519 Choices::DIAMONDSTORM,
3520 Choice {
3521 move_id: Choices::DIAMONDSTORM,
3522 accuracy: 95.0,
3523 base_power: 100.0,
3524 category: MoveCategory::Physical,
3525 move_type: PokemonType::ROCK,
3526 flags: Flags {
3527 protect: true,
3528 ..Default::default()
3529 },
3530 secondaries: Some(vec![Secondary {
3531 chance: 50.0,
3532 target: MoveTarget::User,
3533 effect: Effect::Boost(StatBoosts {
3534 attack: 0,
3535 defense: 2,
3536 special_attack: 0,
3537 special_defense: 0,
3538 speed: 0,
3539 accuracy: 0,
3540 }),
3541 }]),
3542 ..Default::default()
3543 },
3544 );
3545 }
3546 if cfg!(feature = "gen1") {
3547 moves.insert(
3548 Choices::DIG,
3549 Choice {
3550 move_id: Choices::DIG,
3551 base_power: 100.0,
3552 category: MoveCategory::Physical,
3553 move_type: PokemonType::GROUND,
3554 flags: Flags {
3555 charge: true,
3556 contact: true,
3557 protect: true,
3558 ..Default::default()
3559 },
3560 ..Default::default()
3561 },
3562 );
3563 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3564 moves.insert(
3565 Choices::DIG,
3566 Choice {
3567 move_id: Choices::DIG,
3568 base_power: 60.0,
3569 category: MoveCategory::Physical,
3570 move_type: PokemonType::GROUND,
3571 flags: Flags {
3572 charge: true,
3573 contact: true,
3574 protect: true,
3575 ..Default::default()
3576 },
3577 ..Default::default()
3578 },
3579 );
3580 } else {
3581 moves.insert(
3582 Choices::DIG,
3583 Choice {
3584 move_id: Choices::DIG,
3585 base_power: 80.0,
3586 category: MoveCategory::Physical,
3587 move_type: PokemonType::GROUND,
3588 flags: Flags {
3589 charge: true,
3590 contact: true,
3591 protect: true,
3592 ..Default::default()
3593 },
3594 ..Default::default()
3595 },
3596 );
3597 }
3598 moves.insert(
3599 Choices::DIRECLAW,
3600 Choice {
3601 move_id: Choices::DIRECLAW,
3602 base_power: 80.0,
3603 category: MoveCategory::Physical,
3604 move_type: PokemonType::POISON,
3605 flags: Flags {
3606 contact: true,
3607 protect: true,
3608 ..Default::default()
3609 },
3610 ..Default::default()
3611 },
3612 );
3613 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3614 moves.insert(
3615 Choices::DISABLE,
3616 Choice {
3617 move_id: Choices::DISABLE,
3618 accuracy: 80.0,
3619 move_type: PokemonType::NORMAL,
3620 flags: Flags {
3621 protect: true,
3622 reflectable: true,
3623 ..Default::default()
3624 },
3625 volatile_status: Some(VolatileStatus {
3626 target: MoveTarget::Opponent,
3627 volatile_status: PokemonVolatileStatus::DISABLE,
3628 }),
3629 ..Default::default()
3630 },
3631 );
3632 } else {
3633 moves.insert(
3634 Choices::DISABLE,
3635 Choice {
3636 move_id: Choices::DISABLE,
3637 move_type: PokemonType::NORMAL,
3638 flags: Flags {
3639 protect: true,
3640 reflectable: true,
3641 ..Default::default()
3642 },
3643 volatile_status: Some(VolatileStatus {
3644 target: MoveTarget::Opponent,
3645 volatile_status: PokemonVolatileStatus::DISABLE,
3646 }),
3647 ..Default::default()
3648 },
3649 );
3650 }
3651 moves.insert(
3652 Choices::DISARMINGVOICE,
3653 Choice {
3654 move_id: Choices::DISARMINGVOICE,
3655 base_power: 40.0,
3656 category: MoveCategory::Special,
3657 move_type: PokemonType::FAIRY,
3658 flags: Flags {
3659 protect: true,
3660 sound: true,
3661 ..Default::default()
3662 },
3663 ..Default::default()
3664 },
3665 );
3666 moves.insert(
3667 Choices::DISCHARGE,
3668 Choice {
3669 move_id: Choices::DISCHARGE,
3670 base_power: 80.0,
3671 category: MoveCategory::Special,
3672 move_type: PokemonType::ELECTRIC,
3673 flags: Flags {
3674 protect: true,
3675 ..Default::default()
3676 },
3677 secondaries: Some(vec![Secondary {
3678 chance: 30.0,
3679 target: MoveTarget::Opponent,
3680 effect: Effect::Status(PokemonStatus::PARALYZE),
3681 }]),
3682 ..Default::default()
3683 },
3684 );
3685 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3686 moves.insert(
3687 Choices::DIVE,
3688 Choice {
3689 move_id: Choices::DIVE,
3690 base_power: 60.0,
3691 category: MoveCategory::Physical,
3692 move_type: PokemonType::WATER,
3693 flags: Flags {
3694 charge: true,
3695 contact: true,
3696 protect: true,
3697 ..Default::default()
3698 },
3699 ..Default::default()
3700 },
3701 );
3702 } else {
3703 moves.insert(
3704 Choices::DIVE,
3705 Choice {
3706 move_id: Choices::DIVE,
3707 base_power: 80.0,
3708 category: MoveCategory::Physical,
3709 move_type: PokemonType::WATER,
3710 flags: Flags {
3711 charge: true,
3712 contact: true,
3713 protect: true,
3714 ..Default::default()
3715 },
3716 ..Default::default()
3717 },
3718 );
3719 }
3720 if cfg!(feature = "gen1") {
3721 moves.insert(
3722 Choices::DIZZYPUNCH,
3723 Choice {
3724 move_id: Choices::DIZZYPUNCH,
3725 base_power: 70.0,
3726 category: MoveCategory::Physical,
3727 move_type: PokemonType::NORMAL,
3728 flags: Flags {
3729 contact: true,
3730 protect: true,
3731 punch: true,
3732 ..Default::default()
3733 },
3734 ..Default::default()
3735 },
3736 );
3737 } else {
3738 moves.insert(
3739 Choices::DIZZYPUNCH,
3740 Choice {
3741 move_id: Choices::DIZZYPUNCH,
3742 base_power: 70.0,
3743 category: MoveCategory::Physical,
3744 move_type: PokemonType::NORMAL,
3745 flags: Flags {
3746 contact: true,
3747 protect: true,
3748 punch: true,
3749 ..Default::default()
3750 },
3751 secondaries: Some(vec![Secondary {
3752 chance: 20.0,
3753 target: MoveTarget::Opponent,
3754 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
3755 }]),
3756 ..Default::default()
3757 },
3758 );
3759 }
3760 moves.insert(
3761 Choices::DOODLE,
3762 Choice {
3763 move_id: Choices::DOODLE,
3764 move_type: PokemonType::NORMAL,
3765 flags: Flags {
3766 ..Default::default()
3767 },
3768 ..Default::default()
3769 },
3770 );
3771 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3772 moves.insert(
3773 Choices::DOOMDESIRE,
3774 Choice {
3775 move_id: Choices::DOOMDESIRE,
3776 accuracy: 85.0,
3777 base_power: 120.0,
3778 category: MoveCategory::Special,
3779 move_type: PokemonType::STEEL,
3780 flags: Flags {
3781 ..Default::default()
3782 },
3783 ..Default::default()
3784 },
3785 );
3786 } else {
3787 moves.insert(
3788 Choices::DOOMDESIRE,
3789 Choice {
3790 move_id: Choices::DOOMDESIRE,
3791 base_power: 140.0,
3792 category: MoveCategory::Special,
3793 move_type: PokemonType::STEEL,
3794 flags: Flags {
3795 ..Default::default()
3796 },
3797 ..Default::default()
3798 },
3799 );
3800 }
3801 if cfg!(feature = "gen1") {
3802 moves.insert(
3803 Choices::DOUBLEEDGE,
3804 Choice {
3805 move_id: Choices::DOUBLEEDGE,
3806 base_power: 100.0,
3807 category: MoveCategory::Physical,
3808 move_type: PokemonType::NORMAL,
3809 flags: Flags {
3810 contact: true,
3811 protect: true,
3812 ..Default::default()
3813 },
3814 recoil: Some(0.33),
3815 ..Default::default()
3816 },
3817 );
3818 } else {
3819 moves.insert(
3820 Choices::DOUBLEEDGE,
3821 Choice {
3822 move_id: Choices::DOUBLEEDGE,
3823 base_power: 120.0,
3824 category: MoveCategory::Physical,
3825 move_type: PokemonType::NORMAL,
3826 flags: Flags {
3827 contact: true,
3828 protect: true,
3829 ..Default::default()
3830 },
3831 recoil: Some(0.33),
3832 ..Default::default()
3833 },
3834 );
3835 }
3836 moves.insert(
3837 Choices::DOUBLEHIT,
3838 Choice {
3839 move_id: Choices::DOUBLEHIT,
3840 accuracy: 90.0,
3841 base_power: 35.0,
3842 category: MoveCategory::Physical,
3843 move_type: PokemonType::NORMAL,
3844 flags: Flags {
3845 contact: true,
3846 protect: true,
3847 ..Default::default()
3848 },
3849 ..Default::default()
3850 },
3851 );
3852 moves.insert(
3853 Choices::DOUBLEIRONBASH,
3854 Choice {
3855 move_id: Choices::DOUBLEIRONBASH,
3856 base_power: 60.0,
3857 category: MoveCategory::Physical,
3858 move_type: PokemonType::STEEL,
3859 flags: Flags {
3860 contact: true,
3861 protect: true,
3862 punch: true,
3863 ..Default::default()
3864 },
3865 secondaries: Some(vec![Secondary {
3866 chance: 30.0,
3867 target: MoveTarget::Opponent,
3868 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
3869 }]),
3870 ..Default::default()
3871 },
3872 );
3873 moves.insert(
3874 Choices::DOUBLEKICK,
3875 Choice {
3876 move_id: Choices::DOUBLEKICK,
3877 base_power: 30.0,
3878 category: MoveCategory::Physical,
3879 move_type: PokemonType::FIGHTING,
3880 flags: Flags {
3881 contact: true,
3882 protect: true,
3883 ..Default::default()
3884 },
3885 ..Default::default()
3886 },
3887 );
3888 moves.insert(
3889 Choices::DOUBLESHOCK,
3890 Choice {
3891 move_id: Choices::DOUBLESHOCK,
3892 base_power: 120.0,
3893 category: MoveCategory::Physical,
3894 move_type: PokemonType::ELECTRIC,
3895 flags: Flags {
3896 contact: true,
3897 protect: true,
3898 ..Default::default()
3899 },
3900 ..Default::default()
3901 },
3902 );
3903 moves.insert(
3904 Choices::DOUBLESLAP,
3905 Choice {
3906 move_id: Choices::DOUBLESLAP,
3907 accuracy: 85.0,
3908 base_power: 15.0,
3909 category: MoveCategory::Physical,
3910 move_type: PokemonType::NORMAL,
3911 flags: Flags {
3912 contact: true,
3913 protect: true,
3914 ..Default::default()
3915 },
3916 ..Default::default()
3917 },
3918 );
3919 moves.insert(
3920 Choices::DOUBLETEAM,
3921 Choice {
3922 move_id: Choices::DOUBLETEAM,
3923 target: MoveTarget::User,
3924 move_type: PokemonType::NORMAL,
3925 flags: Flags {
3926 ..Default::default()
3927 },
3928 boost: Some(Boost {
3929 target: MoveTarget::User,
3930 boosts: StatBoosts {
3931 attack: 0,
3932 defense: 0,
3933 special_attack: 0,
3934 special_defense: 0,
3935 speed: 0,
3936 accuracy: 0,
3937 },
3938 }),
3939 ..Default::default()
3940 },
3941 );
3942 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
3943 moves.insert(
3944 Choices::DRACOMETEOR,
3945 Choice {
3946 move_id: Choices::DRACOMETEOR,
3947 accuracy: 90.0,
3948 base_power: 140.0,
3949 category: MoveCategory::Special,
3950 move_type: PokemonType::DRAGON,
3951 flags: Flags {
3952 protect: true,
3953 ..Default::default()
3954 },
3955 boost: Some(Boost {
3956 target: MoveTarget::User,
3957 boosts: StatBoosts {
3958 attack: 0,
3959 defense: 0,
3960 special_attack: -2,
3961 special_defense: 0,
3962 speed: 0,
3963 accuracy: 0,
3964 },
3965 }),
3966 ..Default::default()
3967 },
3968 );
3969 } else {
3970 moves.insert(
3971 Choices::DRACOMETEOR,
3972 Choice {
3973 move_id: Choices::DRACOMETEOR,
3974 accuracy: 90.0,
3975 base_power: 130.0,
3976 category: MoveCategory::Special,
3977 move_type: PokemonType::DRAGON,
3978 flags: Flags {
3979 protect: true,
3980 ..Default::default()
3981 },
3982 boost: Some(Boost {
3983 target: MoveTarget::User,
3984 boosts: StatBoosts {
3985 attack: 0,
3986 defense: 0,
3987 special_attack: -2,
3988 special_defense: 0,
3989 speed: 0,
3990 accuracy: 0,
3991 },
3992 }),
3993 ..Default::default()
3994 },
3995 );
3996 }
3997 moves.insert(
3998 Choices::DRAGONASCENT,
3999 Choice {
4000 move_id: Choices::DRAGONASCENT,
4001 base_power: 120.0,
4002 category: MoveCategory::Physical,
4003 move_type: PokemonType::FLYING,
4004 flags: Flags {
4005 contact: true,
4006 protect: true,
4007 ..Default::default()
4008 },
4009 boost: Some(Boost {
4010 target: MoveTarget::User,
4011 boosts: StatBoosts {
4012 attack: 0,
4013 defense: -1,
4014 special_attack: 0,
4015 special_defense: -1,
4016 speed: 0,
4017 accuracy: 0,
4018 },
4019 }),
4020 ..Default::default()
4021 },
4022 );
4023 moves.insert(
4024 Choices::DRAGONBREATH,
4025 Choice {
4026 move_id: Choices::DRAGONBREATH,
4027 base_power: 60.0,
4028 category: MoveCategory::Special,
4029 move_type: PokemonType::DRAGON,
4030 flags: Flags {
4031 protect: true,
4032 ..Default::default()
4033 },
4034 secondaries: Some(vec![Secondary {
4035 chance: 30.0,
4036 target: MoveTarget::Opponent,
4037 effect: Effect::Status(PokemonStatus::PARALYZE),
4038 }]),
4039 ..Default::default()
4040 },
4041 );
4042 moves.insert(
4043 Choices::DRAGONCHEER,
4044 Choice {
4045 move_id: Choices::DRAGONCHEER,
4046 base_power: 60.0,
4047 category: MoveCategory::Status,
4048 move_type: PokemonType::DRAGON,
4049 target: MoveTarget::User,
4050 flags: Flags {
4051 ..Default::default()
4052 },
4053 ..Default::default()
4054 },
4055 );
4056 moves.insert(
4057 Choices::DRAGONCLAW,
4058 Choice {
4059 move_id: Choices::DRAGONCLAW,
4060 base_power: 80.0,
4061 category: MoveCategory::Physical,
4062 move_type: PokemonType::DRAGON,
4063 flags: Flags {
4064 contact: true,
4065 protect: true,
4066 ..Default::default()
4067 },
4068 ..Default::default()
4069 },
4070 );
4071 moves.insert(
4072 Choices::DRAGONDANCE,
4073 Choice {
4074 move_id: Choices::DRAGONDANCE,
4075 target: MoveTarget::User,
4076 move_type: PokemonType::DRAGON,
4077 flags: Flags {
4078 ..Default::default()
4079 },
4080 boost: Some(Boost {
4081 target: MoveTarget::User,
4082 boosts: StatBoosts {
4083 attack: 1,
4084 defense: 0,
4085 special_attack: 0,
4086 special_defense: 0,
4087 speed: 1,
4088 accuracy: 0,
4089 },
4090 }),
4091 ..Default::default()
4092 },
4093 );
4094 moves.insert(
4095 Choices::DRAGONDARTS,
4096 Choice {
4097 move_id: Choices::DRAGONDARTS,
4098 base_power: 50.0,
4099 category: MoveCategory::Physical,
4100 move_type: PokemonType::DRAGON,
4101 flags: Flags {
4102 protect: true,
4103 ..Default::default()
4104 },
4105 ..Default::default()
4106 },
4107 );
4108 moves.insert(
4109 Choices::DRAGONENERGY,
4110 Choice {
4111 move_id: Choices::DRAGONENERGY,
4112 base_power: 150.0,
4113 category: MoveCategory::Special,
4114 move_type: PokemonType::DRAGON,
4115 flags: Flags {
4116 protect: true,
4117 ..Default::default()
4118 },
4119 ..Default::default()
4120 },
4121 );
4122 moves.insert(
4123 Choices::DRAGONHAMMER,
4124 Choice {
4125 move_id: Choices::DRAGONHAMMER,
4126 base_power: 90.0,
4127 category: MoveCategory::Physical,
4128 move_type: PokemonType::DRAGON,
4129 flags: Flags {
4130 contact: true,
4131 protect: true,
4132 ..Default::default()
4133 },
4134 ..Default::default()
4135 },
4136 );
4137 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
4138 moves.insert(
4139 Choices::DRAGONPULSE,
4140 Choice {
4141 move_id: Choices::DRAGONPULSE,
4142 base_power: 90.0,
4143 category: MoveCategory::Special,
4144 move_type: PokemonType::DRAGON,
4145 flags: Flags {
4146 protect: true,
4147 pulse: true,
4148 ..Default::default()
4149 },
4150 ..Default::default()
4151 },
4152 );
4153 } else {
4154 moves.insert(
4155 Choices::DRAGONPULSE,
4156 Choice {
4157 move_id: Choices::DRAGONPULSE,
4158 base_power: 85.0,
4159 category: MoveCategory::Special,
4160 move_type: PokemonType::DRAGON,
4161 flags: Flags {
4162 protect: true,
4163 pulse: true,
4164 ..Default::default()
4165 },
4166 ..Default::default()
4167 },
4168 );
4169 }
4170 moves.insert(
4171 Choices::DRAGONRAGE,
4172 Choice {
4173 move_id: Choices::DRAGONRAGE,
4174 category: MoveCategory::Special,
4175 move_type: PokemonType::DRAGON,
4176 flags: Flags {
4177 protect: true,
4178 ..Default::default()
4179 },
4180 ..Default::default()
4181 },
4182 );
4183 moves.insert(
4184 Choices::DRAGONRUSH,
4185 Choice {
4186 move_id: Choices::DRAGONRUSH,
4187 accuracy: 75.0,
4188 base_power: 100.0,
4189 category: MoveCategory::Physical,
4190 move_type: PokemonType::DRAGON,
4191 flags: Flags {
4192 contact: true,
4193 protect: true,
4194 ..Default::default()
4195 },
4196 secondaries: Some(vec![Secondary {
4197 chance: 20.0,
4198 target: MoveTarget::Opponent,
4199 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4200 }]),
4201 ..Default::default()
4202 },
4203 );
4204 moves.insert(
4205 Choices::DRAGONTAIL,
4206 Choice {
4207 move_id: Choices::DRAGONTAIL,
4208 accuracy: 90.0,
4209 base_power: 60.0,
4210 category: MoveCategory::Physical,
4211 priority: -6,
4212 move_type: PokemonType::DRAGON,
4213 flags: Flags {
4214 contact: true,
4215 drag: true,
4216 protect: true,
4217 ..Default::default()
4218 },
4219 ..Default::default()
4220 },
4221 );
4222 moves.insert(
4223 Choices::DRAININGKISS,
4224 Choice {
4225 move_id: Choices::DRAININGKISS,
4226 base_power: 50.0,
4227 category: MoveCategory::Special,
4228 move_type: PokemonType::FAIRY,
4229 flags: Flags {
4230 contact: true,
4231 heal: true,
4232 protect: true,
4233 ..Default::default()
4234 },
4235 drain: Some(0.75),
4236 ..Default::default()
4237 },
4238 );
4239 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
4240 moves.insert(
4241 Choices::DRAINPUNCH,
4242 Choice {
4243 move_id: Choices::DRAINPUNCH,
4244 base_power: 60.0,
4245 category: MoveCategory::Physical,
4246 move_type: PokemonType::FIGHTING,
4247 flags: Flags {
4248 contact: true,
4249 heal: true,
4250 protect: true,
4251 punch: true,
4252 ..Default::default()
4253 },
4254 drain: Some(0.5),
4255 ..Default::default()
4256 },
4257 );
4258 } else {
4259 moves.insert(
4260 Choices::DRAINPUNCH,
4261 Choice {
4262 move_id: Choices::DRAINPUNCH,
4263 base_power: 75.0,
4264 category: MoveCategory::Physical,
4265 move_type: PokemonType::FIGHTING,
4266 flags: Flags {
4267 contact: true,
4268 heal: true,
4269 protect: true,
4270 punch: true,
4271 ..Default::default()
4272 },
4273 drain: Some(0.5),
4274 ..Default::default()
4275 },
4276 );
4277 }
4278 moves.insert(
4279 Choices::DREAMEATER,
4280 Choice {
4281 move_id: Choices::DREAMEATER,
4282 base_power: 100.0,
4283 category: MoveCategory::Special,
4284 move_type: PokemonType::PSYCHIC,
4285 flags: Flags {
4286 heal: true,
4287 protect: true,
4288 ..Default::default()
4289 },
4290 drain: Some(0.5),
4291 ..Default::default()
4292 },
4293 );
4294 moves.insert(
4295 Choices::DRILLPECK,
4296 Choice {
4297 move_id: Choices::DRILLPECK,
4298 base_power: 80.0,
4299 category: MoveCategory::Physical,
4300 move_type: PokemonType::FLYING,
4301 flags: Flags {
4302 contact: true,
4303 protect: true,
4304 ..Default::default()
4305 },
4306 ..Default::default()
4307 },
4308 );
4309 moves.insert(
4310 Choices::DRILLRUN,
4311 Choice {
4312 move_id: Choices::DRILLRUN,
4313 accuracy: 95.0,
4314 base_power: 80.0,
4315 category: MoveCategory::Physical,
4316 move_type: PokemonType::GROUND,
4317 flags: Flags {
4318 contact: true,
4319 protect: true,
4320 ..Default::default()
4321 },
4322 ..Default::default()
4323 },
4324 );
4325 moves.insert(
4326 Choices::DRUMBEATING,
4327 Choice {
4328 move_id: Choices::DRUMBEATING,
4329 base_power: 80.0,
4330 category: MoveCategory::Physical,
4331 move_type: PokemonType::GRASS,
4332 flags: Flags {
4333 protect: true,
4334 ..Default::default()
4335 },
4336 secondaries: Some(vec![Secondary {
4337 chance: 100.0,
4338 target: MoveTarget::Opponent,
4339 effect: Effect::Boost(StatBoosts {
4340 attack: 0,
4341 defense: 0,
4342 special_attack: 0,
4343 special_defense: 0,
4344 speed: -1,
4345 accuracy: 0,
4346 }),
4347 }]),
4348 ..Default::default()
4349 },
4350 );
4351 moves.insert(
4352 Choices::DUALCHOP,
4353 Choice {
4354 move_id: Choices::DUALCHOP,
4355 accuracy: 90.0,
4356 base_power: 40.0,
4357 category: MoveCategory::Physical,
4358 move_type: PokemonType::DRAGON,
4359 flags: Flags {
4360 contact: true,
4361 protect: true,
4362 ..Default::default()
4363 },
4364 ..Default::default()
4365 },
4366 );
4367 moves.insert(
4368 Choices::DUALWINGBEAT,
4369 Choice {
4370 move_id: Choices::DUALWINGBEAT,
4371 accuracy: 90.0,
4372 base_power: 40.0,
4373 category: MoveCategory::Physical,
4374 move_type: PokemonType::FLYING,
4375 flags: Flags {
4376 contact: true,
4377 protect: true,
4378 ..Default::default()
4379 },
4380 ..Default::default()
4381 },
4382 );
4383 moves.insert(
4384 Choices::DYNAMAXCANNON,
4385 Choice {
4386 move_id: Choices::DYNAMAXCANNON,
4387 base_power: 100.0,
4388 category: MoveCategory::Special,
4389 move_type: PokemonType::DRAGON,
4390 flags: Flags {
4391 protect: true,
4392 ..Default::default()
4393 },
4394 ..Default::default()
4395 },
4396 );
4397 moves.insert(
4398 Choices::DYNAMICPUNCH,
4399 Choice {
4400 move_id: Choices::DYNAMICPUNCH,
4401 accuracy: 50.0,
4402 base_power: 100.0,
4403 category: MoveCategory::Physical,
4404 move_type: PokemonType::FIGHTING,
4405 flags: Flags {
4406 contact: true,
4407 protect: true,
4408 punch: true,
4409 ..Default::default()
4410 },
4411 secondaries: Some(vec![Secondary {
4412 chance: 100.0,
4413 target: MoveTarget::Opponent,
4414 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
4415 }]),
4416 ..Default::default()
4417 },
4418 );
4419 moves.insert(
4420 Choices::EARTHPOWER,
4421 Choice {
4422 move_id: Choices::EARTHPOWER,
4423 base_power: 90.0,
4424 category: MoveCategory::Special,
4425 move_type: PokemonType::GROUND,
4426 flags: Flags {
4427 protect: true,
4428 ..Default::default()
4429 },
4430 secondaries: Some(vec![Secondary {
4431 chance: 10.0,
4432 target: MoveTarget::Opponent,
4433 effect: Effect::Boost(StatBoosts {
4434 attack: 0,
4435 defense: 0,
4436 special_attack: 0,
4437 special_defense: -1,
4438 speed: 0,
4439 accuracy: 0,
4440 }),
4441 }]),
4442 ..Default::default()
4443 },
4444 );
4445 moves.insert(
4446 Choices::EARTHQUAKE,
4447 Choice {
4448 move_id: Choices::EARTHQUAKE,
4449 base_power: 100.0,
4450 category: MoveCategory::Physical,
4451 move_type: PokemonType::GROUND,
4452 flags: Flags {
4453 protect: true,
4454 ..Default::default()
4455 },
4456 ..Default::default()
4457 },
4458 );
4459 moves.insert(
4460 Choices::ECHOEDVOICE,
4461 Choice {
4462 move_id: Choices::ECHOEDVOICE,
4463 base_power: 40.0,
4464 category: MoveCategory::Special,
4465 move_type: PokemonType::NORMAL,
4466 flags: Flags {
4467 protect: true,
4468 sound: true,
4469 ..Default::default()
4470 },
4471 ..Default::default()
4472 },
4473 );
4474 moves.insert(
4475 Choices::EERIEIMPULSE,
4476 Choice {
4477 move_id: Choices::EERIEIMPULSE,
4478 move_type: PokemonType::ELECTRIC,
4479 flags: Flags {
4480 protect: true,
4481 reflectable: true,
4482 ..Default::default()
4483 },
4484 boost: Some(Boost {
4485 target: MoveTarget::Opponent,
4486 boosts: StatBoosts {
4487 attack: 0,
4488 defense: 0,
4489 special_attack: -2,
4490 special_defense: 0,
4491 speed: 0,
4492 accuracy: 0,
4493 },
4494 }),
4495 ..Default::default()
4496 },
4497 );
4498 moves.insert(
4499 Choices::EERIESPELL,
4500 Choice {
4501 move_id: Choices::EERIESPELL,
4502 base_power: 80.0,
4503 category: MoveCategory::Special,
4504 move_type: PokemonType::PSYCHIC,
4505 flags: Flags {
4506 protect: true,
4507 sound: true,
4508 ..Default::default()
4509 },
4510 ..Default::default()
4511 },
4512 );
4513 moves.insert(
4514 Choices::EGGBOMB,
4515 Choice {
4516 move_id: Choices::EGGBOMB,
4517 accuracy: 75.0,
4518 base_power: 100.0,
4519 category: MoveCategory::Physical,
4520 move_type: PokemonType::NORMAL,
4521 flags: Flags {
4522 bullet: true,
4523 protect: true,
4524 ..Default::default()
4525 },
4526 ..Default::default()
4527 },
4528 );
4529 moves.insert(
4530 Choices::ELECTRICTERRAIN,
4531 Choice {
4532 move_id: Choices::ELECTRICTERRAIN,
4533 move_type: PokemonType::ELECTRIC,
4534 flags: Flags {
4535 ..Default::default()
4536 },
4537 ..Default::default()
4538 },
4539 );
4540 moves.insert(
4541 Choices::ELECTRIFY,
4542 Choice {
4543 move_id: Choices::ELECTRIFY,
4544 move_type: PokemonType::ELECTRIC,
4545 flags: Flags {
4546 protect: true,
4547 ..Default::default()
4548 },
4549 volatile_status: Some(VolatileStatus {
4550 target: MoveTarget::Opponent,
4551 volatile_status: PokemonVolatileStatus::ELECTRIFY,
4552 }),
4553 ..Default::default()
4554 },
4555 );
4556 moves.insert(
4557 Choices::ELECTROBALL,
4558 Choice {
4559 move_id: Choices::ELECTROBALL,
4560 category: MoveCategory::Special,
4561 move_type: PokemonType::ELECTRIC,
4562 flags: Flags {
4563 bullet: true,
4564 protect: true,
4565 ..Default::default()
4566 },
4567 ..Default::default()
4568 },
4569 );
4570 moves.insert(
4571 Choices::ELECTRODRIFT,
4572 Choice {
4573 move_id: Choices::ELECTRODRIFT,
4574 base_power: 100.0,
4575 category: MoveCategory::Special,
4576 move_type: PokemonType::ELECTRIC,
4577 flags: Flags {
4578 contact: true,
4579 protect: true,
4580 ..Default::default()
4581 },
4582 ..Default::default()
4583 },
4584 );
4585 moves.insert(
4586 Choices::ELECTROSHOT,
4587 Choice {
4588 move_id: Choices::ELECTROSHOT,
4589 base_power: 130.0,
4590 category: MoveCategory::Special,
4591 move_type: PokemonType::ELECTRIC,
4592 flags: Flags {
4593 charge: true,
4594 protect: true,
4595 ..Default::default()
4596 },
4597 ..Default::default()
4598 },
4599 );
4600 moves.insert(
4601 Choices::ELECTROWEB,
4602 Choice {
4603 move_id: Choices::ELECTROWEB,
4604 accuracy: 95.0,
4605 base_power: 55.0,
4606 category: MoveCategory::Special,
4607 move_type: PokemonType::ELECTRIC,
4608 flags: Flags {
4609 protect: true,
4610 ..Default::default()
4611 },
4612 secondaries: Some(vec![Secondary {
4613 chance: 100.0,
4614 target: MoveTarget::Opponent,
4615 effect: Effect::Boost(StatBoosts {
4616 attack: 0,
4617 defense: 0,
4618 special_attack: 0,
4619 special_defense: 0,
4620 speed: -1,
4621 accuracy: 0,
4622 }),
4623 }]),
4624 ..Default::default()
4625 },
4626 );
4627 moves.insert(
4628 Choices::EMBARGO,
4629 Choice {
4630 move_id: Choices::EMBARGO,
4631 move_type: PokemonType::DARK,
4632 flags: Flags {
4633 protect: true,
4634 reflectable: true,
4635 ..Default::default()
4636 },
4637 volatile_status: Some(VolatileStatus {
4638 target: MoveTarget::Opponent,
4639 volatile_status: PokemonVolatileStatus::EMBARGO,
4640 }),
4641 ..Default::default()
4642 },
4643 );
4644 moves.insert(
4645 Choices::EMBER,
4646 Choice {
4647 move_id: Choices::EMBER,
4648 base_power: 40.0,
4649 category: MoveCategory::Special,
4650 move_type: PokemonType::FIRE,
4651 flags: Flags {
4652 protect: true,
4653 ..Default::default()
4654 },
4655 secondaries: Some(vec![Secondary {
4656 chance: 10.0,
4657 target: MoveTarget::Opponent,
4658 effect: Effect::Status(PokemonStatus::BURN),
4659 }]),
4660 ..Default::default()
4661 },
4662 );
4663 moves.insert(
4664 Choices::ENCORE,
4665 Choice {
4666 move_id: Choices::ENCORE,
4667 move_type: PokemonType::NORMAL,
4668 flags: Flags {
4669 protect: true,
4670 reflectable: true,
4671 ..Default::default()
4672 },
4673 volatile_status: Some(VolatileStatus {
4674 target: MoveTarget::Opponent,
4675 volatile_status: PokemonVolatileStatus::ENCORE,
4676 }),
4677 ..Default::default()
4678 },
4679 );
4680 moves.insert(
4681 Choices::ENDEAVOR,
4682 Choice {
4683 move_id: Choices::ENDEAVOR,
4684 category: MoveCategory::Physical,
4685 move_type: PokemonType::NORMAL,
4686 flags: Flags {
4687 contact: true,
4688 protect: true,
4689 ..Default::default()
4690 },
4691 ..Default::default()
4692 },
4693 );
4694 moves.insert(
4695 Choices::ENDURE,
4696 Choice {
4697 move_id: Choices::ENDURE,
4698 priority: 4,
4699 target: MoveTarget::User,
4700 move_type: PokemonType::NORMAL,
4701 flags: Flags {
4702 ..Default::default()
4703 },
4704 volatile_status: Some(VolatileStatus {
4705 target: MoveTarget::User,
4706 volatile_status: PokemonVolatileStatus::ENDURE,
4707 }),
4708 ..Default::default()
4709 },
4710 );
4711 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
4712 moves.insert(
4713 Choices::ENERGYBALL,
4714 Choice {
4715 move_id: Choices::ENERGYBALL,
4716 base_power: 80.0,
4717 category: MoveCategory::Special,
4718 move_type: PokemonType::GRASS,
4719 flags: Flags {
4720 bullet: true,
4721 protect: true,
4722 ..Default::default()
4723 },
4724 secondaries: Some(vec![Secondary {
4725 chance: 10.0,
4726 target: MoveTarget::Opponent,
4727 effect: Effect::Boost(StatBoosts {
4728 attack: 0,
4729 defense: 0,
4730 special_attack: 0,
4731 special_defense: -1,
4732 speed: 0,
4733 accuracy: 0,
4734 }),
4735 }]),
4736 ..Default::default()
4737 },
4738 );
4739 } else {
4740 moves.insert(
4741 Choices::ENERGYBALL,
4742 Choice {
4743 move_id: Choices::ENERGYBALL,
4744 base_power: 90.0,
4745 category: MoveCategory::Special,
4746 move_type: PokemonType::GRASS,
4747 flags: Flags {
4748 bullet: true,
4749 protect: true,
4750 ..Default::default()
4751 },
4752 secondaries: Some(vec![Secondary {
4753 chance: 10.0,
4754 target: MoveTarget::Opponent,
4755 effect: Effect::Boost(StatBoosts {
4756 attack: 0,
4757 defense: 0,
4758 special_attack: 0,
4759 special_defense: -1,
4760 speed: 0,
4761 accuracy: 0,
4762 }),
4763 }]),
4764 ..Default::default()
4765 },
4766 );
4767 }
4768 moves.insert(
4769 Choices::ENTRAINMENT,
4770 Choice {
4771 move_id: Choices::ENTRAINMENT,
4772 move_type: PokemonType::NORMAL,
4773 flags: Flags {
4774 protect: true,
4775 reflectable: true,
4776 ..Default::default()
4777 },
4778 ..Default::default()
4779 },
4780 );
4781 moves.insert(
4782 Choices::ERUPTION,
4783 Choice {
4784 move_id: Choices::ERUPTION,
4785 base_power: 150.0,
4786 category: MoveCategory::Special,
4787 move_type: PokemonType::FIRE,
4788 flags: Flags {
4789 protect: true,
4790 ..Default::default()
4791 },
4792 ..Default::default()
4793 },
4794 );
4795 moves.insert(
4796 Choices::ESPERWING,
4797 Choice {
4798 move_id: Choices::ESPERWING,
4799 base_power: 80.0,
4800 category: MoveCategory::Special,
4801 move_type: PokemonType::PSYCHIC,
4802 flags: Flags {
4803 protect: true,
4804 ..Default::default()
4805 },
4806 secondaries: Some(vec![Secondary {
4807 chance: 100.0,
4808 target: MoveTarget::User,
4809 effect: Effect::Boost(StatBoosts {
4810 attack: 0,
4811 defense: 0,
4812 special_attack: 0,
4813 special_defense: 0,
4814 speed: 1,
4815 accuracy: 0,
4816 }),
4817 }]),
4818 ..Default::default()
4819 },
4820 );
4821 moves.insert(
4822 Choices::ETERNABEAM,
4823 Choice {
4824 move_id: Choices::ETERNABEAM,
4825 accuracy: 90.0,
4826 base_power: 160.0,
4827 category: MoveCategory::Special,
4828 move_type: PokemonType::DRAGON,
4829 flags: Flags {
4830 protect: true,
4831 recharge: true,
4832 ..Default::default()
4833 },
4834 ..Default::default()
4835 },
4836 );
4837 moves.insert(
4838 Choices::EXPANDINGFORCE,
4839 Choice {
4840 move_id: Choices::EXPANDINGFORCE,
4841 base_power: 80.0,
4842 category: MoveCategory::Special,
4843 move_type: PokemonType::PSYCHIC,
4844 flags: Flags {
4845 protect: true,
4846 ..Default::default()
4847 },
4848 ..Default::default()
4849 },
4850 );
4851 if cfg!(feature = "gen1") {
4852 moves.insert(
4853 Choices::EXPLOSION,
4854 Choice {
4855 move_id: Choices::EXPLOSION,
4856 base_power: 170.0,
4857 category: MoveCategory::Physical,
4858 move_type: PokemonType::NORMAL,
4859 flags: Flags {
4860 protect: true,
4861 ..Default::default()
4862 },
4863 ..Default::default()
4864 },
4865 );
4866 } else {
4867 moves.insert(
4868 Choices::EXPLOSION,
4869 Choice {
4870 move_id: Choices::EXPLOSION,
4871 base_power: 250.0,
4872 category: MoveCategory::Physical,
4873 move_type: PokemonType::NORMAL,
4874 flags: Flags {
4875 protect: true,
4876 ..Default::default()
4877 },
4878 ..Default::default()
4879 },
4880 );
4881 }
4882 moves.insert(
4883 Choices::EXTRASENSORY,
4884 Choice {
4885 move_id: Choices::EXTRASENSORY,
4886 base_power: 80.0,
4887 category: MoveCategory::Special,
4888 move_type: PokemonType::PSYCHIC,
4889 flags: Flags {
4890 protect: true,
4891 ..Default::default()
4892 },
4893 secondaries: Some(vec![Secondary {
4894 chance: 10.0,
4895 target: MoveTarget::Opponent,
4896 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4897 }]),
4898 ..Default::default()
4899 },
4900 );
4901 moves.insert(
4902 Choices::EXTREMESPEED,
4903 Choice {
4904 move_id: Choices::EXTREMESPEED,
4905 base_power: 80.0,
4906 category: MoveCategory::Physical,
4907 priority: 2,
4908 move_type: PokemonType::NORMAL,
4909 flags: Flags {
4910 contact: true,
4911 protect: true,
4912 ..Default::default()
4913 },
4914 ..Default::default()
4915 },
4916 );
4917 moves.insert(
4918 Choices::FACADE,
4919 Choice {
4920 move_id: Choices::FACADE,
4921 base_power: 70.0,
4922 category: MoveCategory::Physical,
4923 move_type: PokemonType::NORMAL,
4924 flags: Flags {
4925 contact: true,
4926 protect: true,
4927 ..Default::default()
4928 },
4929 ..Default::default()
4930 },
4931 );
4932 moves.insert(
4933 Choices::FAIRYLOCK,
4934 Choice {
4935 move_id: Choices::FAIRYLOCK,
4936 move_type: PokemonType::FAIRY,
4937 flags: Flags {
4938 ..Default::default()
4939 },
4940 ..Default::default()
4941 },
4942 );
4943 moves.insert(
4944 Choices::FAIRYWIND,
4945 Choice {
4946 move_id: Choices::FAIRYWIND,
4947 base_power: 40.0,
4948 category: MoveCategory::Special,
4949 move_type: PokemonType::FAIRY,
4950 flags: Flags {
4951 protect: true,
4952 wind: true,
4953 ..Default::default()
4954 },
4955 ..Default::default()
4956 },
4957 );
4958 moves.insert(
4959 Choices::FAKEOUT,
4960 Choice {
4961 move_id: Choices::FAKEOUT,
4962 base_power: 40.0,
4963 category: MoveCategory::Physical,
4964 priority: 3,
4965 move_type: PokemonType::NORMAL,
4966 flags: Flags {
4967 contact: true,
4968 protect: true,
4969 ..Default::default()
4970 },
4971 secondaries: Some(vec![Secondary {
4972 chance: 100.0,
4973 target: MoveTarget::Opponent,
4974 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4975 }]),
4976 ..Default::default()
4977 },
4978 );
4979 moves.insert(
4980 Choices::FAKETEARS,
4981 Choice {
4982 move_id: Choices::FAKETEARS,
4983 move_type: PokemonType::DARK,
4984 flags: Flags {
4985 protect: true,
4986 reflectable: true,
4987 ..Default::default()
4988 },
4989 boost: Some(Boost {
4990 target: MoveTarget::Opponent,
4991 boosts: StatBoosts {
4992 attack: 0,
4993 defense: 0,
4994 special_attack: 0,
4995 special_defense: -2,
4996 speed: 0,
4997 accuracy: 0,
4998 },
4999 }),
5000 ..Default::default()
5001 },
5002 );
5003 moves.insert(
5004 Choices::FALSESURRENDER,
5005 Choice {
5006 move_id: Choices::FALSESURRENDER,
5007 base_power: 80.0,
5008 category: MoveCategory::Physical,
5009 move_type: PokemonType::DARK,
5010 flags: Flags {
5011 contact: true,
5012 protect: true,
5013 ..Default::default()
5014 },
5015 ..Default::default()
5016 },
5017 );
5018 moves.insert(
5019 Choices::FALSESWIPE,
5020 Choice {
5021 move_id: Choices::FALSESWIPE,
5022 base_power: 40.0,
5023 category: MoveCategory::Physical,
5024 move_type: PokemonType::NORMAL,
5025 flags: Flags {
5026 contact: true,
5027 protect: true,
5028 ..Default::default()
5029 },
5030 ..Default::default()
5031 },
5032 );
5033 moves.insert(
5034 Choices::FEATHERDANCE,
5035 Choice {
5036 move_id: Choices::FEATHERDANCE,
5037 move_type: PokemonType::FLYING,
5038 flags: Flags {
5039 protect: true,
5040 reflectable: true,
5041 ..Default::default()
5042 },
5043 boost: Some(Boost {
5044 target: MoveTarget::Opponent,
5045 boosts: StatBoosts {
5046 attack: -2,
5047 defense: 0,
5048 special_attack: 0,
5049 special_defense: 0,
5050 speed: 0,
5051 accuracy: 0,
5052 },
5053 }),
5054 ..Default::default()
5055 },
5056 );
5057 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
5058 moves.insert(
5059 Choices::FEINT,
5060 Choice {
5061 move_id: Choices::FEINT,
5062 base_power: 50.0,
5063 category: MoveCategory::Physical,
5064 priority: 2,
5065 move_type: PokemonType::NORMAL,
5066 flags: Flags {
5067 ..Default::default()
5068 },
5069 ..Default::default()
5070 },
5071 );
5072 } else {
5073 moves.insert(
5074 Choices::FEINT,
5075 Choice {
5076 move_id: Choices::FEINT,
5077 base_power: 30.0,
5078 category: MoveCategory::Physical,
5079 priority: 2,
5080 move_type: PokemonType::NORMAL,
5081 flags: Flags {
5082 ..Default::default()
5083 },
5084 ..Default::default()
5085 },
5086 );
5087 }
5088 moves.insert(
5089 Choices::FEINTATTACK,
5090 Choice {
5091 move_id: Choices::FEINTATTACK,
5092 base_power: 60.0,
5093 category: MoveCategory::Physical,
5094 move_type: PokemonType::DARK,
5095 flags: Flags {
5096 contact: true,
5097 protect: true,
5098 ..Default::default()
5099 },
5100 ..Default::default()
5101 },
5102 );
5103 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
5104 moves.insert(
5105 Choices::FELLSTINGER,
5106 Choice {
5107 move_id: Choices::FELLSTINGER,
5108 base_power: 30.0,
5109 category: MoveCategory::Physical,
5110 move_type: PokemonType::BUG,
5111 flags: Flags {
5112 contact: true,
5113 protect: true,
5114 ..Default::default()
5115 },
5116 ..Default::default()
5117 },
5118 );
5119 } else {
5120 moves.insert(
5121 Choices::FELLSTINGER,
5122 Choice {
5123 move_id: Choices::FELLSTINGER,
5124 base_power: 50.0,
5125 category: MoveCategory::Physical,
5126 move_type: PokemonType::BUG,
5127 flags: Flags {
5128 contact: true,
5129 protect: true,
5130 ..Default::default()
5131 },
5132 ..Default::default()
5133 },
5134 );
5135 }
5136 moves.insert(
5137 Choices::FICKLEBEAM,
5138 Choice {
5139 move_id: Choices::FICKLEBEAM,
5140 base_power: 80.0,
5141 category: MoveCategory::Special,
5142 move_type: PokemonType::DRAGON,
5143 flags: Flags {
5144 protect: true,
5145 ..Default::default()
5146 },
5147 secondaries: Some(vec![Secondary {
5148 chance: 50.0,
5149 target: MoveTarget::User,
5150 effect: Effect::Boost(StatBoosts {
5151 attack: 0,
5152 defense: 0,
5153 special_attack: 1,
5154 special_defense: 0,
5155 speed: 0,
5156 accuracy: 0,
5157 }),
5158 }]),
5159 ..Default::default()
5160 },
5161 );
5162 moves.insert(
5163 Choices::FIERYDANCE,
5164 Choice {
5165 move_id: Choices::FIERYDANCE,
5166 base_power: 80.0,
5167 category: MoveCategory::Special,
5168 move_type: PokemonType::FIRE,
5169 flags: Flags {
5170 protect: true,
5171 ..Default::default()
5172 },
5173 secondaries: Some(vec![Secondary {
5174 chance: 50.0,
5175 target: MoveTarget::User,
5176 effect: Effect::Boost(StatBoosts {
5177 attack: 0,
5178 defense: 0,
5179 special_attack: 1,
5180 special_defense: 0,
5181 speed: 0,
5182 accuracy: 0,
5183 }),
5184 }]),
5185 ..Default::default()
5186 },
5187 );
5188 moves.insert(
5189 Choices::FIERYWRATH,
5190 Choice {
5191 move_id: Choices::FIERYWRATH,
5192 base_power: 90.0,
5193 category: MoveCategory::Special,
5194 move_type: PokemonType::DARK,
5195 flags: Flags {
5196 protect: true,
5197 ..Default::default()
5198 },
5199 secondaries: Some(vec![Secondary {
5200 chance: 20.0,
5201 target: MoveTarget::Opponent,
5202 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5203 }]),
5204 ..Default::default()
5205 },
5206 );
5207 moves.insert(
5208 Choices::FILLETAWAY,
5209 Choice {
5210 move_id: Choices::FILLETAWAY,
5211 target: MoveTarget::User,
5212 move_type: PokemonType::NORMAL,
5213 flags: Flags {
5214 ..Default::default()
5215 },
5216 ..Default::default()
5217 },
5218 );
5219 moves.insert(
5220 Choices::FINALGAMBIT,
5221 Choice {
5222 move_id: Choices::FINALGAMBIT,
5223 category: MoveCategory::Special,
5224 move_type: PokemonType::FIGHTING,
5225 flags: Flags {
5226 protect: true,
5227 ..Default::default()
5228 },
5229 ..Default::default()
5230 },
5231 );
5232 if cfg!(feature = "gen1") {
5233 moves.insert(
5234 Choices::FIREBLAST,
5235 Choice {
5236 move_id: Choices::FIREBLAST,
5237 accuracy: 85.0,
5238 base_power: 120.0,
5239 category: MoveCategory::Special,
5240 move_type: PokemonType::FIRE,
5241 flags: Flags {
5242 protect: true,
5243 ..Default::default()
5244 },
5245 secondaries: Some(vec![Secondary {
5246 chance: 30.0,
5247 target: MoveTarget::Opponent,
5248 effect: Effect::Status(PokemonStatus::BURN),
5249 }]),
5250 ..Default::default()
5251 },
5252 );
5253 }
5254 else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5255 moves.insert(
5256 Choices::FIREBLAST,
5257 Choice {
5258 move_id: Choices::FIREBLAST,
5259 accuracy: 85.0,
5260 base_power: 120.0,
5261 category: MoveCategory::Special,
5262 move_type: PokemonType::FIRE,
5263 flags: Flags {
5264 protect: true,
5265 ..Default::default()
5266 },
5267 secondaries: Some(vec![Secondary {
5268 chance: 10.0,
5269 target: MoveTarget::Opponent,
5270 effect: Effect::Status(PokemonStatus::BURN),
5271 }]),
5272 ..Default::default()
5273 },
5274 );
5275 } else {
5276 moves.insert(
5277 Choices::FIREBLAST,
5278 Choice {
5279 move_id: Choices::FIREBLAST,
5280 accuracy: 85.0,
5281 base_power: 110.0,
5282 category: MoveCategory::Special,
5283 move_type: PokemonType::FIRE,
5284 flags: Flags {
5285 protect: true,
5286 ..Default::default()
5287 },
5288 secondaries: Some(vec![Secondary {
5289 chance: 10.0,
5290 target: MoveTarget::Opponent,
5291 effect: Effect::Status(PokemonStatus::BURN),
5292 }]),
5293 ..Default::default()
5294 },
5295 );
5296 }
5297 moves.insert(
5298 Choices::FIREFANG,
5299 Choice {
5300 move_id: Choices::FIREFANG,
5301 accuracy: 95.0,
5302 base_power: 65.0,
5303 category: MoveCategory::Physical,
5304 move_type: PokemonType::FIRE,
5305 flags: Flags {
5306 bite: true,
5307 contact: true,
5308 protect: true,
5309 ..Default::default()
5310 },
5311 secondaries: Some(vec![
5312 Secondary {
5313 chance: 10.0,
5314 target: MoveTarget::Opponent,
5315 effect: Effect::Status(PokemonStatus::BURN),
5316 },
5317 Secondary {
5318 chance: 10.0,
5319 target: MoveTarget::Opponent,
5320 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5321 },
5322 ]),
5323 ..Default::default()
5324 },
5325 );
5326 moves.insert(
5327 Choices::FIRELASH,
5328 Choice {
5329 move_id: Choices::FIRELASH,
5330 base_power: 80.0,
5331 category: MoveCategory::Physical,
5332 move_type: PokemonType::FIRE,
5333 flags: Flags {
5334 contact: true,
5335 protect: true,
5336 ..Default::default()
5337 },
5338 secondaries: Some(vec![Secondary {
5339 chance: 100.0,
5340 target: MoveTarget::Opponent,
5341 effect: Effect::Boost(StatBoosts {
5342 attack: 0,
5343 defense: -1,
5344 special_attack: 0,
5345 special_defense: 0,
5346 speed: 0,
5347 accuracy: 0,
5348 }),
5349 }]),
5350 ..Default::default()
5351 },
5352 );
5353 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5354 moves.insert(
5355 Choices::FIREPLEDGE,
5356 Choice {
5357 move_id: Choices::FIREPLEDGE,
5358 base_power: 50.0,
5359 category: MoveCategory::Special,
5360 move_type: PokemonType::FIRE,
5361 flags: Flags {
5362 protect: true,
5363 ..Default::default()
5364 },
5365 ..Default::default()
5366 },
5367 );
5368 } else {
5369 moves.insert(
5370 Choices::FIREPLEDGE,
5371 Choice {
5372 move_id: Choices::FIREPLEDGE,
5373 base_power: 80.0,
5374 category: MoveCategory::Special,
5375 move_type: PokemonType::FIRE,
5376 flags: Flags {
5377 protect: true,
5378 ..Default::default()
5379 },
5380 ..Default::default()
5381 },
5382 );
5383 }
5384 moves.insert(
5385 Choices::FIREPUNCH,
5386 Choice {
5387 move_id: Choices::FIREPUNCH,
5388 base_power: 75.0,
5389 category: MoveCategory::Physical,
5390 move_type: PokemonType::FIRE,
5391 flags: Flags {
5392 contact: true,
5393 protect: true,
5394 punch: true,
5395 ..Default::default()
5396 },
5397 secondaries: Some(vec![Secondary {
5398 chance: 10.0,
5399 target: MoveTarget::Opponent,
5400 effect: Effect::Status(PokemonStatus::BURN),
5401 }]),
5402 ..Default::default()
5403 },
5404 );
5405 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
5406 moves.insert(
5407 Choices::FIRESPIN,
5408 Choice {
5409 move_id: Choices::FIRESPIN,
5410 accuracy: 70.0,
5411 base_power: 15.0,
5412 category: MoveCategory::Special,
5413 move_type: PokemonType::FIRE,
5414 flags: Flags {
5415 protect: true,
5416 ..Default::default()
5417 },
5418 volatile_status: Some(VolatileStatus {
5419 target: MoveTarget::Opponent,
5420 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
5421 }),
5422 ..Default::default()
5423 },
5424 );
5425 } else {
5426 moves.insert(
5427 Choices::FIRESPIN,
5428 Choice {
5429 move_id: Choices::FIRESPIN,
5430 accuracy: 85.0,
5431 base_power: 35.0,
5432 category: MoveCategory::Special,
5433 move_type: PokemonType::FIRE,
5434 flags: Flags {
5435 protect: true,
5436 ..Default::default()
5437 },
5438 volatile_status: Some(VolatileStatus {
5439 target: MoveTarget::Opponent,
5440 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
5441 }),
5442 ..Default::default()
5443 },
5444 );
5445 }
5446 moves.insert(
5447 Choices::FIRSTIMPRESSION,
5448 Choice {
5449 move_id: Choices::FIRSTIMPRESSION,
5450 base_power: 90.0,
5451 category: MoveCategory::Physical,
5452 priority: 2,
5453 move_type: PokemonType::BUG,
5454 flags: Flags {
5455 contact: true,
5456 protect: true,
5457 ..Default::default()
5458 },
5459 ..Default::default()
5460 },
5461 );
5462 moves.insert(
5463 Choices::FISHIOUSREND,
5464 Choice {
5465 move_id: Choices::FISHIOUSREND,
5466 base_power: 85.0,
5467 category: MoveCategory::Physical,
5468 move_type: PokemonType::WATER,
5469 flags: Flags {
5470 bite: true,
5471 contact: true,
5472 protect: true,
5473 ..Default::default()
5474 },
5475 ..Default::default()
5476 },
5477 );
5478 moves.insert(
5479 Choices::FISSURE,
5480 Choice {
5481 move_id: Choices::FISSURE,
5482 accuracy: 30.0,
5483 category: MoveCategory::Physical,
5484 move_type: PokemonType::GROUND,
5485 flags: Flags {
5486 protect: true,
5487 ..Default::default()
5488 },
5489 ..Default::default()
5490 },
5491 );
5492 moves.insert(
5493 Choices::FLAIL,
5494 Choice {
5495 move_id: Choices::FLAIL,
5496 category: MoveCategory::Physical,
5497 move_type: PokemonType::NORMAL,
5498 flags: Flags {
5499 contact: true,
5500 protect: true,
5501 ..Default::default()
5502 },
5503 ..Default::default()
5504 },
5505 );
5506 moves.insert(
5507 Choices::FLAMEBURST,
5508 Choice {
5509 move_id: Choices::FLAMEBURST,
5510 base_power: 70.0,
5511 category: MoveCategory::Special,
5512 move_type: PokemonType::FIRE,
5513 flags: Flags {
5514 protect: true,
5515 ..Default::default()
5516 },
5517 ..Default::default()
5518 },
5519 );
5520 moves.insert(
5521 Choices::FLAMECHARGE,
5522 Choice {
5523 move_id: Choices::FLAMECHARGE,
5524 base_power: 50.0,
5525 category: MoveCategory::Physical,
5526 move_type: PokemonType::FIRE,
5527 flags: Flags {
5528 contact: true,
5529 protect: true,
5530 ..Default::default()
5531 },
5532 secondaries: Some(vec![Secondary {
5533 chance: 100.0,
5534 target: MoveTarget::User,
5535 effect: Effect::Boost(StatBoosts {
5536 attack: 0,
5537 defense: 0,
5538 special_attack: 0,
5539 special_defense: 0,
5540 speed: 1,
5541 accuracy: 0,
5542 }),
5543 }]),
5544 ..Default::default()
5545 },
5546 );
5547 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5548 moves.insert(
5549 Choices::FLAMETHROWER,
5550 Choice {
5551 move_id: Choices::FLAMETHROWER,
5552 base_power: 95.0,
5553 category: MoveCategory::Special,
5554 move_type: PokemonType::FIRE,
5555 flags: Flags {
5556 protect: true,
5557 ..Default::default()
5558 },
5559 secondaries: Some(vec![Secondary {
5560 chance: 10.0,
5561 target: MoveTarget::Opponent,
5562 effect: Effect::Status(PokemonStatus::BURN),
5563 }]),
5564 ..Default::default()
5565 },
5566 );
5567 } else {
5568 moves.insert(
5569 Choices::FLAMETHROWER,
5570 Choice {
5571 move_id: Choices::FLAMETHROWER,
5572 base_power: 90.0,
5573 category: MoveCategory::Special,
5574 move_type: PokemonType::FIRE,
5575 flags: Flags {
5576 protect: true,
5577 ..Default::default()
5578 },
5579 secondaries: Some(vec![Secondary {
5580 chance: 10.0,
5581 target: MoveTarget::Opponent,
5582 effect: Effect::Status(PokemonStatus::BURN),
5583 }]),
5584 ..Default::default()
5585 },
5586 );
5587 }
5588 moves.insert(
5589 Choices::FLAMEWHEEL,
5590 Choice {
5591 move_id: Choices::FLAMEWHEEL,
5592 base_power: 60.0,
5593 category: MoveCategory::Physical,
5594 move_type: PokemonType::FIRE,
5595 flags: Flags {
5596 contact: true,
5597 protect: true,
5598 ..Default::default()
5599 },
5600 secondaries: Some(vec![Secondary {
5601 chance: 10.0,
5602 target: MoveTarget::Opponent,
5603 effect: Effect::Status(PokemonStatus::BURN),
5604 }]),
5605 ..Default::default()
5606 },
5607 );
5608 moves.insert(
5609 Choices::FLAREBLITZ,
5610 Choice {
5611 move_id: Choices::FLAREBLITZ,
5612 base_power: 120.0,
5613 category: MoveCategory::Physical,
5614 move_type: PokemonType::FIRE,
5615 flags: Flags {
5616 contact: true,
5617 protect: true,
5618 ..Default::default()
5619 },
5620 secondaries: Some(vec![Secondary {
5621 chance: 10.0,
5622 target: MoveTarget::Opponent,
5623 effect: Effect::Status(PokemonStatus::BURN),
5624 }]),
5625 recoil: Some(0.33),
5626 ..Default::default()
5627 },
5628 );
5629 moves.insert(
5630 Choices::FLASH,
5631 Choice {
5632 move_id: Choices::FLASH,
5633 move_type: PokemonType::NORMAL,
5634 flags: Flags {
5635 protect: true,
5636 reflectable: true,
5637 ..Default::default()
5638 },
5639 boost: Some(Boost {
5640 target: MoveTarget::Opponent,
5641 boosts: StatBoosts {
5642 attack: 0,
5643 defense: 0,
5644 special_attack: 0,
5645 special_defense: 0,
5646 speed: 0,
5647 accuracy: -1,
5648 },
5649 }),
5650 ..Default::default()
5651 },
5652 );
5653 moves.insert(
5654 Choices::FLASHCANNON,
5655 Choice {
5656 move_id: Choices::FLASHCANNON,
5657 base_power: 80.0,
5658 category: MoveCategory::Special,
5659 move_type: PokemonType::STEEL,
5660 flags: Flags {
5661 protect: true,
5662 ..Default::default()
5663 },
5664 secondaries: Some(vec![Secondary {
5665 chance: 10.0,
5666 target: MoveTarget::Opponent,
5667 effect: Effect::Boost(StatBoosts {
5668 attack: 0,
5669 defense: 0,
5670 special_attack: 0,
5671 special_defense: -1,
5672 speed: 0,
5673 accuracy: 0,
5674 }),
5675 }]),
5676 ..Default::default()
5677 },
5678 );
5679 moves.insert(
5680 Choices::FLATTER,
5681 Choice {
5682 move_id: Choices::FLATTER,
5683 move_type: PokemonType::DARK,
5684 flags: Flags {
5685 protect: true,
5686 reflectable: true,
5687 ..Default::default()
5688 },
5689 boost: Some(Boost {
5690 target: MoveTarget::Opponent,
5691 boosts: StatBoosts {
5692 attack: 0,
5693 defense: 0,
5694 special_attack: 1,
5695 special_defense: 0,
5696 speed: 0,
5697 accuracy: 0,
5698 },
5699 }),
5700 volatile_status: Some(VolatileStatus {
5701 target: MoveTarget::Opponent,
5702 volatile_status: PokemonVolatileStatus::CONFUSION,
5703 }),
5704 ..Default::default()
5705 },
5706 );
5707 moves.insert(
5708 Choices::FLEURCANNON,
5709 Choice {
5710 move_id: Choices::FLEURCANNON,
5711 accuracy: 90.0,
5712 base_power: 130.0,
5713 category: MoveCategory::Special,
5714 move_type: PokemonType::FAIRY,
5715 flags: Flags {
5716 protect: true,
5717 ..Default::default()
5718 },
5719 boost: Some(Boost {
5720 target: MoveTarget::User,
5721 boosts: StatBoosts {
5722 attack: 0,
5723 defense: 0,
5724 special_attack: -2,
5725 special_defense: 0,
5726 speed: 0,
5727 accuracy: 0,
5728 },
5729 }),
5730 ..Default::default()
5731 },
5732 );
5733 moves.insert(
5734 Choices::FLING,
5735 Choice {
5736 move_id: Choices::FLING,
5737 category: MoveCategory::Physical,
5738 move_type: PokemonType::DARK,
5739 flags: Flags {
5740 protect: true,
5741 ..Default::default()
5742 },
5743 ..Default::default()
5744 },
5745 );
5746 moves.insert(
5747 Choices::FLIPTURN,
5748 Choice {
5749 move_id: Choices::FLIPTURN,
5750 base_power: 60.0,
5751 category: MoveCategory::Physical,
5752 move_type: PokemonType::WATER,
5753 flags: Flags {
5754 contact: true,
5755 protect: true,
5756 pivot: true,
5757 ..Default::default()
5758 },
5759 ..Default::default()
5760 },
5761 );
5762 moves.insert(
5763 Choices::FLOATYFALL,
5764 Choice {
5765 move_id: Choices::FLOATYFALL,
5766 accuracy: 95.0,
5767 base_power: 90.0,
5768 category: MoveCategory::Physical,
5769 move_type: PokemonType::FLYING,
5770 flags: Flags {
5771 contact: true,
5772 protect: true,
5773 ..Default::default()
5774 },
5775 secondaries: Some(vec![Secondary {
5776 chance: 30.0,
5777 target: MoveTarget::Opponent,
5778 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5779 }]),
5780 ..Default::default()
5781 },
5782 );
5783 moves.insert(
5784 Choices::FLORALHEALING,
5785 Choice {
5786 move_id: Choices::FLORALHEALING,
5787 move_type: PokemonType::FAIRY,
5788 flags: Flags {
5789 heal: true,
5790 protect: true,
5791 reflectable: true,
5792 ..Default::default()
5793 },
5794 ..Default::default()
5795 },
5796 );
5797 moves.insert(
5798 Choices::FLOWERSHIELD,
5799 Choice {
5800 move_id: Choices::FLOWERSHIELD,
5801 move_type: PokemonType::FAIRY,
5802 flags: Flags {
5803 ..Default::default()
5804 },
5805 ..Default::default()
5806 },
5807 );
5808 moves.insert(
5809 Choices::FLOWERTRICK,
5810 Choice {
5811 move_id: Choices::FLOWERTRICK,
5812 base_power: 70.0,
5813 category: MoveCategory::Physical,
5814 move_type: PokemonType::GRASS,
5815 flags: Flags {
5816 protect: true,
5817 ..Default::default()
5818 },
5819 ..Default::default()
5820 },
5821 );
5822 moves.insert(
5823 Choices::FLY,
5824 Choice {
5825 move_id: Choices::FLY,
5826 accuracy: 95.0,
5827 base_power: 90.0,
5828 category: MoveCategory::Physical,
5829 move_type: PokemonType::FLYING,
5830 flags: Flags {
5831 charge: true,
5832 contact: true,
5833 protect: true,
5834 ..Default::default()
5835 },
5836 ..Default::default()
5837 },
5838 );
5839 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
5840 moves.insert(
5841 Choices::FLYINGPRESS,
5842 Choice {
5843 move_id: Choices::FLYINGPRESS,
5844 accuracy: 95.0,
5845 base_power: 80.0,
5846 category: MoveCategory::Physical,
5847 move_type: PokemonType::FIGHTING,
5848 flags: Flags {
5849 contact: true,
5850 protect: true,
5851 ..Default::default()
5852 },
5853 ..Default::default()
5854 },
5855 );
5856 } else {
5857 moves.insert(
5858 Choices::FLYINGPRESS,
5859 Choice {
5860 move_id: Choices::FLYINGPRESS,
5861 accuracy: 95.0,
5862 base_power: 100.0,
5863 category: MoveCategory::Physical,
5864 move_type: PokemonType::FIGHTING,
5865 flags: Flags {
5866 contact: true,
5867 protect: true,
5868 ..Default::default()
5869 },
5870 ..Default::default()
5871 },
5872 );
5873 }
5874 moves.insert(
5875 Choices::FOCUSBLAST,
5876 Choice {
5877 move_id: Choices::FOCUSBLAST,
5878 accuracy: 70.0,
5879 base_power: 120.0,
5880 category: MoveCategory::Special,
5881 move_type: PokemonType::FIGHTING,
5882 flags: Flags {
5883 bullet: true,
5884 protect: true,
5885 ..Default::default()
5886 },
5887 secondaries: Some(vec![Secondary {
5888 chance: 10.0,
5889 target: MoveTarget::Opponent,
5890 effect: Effect::Boost(StatBoosts {
5891 attack: 0,
5892 defense: 0,
5893 special_attack: 0,
5894 special_defense: -1,
5895 speed: 0,
5896 accuracy: 0,
5897 }),
5898 }]),
5899 ..Default::default()
5900 },
5901 );
5902 moves.insert(
5903 Choices::FOCUSENERGY,
5904 Choice {
5905 move_id: Choices::FOCUSENERGY,
5906 target: MoveTarget::User,
5907 move_type: PokemonType::NORMAL,
5908 flags: Flags {
5909 ..Default::default()
5910 },
5911 volatile_status: Some(VolatileStatus {
5912 target: MoveTarget::User,
5913 volatile_status: PokemonVolatileStatus::FOCUSENERGY,
5914 }),
5915 ..Default::default()
5916 },
5917 );
5918 moves.insert(
5919 Choices::FOCUSPUNCH,
5920 Choice {
5921 move_id: Choices::FOCUSPUNCH,
5922 base_power: 150.0,
5923 category: MoveCategory::Physical,
5924 priority: -3,
5925 move_type: PokemonType::FIGHTING,
5926 flags: Flags {
5927 contact: true,
5928 protect: true,
5929 punch: true,
5930 ..Default::default()
5931 },
5932 ..Default::default()
5933 },
5934 );
5935 moves.insert(
5936 Choices::FOLLOWME,
5937 Choice {
5938 move_id: Choices::FOLLOWME,
5939 priority: 2,
5940 target: MoveTarget::User,
5941 move_type: PokemonType::NORMAL,
5942 flags: Flags {
5943 ..Default::default()
5944 },
5945 volatile_status: Some(VolatileStatus {
5946 target: MoveTarget::User,
5947 volatile_status: PokemonVolatileStatus::FOLLOWME,
5948 }),
5949 ..Default::default()
5950 },
5951 );
5952 moves.insert(
5953 Choices::FORCEPALM,
5954 Choice {
5955 move_id: Choices::FORCEPALM,
5956 base_power: 60.0,
5957 category: MoveCategory::Physical,
5958 move_type: PokemonType::FIGHTING,
5959 flags: Flags {
5960 contact: true,
5961 protect: true,
5962 ..Default::default()
5963 },
5964 secondaries: Some(vec![Secondary {
5965 chance: 30.0,
5966 target: MoveTarget::Opponent,
5967 effect: Effect::Status(PokemonStatus::PARALYZE),
5968 }]),
5969 ..Default::default()
5970 },
5971 );
5972 moves.insert(
5973 Choices::FORESIGHT,
5974 Choice {
5975 move_id: Choices::FORESIGHT,
5976 move_type: PokemonType::NORMAL,
5977 flags: Flags {
5978 protect: true,
5979 reflectable: true,
5980 ..Default::default()
5981 },
5982 volatile_status: Some(VolatileStatus {
5983 target: MoveTarget::Opponent,
5984 volatile_status: PokemonVolatileStatus::FORESIGHT,
5985 }),
5986 ..Default::default()
5987 },
5988 );
5989 moves.insert(
5990 Choices::FORESTSCURSE,
5991 Choice {
5992 move_id: Choices::FORESTSCURSE,
5993 move_type: PokemonType::GRASS,
5994 flags: Flags {
5995 protect: true,
5996 reflectable: true,
5997 ..Default::default()
5998 },
5999 ..Default::default()
6000 },
6001 );
6002 moves.insert(
6003 Choices::FOULPLAY,
6004 Choice {
6005 move_id: Choices::FOULPLAY,
6006 base_power: 95.0,
6007 category: MoveCategory::Physical,
6008 move_type: PokemonType::DARK,
6009 flags: Flags {
6010 contact: true,
6011 protect: true,
6012 ..Default::default()
6013 },
6014 ..Default::default()
6015 },
6016 );
6017 moves.insert(
6018 Choices::FREEZEDRY,
6019 Choice {
6020 move_id: Choices::FREEZEDRY,
6021 base_power: 70.0,
6022 category: MoveCategory::Special,
6023 move_type: PokemonType::ICE,
6024 flags: Flags {
6025 protect: true,
6026 ..Default::default()
6027 },
6028 secondaries: Some(vec![Secondary {
6029 chance: 10.0,
6030 target: MoveTarget::Opponent,
6031 effect: Effect::Status(PokemonStatus::FREEZE),
6032 }]),
6033 ..Default::default()
6034 },
6035 );
6036 moves.insert(
6037 Choices::FREEZESHOCK,
6038 Choice {
6039 move_id: Choices::FREEZESHOCK,
6040 accuracy: 90.0,
6041 base_power: 140.0,
6042 category: MoveCategory::Physical,
6043 move_type: PokemonType::ICE,
6044 flags: Flags {
6045 charge: true,
6046 protect: true,
6047 ..Default::default()
6048 },
6049 secondaries: Some(vec![Secondary {
6050 chance: 30.0,
6051 target: MoveTarget::Opponent,
6052 effect: Effect::Status(PokemonStatus::PARALYZE),
6053 }]),
6054 ..Default::default()
6055 },
6056 );
6057 moves.insert(
6058 Choices::FREEZINGGLARE,
6059 Choice {
6060 move_id: Choices::FREEZINGGLARE,
6061 base_power: 90.0,
6062 category: MoveCategory::Special,
6063 move_type: PokemonType::PSYCHIC,
6064 flags: Flags {
6065 protect: true,
6066 ..Default::default()
6067 },
6068 secondaries: Some(vec![Secondary {
6069 chance: 10.0,
6070 target: MoveTarget::Opponent,
6071 effect: Effect::Status(PokemonStatus::FREEZE),
6072 }]),
6073 ..Default::default()
6074 },
6075 );
6076 moves.insert(
6077 Choices::FREEZYFROST,
6078 Choice {
6079 move_id: Choices::FREEZYFROST,
6080 accuracy: 90.0,
6081 base_power: 100.0,
6082 category: MoveCategory::Special,
6083 move_type: PokemonType::ICE,
6084 flags: Flags {
6085 protect: true,
6086 ..Default::default()
6087 },
6088 ..Default::default()
6089 },
6090 );
6091 moves.insert(
6092 Choices::FRENZYPLANT,
6093 Choice {
6094 move_id: Choices::FRENZYPLANT,
6095 accuracy: 90.0,
6096 base_power: 150.0,
6097 category: MoveCategory::Special,
6098 move_type: PokemonType::GRASS,
6099 flags: Flags {
6100 protect: true,
6101 recharge: true,
6102 ..Default::default()
6103 },
6104 ..Default::default()
6105 },
6106 );
6107 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6108 moves.insert(
6109 Choices::FROSTBREATH,
6110 Choice {
6111 move_id: Choices::FROSTBREATH,
6112 accuracy: 90.0,
6113 base_power: 40.0,
6114 category: MoveCategory::Special,
6115 move_type: PokemonType::ICE,
6116 flags: Flags {
6117 protect: true,
6118 ..Default::default()
6119 },
6120 ..Default::default()
6121 },
6122 );
6123 } else {
6124 moves.insert(
6125 Choices::FROSTBREATH,
6126 Choice {
6127 move_id: Choices::FROSTBREATH,
6128 accuracy: 90.0,
6129 base_power: 60.0,
6130 category: MoveCategory::Special,
6131 move_type: PokemonType::ICE,
6132 flags: Flags {
6133 protect: true,
6134 ..Default::default()
6135 },
6136 ..Default::default()
6137 },
6138 );
6139 }
6140 moves.insert(
6141 Choices::FRUSTRATION,
6142 Choice {
6143 move_id: Choices::FRUSTRATION,
6144 category: MoveCategory::Physical,
6145 move_type: PokemonType::NORMAL,
6146 flags: Flags {
6147 contact: true,
6148 protect: true,
6149 ..Default::default()
6150 },
6151 ..Default::default()
6152 },
6153 );
6154 moves.insert(
6155 Choices::FURYATTACK,
6156 Choice {
6157 move_id: Choices::FURYATTACK,
6158 accuracy: 85.0,
6159 base_power: 15.0,
6160 category: MoveCategory::Physical,
6161 move_type: PokemonType::NORMAL,
6162 flags: Flags {
6163 contact: true,
6164 protect: true,
6165 ..Default::default()
6166 },
6167 ..Default::default()
6168 },
6169 );
6170 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6171 moves.insert(
6172 Choices::FURYCUTTER,
6173 Choice {
6174 move_id: Choices::FURYCUTTER,
6175 accuracy: 95.0,
6176 base_power: 10.0,
6177 category: MoveCategory::Physical,
6178 move_type: PokemonType::BUG,
6179 flags: Flags {
6180 contact: true,
6181 protect: true,
6182 slicing: true,
6183 ..Default::default()
6184 },
6185 ..Default::default()
6186 },
6187 );
6188 } else if cfg!(feature = "gen5") {
6189 moves.insert(
6190 Choices::FURYCUTTER,
6191 Choice {
6192 move_id: Choices::FURYCUTTER,
6193 accuracy: 95.0,
6194 base_power: 20.0,
6195 category: MoveCategory::Physical,
6196 move_type: PokemonType::BUG,
6197 flags: Flags {
6198 contact: true,
6199 protect: true,
6200 ..Default::default()
6201 },
6202 ..Default::default()
6203 },
6204 );
6205 } else {
6206 moves.insert(
6207 Choices::FURYCUTTER,
6208 Choice {
6209 move_id: Choices::FURYCUTTER,
6210 accuracy: 95.0,
6211 base_power: 40.0,
6212 category: MoveCategory::Physical,
6213 move_type: PokemonType::BUG,
6214 flags: Flags {
6215 contact: true,
6216 protect: true,
6217 ..Default::default()
6218 },
6219 ..Default::default()
6220 },
6221 );
6222 }
6223 moves.insert(
6224 Choices::FURYSWIPES,
6225 Choice {
6226 move_id: Choices::FURYSWIPES,
6227 accuracy: 80.0,
6228 base_power: 18.0,
6229 category: MoveCategory::Physical,
6230 move_type: PokemonType::NORMAL,
6231 flags: Flags {
6232 contact: true,
6233 protect: true,
6234 ..Default::default()
6235 },
6236 ..Default::default()
6237 },
6238 );
6239 moves.insert(
6240 Choices::FUSIONBOLT,
6241 Choice {
6242 move_id: Choices::FUSIONBOLT,
6243 base_power: 100.0,
6244 category: MoveCategory::Physical,
6245 move_type: PokemonType::ELECTRIC,
6246 flags: Flags {
6247 protect: true,
6248 ..Default::default()
6249 },
6250 ..Default::default()
6251 },
6252 );
6253 moves.insert(
6254 Choices::FUSIONFLARE,
6255 Choice {
6256 move_id: Choices::FUSIONFLARE,
6257 base_power: 100.0,
6258 category: MoveCategory::Special,
6259 move_type: PokemonType::FIRE,
6260 flags: Flags {
6261 protect: true,
6262 ..Default::default()
6263 },
6264 ..Default::default()
6265 },
6266 );
6267 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6268 moves.insert(
6269 Choices::FUTURESIGHT,
6270 Choice {
6271 accuracy: 90.0,
6272 move_id: Choices::FUTURESIGHT,
6273 base_power: 80.0,
6274 category: MoveCategory::Special,
6275 move_type: PokemonType::PSYCHIC,
6276 flags: Flags {
6277 ..Default::default()
6278 },
6279 ..Default::default()
6280 },
6281 );
6282 } else if cfg!(feature = "gen5") {
6283 moves.insert(
6284 Choices::FUTURESIGHT,
6285 Choice {
6286 move_id: Choices::FUTURESIGHT,
6287 base_power: 100.0,
6288 category: MoveCategory::Special,
6289 move_type: PokemonType::PSYCHIC,
6290 flags: Flags {
6291 ..Default::default()
6292 },
6293 ..Default::default()
6294 },
6295 );
6296 } else {
6297 moves.insert(
6298 Choices::FUTURESIGHT,
6299 Choice {
6300 move_id: Choices::FUTURESIGHT,
6301 base_power: 120.0,
6302 category: MoveCategory::Special,
6303 move_type: PokemonType::PSYCHIC,
6304 flags: Flags {
6305 ..Default::default()
6306 },
6307 ..Default::default()
6308 },
6309 );
6310 }
6311 moves.insert(
6312 Choices::GASTROACID,
6313 Choice {
6314 move_id: Choices::GASTROACID,
6315 move_type: PokemonType::POISON,
6316 flags: Flags {
6317 protect: true,
6318 reflectable: true,
6319 ..Default::default()
6320 },
6321 volatile_status: Some(VolatileStatus {
6322 target: MoveTarget::Opponent,
6323 volatile_status: PokemonVolatileStatus::GASTROACID,
6324 }),
6325 ..Default::default()
6326 },
6327 );
6328 moves.insert(
6329 Choices::GEARGRIND,
6330 Choice {
6331 move_id: Choices::GEARGRIND,
6332 accuracy: 85.0,
6333 base_power: 50.0,
6334 category: MoveCategory::Physical,
6335 move_type: PokemonType::STEEL,
6336 flags: Flags {
6337 contact: true,
6338 protect: true,
6339 ..Default::default()
6340 },
6341 ..Default::default()
6342 },
6343 );
6344 moves.insert(
6345 Choices::GEARUP,
6346 Choice {
6347 move_id: Choices::GEARUP,
6348 target: MoveTarget::User,
6349 move_type: PokemonType::STEEL,
6350 flags: Flags {
6351 ..Default::default()
6352 },
6353 ..Default::default()
6354 },
6355 );
6356 moves.insert(
6357 Choices::GEOMANCY,
6358 Choice {
6359 move_id: Choices::GEOMANCY,
6360 target: MoveTarget::User,
6361 move_type: PokemonType::FAIRY,
6362 flags: Flags {
6363 charge: true,
6364 ..Default::default()
6365 },
6366 boost: Some(Boost {
6367 target: MoveTarget::User,
6368 boosts: StatBoosts {
6369 attack: 0,
6370 defense: 0,
6371 special_attack: 2,
6372 special_defense: 2,
6373 speed: 2,
6374 accuracy: 0,
6375 },
6376 }),
6377 ..Default::default()
6378 },
6379 );
6380 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6381 moves.insert(
6382 Choices::GIGADRAIN,
6383 Choice {
6384 move_id: Choices::GIGADRAIN,
6385 base_power: 60.0,
6386 category: MoveCategory::Special,
6387 move_type: PokemonType::GRASS,
6388 flags: Flags {
6389 heal: true,
6390 protect: true,
6391 ..Default::default()
6392 },
6393 drain: Some(0.5),
6394 ..Default::default()
6395 },
6396 );
6397 } else {
6398 moves.insert(
6399 Choices::GIGADRAIN,
6400 Choice {
6401 move_id: Choices::GIGADRAIN,
6402 base_power: 75.0,
6403 category: MoveCategory::Special,
6404 move_type: PokemonType::GRASS,
6405 flags: Flags {
6406 heal: true,
6407 protect: true,
6408 ..Default::default()
6409 },
6410 drain: Some(0.5),
6411 ..Default::default()
6412 },
6413 );
6414 }
6415 moves.insert(
6416 Choices::GIGAIMPACT,
6417 Choice {
6418 move_id: Choices::GIGAIMPACT,
6419 accuracy: 90.0,
6420 base_power: 150.0,
6421 category: MoveCategory::Physical,
6422 move_type: PokemonType::NORMAL,
6423 flags: Flags {
6424 contact: true,
6425 protect: true,
6426 recharge: true,
6427 ..Default::default()
6428 },
6429 ..Default::default()
6430 },
6431 );
6432 moves.insert(
6433 Choices::GIGATONHAMMER,
6434 Choice {
6435 move_id: Choices::GIGATONHAMMER,
6436 base_power: 160.0,
6437 category: MoveCategory::Physical,
6438 move_type: PokemonType::STEEL,
6439 flags: Flags {
6440 protect: true,
6441 ..Default::default()
6442 },
6443 ..Default::default()
6444 },
6445 );
6446
6447 if cfg!(feature = "gen9") {
6448 moves.insert(
6449 Choices::GLACIALLANCE,
6450 Choice {
6451 move_id: Choices::GLACIALLANCE,
6452 base_power: 120.0,
6453 category: MoveCategory::Physical,
6454 move_type: PokemonType::ICE,
6455 flags: Flags {
6456 protect: true,
6457 ..Default::default()
6458 },
6459 ..Default::default()
6460 },
6461 );
6462 } else {
6463 moves.insert(
6464 Choices::GLACIALLANCE,
6465 Choice {
6466 move_id: Choices::GLACIALLANCE,
6467 base_power: 130.0,
6468 category: MoveCategory::Physical,
6469 move_type: PokemonType::ICE,
6470 flags: Flags {
6471 protect: true,
6472 ..Default::default()
6473 },
6474 ..Default::default()
6475 },
6476 );
6477 }
6478 moves.insert(
6479 Choices::GLACIATE,
6480 Choice {
6481 move_id: Choices::GLACIATE,
6482 accuracy: 95.0,
6483 base_power: 65.0,
6484 category: MoveCategory::Special,
6485 move_type: PokemonType::ICE,
6486 flags: Flags {
6487 protect: true,
6488 ..Default::default()
6489 },
6490 secondaries: Some(vec![Secondary {
6491 chance: 100.0,
6492 target: MoveTarget::Opponent,
6493 effect: Effect::Boost(StatBoosts {
6494 attack: 0,
6495 defense: 0,
6496 special_attack: 0,
6497 special_defense: 0,
6498 speed: -1,
6499 accuracy: 0,
6500 }),
6501 }]),
6502 ..Default::default()
6503 },
6504 );
6505 moves.insert(
6506 Choices::GLAIVERUSH,
6507 Choice {
6508 move_id: Choices::GLAIVERUSH,
6509 base_power: 120.0,
6510 category: MoveCategory::Physical,
6511 move_type: PokemonType::DRAGON,
6512 flags: Flags {
6513 contact: true,
6514 protect: true,
6515 ..Default::default()
6516 },
6517 ..Default::default()
6518 },
6519 );
6520 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6521 moves.insert(
6522 Choices::GLARE,
6523 Choice {
6524 accuracy: 75.0,
6525 move_id: Choices::GLARE,
6526 status: Some(Status {
6527 target: MoveTarget::Opponent,
6528 status: PokemonStatus::PARALYZE,
6529 }),
6530 move_type: PokemonType::NORMAL,
6531 flags: Flags {
6532 protect: true,
6533 reflectable: true,
6534 ..Default::default()
6535 },
6536 ..Default::default()
6537 },
6538 );
6539 } else if cfg!(feature = "gen5") {
6540 moves.insert(
6541 Choices::GLARE,
6542 Choice {
6543 accuracy: 90.0,
6544 move_id: Choices::GLARE,
6545 status: Some(Status {
6546 target: MoveTarget::Opponent,
6547 status: PokemonStatus::PARALYZE,
6548 }),
6549 move_type: PokemonType::NORMAL,
6550 flags: Flags {
6551 protect: true,
6552 reflectable: true,
6553 ..Default::default()
6554 },
6555 ..Default::default()
6556 },
6557 );
6558 } else {
6559 moves.insert(
6560 Choices::GLARE,
6561 Choice {
6562 move_id: Choices::GLARE,
6563 status: Some(Status {
6564 target: MoveTarget::Opponent,
6565 status: PokemonStatus::PARALYZE,
6566 }),
6567 move_type: PokemonType::NORMAL,
6568 flags: Flags {
6569 protect: true,
6570 reflectable: true,
6571 ..Default::default()
6572 },
6573 ..Default::default()
6574 },
6575 );
6576 }
6577 moves.insert(
6578 Choices::GLITZYGLOW,
6579 Choice {
6580 move_id: Choices::GLITZYGLOW,
6581 accuracy: 95.0,
6582 base_power: 80.0,
6583 category: MoveCategory::Special,
6584 move_type: PokemonType::PSYCHIC,
6585 flags: Flags {
6586 protect: true,
6587 ..Default::default()
6588 },
6589 ..Default::default()
6590 },
6591 );
6592 moves.insert(
6593 Choices::GRASSKNOT,
6594 Choice {
6595 move_id: Choices::GRASSKNOT,
6596 category: MoveCategory::Special,
6597 move_type: PokemonType::GRASS,
6598 flags: Flags {
6599 contact: true,
6600 protect: true,
6601 ..Default::default()
6602 },
6603 ..Default::default()
6604 },
6605 );
6606 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6607 moves.insert(
6608 Choices::GRASSPLEDGE,
6609 Choice {
6610 move_id: Choices::GRASSPLEDGE,
6611 base_power: 50.0,
6612 category: MoveCategory::Special,
6613 move_type: PokemonType::GRASS,
6614 flags: Flags {
6615 protect: true,
6616 ..Default::default()
6617 },
6618 ..Default::default()
6619 },
6620 );
6621 } else {
6622 moves.insert(
6623 Choices::GRASSPLEDGE,
6624 Choice {
6625 move_id: Choices::GRASSPLEDGE,
6626 base_power: 80.0,
6627 category: MoveCategory::Special,
6628 move_type: PokemonType::GRASS,
6629 flags: Flags {
6630 protect: true,
6631 ..Default::default()
6632 },
6633 ..Default::default()
6634 },
6635 );
6636 }
6637 moves.insert(
6638 Choices::GRASSWHISTLE,
6639 Choice {
6640 move_id: Choices::GRASSWHISTLE,
6641 accuracy: 55.0,
6642 status: Some(Status {
6643 target: MoveTarget::Opponent,
6644 status: PokemonStatus::SLEEP,
6645 }),
6646 move_type: PokemonType::GRASS,
6647 flags: Flags {
6648 protect: true,
6649 reflectable: true,
6650 sound: true,
6651 ..Default::default()
6652 },
6653 ..Default::default()
6654 },
6655 );
6656
6657 if cfg!(feature = "gen9") {
6658 moves.insert(
6659 Choices::GRASSYGLIDE,
6660 Choice {
6661 move_id: Choices::GRASSYGLIDE,
6662 base_power: 55.0,
6663 category: MoveCategory::Physical,
6664 move_type: PokemonType::GRASS,
6665 flags: Flags {
6666 contact: true,
6667 protect: true,
6668 ..Default::default()
6669 },
6670 ..Default::default()
6671 },
6672 );
6673 } else {
6674 moves.insert(
6675 Choices::GRASSYGLIDE,
6676 Choice {
6677 move_id: Choices::GRASSYGLIDE,
6678 base_power: 70.0,
6679 category: MoveCategory::Physical,
6680 move_type: PokemonType::GRASS,
6681 flags: Flags {
6682 contact: true,
6683 protect: true,
6684 ..Default::default()
6685 },
6686 ..Default::default()
6687 },
6688 );
6689 }
6690 moves.insert(
6691 Choices::GRASSYTERRAIN,
6692 Choice {
6693 move_id: Choices::GRASSYTERRAIN,
6694 move_type: PokemonType::GRASS,
6695 flags: Flags {
6696 ..Default::default()
6697 },
6698 ..Default::default()
6699 },
6700 );
6701 moves.insert(
6702 Choices::GRAVAPPLE,
6703 Choice {
6704 move_id: Choices::GRAVAPPLE,
6705 base_power: 80.0,
6706 category: MoveCategory::Physical,
6707 move_type: PokemonType::GRASS,
6708 flags: Flags {
6709 protect: true,
6710 ..Default::default()
6711 },
6712 secondaries: Some(vec![Secondary {
6713 chance: 100.0,
6714 target: MoveTarget::Opponent,
6715 effect: Effect::Boost(StatBoosts {
6716 attack: 0,
6717 defense: -1,
6718 special_attack: 0,
6719 special_defense: 0,
6720 speed: 0,
6721 accuracy: 0,
6722 }),
6723 }]),
6724 ..Default::default()
6725 },
6726 );
6727 moves.insert(
6728 Choices::GRAVITY,
6729 Choice {
6730 move_id: Choices::GRAVITY,
6731 move_type: PokemonType::PSYCHIC,
6732 flags: Flags {
6733 ..Default::default()
6734 },
6735 ..Default::default()
6736 },
6737 );
6738 moves.insert(
6739 Choices::GROWL,
6740 Choice {
6741 move_id: Choices::GROWL,
6742 move_type: PokemonType::NORMAL,
6743 flags: Flags {
6744 protect: true,
6745 reflectable: true,
6746 sound: true,
6747 ..Default::default()
6748 },
6749 boost: Some(Boost {
6750 target: MoveTarget::Opponent,
6751 boosts: StatBoosts {
6752 attack: -1,
6753 defense: 0,
6754 special_attack: 0,
6755 special_defense: 0,
6756 speed: 0,
6757 accuracy: 0,
6758 },
6759 }),
6760 ..Default::default()
6761 },
6762 );
6763 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6764 moves.insert(
6765 Choices::GROWTH,
6766 Choice {
6767 move_id: Choices::GROWTH,
6768 target: MoveTarget::User,
6769 move_type: PokemonType::NORMAL,
6770 flags: Flags {
6771 ..Default::default()
6772 },
6773 boost: Some(Boost {
6774 target: MoveTarget::User,
6775 boosts: StatBoosts {
6776 attack: 0,
6777 defense: 0,
6778 special_attack: 1,
6779 special_defense: 0,
6780 speed: 0,
6781 accuracy: 0,
6782 },
6783 }),
6784 ..Default::default()
6785 },
6786 );
6787 } else {
6788 moves.insert(
6789 Choices::GROWTH,
6790 Choice {
6791 move_id: Choices::GROWTH,
6792 target: MoveTarget::User,
6793 move_type: PokemonType::NORMAL,
6794 flags: Flags {
6795 ..Default::default()
6796 },
6797 boost: Some(Boost {
6798 target: MoveTarget::User,
6799 boosts: StatBoosts {
6800 attack: 1,
6801 defense: 0,
6802 special_attack: 1,
6803 special_defense: 0,
6804 speed: 0,
6805 accuracy: 0,
6806 },
6807 }),
6808 ..Default::default()
6809 },
6810 );
6811 }
6812 moves.insert(
6813 Choices::GRUDGE,
6814 Choice {
6815 move_id: Choices::GRUDGE,
6816 target: MoveTarget::User,
6817 move_type: PokemonType::GHOST,
6818 flags: Flags {
6819 ..Default::default()
6820 },
6821 volatile_status: Some(VolatileStatus {
6822 target: MoveTarget::User,
6823 volatile_status: PokemonVolatileStatus::GRUDGE,
6824 }),
6825 ..Default::default()
6826 },
6827 );
6828 moves.insert(
6829 Choices::GUARDSPLIT,
6830 Choice {
6831 move_id: Choices::GUARDSPLIT,
6832 move_type: PokemonType::PSYCHIC,
6833 flags: Flags {
6834 protect: true,
6835 ..Default::default()
6836 },
6837 ..Default::default()
6838 },
6839 );
6840 moves.insert(
6841 Choices::GUARDSWAP,
6842 Choice {
6843 move_id: Choices::GUARDSWAP,
6844 move_type: PokemonType::PSYCHIC,
6845 flags: Flags {
6846 protect: true,
6847 ..Default::default()
6848 },
6849 ..Default::default()
6850 },
6851 );
6852 moves.insert(
6853 Choices::GUILLOTINE,
6854 Choice {
6855 move_id: Choices::GUILLOTINE,
6856 accuracy: 30.0,
6857 category: MoveCategory::Physical,
6858 move_type: PokemonType::NORMAL,
6859 flags: Flags {
6860 contact: true,
6861 protect: true,
6862 ..Default::default()
6863 },
6864 ..Default::default()
6865 },
6866 );
6867 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6868 moves.insert(
6869 Choices::GUNKSHOT,
6870 Choice {
6871 move_id: Choices::GUNKSHOT,
6872 accuracy: 70.0,
6873 base_power: 120.0,
6874 category: MoveCategory::Physical,
6875 move_type: PokemonType::POISON,
6876 flags: Flags {
6877 protect: true,
6878 ..Default::default()
6879 },
6880 secondaries: Some(vec![Secondary {
6881 chance: 30.0,
6882 target: MoveTarget::Opponent,
6883 effect: Effect::Status(PokemonStatus::POISON),
6884 }]),
6885 ..Default::default()
6886 },
6887 );
6888 } else {
6889 moves.insert(
6890 Choices::GUNKSHOT,
6891 Choice {
6892 move_id: Choices::GUNKSHOT,
6893 accuracy: 80.0,
6894 base_power: 120.0,
6895 category: MoveCategory::Physical,
6896 move_type: PokemonType::POISON,
6897 flags: Flags {
6898 protect: true,
6899 ..Default::default()
6900 },
6901 secondaries: Some(vec![Secondary {
6902 chance: 30.0,
6903 target: MoveTarget::Opponent,
6904 effect: Effect::Status(PokemonStatus::POISON),
6905 }]),
6906 ..Default::default()
6907 },
6908 );
6909 }
6910 if cfg!(feature = "gen1") {
6911 moves.insert(
6912 Choices::GUST,
6913 Choice {
6914 move_id: Choices::GUST,
6915 base_power: 40.0,
6916 category: MoveCategory::Special,
6917 move_type: PokemonType::NORMAL,
6918 flags: Flags {
6919 protect: true,
6920 wind: true,
6921 ..Default::default()
6922 },
6923 ..Default::default()
6924 },
6925 );
6926 } else {
6927 moves.insert(
6928 Choices::GUST,
6929 Choice {
6930 move_id: Choices::GUST,
6931 base_power: 40.0,
6932 category: MoveCategory::Special,
6933 move_type: PokemonType::FLYING,
6934 flags: Flags {
6935 protect: true,
6936 wind: true,
6937 ..Default::default()
6938 },
6939 ..Default::default()
6940 },
6941 );
6942 }
6943 moves.insert(
6944 Choices::GYROBALL,
6945 Choice {
6946 move_id: Choices::GYROBALL,
6947 category: MoveCategory::Physical,
6948 move_type: PokemonType::STEEL,
6949 flags: Flags {
6950 bullet: true,
6951 contact: true,
6952 protect: true,
6953 ..Default::default()
6954 },
6955 ..Default::default()
6956 },
6957 );
6958 moves.insert(
6959 Choices::HAIL,
6960 Choice {
6961 move_id: Choices::HAIL,
6962 move_type: PokemonType::ICE,
6963 flags: Flags {
6964 ..Default::default()
6965 },
6966 ..Default::default()
6967 },
6968 );
6969 moves.insert(
6970 Choices::HAMMERARM,
6971 Choice {
6972 move_id: Choices::HAMMERARM,
6973 accuracy: 90.0,
6974 base_power: 100.0,
6975 category: MoveCategory::Physical,
6976 move_type: PokemonType::FIGHTING,
6977 flags: Flags {
6978 contact: true,
6979 protect: true,
6980 punch: true,
6981 ..Default::default()
6982 },
6983 boost: Some(Boost {
6984 target: MoveTarget::User,
6985 boosts: StatBoosts {
6986 attack: 0,
6987 defense: 0,
6988 special_attack: 0,
6989 special_defense: 0,
6990 speed: -1,
6991 accuracy: 0,
6992 },
6993 }),
6994 ..Default::default()
6995 },
6996 );
6997 moves.insert(
6998 Choices::HAPPYHOUR,
6999 Choice {
7000 move_id: Choices::HAPPYHOUR,
7001 target: MoveTarget::User,
7002 move_type: PokemonType::NORMAL,
7003 flags: Flags {
7004 ..Default::default()
7005 },
7006 ..Default::default()
7007 },
7008 );
7009 moves.insert(
7010 Choices::HARDEN,
7011 Choice {
7012 move_id: Choices::HARDEN,
7013 target: MoveTarget::User,
7014 move_type: PokemonType::NORMAL,
7015 flags: Flags {
7016 ..Default::default()
7017 },
7018 boost: Some(Boost {
7019 target: MoveTarget::User,
7020 boosts: StatBoosts {
7021 attack: 0,
7022 defense: 1,
7023 special_attack: 0,
7024 special_defense: 0,
7025 speed: 0,
7026 accuracy: 0,
7027 },
7028 }),
7029 ..Default::default()
7030 },
7031 );
7032 moves.insert(
7033 Choices::HARDPRESS,
7034 Choice {
7035 move_id: Choices::HARDPRESS,
7036 category: MoveCategory::Physical,
7037 move_type: PokemonType::STEEL,
7038 flags: Flags {
7039 contact: true,
7040 protect: true,
7041 ..Default::default()
7042 },
7043 ..Default::default()
7044 },
7045 );
7046 moves.insert(
7047 Choices::HAZE,
7048 Choice {
7049 move_id: Choices::HAZE,
7050 move_type: PokemonType::ICE,
7051 flags: Flags {
7052 ..Default::default()
7053 },
7054 ..Default::default()
7055 },
7056 );
7057 moves.insert(
7058 Choices::HEADBUTT,
7059 Choice {
7060 move_id: Choices::HEADBUTT,
7061 base_power: 70.0,
7062 category: MoveCategory::Physical,
7063 move_type: PokemonType::NORMAL,
7064 flags: Flags {
7065 contact: true,
7066 protect: true,
7067 ..Default::default()
7068 },
7069 secondaries: Some(vec![Secondary {
7070 chance: 30.0,
7071 target: MoveTarget::Opponent,
7072 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
7073 }]),
7074 ..Default::default()
7075 },
7076 );
7077 moves.insert(
7078 Choices::HEADCHARGE,
7079 Choice {
7080 move_id: Choices::HEADCHARGE,
7081 base_power: 120.0,
7082 category: MoveCategory::Physical,
7083 move_type: PokemonType::NORMAL,
7084 flags: Flags {
7085 contact: true,
7086 protect: true,
7087 ..Default::default()
7088 },
7089 recoil: Some(0.25),
7090 ..Default::default()
7091 },
7092 );
7093 moves.insert(
7094 Choices::HEADLONGRUSH,
7095 Choice {
7096 move_id: Choices::HEADLONGRUSH,
7097 base_power: 120.0,
7098 category: MoveCategory::Physical,
7099 move_type: PokemonType::GROUND,
7100 flags: Flags {
7101 contact: true,
7102 protect: true,
7103 punch: true,
7104 ..Default::default()
7105 },
7106 boost: Some(Boost {
7107 target: MoveTarget::User,
7108 boosts: StatBoosts {
7109 attack: 0,
7110 defense: -1,
7111 special_attack: 0,
7112 special_defense: -1,
7113 speed: 0,
7114 accuracy: 0,
7115 },
7116 }),
7117 ..Default::default()
7118 },
7119 );
7120 moves.insert(
7121 Choices::HEADSMASH,
7122 Choice {
7123 move_id: Choices::HEADSMASH,
7124 accuracy: 80.0,
7125 base_power: 150.0,
7126 category: MoveCategory::Physical,
7127 move_type: PokemonType::ROCK,
7128 flags: Flags {
7129 contact: true,
7130 protect: true,
7131 ..Default::default()
7132 },
7133 recoil: Some(0.5),
7134 ..Default::default()
7135 },
7136 );
7137 moves.insert(
7138 Choices::HEALBELL,
7139 Choice {
7140 move_id: Choices::HEALBELL,
7141 target: MoveTarget::User,
7142 move_type: PokemonType::NORMAL,
7143 flags: Flags {
7144 sound: true,
7145 ..Default::default()
7146 },
7147 ..Default::default()
7148 },
7149 );
7150 moves.insert(
7151 Choices::HEALBLOCK,
7152 Choice {
7153 move_id: Choices::HEALBLOCK,
7154 move_type: PokemonType::PSYCHIC,
7155 flags: Flags {
7156 protect: true,
7157 reflectable: true,
7158 ..Default::default()
7159 },
7160 volatile_status: Some(VolatileStatus {
7161 target: MoveTarget::Opponent,
7162 volatile_status: PokemonVolatileStatus::HEALBLOCK,
7163 }),
7164 ..Default::default()
7165 },
7166 );
7167 moves.insert(
7168 Choices::HEALINGWISH,
7169 Choice {
7170 move_id: Choices::HEALINGWISH,
7171 target: MoveTarget::User,
7172 move_type: PokemonType::PSYCHIC,
7173 flags: Flags {
7174 heal: true,
7175 ..Default::default()
7176 },
7177 side_condition: Some(SideCondition {
7178 target: MoveTarget::User,
7179 condition: PokemonSideCondition::HealingWish,
7180 }),
7181 heal: Some(Heal {
7182 target: MoveTarget::User,
7183 amount: -1.0,
7184 }),
7185 ..Default::default()
7186 },
7187 );
7188 moves.insert(
7189 Choices::HEALORDER,
7190 Choice {
7191 move_id: Choices::HEALORDER,
7192 target: MoveTarget::User,
7193 move_type: PokemonType::BUG,
7194 flags: Flags {
7195 heal: true,
7196 ..Default::default()
7197 },
7198 heal: Some(Heal {
7199 target: MoveTarget::User,
7200 amount: 0.5,
7201 }),
7202 ..Default::default()
7203 },
7204 );
7205 moves.insert(
7206 Choices::HEALPULSE,
7207 Choice {
7208 move_id: Choices::HEALPULSE,
7209 move_type: PokemonType::PSYCHIC,
7210 flags: Flags {
7211 heal: true,
7212 protect: true,
7213 pulse: true,
7214 reflectable: true,
7215 ..Default::default()
7216 },
7217 ..Default::default()
7218 },
7219 );
7220 moves.insert(
7221 Choices::HEARTSTAMP,
7222 Choice {
7223 move_id: Choices::HEARTSTAMP,
7224 base_power: 60.0,
7225 category: MoveCategory::Physical,
7226 move_type: PokemonType::PSYCHIC,
7227 flags: Flags {
7228 contact: true,
7229 protect: true,
7230 ..Default::default()
7231 },
7232 secondaries: Some(vec![Secondary {
7233 chance: 30.0,
7234 target: MoveTarget::Opponent,
7235 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
7236 }]),
7237 ..Default::default()
7238 },
7239 );
7240 moves.insert(
7241 Choices::HEARTSWAP,
7242 Choice {
7243 move_id: Choices::HEARTSWAP,
7244 move_type: PokemonType::PSYCHIC,
7245 flags: Flags {
7246 protect: true,
7247 ..Default::default()
7248 },
7249 ..Default::default()
7250 },
7251 );
7252 moves.insert(
7253 Choices::HEATCRASH,
7254 Choice {
7255 move_id: Choices::HEATCRASH,
7256 category: MoveCategory::Physical,
7257 move_type: PokemonType::FIRE,
7258 flags: Flags {
7259 contact: true,
7260 protect: true,
7261 ..Default::default()
7262 },
7263 ..Default::default()
7264 },
7265 );
7266 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
7267 moves.insert(
7268 Choices::HEATWAVE,
7269 Choice {
7270 move_id: Choices::HEATWAVE,
7271 accuracy: 90.0,
7272 base_power: 100.0,
7273 category: MoveCategory::Special,
7274 move_type: PokemonType::FIRE,
7275 flags: Flags {
7276 protect: true,
7277 wind: true,
7278 ..Default::default()
7279 },
7280 secondaries: Some(vec![Secondary {
7281 chance: 10.0,
7282 target: MoveTarget::Opponent,
7283 effect: Effect::Status(PokemonStatus::BURN),
7284 }]),
7285 ..Default::default()
7286 },
7287 );
7288 } else {
7289 moves.insert(
7290 Choices::HEATWAVE,
7291 Choice {
7292 move_id: Choices::HEATWAVE,
7293 accuracy: 90.0,
7294 base_power: 95.0,
7295 category: MoveCategory::Special,
7296 move_type: PokemonType::FIRE,
7297 flags: Flags {
7298 protect: true,
7299 wind: true,
7300 ..Default::default()
7301 },
7302 secondaries: Some(vec![Secondary {
7303 chance: 10.0,
7304 target: MoveTarget::Opponent,
7305 effect: Effect::Status(PokemonStatus::BURN),
7306 }]),
7307 ..Default::default()
7308 },
7309 );
7310 }
7311 moves.insert(
7312 Choices::HEAVYSLAM,
7313 Choice {
7314 move_id: Choices::HEAVYSLAM,
7315 category: MoveCategory::Physical,
7316 move_type: PokemonType::STEEL,
7317 flags: Flags {
7318 contact: true,
7319 protect: true,
7320 ..Default::default()
7321 },
7322 ..Default::default()
7323 },
7324 );
7325 moves.insert(
7326 Choices::HELPINGHAND,
7327 Choice {
7328 move_id: Choices::HELPINGHAND,
7329 priority: 5,
7330 target: MoveTarget::User,
7331 move_type: PokemonType::NORMAL,
7332 flags: Flags {
7333 ..Default::default()
7334 },
7335 volatile_status: Some(VolatileStatus {
7336 target: MoveTarget::User,
7337 volatile_status: PokemonVolatileStatus::HELPINGHAND,
7338 }),
7339 ..Default::default()
7340 },
7341 );
7342 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
7343 moves.insert(
7344 Choices::HEX,
7345 Choice {
7346 move_id: Choices::HEX,
7347 base_power: 50.0,
7348 category: MoveCategory::Special,
7349 move_type: PokemonType::GHOST,
7350 flags: Flags {
7351 protect: true,
7352 ..Default::default()
7353 },
7354 ..Default::default()
7355 },
7356 );
7357 } else {
7358 moves.insert(
7359 Choices::HEX,
7360 Choice {
7361 move_id: Choices::HEX,
7362 base_power: 65.0,
7363 category: MoveCategory::Special,
7364 move_type: PokemonType::GHOST,
7365 flags: Flags {
7366 protect: true,
7367 ..Default::default()
7368 },
7369 ..Default::default()
7370 },
7371 );
7372 }
7373 moves.insert(
7374 Choices::HIDDENPOWER,
7375 Choice {
7376 move_id: Choices::HIDDENPOWER,
7377 base_power: 60.0,
7378 category: MoveCategory::Special,
7379 move_type: PokemonType::NORMAL,
7380 flags: Flags {
7381 protect: true,
7382 ..Default::default()
7383 },
7384 ..Default::default()
7385 },
7386 );
7387 moves.insert(
7388 Choices::HIDDENPOWERBUG60,
7389 Choice {
7390 move_id: Choices::HIDDENPOWERBUG60,
7391 base_power: 60.0,
7392 category: MoveCategory::Special,
7393 move_type: PokemonType::BUG,
7394 flags: Flags {
7395 protect: true,
7396 ..Default::default()
7397 },
7398 ..Default::default()
7399 },
7400 );
7401 moves.insert(
7402 Choices::HIDDENPOWERBUG70,
7403 Choice {
7404 move_id: Choices::HIDDENPOWERBUG70,
7405 base_power: 70.0,
7406 category: MoveCategory::Special,
7407 move_type: PokemonType::BUG,
7408 flags: Flags {
7409 protect: true,
7410 ..Default::default()
7411 },
7412 ..Default::default()
7413 },
7414 );
7415 moves.insert(
7416 Choices::HIDDENPOWERDARK60,
7417 Choice {
7418 move_id: Choices::HIDDENPOWERDARK60,
7419 base_power: 60.0,
7420 category: MoveCategory::Special,
7421 move_type: PokemonType::DARK,
7422 flags: Flags {
7423 protect: true,
7424 ..Default::default()
7425 },
7426 ..Default::default()
7427 },
7428 );
7429 moves.insert(
7430 Choices::HIDDENPOWERDARK70,
7431 Choice {
7432 move_id: Choices::HIDDENPOWERDARK70,
7433 base_power: 70.0,
7434 category: MoveCategory::Special,
7435 move_type: PokemonType::DARK,
7436 flags: Flags {
7437 protect: true,
7438 ..Default::default()
7439 },
7440 ..Default::default()
7441 },
7442 );
7443 moves.insert(
7444 Choices::HIDDENPOWERDRAGON60,
7445 Choice {
7446 move_id: Choices::HIDDENPOWERDRAGON60,
7447 base_power: 60.0,
7448 category: MoveCategory::Special,
7449 move_type: PokemonType::DRAGON,
7450 flags: Flags {
7451 protect: true,
7452 ..Default::default()
7453 },
7454 ..Default::default()
7455 },
7456 );
7457 moves.insert(
7458 Choices::HIDDENPOWERDRAGON70,
7459 Choice {
7460 move_id: Choices::HIDDENPOWERDRAGON70,
7461 base_power: 70.0,
7462 category: MoveCategory::Special,
7463 move_type: PokemonType::DRAGON,
7464 flags: Flags {
7465 protect: true,
7466 ..Default::default()
7467 },
7468 ..Default::default()
7469 },
7470 );
7471 moves.insert(
7472 Choices::HIDDENPOWERELECTRIC60,
7473 Choice {
7474 move_id: Choices::HIDDENPOWERELECTRIC60,
7475 base_power: 60.0,
7476 category: MoveCategory::Special,
7477 move_type: PokemonType::ELECTRIC,
7478 flags: Flags {
7479 protect: true,
7480 ..Default::default()
7481 },
7482 ..Default::default()
7483 },
7484 );
7485 moves.insert(
7486 Choices::HIDDENPOWERELECTRIC70,
7487 Choice {
7488 move_id: Choices::HIDDENPOWERELECTRIC70,
7489 base_power: 70.0,
7490 category: MoveCategory::Special,
7491 move_type: PokemonType::ELECTRIC,
7492 flags: Flags {
7493 protect: true,
7494 ..Default::default()
7495 },
7496 ..Default::default()
7497 },
7498 );
7499 moves.insert(
7500 Choices::HIDDENPOWERFIGHTING60,
7501 Choice {
7502 move_id: Choices::HIDDENPOWERFIGHTING60,
7503 base_power: 60.0,
7504 category: MoveCategory::Special,
7505 move_type: PokemonType::FIGHTING,
7506 flags: Flags {
7507 protect: true,
7508 ..Default::default()
7509 },
7510 ..Default::default()
7511 },
7512 );
7513 moves.insert(
7514 Choices::HIDDENPOWERFIGHTING70,
7515 Choice {
7516 move_id: Choices::HIDDENPOWERFIGHTING70,
7517 base_power: 70.0,
7518 category: MoveCategory::Special,
7519 move_type: PokemonType::FIGHTING,
7520 flags: Flags {
7521 protect: true,
7522 ..Default::default()
7523 },
7524 ..Default::default()
7525 },
7526 );
7527 moves.insert(
7528 Choices::HIDDENPOWERFIRE60,
7529 Choice {
7530 move_id: Choices::HIDDENPOWERFIRE60,
7531 base_power: 60.0,
7532 category: MoveCategory::Special,
7533 move_type: PokemonType::FIRE,
7534 flags: Flags {
7535 protect: true,
7536 ..Default::default()
7537 },
7538 ..Default::default()
7539 },
7540 );
7541 moves.insert(
7542 Choices::HIDDENPOWERFIRE70,
7543 Choice {
7544 move_id: Choices::HIDDENPOWERFIRE70,
7545 base_power: 70.0,
7546 category: MoveCategory::Special,
7547 move_type: PokemonType::FIRE,
7548 flags: Flags {
7549 protect: true,
7550 ..Default::default()
7551 },
7552 ..Default::default()
7553 },
7554 );
7555 moves.insert(
7556 Choices::HIDDENPOWERFLYING60,
7557 Choice {
7558 move_id: Choices::HIDDENPOWERFLYING60,
7559 base_power: 60.0,
7560 category: MoveCategory::Special,
7561 move_type: PokemonType::FLYING,
7562 flags: Flags {
7563 protect: true,
7564 ..Default::default()
7565 },
7566 ..Default::default()
7567 },
7568 );
7569 moves.insert(
7570 Choices::HIDDENPOWERFLYING70,
7571 Choice {
7572 move_id: Choices::HIDDENPOWERFLYING70,
7573 base_power: 70.0,
7574 category: MoveCategory::Special,
7575 move_type: PokemonType::FLYING,
7576 flags: Flags {
7577 protect: true,
7578 ..Default::default()
7579 },
7580 ..Default::default()
7581 },
7582 );
7583 moves.insert(
7584 Choices::HIDDENPOWERGHOST60,
7585 Choice {
7586 move_id: Choices::HIDDENPOWERGHOST60,
7587 base_power: 60.0,
7588 category: MoveCategory::Special,
7589 move_type: PokemonType::GHOST,
7590 flags: Flags {
7591 protect: true,
7592 ..Default::default()
7593 },
7594 ..Default::default()
7595 },
7596 );
7597 moves.insert(
7598 Choices::HIDDENPOWERGHOST70,
7599 Choice {
7600 move_id: Choices::HIDDENPOWERGHOST70,
7601 base_power: 70.0,
7602 category: MoveCategory::Special,
7603 move_type: PokemonType::GHOST,
7604 flags: Flags {
7605 protect: true,
7606 ..Default::default()
7607 },
7608 ..Default::default()
7609 },
7610 );
7611 moves.insert(
7612 Choices::HIDDENPOWERGRASS60,
7613 Choice {
7614 move_id: Choices::HIDDENPOWERGRASS60,
7615 base_power: 60.0,
7616 category: MoveCategory::Special,
7617 move_type: PokemonType::GRASS,
7618 flags: Flags {
7619 protect: true,
7620 ..Default::default()
7621 },
7622 ..Default::default()
7623 },
7624 );
7625 moves.insert(
7626 Choices::HIDDENPOWERGRASS70,
7627 Choice {
7628 move_id: Choices::HIDDENPOWERGRASS70,
7629 base_power: 70.0,
7630 category: MoveCategory::Special,
7631 move_type: PokemonType::GRASS,
7632 flags: Flags {
7633 protect: true,
7634 ..Default::default()
7635 },
7636 ..Default::default()
7637 },
7638 );
7639 moves.insert(
7640 Choices::HIDDENPOWERGROUND60,
7641 Choice {
7642 move_id: Choices::HIDDENPOWERGROUND60,
7643 base_power: 60.0,
7644 category: MoveCategory::Special,
7645 move_type: PokemonType::GROUND,
7646 flags: Flags {
7647 protect: true,
7648 ..Default::default()
7649 },
7650 ..Default::default()
7651 },
7652 );
7653 moves.insert(
7654 Choices::HIDDENPOWERGROUND70,
7655 Choice {
7656 move_id: Choices::HIDDENPOWERGROUND70,
7657 base_power: 70.0,
7658 category: MoveCategory::Special,
7659 move_type: PokemonType::GROUND,
7660 flags: Flags {
7661 protect: true,
7662 ..Default::default()
7663 },
7664 ..Default::default()
7665 },
7666 );
7667 moves.insert(
7668 Choices::HIDDENPOWERICE60,
7669 Choice {
7670 move_id: Choices::HIDDENPOWERICE60,
7671 base_power: 60.0,
7672 category: MoveCategory::Special,
7673 move_type: PokemonType::ICE,
7674 flags: Flags {
7675 protect: true,
7676 ..Default::default()
7677 },
7678 ..Default::default()
7679 },
7680 );
7681 moves.insert(
7682 Choices::HIDDENPOWERICE70,
7683 Choice {
7684 move_id: Choices::HIDDENPOWERICE70,
7685 base_power: 70.0,
7686 category: MoveCategory::Special,
7687 move_type: PokemonType::ICE,
7688 flags: Flags {
7689 protect: true,
7690 ..Default::default()
7691 },
7692 ..Default::default()
7693 },
7694 );
7695 moves.insert(
7696 Choices::HIDDENPOWERPOISON60,
7697 Choice {
7698 move_id: Choices::HIDDENPOWERPOISON60,
7699 base_power: 60.0,
7700 category: MoveCategory::Special,
7701 move_type: PokemonType::POISON,
7702 flags: Flags {
7703 protect: true,
7704 ..Default::default()
7705 },
7706 ..Default::default()
7707 },
7708 );
7709 moves.insert(
7710 Choices::HIDDENPOWERPOISON70,
7711 Choice {
7712 move_id: Choices::HIDDENPOWERPOISON70,
7713 base_power: 70.0,
7714 category: MoveCategory::Special,
7715 move_type: PokemonType::POISON,
7716 flags: Flags {
7717 protect: true,
7718 ..Default::default()
7719 },
7720 ..Default::default()
7721 },
7722 );
7723 moves.insert(
7724 Choices::HIDDENPOWERPSYCHIC60,
7725 Choice {
7726 move_id: Choices::HIDDENPOWERPSYCHIC60,
7727 base_power: 60.0,
7728 category: MoveCategory::Special,
7729 move_type: PokemonType::PSYCHIC,
7730 flags: Flags {
7731 protect: true,
7732 ..Default::default()
7733 },
7734 ..Default::default()
7735 },
7736 );
7737 moves.insert(
7738 Choices::HIDDENPOWERPSYCHIC70,
7739 Choice {
7740 move_id: Choices::HIDDENPOWERPSYCHIC70,
7741 base_power: 70.0,
7742 category: MoveCategory::Special,
7743 move_type: PokemonType::PSYCHIC,
7744 flags: Flags {
7745 protect: true,
7746 ..Default::default()
7747 },
7748 ..Default::default()
7749 },
7750 );
7751 moves.insert(
7752 Choices::HIDDENPOWERROCK60,
7753 Choice {
7754 move_id: Choices::HIDDENPOWERROCK60,
7755 base_power: 60.0,
7756 category: MoveCategory::Special,
7757 move_type: PokemonType::ROCK,
7758 flags: Flags {
7759 protect: true,
7760 ..Default::default()
7761 },
7762 ..Default::default()
7763 },
7764 );
7765 moves.insert(
7766 Choices::HIDDENPOWERROCK70,
7767 Choice {
7768 move_id: Choices::HIDDENPOWERROCK70,
7769 base_power: 70.0,
7770 category: MoveCategory::Special,
7771 move_type: PokemonType::ROCK,
7772 flags: Flags {
7773 protect: true,
7774 ..Default::default()
7775 },
7776 ..Default::default()
7777 },
7778 );
7779 moves.insert(
7780 Choices::HIDDENPOWERSTEEL60,
7781 Choice {
7782 move_id: Choices::HIDDENPOWERSTEEL60,
7783 base_power: 60.0,
7784 category: MoveCategory::Special,
7785 move_type: PokemonType::STEEL,
7786 flags: Flags {
7787 protect: true,
7788 ..Default::default()
7789 },
7790 ..Default::default()
7791 },
7792 );
7793 moves.insert(
7794 Choices::HIDDENPOWERSTEEL70,
7795 Choice {
7796 move_id: Choices::HIDDENPOWERSTEEL70,
7797 base_power: 70.0,
7798 category: MoveCategory::Special,
7799 move_type: PokemonType::STEEL,
7800 flags: Flags {
7801 protect: true,
7802 ..Default::default()
7803 },
7804 ..Default::default()
7805 },
7806 );
7807 moves.insert(
7808 Choices::HIDDENPOWERWATER60,
7809 Choice {
7810 move_id: Choices::HIDDENPOWERWATER60,
7811 base_power: 60.0,
7812 category: MoveCategory::Special,
7813 move_type: PokemonType::WATER,
7814 flags: Flags {
7815 protect: true,
7816 ..Default::default()
7817 },
7818 ..Default::default()
7819 },
7820 );
7821 moves.insert(
7822 Choices::HIDDENPOWERWATER70,
7823 Choice {
7824 move_id: Choices::HIDDENPOWERWATER70,
7825 base_power: 70.0,
7826 category: MoveCategory::Special,
7827 move_type: PokemonType::WATER,
7828 flags: Flags {
7829 protect: true,
7830 ..Default::default()
7831 },
7832 ..Default::default()
7833 },
7834 );
7835 moves.insert(
7836 Choices::HIGHHORSEPOWER,
7837 Choice {
7838 move_id: Choices::HIGHHORSEPOWER,
7839 accuracy: 95.0,
7840 base_power: 95.0,
7841 category: MoveCategory::Physical,
7842 move_type: PokemonType::GROUND,
7843 flags: Flags {
7844 contact: true,
7845 protect: true,
7846 ..Default::default()
7847 },
7848 ..Default::default()
7849 },
7850 );
7851 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
7852 moves.insert(
7853 Choices::HIGHJUMPKICK,
7854 Choice {
7855 move_id: Choices::HIGHJUMPKICK,
7856 accuracy: 90.0,
7857 base_power: 85.0,
7858 category: MoveCategory::Physical,
7859 move_type: PokemonType::FIGHTING,
7860 flags: Flags {
7861 contact: true,
7862 protect: true,
7863 ..Default::default()
7864 },
7865 crash: Some(0.5),
7866 ..Default::default()
7867 },
7868 );
7869 }
7870 else if cfg!(feature = "gen4") {
7871 moves.insert(
7872 Choices::HIGHJUMPKICK,
7873 Choice {
7874 move_id: Choices::HIGHJUMPKICK,
7875 accuracy: 90.0,
7876 base_power: 100.0,
7877 category: MoveCategory::Physical,
7878 move_type: PokemonType::FIGHTING,
7879 flags: Flags {
7880 contact: true,
7881 protect: true,
7882 ..Default::default()
7883 },
7884 crash: Some(0.5),
7885 ..Default::default()
7886 },
7887 );
7888 } else {
7889 moves.insert(
7890 Choices::HIGHJUMPKICK,
7891 Choice {
7892 move_id: Choices::HIGHJUMPKICK,
7893 accuracy: 90.0,
7894 base_power: 130.0,
7895 category: MoveCategory::Physical,
7896 move_type: PokemonType::FIGHTING,
7897 flags: Flags {
7898 contact: true,
7899 protect: true,
7900 ..Default::default()
7901 },
7902 crash: Some(0.5),
7903 ..Default::default()
7904 },
7905 );
7906 }
7907 moves.insert(
7908 Choices::HOLDBACK,
7909 Choice {
7910 move_id: Choices::HOLDBACK,
7911 base_power: 40.0,
7912 category: MoveCategory::Physical,
7913 move_type: PokemonType::NORMAL,
7914 flags: Flags {
7915 contact: true,
7916 protect: true,
7917 ..Default::default()
7918 },
7919 ..Default::default()
7920 },
7921 );
7922 moves.insert(
7923 Choices::HOLDHANDS,
7924 Choice {
7925 move_id: Choices::HOLDHANDS,
7926 target: MoveTarget::User,
7927 move_type: PokemonType::NORMAL,
7928 flags: Flags {
7929 ..Default::default()
7930 },
7931 ..Default::default()
7932 },
7933 );
7934 moves.insert(
7935 Choices::HONECLAWS,
7936 Choice {
7937 move_id: Choices::HONECLAWS,
7938 target: MoveTarget::User,
7939 move_type: PokemonType::DARK,
7940 flags: Flags {
7941 ..Default::default()
7942 },
7943 boost: Some(Boost {
7944 target: MoveTarget::User,
7945 boosts: StatBoosts {
7946 attack: 1,
7947 defense: 0,
7948 special_attack: 0,
7949 special_defense: 0,
7950 speed: 0,
7951 accuracy: 1,
7952 },
7953 }),
7954 ..Default::default()
7955 },
7956 );
7957 moves.insert(
7958 Choices::HORNATTACK,
7959 Choice {
7960 move_id: Choices::HORNATTACK,
7961 base_power: 65.0,
7962 category: MoveCategory::Physical,
7963 move_type: PokemonType::NORMAL,
7964 flags: Flags {
7965 contact: true,
7966 protect: true,
7967 ..Default::default()
7968 },
7969 ..Default::default()
7970 },
7971 );
7972 moves.insert(
7973 Choices::HORNDRILL,
7974 Choice {
7975 move_id: Choices::HORNDRILL,
7976 accuracy: 30.0,
7977 category: MoveCategory::Physical,
7978 move_type: PokemonType::NORMAL,
7979 flags: Flags {
7980 contact: true,
7981 protect: true,
7982 ..Default::default()
7983 },
7984 ..Default::default()
7985 },
7986 );
7987 moves.insert(
7988 Choices::HORNLEECH,
7989 Choice {
7990 move_id: Choices::HORNLEECH,
7991 base_power: 75.0,
7992 category: MoveCategory::Physical,
7993 move_type: PokemonType::GRASS,
7994 flags: Flags {
7995 contact: true,
7996 heal: true,
7997 protect: true,
7998 ..Default::default()
7999 },
8000 drain: Some(0.5),
8001 ..Default::default()
8002 },
8003 );
8004 moves.insert(
8005 Choices::HOWL,
8006 Choice {
8007 move_id: Choices::HOWL,
8008 target: MoveTarget::User,
8009 move_type: PokemonType::NORMAL,
8010 flags: Flags {
8011 sound: true,
8012 ..Default::default()
8013 },
8014 boost: Some(Boost {
8015 target: MoveTarget::User,
8016 boosts: StatBoosts {
8017 attack: 1,
8018 defense: 0,
8019 special_attack: 0,
8020 special_defense: 0,
8021 speed: 0,
8022 accuracy: 0,
8023 },
8024 }),
8025 ..Default::default()
8026 },
8027 );
8028 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8029 moves.insert(
8030 Choices::HURRICANE,
8031 Choice {
8032 move_id: Choices::HURRICANE,
8033 accuracy: 70.0,
8034 base_power: 120.0,
8035 category: MoveCategory::Special,
8036 move_type: PokemonType::FLYING,
8037 flags: Flags {
8038 protect: true,
8039 wind: true,
8040 ..Default::default()
8041 },
8042 secondaries: Some(vec![Secondary {
8043 chance: 30.0,
8044 target: MoveTarget::Opponent,
8045 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
8046 }]),
8047 ..Default::default()
8048 },
8049 );
8050 } else {
8051 moves.insert(
8052 Choices::HURRICANE,
8053 Choice {
8054 move_id: Choices::HURRICANE,
8055 accuracy: 70.0,
8056 base_power: 110.0,
8057 category: MoveCategory::Special,
8058 move_type: PokemonType::FLYING,
8059 flags: Flags {
8060 protect: true,
8061 wind: true,
8062 ..Default::default()
8063 },
8064 secondaries: Some(vec![Secondary {
8065 chance: 30.0,
8066 target: MoveTarget::Opponent,
8067 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
8068 }]),
8069 ..Default::default()
8070 },
8071 );
8072 }
8073 moves.insert(
8074 Choices::HYDROCANNON,
8075 Choice {
8076 move_id: Choices::HYDROCANNON,
8077 accuracy: 90.0,
8078 base_power: 150.0,
8079 category: MoveCategory::Special,
8080 move_type: PokemonType::WATER,
8081 flags: Flags {
8082 protect: true,
8083 recharge: true,
8084 ..Default::default()
8085 },
8086 ..Default::default()
8087 },
8088 );
8089 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8090 moves.insert(
8091 Choices::HYDROPUMP,
8092 Choice {
8093 move_id: Choices::HYDROPUMP,
8094 accuracy: 80.0,
8095 base_power: 120.0,
8096 category: MoveCategory::Special,
8097 move_type: PokemonType::WATER,
8098 flags: Flags {
8099 protect: true,
8100 ..Default::default()
8101 },
8102 ..Default::default()
8103 },
8104 );
8105 } else {
8106 moves.insert(
8107 Choices::HYDROPUMP,
8108 Choice {
8109 move_id: Choices::HYDROPUMP,
8110 accuracy: 80.0,
8111 base_power: 110.0,
8112 category: MoveCategory::Special,
8113 move_type: PokemonType::WATER,
8114 flags: Flags {
8115 protect: true,
8116 ..Default::default()
8117 },
8118 ..Default::default()
8119 },
8120 );
8121 }
8122 moves.insert(
8123 Choices::HYDROSTEAM,
8124 Choice {
8125 move_id: Choices::HYDROSTEAM,
8126 base_power: 80.0,
8127 category: MoveCategory::Special,
8128 move_type: PokemonType::WATER,
8129 flags: Flags {
8130 protect: true,
8131 ..Default::default()
8132 },
8133 ..Default::default()
8134 },
8135 );
8136 moves.insert(
8137 Choices::HYPERBEAM,
8138 Choice {
8139 move_id: Choices::HYPERBEAM,
8140 accuracy: 90.0,
8141 base_power: 150.0,
8142 category: MoveCategory::Special,
8143 move_type: PokemonType::NORMAL,
8144 flags: Flags {
8145 protect: true,
8146 recharge: true,
8147 ..Default::default()
8148 },
8149 ..Default::default()
8150 },
8151 );
8152 moves.insert(
8153 Choices::HYPERDRILL,
8154 Choice {
8155 move_id: Choices::HYPERDRILL,
8156 base_power: 100.0,
8157 category: MoveCategory::Physical,
8158 move_type: PokemonType::NORMAL,
8159 flags: Flags {
8160 contact: true,
8161 ..Default::default()
8162 },
8163 ..Default::default()
8164 },
8165 );
8166 moves.insert(
8167 Choices::HYPERFANG,
8168 Choice {
8169 move_id: Choices::HYPERFANG,
8170 accuracy: 90.0,
8171 base_power: 80.0,
8172 category: MoveCategory::Physical,
8173 move_type: PokemonType::NORMAL,
8174 flags: Flags {
8175 bite: true,
8176 contact: true,
8177 protect: true,
8178 ..Default::default()
8179 },
8180 secondaries: Some(vec![Secondary {
8181 chance: 10.0,
8182 target: MoveTarget::Opponent,
8183 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8184 }]),
8185 ..Default::default()
8186 },
8187 );
8188 moves.insert(
8189 Choices::HYPERSPACEFURY,
8190 Choice {
8191 move_id: Choices::HYPERSPACEFURY,
8192 base_power: 100.0,
8193 category: MoveCategory::Physical,
8194 move_type: PokemonType::DARK,
8195 flags: Flags {
8196 ..Default::default()
8197 },
8198 boost: Some(Boost {
8199 target: MoveTarget::User,
8200 boosts: StatBoosts {
8201 attack: 0,
8202 defense: -1,
8203 special_attack: 0,
8204 special_defense: 0,
8205 speed: 0,
8206 accuracy: 0,
8207 },
8208 }),
8209 ..Default::default()
8210 },
8211 );
8212 moves.insert(
8213 Choices::HYPERSPACEHOLE,
8214 Choice {
8215 move_id: Choices::HYPERSPACEHOLE,
8216 base_power: 80.0,
8217 category: MoveCategory::Special,
8218 move_type: PokemonType::PSYCHIC,
8219 flags: Flags {
8220 ..Default::default()
8221 },
8222 ..Default::default()
8223 },
8224 );
8225 moves.insert(
8226 Choices::HYPERVOICE,
8227 Choice {
8228 move_id: Choices::HYPERVOICE,
8229 base_power: 90.0,
8230 category: MoveCategory::Special,
8231 move_type: PokemonType::NORMAL,
8232 flags: Flags {
8233 protect: true,
8234 sound: true,
8235 ..Default::default()
8236 },
8237 ..Default::default()
8238 },
8239 );
8240 moves.insert(
8241 Choices::HYPNOSIS,
8242 Choice {
8243 move_id: Choices::HYPNOSIS,
8244 accuracy: 60.0,
8245 status: Some(Status {
8246 target: MoveTarget::Opponent,
8247 status: PokemonStatus::SLEEP,
8248 }),
8249 move_type: PokemonType::PSYCHIC,
8250 flags: Flags {
8251 protect: true,
8252 reflectable: true,
8253 ..Default::default()
8254 },
8255 ..Default::default()
8256 },
8257 );
8258 moves.insert(
8259 Choices::ICEBALL,
8260 Choice {
8261 move_id: Choices::ICEBALL,
8262 accuracy: 90.0,
8263 base_power: 30.0,
8264 category: MoveCategory::Physical,
8265 move_type: PokemonType::ICE,
8266 flags: Flags {
8267 bullet: true,
8268 contact: true,
8269 protect: true,
8270 ..Default::default()
8271 },
8272 ..Default::default()
8273 },
8274 );
8275 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8276 moves.insert(
8277 Choices::ICEBEAM,
8278 Choice {
8279 move_id: Choices::ICEBEAM,
8280 base_power: 95.0,
8281 category: MoveCategory::Special,
8282 move_type: PokemonType::ICE,
8283 flags: Flags {
8284 protect: true,
8285 ..Default::default()
8286 },
8287 secondaries: Some(vec![Secondary {
8288 chance: 10.0,
8289 target: MoveTarget::Opponent,
8290 effect: Effect::Status(PokemonStatus::FREEZE),
8291 }]),
8292 ..Default::default()
8293 },
8294 );
8295 } else {
8296 moves.insert(
8297 Choices::ICEBEAM,
8298 Choice {
8299 move_id: Choices::ICEBEAM,
8300 base_power: 90.0,
8301 category: MoveCategory::Special,
8302 move_type: PokemonType::ICE,
8303 flags: Flags {
8304 protect: true,
8305 ..Default::default()
8306 },
8307 secondaries: Some(vec![Secondary {
8308 chance: 10.0,
8309 target: MoveTarget::Opponent,
8310 effect: Effect::Status(PokemonStatus::FREEZE),
8311 }]),
8312 ..Default::default()
8313 },
8314 );
8315 }
8316 moves.insert(
8317 Choices::ICEBURN,
8318 Choice {
8319 move_id: Choices::ICEBURN,
8320 accuracy: 90.0,
8321 base_power: 140.0,
8322 category: MoveCategory::Special,
8323 move_type: PokemonType::ICE,
8324 flags: Flags {
8325 charge: true,
8326 protect: true,
8327 ..Default::default()
8328 },
8329 secondaries: Some(vec![Secondary {
8330 chance: 30.0,
8331 target: MoveTarget::Opponent,
8332 effect: Effect::Status(PokemonStatus::BURN),
8333 }]),
8334 ..Default::default()
8335 },
8336 );
8337 moves.insert(
8338 Choices::ICEFANG,
8339 Choice {
8340 move_id: Choices::ICEFANG,
8341 accuracy: 95.0,
8342 base_power: 65.0,
8343 category: MoveCategory::Physical,
8344 move_type: PokemonType::ICE,
8345 flags: Flags {
8346 bite: true,
8347 contact: true,
8348 protect: true,
8349 ..Default::default()
8350 },
8351 secondaries: Some(vec![
8352 Secondary {
8353 chance: 10.0,
8354 target: MoveTarget::Opponent,
8355 effect: Effect::Status(PokemonStatus::FREEZE),
8356 },
8357 Secondary {
8358 chance: 10.0,
8359 target: MoveTarget::Opponent,
8360 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8361 },
8362 ]),
8363 ..Default::default()
8364 },
8365 );
8366 moves.insert(
8367 Choices::ICEHAMMER,
8368 Choice {
8369 move_id: Choices::ICEHAMMER,
8370 accuracy: 90.0,
8371 base_power: 100.0,
8372 category: MoveCategory::Physical,
8373 move_type: PokemonType::ICE,
8374 flags: Flags {
8375 contact: true,
8376 protect: true,
8377 punch: true,
8378 ..Default::default()
8379 },
8380 boost: Some(Boost {
8381 target: MoveTarget::User,
8382 boosts: StatBoosts {
8383 attack: 0,
8384 defense: 0,
8385 special_attack: 0,
8386 special_defense: 0,
8387 speed: -1,
8388 accuracy: 0,
8389 },
8390 }),
8391 ..Default::default()
8392 },
8393 );
8394 moves.insert(
8395 Choices::ICEPUNCH,
8396 Choice {
8397 move_id: Choices::ICEPUNCH,
8398 base_power: 75.0,
8399 category: MoveCategory::Physical,
8400 move_type: PokemonType::ICE,
8401 flags: Flags {
8402 contact: true,
8403 protect: true,
8404 punch: true,
8405 ..Default::default()
8406 },
8407 secondaries: Some(vec![Secondary {
8408 chance: 10.0,
8409 target: MoveTarget::Opponent,
8410 effect: Effect::Status(PokemonStatus::FREEZE),
8411 }]),
8412 ..Default::default()
8413 },
8414 );
8415 moves.insert(
8416 Choices::ICESHARD,
8417 Choice {
8418 move_id: Choices::ICESHARD,
8419 base_power: 40.0,
8420 category: MoveCategory::Physical,
8421 priority: 1,
8422 move_type: PokemonType::ICE,
8423 flags: Flags {
8424 protect: true,
8425 ..Default::default()
8426 },
8427 ..Default::default()
8428 },
8429 );
8430 moves.insert(
8431 Choices::ICESPINNER,
8432 Choice {
8433 move_id: Choices::ICESPINNER,
8434 base_power: 80.0,
8435 category: MoveCategory::Physical,
8436 move_type: PokemonType::ICE,
8437 flags: Flags {
8438 contact: true,
8439 protect: true,
8440 ..Default::default()
8441 },
8442 ..Default::default()
8443 },
8444 );
8445 moves.insert(
8446 Choices::ICICLECRASH,
8447 Choice {
8448 move_id: Choices::ICICLECRASH,
8449 accuracy: 90.0,
8450 base_power: 85.0,
8451 category: MoveCategory::Physical,
8452 move_type: PokemonType::ICE,
8453 flags: Flags {
8454 protect: true,
8455 ..Default::default()
8456 },
8457 secondaries: Some(vec![Secondary {
8458 chance: 30.0,
8459 target: MoveTarget::Opponent,
8460 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8461 }]),
8462 ..Default::default()
8463 },
8464 );
8465 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
8466 moves.insert(
8467 Choices::ICICLESPEAR,
8468 Choice {
8469 move_id: Choices::ICICLESPEAR,
8470 base_power: 10.0,
8471 category: MoveCategory::Physical,
8472 move_type: PokemonType::ICE,
8473 flags: Flags {
8474 protect: true,
8475 ..Default::default()
8476 },
8477 ..Default::default()
8478 },
8479 );
8480 } else {
8481 moves.insert(
8482 Choices::ICICLESPEAR,
8483 Choice {
8484 move_id: Choices::ICICLESPEAR,
8485 base_power: 25.0,
8486 category: MoveCategory::Physical,
8487 move_type: PokemonType::ICE,
8488 flags: Flags {
8489 protect: true,
8490 ..Default::default()
8491 },
8492 ..Default::default()
8493 },
8494 );
8495 }
8496 moves.insert(
8497 Choices::ICYWIND,
8498 Choice {
8499 move_id: Choices::ICYWIND,
8500 accuracy: 95.0,
8501 base_power: 55.0,
8502 category: MoveCategory::Special,
8503 move_type: PokemonType::ICE,
8504 flags: Flags {
8505 protect: true,
8506 wind: true,
8507 ..Default::default()
8508 },
8509 secondaries: Some(vec![Secondary {
8510 chance: 100.0,
8511 target: MoveTarget::Opponent,
8512 effect: Effect::Boost(StatBoosts {
8513 attack: 0,
8514 defense: 0,
8515 special_attack: 0,
8516 special_defense: 0,
8517 speed: -1,
8518 accuracy: 0,
8519 }),
8520 }]),
8521 ..Default::default()
8522 },
8523 );
8524 moves.insert(
8525 Choices::IMPRISON,
8526 Choice {
8527 move_id: Choices::IMPRISON,
8528 target: MoveTarget::User,
8529 move_type: PokemonType::PSYCHIC,
8530 flags: Flags {
8531 ..Default::default()
8532 },
8533 volatile_status: Some(VolatileStatus {
8534 target: MoveTarget::User,
8535 volatile_status: PokemonVolatileStatus::IMPRISON,
8536 }),
8537 ..Default::default()
8538 },
8539 );
8540 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8541 moves.insert(
8542 Choices::INCINERATE,
8543 Choice {
8544 move_id: Choices::INCINERATE,
8545 base_power: 30.0,
8546 category: MoveCategory::Special,
8547 move_type: PokemonType::FIRE,
8548 flags: Flags {
8549 protect: true,
8550 ..Default::default()
8551 },
8552 ..Default::default()
8553 },
8554 );
8555 } else {
8556 moves.insert(
8557 Choices::INCINERATE,
8558 Choice {
8559 move_id: Choices::INCINERATE,
8560 base_power: 60.0,
8561 category: MoveCategory::Special,
8562 move_type: PokemonType::FIRE,
8563 flags: Flags {
8564 protect: true,
8565 ..Default::default()
8566 },
8567 ..Default::default()
8568 },
8569 );
8570 }
8571 moves.insert(
8572 Choices::INFERNALPARADE,
8573 Choice {
8574 move_id: Choices::INFERNALPARADE,
8575 base_power: 60.0,
8576 category: MoveCategory::Special,
8577 move_type: PokemonType::GHOST,
8578 flags: Flags {
8579 protect: true,
8580 ..Default::default()
8581 },
8582 secondaries: Some(vec![Secondary {
8583 chance: 30.0,
8584 target: MoveTarget::Opponent,
8585 effect: Effect::Status(PokemonStatus::BURN),
8586 }]),
8587 ..Default::default()
8588 },
8589 );
8590 moves.insert(
8591 Choices::INFERNO,
8592 Choice {
8593 move_id: Choices::INFERNO,
8594 accuracy: 50.0,
8595 base_power: 100.0,
8596 category: MoveCategory::Special,
8597 move_type: PokemonType::FIRE,
8598 flags: Flags {
8599 protect: true,
8600 ..Default::default()
8601 },
8602 secondaries: Some(vec![Secondary {
8603 chance: 100.0,
8604 target: MoveTarget::Opponent,
8605 effect: Effect::Status(PokemonStatus::BURN),
8606 }]),
8607 ..Default::default()
8608 },
8609 );
8610 moves.insert(
8611 Choices::INFESTATION,
8612 Choice {
8613 move_id: Choices::INFESTATION,
8614 base_power: 20.0,
8615 category: MoveCategory::Special,
8616 move_type: PokemonType::BUG,
8617 flags: Flags {
8618 contact: true,
8619 protect: true,
8620 ..Default::default()
8621 },
8622 volatile_status: Some(VolatileStatus {
8623 target: MoveTarget::Opponent,
8624 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
8625 }),
8626 ..Default::default()
8627 },
8628 );
8629 moves.insert(
8630 Choices::INGRAIN,
8631 Choice {
8632 move_id: Choices::INGRAIN,
8633 target: MoveTarget::User,
8634 move_type: PokemonType::GRASS,
8635 flags: Flags {
8636 ..Default::default()
8637 },
8638 volatile_status: Some(VolatileStatus {
8639 target: MoveTarget::User,
8640 volatile_status: PokemonVolatileStatus::INGRAIN,
8641 }),
8642 ..Default::default()
8643 },
8644 );
8645 moves.insert(
8646 Choices::INSTRUCT,
8647 Choice {
8648 move_id: Choices::INSTRUCT,
8649 move_type: PokemonType::PSYCHIC,
8650 flags: Flags {
8651 protect: true,
8652 ..Default::default()
8653 },
8654 ..Default::default()
8655 },
8656 );
8657 moves.insert(
8658 Choices::IONDELUGE,
8659 Choice {
8660 move_id: Choices::IONDELUGE,
8661 priority: 1,
8662 move_type: PokemonType::ELECTRIC,
8663 flags: Flags {
8664 ..Default::default()
8665 },
8666 ..Default::default()
8667 },
8668 );
8669 moves.insert(
8670 Choices::IRONDEFENSE,
8671 Choice {
8672 move_id: Choices::IRONDEFENSE,
8673 target: MoveTarget::User,
8674 move_type: PokemonType::STEEL,
8675 flags: Flags {
8676 ..Default::default()
8677 },
8678 boost: Some(Boost {
8679 target: MoveTarget::User,
8680 boosts: StatBoosts {
8681 attack: 0,
8682 defense: 2,
8683 special_attack: 0,
8684 special_defense: 0,
8685 speed: 0,
8686 accuracy: 0,
8687 },
8688 }),
8689 ..Default::default()
8690 },
8691 );
8692 moves.insert(
8693 Choices::IRONHEAD,
8694 Choice {
8695 move_id: Choices::IRONHEAD,
8696 base_power: 80.0,
8697 category: MoveCategory::Physical,
8698 move_type: PokemonType::STEEL,
8699 flags: Flags {
8700 contact: true,
8701 protect: true,
8702 ..Default::default()
8703 },
8704 secondaries: Some(vec![Secondary {
8705 chance: 30.0,
8706 target: MoveTarget::Opponent,
8707 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8708 }]),
8709 ..Default::default()
8710 },
8711 );
8712 moves.insert(
8713 Choices::IRONTAIL,
8714 Choice {
8715 move_id: Choices::IRONTAIL,
8716 accuracy: 75.0,
8717 base_power: 100.0,
8718 category: MoveCategory::Physical,
8719 move_type: PokemonType::STEEL,
8720 flags: Flags {
8721 contact: true,
8722 protect: true,
8723 ..Default::default()
8724 },
8725 secondaries: Some(vec![Secondary {
8726 chance: 30.0,
8727 target: MoveTarget::Opponent,
8728 effect: Effect::Boost(StatBoosts {
8729 attack: 0,
8730 defense: -1,
8731 special_attack: 0,
8732 special_defense: 0,
8733 speed: 0,
8734 accuracy: 0,
8735 }),
8736 }]),
8737 ..Default::default()
8738 },
8739 );
8740 moves.insert(
8741 Choices::IVYCUDGEL,
8742 Choice {
8743 move_id: Choices::IVYCUDGEL,
8744 base_power: 100.0,
8745 category: MoveCategory::Physical,
8746 move_type: PokemonType::GRASS,
8747 flags: Flags {
8748 protect: true,
8749 ..Default::default()
8750 },
8751 ..Default::default()
8752 },
8753 );
8754 moves.insert(
8755 Choices::JAWLOCK,
8756 Choice {
8757 move_id: Choices::JAWLOCK,
8758 base_power: 80.0,
8759 category: MoveCategory::Physical,
8760 move_type: PokemonType::DARK,
8761 flags: Flags {
8762 bite: true,
8763 contact: true,
8764 protect: true,
8765 ..Default::default()
8766 },
8767 ..Default::default()
8768 },
8769 );
8770 moves.insert(
8771 Choices::JETPUNCH,
8772 Choice {
8773 move_id: Choices::JETPUNCH,
8774 base_power: 60.0,
8775 category: MoveCategory::Physical,
8776 priority: 1,
8777 move_type: PokemonType::WATER,
8778 flags: Flags {
8779 contact: true,
8780 protect: true,
8781 punch: true,
8782 ..Default::default()
8783 },
8784 ..Default::default()
8785 },
8786 );
8787 moves.insert(
8788 Choices::JUDGMENT,
8789 Choice {
8790 move_id: Choices::JUDGMENT,
8791 base_power: 100.0,
8792 category: MoveCategory::Special,
8793 move_type: PokemonType::NORMAL,
8794 flags: Flags {
8795 protect: true,
8796 ..Default::default()
8797 },
8798 ..Default::default()
8799 },
8800 );
8801 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
8802 moves.insert(
8803 Choices::JUMPKICK,
8804 Choice {
8805 move_id: Choices::JUMPKICK,
8806 accuracy: 95.0,
8807 base_power: 70.0,
8808 category: MoveCategory::Physical,
8809 move_type: PokemonType::FIGHTING,
8810 flags: Flags {
8811 contact: true,
8812 protect: true,
8813 ..Default::default()
8814 },
8815 crash: Some(0.5),
8816 ..Default::default()
8817 },
8818 );
8819 }
8820 else if cfg!(feature = "gen4") {
8821 moves.insert(
8822 Choices::JUMPKICK,
8823 Choice {
8824 move_id: Choices::JUMPKICK,
8825 accuracy: 95.0,
8826 base_power: 85.0,
8827 category: MoveCategory::Physical,
8828 move_type: PokemonType::FIGHTING,
8829 flags: Flags {
8830 contact: true,
8831 protect: true,
8832 ..Default::default()
8833 },
8834 crash: Some(0.5),
8835 ..Default::default()
8836 },
8837 );
8838 } else {
8839 moves.insert(
8840 Choices::JUMPKICK,
8841 Choice {
8842 move_id: Choices::JUMPKICK,
8843 accuracy: 95.0,
8844 base_power: 100.0,
8845 category: MoveCategory::Physical,
8846 move_type: PokemonType::FIGHTING,
8847 flags: Flags {
8848 contact: true,
8849 protect: true,
8850 ..Default::default()
8851 },
8852 crash: Some(0.5),
8853 ..Default::default()
8854 },
8855 );
8856 }
8857 moves.insert(
8858 Choices::JUNGLEHEALING,
8859 Choice {
8860 move_id: Choices::JUNGLEHEALING,
8861 target: MoveTarget::User,
8862 move_type: PokemonType::GRASS,
8863 flags: Flags {
8864 heal: true,
8865 ..Default::default()
8866 },
8867 heal: Some(Heal {
8868 target: MoveTarget::User,
8869 amount: 0.25,
8870 }),
8871 ..Default::default()
8872 },
8873 );
8874 if cfg!(feature = "gen1") {
8875 moves.insert(
8876 Choices::KARATECHOP,
8877 Choice {
8878 move_id: Choices::KARATECHOP,
8879 base_power: 50.0,
8880 category: MoveCategory::Physical,
8881 move_type: PokemonType::NORMAL,
8882 flags: Flags {
8883 contact: true,
8884 protect: true,
8885 ..Default::default()
8886 },
8887 ..Default::default()
8888 },
8889 );
8890 } else {
8891 moves.insert(
8892 Choices::KARATECHOP,
8893 Choice {
8894 move_id: Choices::KARATECHOP,
8895 base_power: 50.0,
8896 category: MoveCategory::Physical,
8897 move_type: PokemonType::FIGHTING,
8898 flags: Flags {
8899 contact: true,
8900 protect: true,
8901 ..Default::default()
8902 },
8903 ..Default::default()
8904 },
8905 );
8906 }
8907 moves.insert(
8908 Choices::KINESIS,
8909 Choice {
8910 move_id: Choices::KINESIS,
8911 accuracy: 80.0,
8912 move_type: PokemonType::PSYCHIC,
8913 flags: Flags {
8914 protect: true,
8915 reflectable: true,
8916 ..Default::default()
8917 },
8918 boost: Some(Boost {
8919 target: MoveTarget::Opponent,
8920 boosts: StatBoosts {
8921 attack: 0,
8922 defense: 0,
8923 special_attack: 0,
8924 special_defense: 0,
8925 speed: 0,
8926 accuracy: -1,
8927 },
8928 }),
8929 ..Default::default()
8930 },
8931 );
8932 moves.insert(
8933 Choices::KINGSSHIELD,
8934 Choice {
8935 move_id: Choices::KINGSSHIELD,
8936 priority: 4,
8937 target: MoveTarget::User,
8938 move_type: PokemonType::STEEL,
8939 flags: Flags {
8940 ..Default::default()
8941 },
8942 volatile_status: Some(VolatileStatus {
8943 target: MoveTarget::User,
8944 volatile_status: PokemonVolatileStatus::KINGSSHIELD,
8945 }),
8946 ..Default::default()
8947 },
8948 );
8949 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8950 moves.insert(
8951 Choices::KNOCKOFF,
8952 Choice {
8953 move_id: Choices::KNOCKOFF,
8954 base_power: 20.0,
8955 category: MoveCategory::Physical,
8956 move_type: PokemonType::DARK,
8957 flags: Flags {
8958 contact: true,
8959 protect: true,
8960 ..Default::default()
8961 },
8962 ..Default::default()
8963 },
8964 );
8965 } else {
8966 moves.insert(
8967 Choices::KNOCKOFF,
8968 Choice {
8969 move_id: Choices::KNOCKOFF,
8970 base_power: 65.0,
8971 category: MoveCategory::Physical,
8972 move_type: PokemonType::DARK,
8973 flags: Flags {
8974 contact: true,
8975 protect: true,
8976 ..Default::default()
8977 },
8978 ..Default::default()
8979 },
8980 );
8981 }
8982 moves.insert(
8983 Choices::KOWTOWCLEAVE,
8984 Choice {
8985 move_id: Choices::KOWTOWCLEAVE,
8986 base_power: 85.0,
8987 category: MoveCategory::Physical,
8988 move_type: PokemonType::DARK,
8989 flags: Flags {
8990 contact: true,
8991 protect: true,
8992 slicing: true,
8993 ..Default::default()
8994 },
8995 ..Default::default()
8996 },
8997 );
8998 moves.insert(
8999 Choices::LANDSWRATH,
9000 Choice {
9001 move_id: Choices::LANDSWRATH,
9002 base_power: 90.0,
9003 category: MoveCategory::Physical,
9004 move_type: PokemonType::GROUND,
9005 flags: Flags {
9006 protect: true,
9007 ..Default::default()
9008 },
9009 ..Default::default()
9010 },
9011 );
9012 moves.insert(
9013 Choices::LASERFOCUS,
9014 Choice {
9015 move_id: Choices::LASERFOCUS,
9016 target: MoveTarget::User,
9017 move_type: PokemonType::NORMAL,
9018 flags: Flags {
9019 ..Default::default()
9020 },
9021 volatile_status: Some(VolatileStatus {
9022 target: MoveTarget::User,
9023 volatile_status: PokemonVolatileStatus::LASERFOCUS,
9024 }),
9025 ..Default::default()
9026 },
9027 );
9028 moves.insert(
9029 Choices::LASHOUT,
9030 Choice {
9031 move_id: Choices::LASHOUT,
9032 base_power: 75.0,
9033 category: MoveCategory::Physical,
9034 move_type: PokemonType::DARK,
9035 flags: Flags {
9036 contact: true,
9037 protect: true,
9038 ..Default::default()
9039 },
9040 ..Default::default()
9041 },
9042 );
9043 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
9044 moves.insert(
9045 Choices::LASTRESORT,
9046 Choice {
9047 move_id: Choices::LASTRESORT,
9048 base_power: 130.0,
9049 category: MoveCategory::Physical,
9050 move_type: PokemonType::NORMAL,
9051 flags: Flags {
9052 contact: true,
9053 protect: true,
9054 ..Default::default()
9055 },
9056 ..Default::default()
9057 },
9058 );
9059 } else {
9060 moves.insert(
9061 Choices::LASTRESORT,
9062 Choice {
9063 move_id: Choices::LASTRESORT,
9064 base_power: 140.0,
9065 category: MoveCategory::Physical,
9066 move_type: PokemonType::NORMAL,
9067 flags: Flags {
9068 contact: true,
9069 protect: true,
9070 ..Default::default()
9071 },
9072 ..Default::default()
9073 },
9074 );
9075 }
9076 moves.insert(
9077 Choices::LASTRESPECTS,
9078 Choice {
9079 move_id: Choices::LASTRESPECTS,
9080 base_power: 50.0,
9081 category: MoveCategory::Physical,
9082 move_type: PokemonType::GHOST,
9083 flags: Flags {
9084 protect: true,
9085 ..Default::default()
9086 },
9087 ..Default::default()
9088 },
9089 );
9090 moves.insert(
9091 Choices::LAVAPLUME,
9092 Choice {
9093 move_id: Choices::LAVAPLUME,
9094 base_power: 80.0,
9095 category: MoveCategory::Special,
9096 move_type: PokemonType::FIRE,
9097 flags: Flags {
9098 protect: true,
9099 ..Default::default()
9100 },
9101 secondaries: Some(vec![Secondary {
9102 chance: 30.0,
9103 target: MoveTarget::Opponent,
9104 effect: Effect::Status(PokemonStatus::BURN),
9105 }]),
9106 ..Default::default()
9107 },
9108 );
9109 moves.insert(
9110 Choices::LEAFAGE,
9111 Choice {
9112 move_id: Choices::LEAFAGE,
9113 base_power: 40.0,
9114 category: MoveCategory::Physical,
9115 move_type: PokemonType::GRASS,
9116 flags: Flags {
9117 protect: true,
9118 ..Default::default()
9119 },
9120 ..Default::default()
9121 },
9122 );
9123 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
9124 moves.insert(
9125 Choices::LEAFBLADE,
9126 Choice {
9127 move_id: Choices::LEAFBLADE,
9128 base_power: 70.0,
9129 category: MoveCategory::Physical,
9130 move_type: PokemonType::GRASS,
9131 flags: Flags {
9132 contact: true,
9133 protect: true,
9134 slicing: true,
9135 ..Default::default()
9136 },
9137 ..Default::default()
9138 },
9139 );
9140 } else {
9141 moves.insert(
9142 Choices::LEAFBLADE,
9143 Choice {
9144 move_id: Choices::LEAFBLADE,
9145 base_power: 90.0,
9146 category: MoveCategory::Physical,
9147 move_type: PokemonType::GRASS,
9148 flags: Flags {
9149 contact: true,
9150 protect: true,
9151 slicing: true,
9152 ..Default::default()
9153 },
9154 ..Default::default()
9155 },
9156 );
9157 }
9158 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9159 moves.insert(
9160 Choices::LEAFSTORM,
9161 Choice {
9162 move_id: Choices::LEAFSTORM,
9163 accuracy: 90.0,
9164 base_power: 140.0,
9165 category: MoveCategory::Special,
9166 move_type: PokemonType::GRASS,
9167 flags: Flags {
9168 protect: true,
9169 ..Default::default()
9170 },
9171 boost: Some(Boost {
9172 target: MoveTarget::User,
9173 boosts: StatBoosts {
9174 attack: 0,
9175 defense: 0,
9176 special_attack: -2,
9177 special_defense: 0,
9178 speed: 0,
9179 accuracy: 0,
9180 },
9181 }),
9182 ..Default::default()
9183 },
9184 );
9185 } else {
9186 moves.insert(
9187 Choices::LEAFSTORM,
9188 Choice {
9189 move_id: Choices::LEAFSTORM,
9190 accuracy: 90.0,
9191 base_power: 130.0,
9192 category: MoveCategory::Special,
9193 move_type: PokemonType::GRASS,
9194 flags: Flags {
9195 protect: true,
9196 ..Default::default()
9197 },
9198 boost: Some(Boost {
9199 target: MoveTarget::User,
9200 boosts: StatBoosts {
9201 attack: 0,
9202 defense: 0,
9203 special_attack: -2,
9204 special_defense: 0,
9205 speed: 0,
9206 accuracy: 0,
9207 },
9208 }),
9209 ..Default::default()
9210 },
9211 );
9212 }
9213 moves.insert(
9214 Choices::LEAFTORNADO,
9215 Choice {
9216 move_id: Choices::LEAFTORNADO,
9217 accuracy: 90.0,
9218 base_power: 65.0,
9219 category: MoveCategory::Special,
9220 move_type: PokemonType::GRASS,
9221 flags: Flags {
9222 protect: true,
9223 ..Default::default()
9224 },
9225 secondaries: Some(vec![Secondary {
9226 chance: 50.0,
9227 target: MoveTarget::Opponent,
9228 effect: Effect::Boost(StatBoosts {
9229 attack: 0,
9230 defense: 0,
9231 special_attack: 0,
9232 special_defense: 0,
9233 speed: 0,
9234 accuracy: -1,
9235 }),
9236 }]),
9237 ..Default::default()
9238 },
9239 );
9240 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
9241 moves.insert(
9242 Choices::LEECHLIFE,
9243 Choice {
9244 move_id: Choices::LEECHLIFE,
9245 base_power: 20.0,
9246 category: MoveCategory::Physical,
9247 move_type: PokemonType::BUG,
9248 flags: Flags {
9249 contact: true,
9250 heal: true,
9251 protect: true,
9252 ..Default::default()
9253 },
9254 drain: Some(0.5),
9255 ..Default::default()
9256 },
9257 );
9258 } else {
9259 moves.insert(
9260 Choices::LEECHLIFE,
9261 Choice {
9262 move_id: Choices::LEECHLIFE,
9263 base_power: 80.0,
9264 category: MoveCategory::Physical,
9265 move_type: PokemonType::BUG,
9266 flags: Flags {
9267 contact: true,
9268 heal: true,
9269 protect: true,
9270 ..Default::default()
9271 },
9272 drain: Some(0.5),
9273 ..Default::default()
9274 },
9275 );
9276 }
9277 moves.insert(
9278 Choices::LEECHSEED,
9279 Choice {
9280 move_id: Choices::LEECHSEED,
9281 accuracy: 90.0,
9282 move_type: PokemonType::GRASS,
9283 flags: Flags {
9284 powder: true,
9285 protect: true,
9286 reflectable: true,
9287 ..Default::default()
9288 },
9289 volatile_status: Some(VolatileStatus {
9290 target: MoveTarget::Opponent,
9291 volatile_status: PokemonVolatileStatus::LEECHSEED,
9292 }),
9293 ..Default::default()
9294 },
9295 );
9296 moves.insert(
9297 Choices::LEER,
9298 Choice {
9299 move_id: Choices::LEER,
9300 move_type: PokemonType::NORMAL,
9301 flags: Flags {
9302 protect: true,
9303 reflectable: true,
9304 ..Default::default()
9305 },
9306 boost: Some(Boost {
9307 target: MoveTarget::Opponent,
9308 boosts: StatBoosts {
9309 attack: 0,
9310 defense: -1,
9311 special_attack: 0,
9312 special_defense: 0,
9313 speed: 0,
9314 accuracy: 0,
9315 },
9316 }),
9317 ..Default::default()
9318 },
9319 );
9320 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9321 moves.insert(
9322 Choices::LICK,
9323 Choice {
9324 move_id: Choices::LICK,
9325 base_power: 20.0,
9326 category: MoveCategory::Physical,
9327 move_type: PokemonType::GHOST,
9328 flags: Flags {
9329 contact: true,
9330 protect: true,
9331 ..Default::default()
9332 },
9333 secondaries: Some(vec![Secondary {
9334 chance: 30.0,
9335 target: MoveTarget::Opponent,
9336 effect: Effect::Status(PokemonStatus::PARALYZE),
9337 }]),
9338 ..Default::default()
9339 },
9340 );
9341 } else {
9342 moves.insert(
9343 Choices::LICK,
9344 Choice {
9345 move_id: Choices::LICK,
9346 base_power: 30.0,
9347 category: MoveCategory::Physical,
9348 move_type: PokemonType::GHOST,
9349 flags: Flags {
9350 contact: true,
9351 protect: true,
9352 ..Default::default()
9353 },
9354 secondaries: Some(vec![Secondary {
9355 chance: 30.0,
9356 target: MoveTarget::Opponent,
9357 effect: Effect::Status(PokemonStatus::PARALYZE),
9358 }]),
9359 ..Default::default()
9360 },
9361 );
9362 }
9363 moves.insert(
9364 Choices::LIFEDEW,
9365 Choice {
9366 move_id: Choices::LIFEDEW,
9367 target: MoveTarget::User,
9368 move_type: PokemonType::WATER,
9369 flags: Flags {
9370 heal: true,
9371 ..Default::default()
9372 },
9373 heal: Some(Heal {
9374 target: MoveTarget::User,
9375 amount: 0.25,
9376 }),
9377 ..Default::default()
9378 },
9379 );
9380 moves.insert(
9381 Choices::LIGHTOFRUIN,
9382 Choice {
9383 move_id: Choices::LIGHTOFRUIN,
9384 accuracy: 90.0,
9385 base_power: 140.0,
9386 category: MoveCategory::Special,
9387 move_type: PokemonType::FAIRY,
9388 flags: Flags {
9389 protect: true,
9390 ..Default::default()
9391 },
9392 recoil: Some(0.5),
9393 ..Default::default()
9394 },
9395 );
9396 if cfg!(feature = "gen1") {
9397 moves.insert(
9398 Choices::LIGHTSCREEN,
9399 Choice {
9400 move_id: Choices::LIGHTSCREEN,
9401 target: MoveTarget::User,
9402 move_type: PokemonType::PSYCHIC,
9403 flags: Flags {
9404 ..Default::default()
9405 },
9406 volatile_status: Some(VolatileStatus {
9407 target: MoveTarget::User,
9408 volatile_status: PokemonVolatileStatus::LIGHTSCREEN,
9409 }),
9410 ..Default::default()
9411 },
9412 );
9413 } else {
9414 moves.insert(
9415 Choices::LIGHTSCREEN,
9416 Choice {
9417 move_id: Choices::LIGHTSCREEN,
9418 target: MoveTarget::User,
9419 move_type: PokemonType::PSYCHIC,
9420 flags: Flags {
9421 ..Default::default()
9422 },
9423 side_condition: Some(SideCondition {
9424 target: MoveTarget::User,
9425 condition: PokemonSideCondition::LightScreen,
9426 }),
9427 ..Default::default()
9428 },
9429 );
9430 }
9431 moves.insert(
9432 Choices::LIQUIDATION,
9433 Choice {
9434 move_id: Choices::LIQUIDATION,
9435 base_power: 85.0,
9436 category: MoveCategory::Physical,
9437 move_type: PokemonType::WATER,
9438 flags: Flags {
9439 contact: true,
9440 protect: true,
9441 ..Default::default()
9442 },
9443 secondaries: Some(vec![Secondary {
9444 chance: 20.0,
9445 target: MoveTarget::Opponent,
9446 effect: Effect::Boost(StatBoosts {
9447 attack: 0,
9448 defense: -1,
9449 special_attack: 0,
9450 special_defense: 0,
9451 speed: 0,
9452 accuracy: 0,
9453 }),
9454 }]),
9455 ..Default::default()
9456 },
9457 );
9458 moves.insert(
9459 Choices::LOCKON,
9460 Choice {
9461 move_id: Choices::LOCKON,
9462 move_type: PokemonType::NORMAL,
9463 flags: Flags {
9464 protect: true,
9465 ..Default::default()
9466 },
9467 ..Default::default()
9468 },
9469 );
9470 moves.insert(
9471 Choices::LOVELYKISS,
9472 Choice {
9473 move_id: Choices::LOVELYKISS,
9474 accuracy: 75.0,
9475 status: Some(Status {
9476 target: MoveTarget::Opponent,
9477 status: PokemonStatus::SLEEP,
9478 }),
9479 move_type: PokemonType::NORMAL,
9480 flags: Flags {
9481 protect: true,
9482 reflectable: true,
9483 ..Default::default()
9484 },
9485 ..Default::default()
9486 },
9487 );
9488 if cfg!(feature = "gen1") || cfg!(feature = "gen2") {
9489 moves.insert(
9490 Choices::LOWKICK,
9491 Choice {
9492 move_id: Choices::LOWKICK,
9493 category: MoveCategory::Physical,
9494 base_power: 50.0,
9495 accuracy: 90.0,
9496 move_type: PokemonType::FIGHTING,
9497 flags: Flags {
9498 contact: true,
9499 protect: true,
9500 ..Default::default()
9501 },
9502 secondaries: Some(vec![Secondary {
9503 chance: 30.0,
9504 target: MoveTarget::Opponent,
9505 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
9506 }]),
9507 ..Default::default()
9508 },
9509 );
9510 } else {
9511 moves.insert(
9512 Choices::LOWKICK,
9513 Choice {
9514 move_id: Choices::LOWKICK,
9515 category: MoveCategory::Physical,
9516 move_type: PokemonType::FIGHTING,
9517 flags: Flags {
9518 contact: true,
9519 protect: true,
9520 ..Default::default()
9521 },
9522 ..Default::default()
9523 },
9524 );
9525 }
9526 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9527 moves.insert(
9528 Choices::LOWSWEEP,
9529 Choice {
9530 move_id: Choices::LOWSWEEP,
9531 base_power: 60.0,
9532 category: MoveCategory::Physical,
9533 move_type: PokemonType::FIGHTING,
9534 flags: Flags {
9535 contact: true,
9536 protect: true,
9537 ..Default::default()
9538 },
9539 secondaries: Some(vec![Secondary {
9540 chance: 100.0,
9541 target: MoveTarget::Opponent,
9542 effect: Effect::Boost(StatBoosts {
9543 attack: 0,
9544 defense: 0,
9545 special_attack: 0,
9546 special_defense: 0,
9547 speed: -1,
9548 accuracy: 0,
9549 }),
9550 }]),
9551 ..Default::default()
9552 },
9553 );
9554 } else {
9555 moves.insert(
9556 Choices::LOWSWEEP,
9557 Choice {
9558 move_id: Choices::LOWSWEEP,
9559 base_power: 65.0,
9560 category: MoveCategory::Physical,
9561 move_type: PokemonType::FIGHTING,
9562 flags: Flags {
9563 contact: true,
9564 protect: true,
9565 ..Default::default()
9566 },
9567 secondaries: Some(vec![Secondary {
9568 chance: 100.0,
9569 target: MoveTarget::Opponent,
9570 effect: Effect::Boost(StatBoosts {
9571 attack: 0,
9572 defense: 0,
9573 special_attack: 0,
9574 special_defense: 0,
9575 speed: -1,
9576 accuracy: 0,
9577 }),
9578 }]),
9579 ..Default::default()
9580 },
9581 );
9582 }
9583 moves.insert(
9584 Choices::LUCKYCHANT,
9585 Choice {
9586 move_id: Choices::LUCKYCHANT,
9587 target: MoveTarget::User,
9588 move_type: PokemonType::NORMAL,
9589 flags: Flags {
9590 ..Default::default()
9591 },
9592 side_condition: Some(SideCondition {
9593 target: MoveTarget::User,
9594 condition: PokemonSideCondition::LuckyChant,
9595 }),
9596 ..Default::default()
9597 },
9598 );
9599 moves.insert(
9600 Choices::LUMINACRASH,
9601 Choice {
9602 move_id: Choices::LUMINACRASH,
9603 base_power: 80.0,
9604 category: MoveCategory::Special,
9605 move_type: PokemonType::PSYCHIC,
9606 flags: Flags {
9607 protect: true,
9608 ..Default::default()
9609 },
9610 secondaries: Some(vec![Secondary {
9611 chance: 100.0,
9612 target: MoveTarget::Opponent,
9613 effect: Effect::Boost(StatBoosts {
9614 attack: 0,
9615 defense: 0,
9616 special_attack: 0,
9617 special_defense: -2,
9618 speed: 0,
9619 accuracy: 0,
9620 }),
9621 }]),
9622 ..Default::default()
9623 },
9624 );
9625 moves.insert(
9626 Choices::LUNARBLESSING,
9627 Choice {
9628 move_id: Choices::LUNARBLESSING,
9629 target: MoveTarget::User,
9630 move_type: PokemonType::PSYCHIC,
9631 flags: Flags {
9632 heal: true,
9633 ..Default::default()
9634 },
9635 heal: Some(Heal {
9636 target: MoveTarget::User,
9637 amount: 0.25,
9638 }),
9639 ..Default::default()
9640 },
9641 );
9642 moves.insert(
9643 Choices::LUNARDANCE,
9644 Choice {
9645 move_id: Choices::LUNARDANCE,
9646 target: MoveTarget::User,
9647 move_type: PokemonType::PSYCHIC,
9648 flags: Flags {
9649 heal: true,
9650 ..Default::default()
9651 },
9652 ..Default::default()
9653 },
9654 );
9655 moves.insert(
9656 Choices::LUNGE,
9657 Choice {
9658 move_id: Choices::LUNGE,
9659 base_power: 80.0,
9660 category: MoveCategory::Physical,
9661 move_type: PokemonType::BUG,
9662 flags: Flags {
9663 contact: true,
9664 protect: true,
9665 ..Default::default()
9666 },
9667 secondaries: Some(vec![Secondary {
9668 chance: 100.0,
9669 target: MoveTarget::Opponent,
9670 effect: Effect::Boost(StatBoosts {
9671 attack: -1,
9672 defense: 0,
9673 special_attack: 0,
9674 special_defense: 0,
9675 speed: 0,
9676 accuracy: 0,
9677 }),
9678 }]),
9679 ..Default::default()
9680 },
9681 );
9682 if cfg!(feature = "gen9") {
9683 moves.insert(
9684 Choices::LUSTERPURGE,
9685 Choice {
9686 move_id: Choices::LUSTERPURGE,
9687 base_power: 95.0,
9688 category: MoveCategory::Special,
9689 move_type: PokemonType::PSYCHIC,
9690 flags: Flags {
9691 protect: true,
9692 ..Default::default()
9693 },
9694 secondaries: Some(vec![Secondary {
9695 chance: 50.0,
9696 target: MoveTarget::Opponent,
9697 effect: Effect::Boost(StatBoosts {
9698 attack: 0,
9699 defense: 0,
9700 special_attack: 0,
9701 special_defense: -1,
9702 speed: 0,
9703 accuracy: 0,
9704 }),
9705 }]),
9706 ..Default::default()
9707 },
9708 );
9709 } else {
9710 moves.insert(
9711 Choices::LUSTERPURGE,
9712 Choice {
9713 move_id: Choices::LUSTERPURGE,
9714 base_power: 70.0,
9715 category: MoveCategory::Special,
9716 move_type: PokemonType::PSYCHIC,
9717 flags: Flags {
9718 protect: true,
9719 ..Default::default()
9720 },
9721 secondaries: Some(vec![Secondary {
9722 chance: 50.0,
9723 target: MoveTarget::Opponent,
9724 effect: Effect::Boost(StatBoosts {
9725 attack: 0,
9726 defense: 0,
9727 special_attack: 0,
9728 special_defense: -1,
9729 speed: 0,
9730 accuracy: 0,
9731 }),
9732 }]),
9733 ..Default::default()
9734 },
9735 );
9736 }
9737 moves.insert(
9738 Choices::MACHPUNCH,
9739 Choice {
9740 move_id: Choices::MACHPUNCH,
9741 base_power: 40.0,
9742 category: MoveCategory::Physical,
9743 priority: 1,
9744 move_type: PokemonType::FIGHTING,
9745 flags: Flags {
9746 contact: true,
9747 protect: true,
9748 punch: true,
9749 ..Default::default()
9750 },
9751 ..Default::default()
9752 },
9753 );
9754 moves.insert(
9755 Choices::MAGICALLEAF,
9756 Choice {
9757 move_id: Choices::MAGICALLEAF,
9758 base_power: 60.0,
9759 category: MoveCategory::Special,
9760 move_type: PokemonType::GRASS,
9761 flags: Flags {
9762 protect: true,
9763 ..Default::default()
9764 },
9765 ..Default::default()
9766 },
9767 );
9768 moves.insert(
9769 Choices::MAGICALTORQUE,
9770 Choice {
9771 move_id: Choices::MAGICALTORQUE,
9772 base_power: 100.0,
9773 category: MoveCategory::Physical,
9774 move_type: PokemonType::FAIRY,
9775 flags: Flags {
9776 protect: true,
9777 ..Default::default()
9778 },
9779 secondaries: Some(vec![Secondary {
9780 chance: 30.0,
9781 target: MoveTarget::Opponent,
9782 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
9783 }]),
9784 ..Default::default()
9785 },
9786 );
9787 moves.insert(
9788 Choices::MAGICCOAT,
9789 Choice {
9790 move_id: Choices::MAGICCOAT,
9791 priority: 4,
9792 target: MoveTarget::User,
9793 move_type: PokemonType::PSYCHIC,
9794 flags: Flags {
9795 ..Default::default()
9796 },
9797 volatile_status: Some(VolatileStatus {
9798 target: MoveTarget::User,
9799 volatile_status: PokemonVolatileStatus::MAGICCOAT,
9800 }),
9801 ..Default::default()
9802 },
9803 );
9804 moves.insert(
9805 Choices::MAGICPOWDER,
9806 Choice {
9807 move_id: Choices::MAGICPOWDER,
9808 move_type: PokemonType::PSYCHIC,
9809 flags: Flags {
9810 powder: true,
9811 protect: true,
9812 reflectable: true,
9813 ..Default::default()
9814 },
9815 ..Default::default()
9816 },
9817 );
9818 moves.insert(
9819 Choices::MAGICROOM,
9820 Choice {
9821 move_id: Choices::MAGICROOM,
9822 move_type: PokemonType::PSYCHIC,
9823 flags: Flags {
9824 ..Default::default()
9825 },
9826 ..Default::default()
9827 },
9828 );
9829 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
9830 moves.insert(
9831 Choices::MAGMASTORM,
9832 Choice {
9833 move_id: Choices::MAGMASTORM,
9834 accuracy: 70.0,
9835 base_power: 120.0,
9836 category: MoveCategory::Special,
9837 move_type: PokemonType::FIRE,
9838 flags: Flags {
9839 protect: true,
9840 ..Default::default()
9841 },
9842 volatile_status: Some(VolatileStatus {
9843 target: MoveTarget::Opponent,
9844 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9845 }),
9846 ..Default::default()
9847 },
9848 );
9849 } else if cfg!(feature = "gen5") {
9850 moves.insert(
9851 Choices::MAGMASTORM,
9852 Choice {
9853 move_id: Choices::MAGMASTORM,
9854 accuracy: 75.0,
9855 base_power: 120.0,
9856 category: MoveCategory::Special,
9857 move_type: PokemonType::FIRE,
9858 flags: Flags {
9859 protect: true,
9860 ..Default::default()
9861 },
9862 volatile_status: Some(VolatileStatus {
9863 target: MoveTarget::Opponent,
9864 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9865 }),
9866 ..Default::default()
9867 },
9868 );
9869 } else {
9870 moves.insert(
9871 Choices::MAGMASTORM,
9872 Choice {
9873 move_id: Choices::MAGMASTORM,
9874 accuracy: 75.0,
9875 base_power: 100.0,
9876 category: MoveCategory::Special,
9877 move_type: PokemonType::FIRE,
9878 flags: Flags {
9879 protect: true,
9880 ..Default::default()
9881 },
9882 volatile_status: Some(VolatileStatus {
9883 target: MoveTarget::Opponent,
9884 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9885 }),
9886 ..Default::default()
9887 },
9888 );
9889 }
9890 moves.insert(
9891 Choices::MAGNETBOMB,
9892 Choice {
9893 move_id: Choices::MAGNETBOMB,
9894 base_power: 60.0,
9895 category: MoveCategory::Physical,
9896 move_type: PokemonType::STEEL,
9897 flags: Flags {
9898 bullet: true,
9899 protect: true,
9900 ..Default::default()
9901 },
9902 ..Default::default()
9903 },
9904 );
9905 moves.insert(
9906 Choices::MAGNETICFLUX,
9907 Choice {
9908 move_id: Choices::MAGNETICFLUX,
9909 target: MoveTarget::User,
9910 move_type: PokemonType::ELECTRIC,
9911 flags: Flags {
9912 ..Default::default()
9913 },
9914 ..Default::default()
9915 },
9916 );
9917 moves.insert(
9918 Choices::MAGNETRISE,
9919 Choice {
9920 move_id: Choices::MAGNETRISE,
9921 target: MoveTarget::User,
9922 move_type: PokemonType::ELECTRIC,
9923 flags: Flags {
9924 ..Default::default()
9925 },
9926 volatile_status: Some(VolatileStatus {
9927 target: MoveTarget::User,
9928 volatile_status: PokemonVolatileStatus::MAGNETRISE,
9929 }),
9930 ..Default::default()
9931 },
9932 );
9933 moves.insert(
9934 Choices::MAGNITUDE,
9935 Choice {
9936 move_id: Choices::MAGNITUDE,
9937 category: MoveCategory::Physical,
9938 move_type: PokemonType::GROUND,
9939 flags: Flags {
9940 protect: true,
9941 ..Default::default()
9942 },
9943 ..Default::default()
9944 },
9945 );
9946 moves.insert(
9947 Choices::MAKEITRAIN,
9948 Choice {
9949 move_id: Choices::MAKEITRAIN,
9950 base_power: 120.0,
9951 category: MoveCategory::Special,
9952 move_type: PokemonType::STEEL,
9953 flags: Flags {
9954 protect: true,
9955 ..Default::default()
9956 },
9957 boost: Some(Boost {
9958 target: MoveTarget::User,
9959 boosts: StatBoosts {
9960 attack: 0,
9961 defense: 0,
9962 special_attack: -1,
9963 special_defense: 0,
9964 speed: 0,
9965 accuracy: 0,
9966 },
9967 }),
9968 ..Default::default()
9969 },
9970 );
9971 moves.insert(
9972 Choices::MALIGNANTCHAIN,
9973 Choice {
9974 move_id: Choices::MALIGNANTCHAIN,
9975 base_power: 100.0,
9976 category: MoveCategory::Special,
9977 move_type: PokemonType::POISON,
9978 flags: Flags {
9979 protect: true,
9980 ..Default::default()
9981 },
9982 secondaries: Some(vec![Secondary {
9983 chance: 50.0,
9984 target: MoveTarget::Opponent,
9985 effect: Effect::Status(PokemonStatus::TOXIC),
9986 }]),
9987 ..Default::default()
9988 },
9989 );
9990 moves.insert(
9991 Choices::MATBLOCK,
9992 Choice {
9993 move_id: Choices::MATBLOCK,
9994 target: MoveTarget::User,
9995 move_type: PokemonType::FIGHTING,
9996 flags: Flags {
9997 ..Default::default()
9998 },
9999 side_condition: Some(SideCondition {
10000 target: MoveTarget::User,
10001 condition: PokemonSideCondition::MatBlock,
10002 }),
10003 ..Default::default()
10004 },
10005 );
10006 moves.insert(
10007 Choices::MATCHAGOTCHA,
10008 Choice {
10009 move_id: Choices::MATCHAGOTCHA,
10010 accuracy: 90.0,
10011 base_power: 80.0,
10012 category: MoveCategory::Special,
10013 move_type: PokemonType::GRASS,
10014 flags: Flags {
10015 protect: true,
10016 heal: true,
10017 ..Default::default()
10018 },
10019 secondaries: Some(vec![Secondary {
10020 chance: 20.0,
10021 target: MoveTarget::Opponent,
10022 effect: Effect::Status(PokemonStatus::BURN),
10023 }]),
10024 drain: Some(0.5),
10025 ..Default::default()
10026 },
10027 );
10028 moves.insert(
10029 Choices::MEANLOOK,
10030 Choice {
10031 move_id: Choices::MEANLOOK,
10032 move_type: PokemonType::NORMAL,
10033 flags: Flags {
10034 reflectable: true,
10035 ..Default::default()
10036 },
10037 ..Default::default()
10038 },
10039 );
10040 moves.insert(
10041 Choices::MEDITATE,
10042 Choice {
10043 move_id: Choices::MEDITATE,
10044 target: MoveTarget::User,
10045 move_type: PokemonType::PSYCHIC,
10046 flags: Flags {
10047 ..Default::default()
10048 },
10049 boost: Some(Boost {
10050 target: MoveTarget::User,
10051 boosts: StatBoosts {
10052 attack: 1,
10053 defense: 0,
10054 special_attack: 0,
10055 special_defense: 0,
10056 speed: 0,
10057 accuracy: 0,
10058 },
10059 }),
10060 ..Default::default()
10061 },
10062 );
10063 moves.insert(
10064 Choices::MEFIRST,
10065 Choice {
10066 move_id: Choices::MEFIRST,
10067 move_type: PokemonType::NORMAL,
10068 flags: Flags {
10069 protect: true,
10070 ..Default::default()
10071 },
10072 ..Default::default()
10073 },
10074 );
10075 moves.insert(
10076 Choices::MEGADRAIN,
10077 Choice {
10078 move_id: Choices::MEGADRAIN,
10079 base_power: 40.0,
10080 category: MoveCategory::Special,
10081 move_type: PokemonType::GRASS,
10082 flags: Flags {
10083 heal: true,
10084 protect: true,
10085 ..Default::default()
10086 },
10087 drain: Some(0.5),
10088 ..Default::default()
10089 },
10090 );
10091 moves.insert(
10092 Choices::MEGAHORN,
10093 Choice {
10094 move_id: Choices::MEGAHORN,
10095 accuracy: 85.0,
10096 base_power: 120.0,
10097 category: MoveCategory::Physical,
10098 move_type: PokemonType::BUG,
10099 flags: Flags {
10100 contact: true,
10101 protect: true,
10102 ..Default::default()
10103 },
10104 ..Default::default()
10105 },
10106 );
10107 moves.insert(
10108 Choices::MEGAKICK,
10109 Choice {
10110 move_id: Choices::MEGAKICK,
10111 accuracy: 75.0,
10112 base_power: 120.0,
10113 category: MoveCategory::Physical,
10114 move_type: PokemonType::NORMAL,
10115 flags: Flags {
10116 contact: true,
10117 protect: true,
10118 ..Default::default()
10119 },
10120 ..Default::default()
10121 },
10122 );
10123 moves.insert(
10124 Choices::MEGAPUNCH,
10125 Choice {
10126 move_id: Choices::MEGAPUNCH,
10127 accuracy: 85.0,
10128 base_power: 80.0,
10129 category: MoveCategory::Physical,
10130 move_type: PokemonType::NORMAL,
10131 flags: Flags {
10132 contact: true,
10133 protect: true,
10134 punch: true,
10135 ..Default::default()
10136 },
10137 ..Default::default()
10138 },
10139 );
10140 moves.insert(
10141 Choices::MEMENTO,
10142 Choice {
10143 move_id: Choices::MEMENTO,
10144 move_type: PokemonType::DARK,
10145 flags: Flags {
10146 protect: true,
10147 ..Default::default()
10148 },
10149 boost: Some(Boost {
10150 target: MoveTarget::Opponent,
10151 boosts: StatBoosts {
10152 attack: -2,
10153 defense: 0,
10154 special_attack: -2,
10155 special_defense: 0,
10156 speed: 0,
10157 accuracy: 0,
10158 },
10159 }),
10160 heal: Some(Heal {
10161 target: MoveTarget::User,
10162 amount: -1.0,
10163 }),
10164 ..Default::default()
10165 },
10166 );
10167 moves.insert(
10168 Choices::METALBURST,
10169 Choice {
10170 move_id: Choices::METALBURST,
10171 category: MoveCategory::Physical,
10172 move_type: PokemonType::STEEL,
10173 flags: Flags {
10174 protect: true,
10175 ..Default::default()
10176 },
10177 ..Default::default()
10178 },
10179 );
10180 moves.insert(
10181 Choices::METALCLAW,
10182 Choice {
10183 move_id: Choices::METALCLAW,
10184 accuracy: 95.0,
10185 base_power: 50.0,
10186 category: MoveCategory::Physical,
10187 move_type: PokemonType::STEEL,
10188 flags: Flags {
10189 contact: true,
10190 protect: true,
10191 ..Default::default()
10192 },
10193 secondaries: Some(vec![Secondary {
10194 chance: 10.0,
10195 target: MoveTarget::User,
10196 effect: Effect::Boost(StatBoosts {
10197 attack: 1,
10198 defense: 0,
10199 special_attack: 0,
10200 special_defense: 0,
10201 speed: 0,
10202 accuracy: 0,
10203 }),
10204 }]),
10205 ..Default::default()
10206 },
10207 );
10208 moves.insert(
10209 Choices::METALSOUND,
10210 Choice {
10211 move_id: Choices::METALSOUND,
10212 accuracy: 85.0,
10213 move_type: PokemonType::STEEL,
10214 flags: Flags {
10215 protect: true,
10216 reflectable: true,
10217 sound: true,
10218 ..Default::default()
10219 },
10220 boost: Some(Boost {
10221 target: MoveTarget::Opponent,
10222 boosts: StatBoosts {
10223 attack: 0,
10224 defense: 0,
10225 special_attack: 0,
10226 special_defense: -2,
10227 speed: 0,
10228 accuracy: 0,
10229 },
10230 }),
10231 ..Default::default()
10232 },
10233 );
10234 moves.insert(
10235 Choices::METEORASSAULT,
10236 Choice {
10237 move_id: Choices::METEORASSAULT,
10238 base_power: 150.0,
10239 category: MoveCategory::Physical,
10240 move_type: PokemonType::FIGHTING,
10241 flags: Flags {
10242 protect: true,
10243 recharge: true,
10244 ..Default::default()
10245 },
10246 ..Default::default()
10247 },
10248 );
10249 moves.insert(
10250 Choices::METEORBEAM,
10251 Choice {
10252 move_id: Choices::METEORBEAM,
10253 accuracy: 90.0,
10254 base_power: 120.0,
10255 category: MoveCategory::Special,
10256 move_type: PokemonType::ROCK,
10257 flags: Flags {
10258 charge: true,
10259 protect: true,
10260 ..Default::default()
10261 },
10262 ..Default::default()
10263 },
10264 );
10265 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
10266 moves.insert(
10267 Choices::METEORMASH,
10268 Choice {
10269 move_id: Choices::METEORMASH,
10270 accuracy: 85.0,
10271 base_power: 100.0,
10272 category: MoveCategory::Physical,
10273 move_type: PokemonType::STEEL,
10274 flags: Flags {
10275 contact: true,
10276 protect: true,
10277 punch: true,
10278 ..Default::default()
10279 },
10280 secondaries: Some(vec![Secondary {
10281 chance: 20.0,
10282 target: MoveTarget::User,
10283 effect: Effect::Boost(StatBoosts {
10284 attack: 1,
10285 defense: 0,
10286 special_attack: 0,
10287 special_defense: 0,
10288 speed: 0,
10289 accuracy: 0,
10290 }),
10291 }]),
10292 ..Default::default()
10293 },
10294 );
10295 } else {
10296 moves.insert(
10297 Choices::METEORMASH,
10298 Choice {
10299 move_id: Choices::METEORMASH,
10300 accuracy: 90.0,
10301 base_power: 90.0,
10302 category: MoveCategory::Physical,
10303 move_type: PokemonType::STEEL,
10304 flags: Flags {
10305 contact: true,
10306 protect: true,
10307 punch: true,
10308 ..Default::default()
10309 },
10310 secondaries: Some(vec![Secondary {
10311 chance: 20.0,
10312 target: MoveTarget::User,
10313 effect: Effect::Boost(StatBoosts {
10314 attack: 1,
10315 defense: 0,
10316 special_attack: 0,
10317 special_defense: 0,
10318 speed: 0,
10319 accuracy: 0,
10320 }),
10321 }]),
10322 ..Default::default()
10323 },
10324 );
10325 }
10326 moves.insert(
10327 Choices::METRONOME,
10328 Choice {
10329 move_id: Choices::METRONOME,
10330 target: MoveTarget::User,
10331 move_type: PokemonType::NORMAL,
10332 flags: Flags {
10333 ..Default::default()
10334 },
10335 ..Default::default()
10336 },
10337 );
10338 moves.insert(
10339 Choices::MIGHTYCLEAVE,
10340 Choice {
10341 move_id: Choices::MIGHTYCLEAVE,
10342 base_power: 95.0,
10343 category: MoveCategory::Physical,
10344 move_type: PokemonType::ROCK,
10345 flags: Flags {
10346 contact: true,
10347 slicing: true,
10348 ..Default::default()
10349 },
10350 ..Default::default()
10351 },
10352 );
10353 moves.insert(
10354 Choices::MILKDRINK,
10355 Choice {
10356 move_id: Choices::MILKDRINK,
10357 target: MoveTarget::User,
10358 move_type: PokemonType::NORMAL,
10359 flags: Flags {
10360 heal: true,
10361 ..Default::default()
10362 },
10363 heal: Some(Heal {
10364 target: MoveTarget::User,
10365 amount: 0.5,
10366 }),
10367 ..Default::default()
10368 },
10369 );
10370 moves.insert(
10371 Choices::MIMIC,
10372 Choice {
10373 move_id: Choices::MIMIC,
10374 move_type: PokemonType::NORMAL,
10375 flags: Flags {
10376 protect: true,
10377 ..Default::default()
10378 },
10379 ..Default::default()
10380 },
10381 );
10382 moves.insert(
10383 Choices::MINDBLOWN,
10384 Choice {
10385 move_id: Choices::MINDBLOWN,
10386 base_power: 150.0,
10387 category: MoveCategory::Special,
10388 move_type: PokemonType::FIRE,
10389 flags: Flags {
10390 protect: true,
10391 ..Default::default()
10392 },
10393 ..Default::default()
10394 },
10395 );
10396 moves.insert(
10397 Choices::MINDREADER,
10398 Choice {
10399 move_id: Choices::MINDREADER,
10400 move_type: PokemonType::NORMAL,
10401 flags: Flags {
10402 protect: true,
10403 ..Default::default()
10404 },
10405 ..Default::default()
10406 },
10407 );
10408 moves.insert(
10409 Choices::MINIMIZE,
10410 Choice {
10411 move_id: Choices::MINIMIZE,
10412 target: MoveTarget::User,
10413 move_type: PokemonType::NORMAL,
10414 flags: Flags {
10415 ..Default::default()
10416 },
10417 boost: Some(Boost {
10418 target: MoveTarget::User,
10419 boosts: StatBoosts {
10420 attack: 0,
10421 defense: 0,
10422 special_attack: 0,
10423 special_defense: 0,
10424 speed: 0,
10425 accuracy: 0,
10426 },
10427 }),
10428 volatile_status: Some(VolatileStatus {
10429 target: MoveTarget::User,
10430 volatile_status: PokemonVolatileStatus::MINIMIZE,
10431 }),
10432 ..Default::default()
10433 },
10434 );
10435 moves.insert(
10436 Choices::MIRACLEEYE,
10437 Choice {
10438 move_id: Choices::MIRACLEEYE,
10439 move_type: PokemonType::PSYCHIC,
10440 flags: Flags {
10441 protect: true,
10442 reflectable: true,
10443 ..Default::default()
10444 },
10445 volatile_status: Some(VolatileStatus {
10446 target: MoveTarget::Opponent,
10447 volatile_status: PokemonVolatileStatus::MIRACLEEYE,
10448 }),
10449 ..Default::default()
10450 },
10451 );
10452 moves.insert(
10453 Choices::MIRRORCOAT,
10454 Choice {
10455 move_id: Choices::MIRRORCOAT,
10456 category: MoveCategory::Special,
10457 priority: -5,
10458 move_type: PokemonType::PSYCHIC,
10459 flags: Flags {
10460 protect: true,
10461 ..Default::default()
10462 },
10463 ..Default::default()
10464 },
10465 );
10466 moves.insert(
10467 Choices::MIRRORMOVE,
10468 Choice {
10469 move_id: Choices::MIRRORMOVE,
10470 move_type: PokemonType::FLYING,
10471 flags: Flags {
10472 ..Default::default()
10473 },
10474 ..Default::default()
10475 },
10476 );
10477 moves.insert(
10478 Choices::MIRRORSHOT,
10479 Choice {
10480 move_id: Choices::MIRRORSHOT,
10481 accuracy: 85.0,
10482 base_power: 65.0,
10483 category: MoveCategory::Special,
10484 move_type: PokemonType::STEEL,
10485 flags: Flags {
10486 protect: true,
10487 ..Default::default()
10488 },
10489 secondaries: Some(vec![Secondary {
10490 chance: 30.0,
10491 target: MoveTarget::Opponent,
10492 effect: Effect::Boost(StatBoosts {
10493 attack: 0,
10494 defense: 0,
10495 special_attack: 0,
10496 special_defense: 0,
10497 speed: 0,
10498 accuracy: -1,
10499 }),
10500 }]),
10501 ..Default::default()
10502 },
10503 );
10504 moves.insert(
10505 Choices::MIST,
10506 Choice {
10507 move_id: Choices::MIST,
10508 target: MoveTarget::User,
10509 move_type: PokemonType::ICE,
10510 flags: Flags {
10511 ..Default::default()
10512 },
10513 side_condition: Some(SideCondition {
10514 target: MoveTarget::User,
10515 condition: PokemonSideCondition::Mist,
10516 }),
10517 ..Default::default()
10518 },
10519 );
10520 if cfg!(feature = "gen9") {
10521 moves.insert(
10522 Choices::MISTBALL,
10523 Choice {
10524 move_id: Choices::MISTBALL,
10525 base_power: 95.0,
10526 category: MoveCategory::Special,
10527 move_type: PokemonType::PSYCHIC,
10528 flags: Flags {
10529 bullet: true,
10530 protect: true,
10531 ..Default::default()
10532 },
10533 secondaries: Some(vec![Secondary {
10534 chance: 50.0,
10535 target: MoveTarget::Opponent,
10536 effect: Effect::Boost(StatBoosts {
10537 attack: 0,
10538 defense: 0,
10539 special_attack: -1,
10540 special_defense: 0,
10541 speed: 0,
10542 accuracy: 0,
10543 }),
10544 }]),
10545 ..Default::default()
10546 },
10547 );
10548 } else {
10549 moves.insert(
10550 Choices::MISTBALL,
10551 Choice {
10552 move_id: Choices::MISTBALL,
10553 base_power: 70.0,
10554 category: MoveCategory::Special,
10555 move_type: PokemonType::PSYCHIC,
10556 flags: Flags {
10557 bullet: true,
10558 protect: true,
10559 ..Default::default()
10560 },
10561 secondaries: Some(vec![Secondary {
10562 chance: 50.0,
10563 target: MoveTarget::Opponent,
10564 effect: Effect::Boost(StatBoosts {
10565 attack: 0,
10566 defense: 0,
10567 special_attack: -1,
10568 special_defense: 0,
10569 speed: 0,
10570 accuracy: 0,
10571 }),
10572 }]),
10573 ..Default::default()
10574 },
10575 );
10576 }
10577 moves.insert(
10578 Choices::MISTYEXPLOSION,
10579 Choice {
10580 move_id: Choices::MISTYEXPLOSION,
10581 base_power: 100.0,
10582 category: MoveCategory::Special,
10583 move_type: PokemonType::FAIRY,
10584 flags: Flags {
10585 protect: true,
10586 ..Default::default()
10587 },
10588 ..Default::default()
10589 },
10590 );
10591 moves.insert(
10592 Choices::MISTYTERRAIN,
10593 Choice {
10594 move_id: Choices::MISTYTERRAIN,
10595 move_type: PokemonType::FAIRY,
10596 flags: Flags {
10597 ..Default::default()
10598 },
10599 ..Default::default()
10600 },
10601 );
10602 moves.insert(
10603 Choices::MOONBLAST,
10604 Choice {
10605 move_id: Choices::MOONBLAST,
10606 base_power: 95.0,
10607 category: MoveCategory::Special,
10608 move_type: PokemonType::FAIRY,
10609 flags: Flags {
10610 protect: true,
10611 ..Default::default()
10612 },
10613 secondaries: Some(vec![Secondary {
10614 chance: 30.0,
10615 target: MoveTarget::Opponent,
10616 effect: Effect::Boost(StatBoosts {
10617 attack: 0,
10618 defense: 0,
10619 special_attack: -1,
10620 special_defense: 0,
10621 speed: 0,
10622 accuracy: 0,
10623 }),
10624 }]),
10625 ..Default::default()
10626 },
10627 );
10628 moves.insert(
10629 Choices::MOONGEISTBEAM,
10630 Choice {
10631 move_id: Choices::MOONGEISTBEAM,
10632 base_power: 100.0,
10633 category: MoveCategory::Special,
10634 move_type: PokemonType::GHOST,
10635 flags: Flags {
10636 protect: true,
10637 ..Default::default()
10638 },
10639 ..Default::default()
10640 },
10641 );
10642 moves.insert(
10643 Choices::MOONLIGHT,
10644 Choice {
10645 move_id: Choices::MOONLIGHT,
10646 target: MoveTarget::User,
10647 move_type: PokemonType::FAIRY,
10648 flags: Flags {
10649 heal: true,
10650 ..Default::default()
10651 },
10652 heal: Some(Heal {
10653 target: MoveTarget::User,
10654 amount: 0.5,
10655 }),
10656 ..Default::default()
10657 },
10658 );
10659 moves.insert(
10660 Choices::MORNINGSUN,
10661 Choice {
10662 move_id: Choices::MORNINGSUN,
10663 target: MoveTarget::User,
10664 move_type: PokemonType::NORMAL,
10665 flags: Flags {
10666 heal: true,
10667 ..Default::default()
10668 },
10669 heal: Some(Heal {
10670 target: MoveTarget::User,
10671 amount: 0.5,
10672 }),
10673 ..Default::default()
10674 },
10675 );
10676 moves.insert(
10677 Choices::MORTALSPIN,
10678 Choice {
10679 move_id: Choices::MORTALSPIN,
10680 base_power: 30.0,
10681 category: MoveCategory::Physical,
10682 move_type: PokemonType::POISON,
10683 flags: Flags {
10684 contact: true,
10685 protect: true,
10686 ..Default::default()
10687 },
10688 secondaries: Some(vec![Secondary {
10689 chance: 100.0,
10690 target: MoveTarget::Opponent,
10691 effect: Effect::Status(PokemonStatus::POISON),
10692 }]),
10693 ..Default::default()
10694 },
10695 );
10696 moves.insert(
10697 Choices::MOUNTAINGALE,
10698 Choice {
10699 move_id: Choices::MOUNTAINGALE,
10700 accuracy: 85.0,
10701 base_power: 100.0,
10702 category: MoveCategory::Physical,
10703 move_type: PokemonType::ICE,
10704 flags: Flags {
10705 protect: true,
10706 ..Default::default()
10707 },
10708 secondaries: Some(vec![Secondary {
10709 chance: 30.0,
10710 target: MoveTarget::Opponent,
10711 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
10712 }]),
10713 ..Default::default()
10714 },
10715 );
10716 moves.insert(
10717 Choices::MUDBOMB,
10718 Choice {
10719 move_id: Choices::MUDBOMB,
10720 accuracy: 85.0,
10721 base_power: 65.0,
10722 category: MoveCategory::Special,
10723 move_type: PokemonType::GROUND,
10724 flags: Flags {
10725 bullet: true,
10726 protect: true,
10727 ..Default::default()
10728 },
10729 secondaries: Some(vec![Secondary {
10730 chance: 30.0,
10731 target: MoveTarget::Opponent,
10732 effect: Effect::Boost(StatBoosts {
10733 attack: 0,
10734 defense: 0,
10735 special_attack: 0,
10736 special_defense: 0,
10737 speed: 0,
10738 accuracy: -1,
10739 }),
10740 }]),
10741 ..Default::default()
10742 },
10743 );
10744 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
10745 moves.insert(
10746 Choices::MUDDYWATER,
10747 Choice {
10748 move_id: Choices::MUDDYWATER,
10749 accuracy: 85.0,
10750 base_power: 95.0,
10751 category: MoveCategory::Special,
10752 move_type: PokemonType::WATER,
10753 flags: Flags {
10754 protect: true,
10755 ..Default::default()
10756 },
10757 secondaries: Some(vec![Secondary {
10758 chance: 30.0,
10759 target: MoveTarget::Opponent,
10760 effect: Effect::Boost(StatBoosts {
10761 attack: 0,
10762 defense: 0,
10763 special_attack: 0,
10764 special_defense: 0,
10765 speed: 0,
10766 accuracy: -1,
10767 }),
10768 }]),
10769 ..Default::default()
10770 },
10771 );
10772 } else {
10773 moves.insert(
10774 Choices::MUDDYWATER,
10775 Choice {
10776 move_id: Choices::MUDDYWATER,
10777 accuracy: 85.0,
10778 base_power: 90.0,
10779 category: MoveCategory::Special,
10780 move_type: PokemonType::WATER,
10781 flags: Flags {
10782 protect: true,
10783 ..Default::default()
10784 },
10785 secondaries: Some(vec![Secondary {
10786 chance: 30.0,
10787 target: MoveTarget::Opponent,
10788 effect: Effect::Boost(StatBoosts {
10789 attack: 0,
10790 defense: 0,
10791 special_attack: 0,
10792 special_defense: 0,
10793 speed: 0,
10794 accuracy: -1,
10795 }),
10796 }]),
10797 ..Default::default()
10798 },
10799 );
10800 }
10801 moves.insert(
10802 Choices::MUDSHOT,
10803 Choice {
10804 move_id: Choices::MUDSHOT,
10805 accuracy: 95.0,
10806 base_power: 55.0,
10807 category: MoveCategory::Special,
10808 move_type: PokemonType::GROUND,
10809 flags: Flags {
10810 protect: true,
10811 ..Default::default()
10812 },
10813 secondaries: Some(vec![Secondary {
10814 chance: 100.0,
10815 target: MoveTarget::Opponent,
10816 effect: Effect::Boost(StatBoosts {
10817 attack: 0,
10818 defense: 0,
10819 special_attack: 0,
10820 special_defense: 0,
10821 speed: -1,
10822 accuracy: 0,
10823 }),
10824 }]),
10825 ..Default::default()
10826 },
10827 );
10828 moves.insert(
10829 Choices::MUDSLAP,
10830 Choice {
10831 move_id: Choices::MUDSLAP,
10832 base_power: 20.0,
10833 category: MoveCategory::Special,
10834 move_type: PokemonType::GROUND,
10835 flags: Flags {
10836 protect: true,
10837 ..Default::default()
10838 },
10839 secondaries: Some(vec![Secondary {
10840 chance: 100.0,
10841 target: MoveTarget::Opponent,
10842 effect: Effect::Boost(StatBoosts {
10843 attack: 0,
10844 defense: 0,
10845 special_attack: 0,
10846 special_defense: 0,
10847 speed: 0,
10848 accuracy: -1,
10849 }),
10850 }]),
10851 ..Default::default()
10852 },
10853 );
10854 moves.insert(
10855 Choices::MUDSPORT,
10856 Choice {
10857 move_id: Choices::MUDSPORT,
10858 move_type: PokemonType::GROUND,
10859 flags: Flags {
10860 ..Default::default()
10861 },
10862 ..Default::default()
10863 },
10864 );
10865 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
10866 moves.insert(
10867 Choices::MULTIATTACK,
10868 Choice {
10869 move_id: Choices::MULTIATTACK,
10870 base_power: 120.0,
10871 category: MoveCategory::Physical,
10872 move_type: PokemonType::NORMAL,
10873 flags: Flags {
10874 contact: true,
10875 protect: true,
10876 ..Default::default()
10877 },
10878 ..Default::default()
10879 },
10880 );
10881 } else {
10882 moves.insert(
10883 Choices::MULTIATTACK,
10884 Choice {
10885 move_id: Choices::MULTIATTACK,
10886 base_power: 90.0,
10887 category: MoveCategory::Physical,
10888 move_type: PokemonType::NORMAL,
10889 flags: Flags {
10890 contact: true,
10891 protect: true,
10892 ..Default::default()
10893 },
10894 ..Default::default()
10895 },
10896 );
10897 }
10898 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
10899 moves.insert(
10900 Choices::MYSTICALFIRE,
10901 Choice {
10902 move_id: Choices::MYSTICALFIRE,
10903 base_power: 65.0,
10904 category: MoveCategory::Special,
10905 move_type: PokemonType::FIRE,
10906 flags: Flags {
10907 protect: true,
10908 ..Default::default()
10909 },
10910 secondaries: Some(vec![Secondary {
10911 chance: 100.0,
10912 target: MoveTarget::Opponent,
10913 effect: Effect::Boost(StatBoosts {
10914 attack: 0,
10915 defense: 0,
10916 special_attack: -1,
10917 special_defense: 0,
10918 speed: 0,
10919 accuracy: 0,
10920 }),
10921 }]),
10922 ..Default::default()
10923 },
10924 );
10925 } else {
10926 moves.insert(
10927 Choices::MYSTICALFIRE,
10928 Choice {
10929 move_id: Choices::MYSTICALFIRE,
10930 base_power: 75.0,
10931 category: MoveCategory::Special,
10932 move_type: PokemonType::FIRE,
10933 flags: Flags {
10934 protect: true,
10935 ..Default::default()
10936 },
10937 secondaries: Some(vec![Secondary {
10938 chance: 100.0,
10939 target: MoveTarget::Opponent,
10940 effect: Effect::Boost(StatBoosts {
10941 attack: 0,
10942 defense: 0,
10943 special_attack: -1,
10944 special_defense: 0,
10945 speed: 0,
10946 accuracy: 0,
10947 }),
10948 }]),
10949 ..Default::default()
10950 },
10951 );
10952 }
10953 moves.insert(
10954 Choices::MYSTICALPOWER,
10955 Choice {
10956 move_id: Choices::MYSTICALPOWER,
10957 accuracy: 90.0,
10958 base_power: 70.0,
10959 category: MoveCategory::Special,
10960 move_type: PokemonType::PSYCHIC,
10961 flags: Flags {
10962 protect: true,
10963 ..Default::default()
10964 },
10965 secondaries: Some(vec![Secondary {
10966 chance: 100.0,
10967 target: MoveTarget::User,
10968 effect: Effect::Boost(StatBoosts {
10969 attack: 0,
10970 defense: 0,
10971 special_attack: 1,
10972 special_defense: 0,
10973 speed: 0,
10974 accuracy: 0,
10975 }),
10976 }]),
10977 ..Default::default()
10978 },
10979 );
10980 moves.insert(
10981 Choices::NASTYPLOT,
10982 Choice {
10983 move_id: Choices::NASTYPLOT,
10984 target: MoveTarget::User,
10985 move_type: PokemonType::DARK,
10986 flags: Flags {
10987 ..Default::default()
10988 },
10989 boost: Some(Boost {
10990 target: MoveTarget::User,
10991 boosts: StatBoosts {
10992 attack: 0,
10993 defense: 0,
10994 special_attack: 2,
10995 special_defense: 0,
10996 speed: 0,
10997 accuracy: 0,
10998 },
10999 }),
11000 ..Default::default()
11001 },
11002 );
11003 moves.insert(
11004 Choices::NATURALGIFT,
11005 Choice {
11006 move_id: Choices::NATURALGIFT,
11007 category: MoveCategory::Physical,
11008 move_type: PokemonType::NORMAL,
11009 flags: Flags {
11010 protect: true,
11011 ..Default::default()
11012 },
11013 ..Default::default()
11014 },
11015 );
11016 moves.insert(
11017 Choices::NATUREPOWER,
11018 Choice {
11019 move_id: Choices::NATUREPOWER,
11020 move_type: PokemonType::NORMAL,
11021 flags: Flags {
11022 ..Default::default()
11023 },
11024 ..Default::default()
11025 },
11026 );
11027 moves.insert(
11028 Choices::NATURESMADNESS,
11029 Choice {
11030 move_id: Choices::NATURESMADNESS,
11031 accuracy: 90.0,
11032 category: MoveCategory::Special,
11033 move_type: PokemonType::FAIRY,
11034 flags: Flags {
11035 protect: true,
11036 ..Default::default()
11037 },
11038 ..Default::default()
11039 },
11040 );
11041 moves.insert(
11042 Choices::NEEDLEARM,
11043 Choice {
11044 move_id: Choices::NEEDLEARM,
11045 base_power: 60.0,
11046 category: MoveCategory::Physical,
11047 move_type: PokemonType::GRASS,
11048 flags: Flags {
11049 contact: true,
11050 protect: true,
11051 ..Default::default()
11052 },
11053 secondaries: Some(vec![Secondary {
11054 chance: 30.0,
11055 target: MoveTarget::Opponent,
11056 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
11057 }]),
11058 ..Default::default()
11059 },
11060 );
11061 moves.insert(
11062 Choices::NIGHTDAZE,
11063 Choice {
11064 move_id: Choices::NIGHTDAZE,
11065 accuracy: 95.0,
11066 base_power: 85.0,
11067 category: MoveCategory::Special,
11068 move_type: PokemonType::DARK,
11069 flags: Flags {
11070 protect: true,
11071 ..Default::default()
11072 },
11073 secondaries: Some(vec![Secondary {
11074 chance: 40.0,
11075 target: MoveTarget::Opponent,
11076 effect: Effect::Boost(StatBoosts {
11077 attack: 0,
11078 defense: 0,
11079 special_attack: 0,
11080 special_defense: 0,
11081 speed: 0,
11082 accuracy: -1,
11083 }),
11084 }]),
11085 ..Default::default()
11086 },
11087 );
11088 moves.insert(
11089 Choices::NIGHTMARE,
11090 Choice {
11091 move_id: Choices::NIGHTMARE,
11092 move_type: PokemonType::GHOST,
11093 flags: Flags {
11094 protect: true,
11095 ..Default::default()
11096 },
11097 volatile_status: Some(VolatileStatus {
11098 target: MoveTarget::Opponent,
11099 volatile_status: PokemonVolatileStatus::NIGHTMARE,
11100 }),
11101 ..Default::default()
11102 },
11103 );
11104 moves.insert(
11105 Choices::NIGHTSHADE,
11106 Choice {
11107 move_id: Choices::NIGHTSHADE,
11108 category: MoveCategory::Special,
11109 move_type: PokemonType::GHOST,
11110 flags: Flags {
11111 protect: true,
11112 ..Default::default()
11113 },
11114 ..Default::default()
11115 },
11116 );
11117 moves.insert(
11118 Choices::NIGHTSLASH,
11119 Choice {
11120 move_id: Choices::NIGHTSLASH,
11121 base_power: 70.0,
11122 category: MoveCategory::Physical,
11123 move_type: PokemonType::DARK,
11124 flags: Flags {
11125 contact: true,
11126 protect: true,
11127 slicing: true,
11128 ..Default::default()
11129 },
11130 ..Default::default()
11131 },
11132 );
11133 moves.insert(
11134 Choices::NOBLEROAR,
11135 Choice {
11136 move_id: Choices::NOBLEROAR,
11137 move_type: PokemonType::NORMAL,
11138 flags: Flags {
11139 protect: true,
11140 reflectable: true,
11141 sound: true,
11142 ..Default::default()
11143 },
11144 boost: Some(Boost {
11145 target: MoveTarget::Opponent,
11146 boosts: StatBoosts {
11147 attack: -1,
11148 defense: 0,
11149 special_attack: -1,
11150 special_defense: 0,
11151 speed: 0,
11152 accuracy: 0,
11153 },
11154 }),
11155 ..Default::default()
11156 },
11157 );
11158 moves.insert(
11159 Choices::NORETREAT,
11160 Choice {
11161 move_id: Choices::NORETREAT,
11162 target: MoveTarget::User,
11163 move_type: PokemonType::FIGHTING,
11164 flags: Flags {
11165 ..Default::default()
11166 },
11167 boost: Some(Boost {
11168 target: MoveTarget::User,
11169 boosts: StatBoosts {
11170 attack: 1,
11171 defense: 1,
11172 special_attack: 1,
11173 special_defense: 1,
11174 speed: 1,
11175 accuracy: 0,
11176 },
11177 }),
11178 volatile_status: Some(VolatileStatus {
11179 target: MoveTarget::User,
11180 volatile_status: PokemonVolatileStatus::NORETREAT,
11181 }),
11182 ..Default::default()
11183 },
11184 );
11185 moves.insert(
11186 Choices::NOTHING,
11187 Choice {
11188 move_id: Choices::NOTHING,
11189 target: MoveTarget::User,
11190 move_type: PokemonType::NORMAL,
11191 flags: Flags {
11192 ..Default::default()
11193 },
11194 ..Default::default()
11195 },
11196 );
11197 moves.insert(
11198 Choices::NOXIOUSTORQUE,
11199 Choice {
11200 move_id: Choices::NOXIOUSTORQUE,
11201 base_power: 100.0,
11202 category: MoveCategory::Physical,
11203 move_type: PokemonType::POISON,
11204 flags: Flags {
11205 protect: true,
11206 ..Default::default()
11207 },
11208 secondaries: Some(vec![Secondary {
11209 chance: 30.0,
11210 target: MoveTarget::Opponent,
11211 effect: Effect::Status(PokemonStatus::POISON),
11212 }]),
11213 ..Default::default()
11214 },
11215 );
11216 moves.insert(
11217 Choices::NUZZLE,
11218 Choice {
11219 move_id: Choices::NUZZLE,
11220 base_power: 20.0,
11221 category: MoveCategory::Physical,
11222 move_type: PokemonType::ELECTRIC,
11223 flags: Flags {
11224 contact: true,
11225 protect: true,
11226 ..Default::default()
11227 },
11228 secondaries: Some(vec![Secondary {
11229 chance: 100.0,
11230 target: MoveTarget::Opponent,
11231 effect: Effect::Status(PokemonStatus::PARALYZE),
11232 }]),
11233 ..Default::default()
11234 },
11235 );
11236 moves.insert(
11237 Choices::OBLIVIONWING,
11238 Choice {
11239 move_id: Choices::OBLIVIONWING,
11240 base_power: 80.0,
11241 category: MoveCategory::Special,
11242 move_type: PokemonType::FLYING,
11243 flags: Flags {
11244 heal: true,
11245 protect: true,
11246 ..Default::default()
11247 },
11248 drain: Some(0.75),
11249 ..Default::default()
11250 },
11251 );
11252 moves.insert(
11253 Choices::OBSTRUCT,
11254 Choice {
11255 move_id: Choices::OBSTRUCT,
11256 priority: 4,
11257 target: MoveTarget::User,
11258 move_type: PokemonType::DARK,
11259 flags: Flags {
11260 ..Default::default()
11261 },
11262 volatile_status: Some(VolatileStatus {
11263 target: MoveTarget::User,
11264 volatile_status: PokemonVolatileStatus::PROTECT,
11265 }),
11266 ..Default::default()
11267 },
11268 );
11269 moves.insert(
11270 Choices::OCTAZOOKA,
11271 Choice {
11272 move_id: Choices::OCTAZOOKA,
11273 accuracy: 85.0,
11274 base_power: 65.0,
11275 category: MoveCategory::Special,
11276 move_type: PokemonType::WATER,
11277 flags: Flags {
11278 bullet: true,
11279 protect: true,
11280 ..Default::default()
11281 },
11282 secondaries: Some(vec![Secondary {
11283 chance: 50.0,
11284 target: MoveTarget::Opponent,
11285 effect: Effect::Boost(StatBoosts {
11286 attack: 0,
11287 defense: 0,
11288 special_attack: 0,
11289 special_defense: 0,
11290 speed: 0,
11291 accuracy: -1,
11292 }),
11293 }]),
11294 ..Default::default()
11295 },
11296 );
11297 moves.insert(
11298 Choices::OCTOLOCK,
11299 Choice {
11300 move_id: Choices::OCTOLOCK,
11301 move_type: PokemonType::FIGHTING,
11302 flags: Flags {
11303 protect: true,
11304 ..Default::default()
11305 },
11306 volatile_status: Some(VolatileStatus {
11307 target: MoveTarget::Opponent,
11308 volatile_status: PokemonVolatileStatus::OCTOLOCK,
11309 }),
11310 ..Default::default()
11311 },
11312 );
11313 moves.insert(
11314 Choices::ODORSLEUTH,
11315 Choice {
11316 move_id: Choices::ODORSLEUTH,
11317 move_type: PokemonType::NORMAL,
11318 flags: Flags {
11319 protect: true,
11320 reflectable: true,
11321 ..Default::default()
11322 },
11323 volatile_status: Some(VolatileStatus {
11324 target: MoveTarget::Opponent,
11325 volatile_status: PokemonVolatileStatus::FORESIGHT,
11326 }),
11327 ..Default::default()
11328 },
11329 );
11330 moves.insert(
11331 Choices::OMINOUSWIND,
11332 Choice {
11333 move_id: Choices::OMINOUSWIND,
11334 base_power: 60.0,
11335 category: MoveCategory::Special,
11336 move_type: PokemonType::GHOST,
11337 flags: Flags {
11338 protect: true,
11339 ..Default::default()
11340 },
11341 secondaries: Some(vec![Secondary {
11342 chance: 10.0,
11343 target: MoveTarget::User,
11344 effect: Effect::Boost(StatBoosts {
11345 attack: 1,
11346 defense: 1,
11347 special_attack: 1,
11348 special_defense: 1,
11349 speed: 1,
11350 accuracy: 0,
11351 }),
11352 }]),
11353 ..Default::default()
11354 },
11355 );
11356 moves.insert(
11357 Choices::ORDERUP,
11358 Choice {
11359 move_id: Choices::ORDERUP,
11360 base_power: 80.0,
11361 category: MoveCategory::Physical,
11362 move_type: PokemonType::DRAGON,
11363 flags: Flags {
11364 protect: true,
11365 ..Default::default()
11366 },
11367 ..Default::default()
11368 },
11369 );
11370 moves.insert(
11371 Choices::ORIGINPULSE,
11372 Choice {
11373 move_id: Choices::ORIGINPULSE,
11374 accuracy: 85.0,
11375 base_power: 110.0,
11376 category: MoveCategory::Special,
11377 move_type: PokemonType::WATER,
11378 flags: Flags {
11379 protect: true,
11380 pulse: true,
11381 ..Default::default()
11382 },
11383 ..Default::default()
11384 },
11385 );
11386 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
11387 moves.insert(
11388 Choices::OUTRAGE,
11389 Choice {
11390 move_id: Choices::OUTRAGE,
11391 base_power: 90.0,
11392 category: MoveCategory::Physical,
11393 move_type: PokemonType::DRAGON,
11394 flags: Flags {
11395 contact: true,
11396 protect: true,
11397 ..Default::default()
11398 },
11399 volatile_status: Some(VolatileStatus {
11400 target: MoveTarget::User,
11401 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11402 }),
11403 ..Default::default()
11404 },
11405 );
11406 } else {
11407 moves.insert(
11408 Choices::OUTRAGE,
11409 Choice {
11410 move_id: Choices::OUTRAGE,
11411 base_power: 120.0,
11412 category: MoveCategory::Physical,
11413 move_type: PokemonType::DRAGON,
11414 flags: Flags {
11415 contact: true,
11416 protect: true,
11417 ..Default::default()
11418 },
11419 volatile_status: Some(VolatileStatus {
11420 target: MoveTarget::User,
11421 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11422 }),
11423 ..Default::default()
11424 },
11425 );
11426 }
11427 moves.insert(
11428 Choices::OVERDRIVE,
11429 Choice {
11430 move_id: Choices::OVERDRIVE,
11431 base_power: 80.0,
11432 category: MoveCategory::Special,
11433 move_type: PokemonType::ELECTRIC,
11434 flags: Flags {
11435 protect: true,
11436 sound: true,
11437 ..Default::default()
11438 },
11439 ..Default::default()
11440 },
11441 );
11442 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11443 moves.insert(
11444 Choices::OVERHEAT,
11445 Choice {
11446 move_id: Choices::OVERHEAT,
11447 accuracy: 90.0,
11448 base_power: 140.0,
11449 category: MoveCategory::Special,
11450 move_type: PokemonType::FIRE,
11451 flags: Flags {
11452 protect: true,
11453 ..Default::default()
11454 },
11455 boost: Some(Boost {
11456 target: MoveTarget::User,
11457 boosts: StatBoosts {
11458 attack: 0,
11459 defense: 0,
11460 special_attack: -2,
11461 special_defense: 0,
11462 speed: 0,
11463 accuracy: 0,
11464 },
11465 }),
11466 ..Default::default()
11467 },
11468 );
11469 } else {
11470 moves.insert(
11471 Choices::OVERHEAT,
11472 Choice {
11473 move_id: Choices::OVERHEAT,
11474 accuracy: 90.0,
11475 base_power: 130.0,
11476 category: MoveCategory::Special,
11477 move_type: PokemonType::FIRE,
11478 flags: Flags {
11479 protect: true,
11480 ..Default::default()
11481 },
11482 boost: Some(Boost {
11483 target: MoveTarget::User,
11484 boosts: StatBoosts {
11485 attack: 0,
11486 defense: 0,
11487 special_attack: -2,
11488 special_defense: 0,
11489 speed: 0,
11490 accuracy: 0,
11491 },
11492 }),
11493 ..Default::default()
11494 },
11495 );
11496 }
11497 moves.insert(
11498 Choices::PAINSPLIT,
11499 Choice {
11500 move_id: Choices::PAINSPLIT,
11501 move_type: PokemonType::NORMAL,
11502 flags: Flags {
11503 protect: true,
11504 ..Default::default()
11505 },
11506 ..Default::default()
11507 },
11508 );
11509 moves.insert(
11510 Choices::PALEOWAVE,
11511 Choice {
11512 move_id: Choices::PALEOWAVE,
11513 base_power: 85.0,
11514 category: MoveCategory::Special,
11515 move_type: PokemonType::ROCK,
11516 flags: Flags {
11517 protect: true,
11518 ..Default::default()
11519 },
11520 secondaries: Some(vec![Secondary {
11521 chance: 20.0,
11522 target: MoveTarget::Opponent,
11523 effect: Effect::Boost(StatBoosts {
11524 attack: -1,
11525 defense: 0,
11526 special_attack: 0,
11527 special_defense: 0,
11528 speed: 0,
11529 accuracy: 0,
11530 }),
11531 }]),
11532 ..Default::default()
11533 },
11534 );
11535 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
11536 moves.insert(
11537 Choices::PARABOLICCHARGE,
11538 Choice {
11539 move_id: Choices::PARABOLICCHARGE,
11540 base_power: 50.0,
11541 category: MoveCategory::Special,
11542 move_type: PokemonType::ELECTRIC,
11543 flags: Flags {
11544 heal: true,
11545 protect: true,
11546 ..Default::default()
11547 },
11548 drain: Some(0.5),
11549 ..Default::default()
11550 },
11551 );
11552 } else {
11553 moves.insert(
11554 Choices::PARABOLICCHARGE,
11555 Choice {
11556 move_id: Choices::PARABOLICCHARGE,
11557 base_power: 65.0,
11558 category: MoveCategory::Special,
11559 move_type: PokemonType::ELECTRIC,
11560 flags: Flags {
11561 heal: true,
11562 protect: true,
11563 ..Default::default()
11564 },
11565 drain: Some(0.5),
11566 ..Default::default()
11567 },
11568 );
11569 }
11570 moves.insert(
11571 Choices::PARTINGSHOT,
11572 Choice {
11573 move_id: Choices::PARTINGSHOT,
11574 move_type: PokemonType::DARK,
11575 flags: Flags {
11576 protect: true,
11577 reflectable: true,
11578 sound: true,
11579 pivot: true,
11580 ..Default::default()
11581 },
11582 boost: Some(Boost {
11583 target: MoveTarget::Opponent,
11584 boosts: StatBoosts {
11585 attack: -1,
11586 defense: 0,
11587 special_attack: -1,
11588 special_defense: 0,
11589 speed: 0,
11590 accuracy: 0,
11591 },
11592 }),
11593 ..Default::default()
11594 },
11595 );
11596 moves.insert(
11597 Choices::PAYBACK,
11598 Choice {
11599 move_id: Choices::PAYBACK,
11600 base_power: 50.0,
11601 category: MoveCategory::Physical,
11602 move_type: PokemonType::DARK,
11603 flags: Flags {
11604 contact: true,
11605 protect: true,
11606 ..Default::default()
11607 },
11608 ..Default::default()
11609 },
11610 );
11611 moves.insert(
11612 Choices::PAYDAY,
11613 Choice {
11614 move_id: Choices::PAYDAY,
11615 base_power: 40.0,
11616 category: MoveCategory::Physical,
11617 move_type: PokemonType::NORMAL,
11618 flags: Flags {
11619 protect: true,
11620 ..Default::default()
11621 },
11622 ..Default::default()
11623 },
11624 );
11625 moves.insert(
11626 Choices::PECK,
11627 Choice {
11628 move_id: Choices::PECK,
11629 base_power: 35.0,
11630 category: MoveCategory::Physical,
11631 move_type: PokemonType::FLYING,
11632 flags: Flags {
11633 contact: true,
11634 protect: true,
11635 ..Default::default()
11636 },
11637 ..Default::default()
11638 },
11639 );
11640 moves.insert(
11641 Choices::PERISHSONG,
11642 Choice {
11643 move_id: Choices::PERISHSONG,
11644 move_type: PokemonType::NORMAL,
11645 flags: Flags {
11646 sound: true,
11647 ..Default::default()
11648 },
11649 ..Default::default()
11650 },
11651 );
11652 moves.insert(
11653 Choices::PETALBLIZZARD,
11654 Choice {
11655 move_id: Choices::PETALBLIZZARD,
11656 base_power: 90.0,
11657 category: MoveCategory::Physical,
11658 move_type: PokemonType::GRASS,
11659 flags: Flags {
11660 protect: true,
11661 wind: true,
11662 ..Default::default()
11663 },
11664 ..Default::default()
11665 },
11666 );
11667 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
11668 moves.insert(
11669 Choices::PETALDANCE,
11670 Choice {
11671 move_id: Choices::PETALDANCE,
11672 base_power: 70.0,
11673 category: MoveCategory::Special,
11674 move_type: PokemonType::GRASS,
11675 flags: Flags {
11676 contact: true,
11677 protect: true,
11678 ..Default::default()
11679 },
11680 volatile_status: Some(VolatileStatus {
11681 target: MoveTarget::User,
11682 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11683 }),
11684 ..Default::default()
11685 },
11686 );
11687 }
11688 if cfg!(feature = "gen4") {
11689 moves.insert(
11690 Choices::PETALDANCE,
11691 Choice {
11692 move_id: Choices::PETALDANCE,
11693 base_power: 90.0,
11694 category: MoveCategory::Special,
11695 move_type: PokemonType::GRASS,
11696 flags: Flags {
11697 contact: true,
11698 protect: true,
11699 ..Default::default()
11700 },
11701 volatile_status: Some(VolatileStatus {
11702 target: MoveTarget::User,
11703 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11704 }),
11705 ..Default::default()
11706 },
11707 );
11708 } else {
11709 moves.insert(
11710 Choices::PETALDANCE,
11711 Choice {
11712 move_id: Choices::PETALDANCE,
11713 base_power: 120.0,
11714 category: MoveCategory::Special,
11715 move_type: PokemonType::GRASS,
11716 flags: Flags {
11717 contact: true,
11718 protect: true,
11719 ..Default::default()
11720 },
11721 volatile_status: Some(VolatileStatus {
11722 target: MoveTarget::User,
11723 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11724 }),
11725 ..Default::default()
11726 },
11727 );
11728 }
11729 moves.insert(
11730 Choices::PHANTOMFORCE,
11731 Choice {
11732 move_id: Choices::PHANTOMFORCE,
11733 base_power: 90.0,
11734 category: MoveCategory::Physical,
11735 move_type: PokemonType::GHOST,
11736 flags: Flags {
11737 charge: true,
11738 contact: true,
11739 ..Default::default()
11740 },
11741 ..Default::default()
11742 },
11743 );
11744 moves.insert(
11745 Choices::PHOTONGEYSER,
11746 Choice {
11747 move_id: Choices::PHOTONGEYSER,
11748 base_power: 100.0,
11749 category: MoveCategory::Special,
11750 move_type: PokemonType::PSYCHIC,
11751 flags: Flags {
11752 protect: true,
11753 ..Default::default()
11754 },
11755 ..Default::default()
11756 },
11757 );
11758 moves.insert(
11759 Choices::PIKAPAPOW,
11760 Choice {
11761 move_id: Choices::PIKAPAPOW,
11762 category: MoveCategory::Special,
11763 move_type: PokemonType::ELECTRIC,
11764 flags: Flags {
11765 protect: true,
11766 ..Default::default()
11767 },
11768 ..Default::default()
11769 },
11770 );
11771 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11772 moves.insert(
11773 Choices::PINMISSILE,
11774 Choice {
11775 move_id: Choices::PINMISSILE,
11776 accuracy: 85.0,
11777 base_power: 14.0,
11778 category: MoveCategory::Physical,
11779 move_type: PokemonType::BUG,
11780 flags: Flags {
11781 protect: true,
11782 ..Default::default()
11783 },
11784 ..Default::default()
11785 },
11786 );
11787 } else {
11788 moves.insert(
11789 Choices::PINMISSILE,
11790 Choice {
11791 move_id: Choices::PINMISSILE,
11792 accuracy: 95.0,
11793 base_power: 25.0,
11794 category: MoveCategory::Physical,
11795 move_type: PokemonType::BUG,
11796 flags: Flags {
11797 protect: true,
11798 ..Default::default()
11799 },
11800 ..Default::default()
11801 },
11802 );
11803 }
11804 moves.insert(
11805 Choices::PLASMAFISTS,
11806 Choice {
11807 move_id: Choices::PLASMAFISTS,
11808 base_power: 100.0,
11809 category: MoveCategory::Physical,
11810 move_type: PokemonType::ELECTRIC,
11811 flags: Flags {
11812 contact: true,
11813 protect: true,
11814 punch: true,
11815 ..Default::default()
11816 },
11817 ..Default::default()
11818 },
11819 );
11820 moves.insert(
11821 Choices::PLAYNICE,
11822 Choice {
11823 move_id: Choices::PLAYNICE,
11824 move_type: PokemonType::NORMAL,
11825 flags: Flags {
11826 reflectable: true,
11827 ..Default::default()
11828 },
11829 boost: Some(Boost {
11830 target: MoveTarget::Opponent,
11831 boosts: StatBoosts {
11832 attack: -1,
11833 defense: 0,
11834 special_attack: 0,
11835 special_defense: 0,
11836 speed: 0,
11837 accuracy: 0,
11838 },
11839 }),
11840 ..Default::default()
11841 },
11842 );
11843 moves.insert(
11844 Choices::PLAYROUGH,
11845 Choice {
11846 move_id: Choices::PLAYROUGH,
11847 accuracy: 90.0,
11848 base_power: 90.0,
11849 category: MoveCategory::Physical,
11850 move_type: PokemonType::FAIRY,
11851 flags: Flags {
11852 contact: true,
11853 protect: true,
11854 ..Default::default()
11855 },
11856 secondaries: Some(vec![Secondary {
11857 chance: 10.0,
11858 target: MoveTarget::Opponent,
11859 effect: Effect::Boost(StatBoosts {
11860 attack: -1,
11861 defense: 0,
11862 special_attack: 0,
11863 special_defense: 0,
11864 speed: 0,
11865 accuracy: 0,
11866 }),
11867 }]),
11868 ..Default::default()
11869 },
11870 );
11871 moves.insert(
11872 Choices::PLUCK,
11873 Choice {
11874 move_id: Choices::PLUCK,
11875 base_power: 60.0,
11876 category: MoveCategory::Physical,
11877 move_type: PokemonType::FLYING,
11878 flags: Flags {
11879 contact: true,
11880 protect: true,
11881 ..Default::default()
11882 },
11883 ..Default::default()
11884 },
11885 );
11886 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11887 moves.insert(
11888 Choices::POISONFANG,
11889 Choice {
11890 move_id: Choices::POISONFANG,
11891 base_power: 50.0,
11892 category: MoveCategory::Physical,
11893 move_type: PokemonType::POISON,
11894 flags: Flags {
11895 bite: true,
11896 contact: true,
11897 protect: true,
11898 ..Default::default()
11899 },
11900 secondaries: Some(vec![Secondary {
11901 chance: 30.0,
11902 target: MoveTarget::Opponent,
11903 effect: Effect::Status(PokemonStatus::TOXIC),
11904 }]),
11905 ..Default::default()
11906 },
11907 );
11908 } else {
11909 moves.insert(
11910 Choices::POISONFANG,
11911 Choice {
11912 move_id: Choices::POISONFANG,
11913 base_power: 50.0,
11914 category: MoveCategory::Physical,
11915 move_type: PokemonType::POISON,
11916 flags: Flags {
11917 bite: true,
11918 contact: true,
11919 protect: true,
11920 ..Default::default()
11921 },
11922 secondaries: Some(vec![Secondary {
11923 chance: 50.0,
11924 target: MoveTarget::Opponent,
11925 effect: Effect::Status(PokemonStatus::TOXIC),
11926 }]),
11927 ..Default::default()
11928 },
11929 );
11930 }
11931 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
11932 moves.insert(
11933 Choices::POISONGAS,
11934 Choice {
11935 move_id: Choices::POISONGAS,
11936 accuracy: 55.0,
11937 status: Some(Status {
11938 target: MoveTarget::Opponent,
11939 status: PokemonStatus::POISON,
11940 }),
11941 move_type: PokemonType::POISON,
11942 flags: Flags {
11943 protect: true,
11944 reflectable: true,
11945 ..Default::default()
11946 },
11947 ..Default::default()
11948 },
11949 );
11950 } else if cfg!(feature = "gen5") {
11951 moves.insert(
11952 Choices::POISONGAS,
11953 Choice {
11954 move_id: Choices::POISONGAS,
11955 accuracy: 80.0,
11956 status: Some(Status {
11957 target: MoveTarget::Opponent,
11958 status: PokemonStatus::POISON,
11959 }),
11960 move_type: PokemonType::POISON,
11961 flags: Flags {
11962 protect: true,
11963 reflectable: true,
11964 ..Default::default()
11965 },
11966 ..Default::default()
11967 },
11968 );
11969 } else {
11970 moves.insert(
11971 Choices::POISONGAS,
11972 Choice {
11973 move_id: Choices::POISONGAS,
11974 accuracy: 90.0,
11975 status: Some(Status {
11976 target: MoveTarget::Opponent,
11977 status: PokemonStatus::POISON,
11978 }),
11979 move_type: PokemonType::POISON,
11980 flags: Flags {
11981 protect: true,
11982 reflectable: true,
11983 ..Default::default()
11984 },
11985 ..Default::default()
11986 },
11987 );
11988 }
11989 moves.insert(
11990 Choices::POISONJAB,
11991 Choice {
11992 move_id: Choices::POISONJAB,
11993 base_power: 80.0,
11994 category: MoveCategory::Physical,
11995 move_type: PokemonType::POISON,
11996 flags: Flags {
11997 contact: true,
11998 protect: true,
11999 ..Default::default()
12000 },
12001 secondaries: Some(vec![Secondary {
12002 chance: 30.0,
12003 target: MoveTarget::Opponent,
12004 effect: Effect::Status(PokemonStatus::POISON),
12005 }]),
12006 ..Default::default()
12007 },
12008 );
12009 moves.insert(
12010 Choices::POISONPOWDER,
12011 Choice {
12012 move_id: Choices::POISONPOWDER,
12013 accuracy: 75.0,
12014 status: Some(Status {
12015 target: MoveTarget::Opponent,
12016 status: PokemonStatus::POISON,
12017 }),
12018 move_type: PokemonType::POISON,
12019 flags: Flags {
12020 powder: true,
12021 protect: true,
12022 reflectable: true,
12023 ..Default::default()
12024 },
12025 ..Default::default()
12026 },
12027 );
12028 if cfg!(feature = "gen1") {
12029 moves.insert(
12030 Choices::POISONSTING,
12031 Choice {
12032 move_id: Choices::POISONSTING,
12033 base_power: 15.0,
12034 category: MoveCategory::Physical,
12035 move_type: PokemonType::POISON,
12036 flags: Flags {
12037 protect: true,
12038 ..Default::default()
12039 },
12040 secondaries: Some(vec![Secondary {
12041 chance: 20.0,
12042 target: MoveTarget::Opponent,
12043 effect: Effect::Status(PokemonStatus::POISON),
12044 }]),
12045 ..Default::default()
12046 },
12047 );
12048 } else {
12049 moves.insert(
12050 Choices::POISONSTING,
12051 Choice {
12052 move_id: Choices::POISONSTING,
12053 base_power: 15.0,
12054 category: MoveCategory::Physical,
12055 move_type: PokemonType::POISON,
12056 flags: Flags {
12057 protect: true,
12058 ..Default::default()
12059 },
12060 secondaries: Some(vec![Secondary {
12061 chance: 30.0,
12062 target: MoveTarget::Opponent,
12063 effect: Effect::Status(PokemonStatus::POISON),
12064 }]),
12065 ..Default::default()
12066 },
12067 );
12068 }
12069 moves.insert(
12070 Choices::POISONTAIL,
12071 Choice {
12072 move_id: Choices::POISONTAIL,
12073 base_power: 50.0,
12074 category: MoveCategory::Physical,
12075 move_type: PokemonType::POISON,
12076 flags: Flags {
12077 contact: true,
12078 protect: true,
12079 ..Default::default()
12080 },
12081 secondaries: Some(vec![Secondary {
12082 chance: 10.0,
12083 target: MoveTarget::Opponent,
12084 effect: Effect::Status(PokemonStatus::POISON),
12085 }]),
12086 ..Default::default()
12087 },
12088 );
12089 moves.insert(
12090 Choices::POLLENPUFF,
12091 Choice {
12092 move_id: Choices::POLLENPUFF,
12093 base_power: 90.0,
12094 category: MoveCategory::Special,
12095 move_type: PokemonType::BUG,
12096 flags: Flags {
12097 bullet: true,
12098 protect: true,
12099 ..Default::default()
12100 },
12101 ..Default::default()
12102 },
12103 );
12104 moves.insert(
12105 Choices::POLTERGEIST,
12106 Choice {
12107 move_id: Choices::POLTERGEIST,
12108 accuracy: 90.0,
12109 base_power: 110.0,
12110 category: MoveCategory::Physical,
12111 move_type: PokemonType::GHOST,
12112 flags: Flags {
12113 protect: true,
12114 ..Default::default()
12115 },
12116 ..Default::default()
12117 },
12118 );
12119 moves.insert(
12120 Choices::POPULATIONBOMB,
12121 Choice {
12122 move_id: Choices::POPULATIONBOMB,
12123 accuracy: 90.0,
12124 base_power: 20.0,
12125 category: MoveCategory::Physical,
12126 move_type: PokemonType::NORMAL,
12127 flags: Flags {
12128 contact: true,
12129 protect: true,
12130 slicing: true,
12131 ..Default::default()
12132 },
12133 ..Default::default()
12134 },
12135 );
12136 moves.insert(
12137 Choices::POUNCE,
12138 Choice {
12139 move_id: Choices::POUNCE,
12140 base_power: 50.0,
12141 category: MoveCategory::Physical,
12142 move_type: PokemonType::BUG,
12143 flags: Flags {
12144 contact: true,
12145 protect: true,
12146 ..Default::default()
12147 },
12148 secondaries: Some(vec![Secondary {
12149 chance: 100.0,
12150 target: MoveTarget::Opponent,
12151 effect: Effect::Boost(StatBoosts {
12152 attack: 0,
12153 defense: 0,
12154 special_attack: 0,
12155 special_defense: 0,
12156 speed: -1,
12157 accuracy: 0,
12158 }),
12159 }]),
12160 ..Default::default()
12161 },
12162 );
12163 moves.insert(
12164 Choices::POUND,
12165 Choice {
12166 move_id: Choices::POUND,
12167 base_power: 40.0,
12168 category: MoveCategory::Physical,
12169 move_type: PokemonType::NORMAL,
12170 flags: Flags {
12171 contact: true,
12172 protect: true,
12173 ..Default::default()
12174 },
12175 ..Default::default()
12176 },
12177 );
12178 moves.insert(
12179 Choices::POWDER,
12180 Choice {
12181 move_id: Choices::POWDER,
12182 priority: 1,
12183 move_type: PokemonType::BUG,
12184 flags: Flags {
12185 powder: true,
12186 protect: true,
12187 reflectable: true,
12188 ..Default::default()
12189 },
12190 volatile_status: Some(VolatileStatus {
12191 target: MoveTarget::Opponent,
12192 volatile_status: PokemonVolatileStatus::POWDER,
12193 }),
12194 ..Default::default()
12195 },
12196 );
12197 moves.insert(
12198 Choices::POWDERSNOW,
12199 Choice {
12200 move_id: Choices::POWDERSNOW,
12201 base_power: 40.0,
12202 category: MoveCategory::Special,
12203 move_type: PokemonType::ICE,
12204 flags: Flags {
12205 protect: true,
12206 ..Default::default()
12207 },
12208 secondaries: Some(vec![Secondary {
12209 chance: 10.0,
12210 target: MoveTarget::Opponent,
12211 effect: Effect::Status(PokemonStatus::FREEZE),
12212 }]),
12213 ..Default::default()
12214 },
12215 );
12216 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12217 moves.insert(
12218 Choices::POWERGEM,
12219 Choice {
12220 move_id: Choices::POWERGEM,
12221 base_power: 70.0,
12222 category: MoveCategory::Special,
12223 move_type: PokemonType::ROCK,
12224 flags: Flags {
12225 protect: true,
12226 ..Default::default()
12227 },
12228 ..Default::default()
12229 },
12230 );
12231 } else {
12232 moves.insert(
12233 Choices::POWERGEM,
12234 Choice {
12235 move_id: Choices::POWERGEM,
12236 base_power: 80.0,
12237 category: MoveCategory::Special,
12238 move_type: PokemonType::ROCK,
12239 flags: Flags {
12240 protect: true,
12241 ..Default::default()
12242 },
12243 ..Default::default()
12244 },
12245 );
12246 }
12247 moves.insert(
12248 Choices::POWERSHIFT,
12249 Choice {
12250 move_id: Choices::POWERSHIFT,
12251 target: MoveTarget::User,
12252 move_type: PokemonType::NORMAL,
12253 flags: Flags {
12254 ..Default::default()
12255 },
12256 volatile_status: Some(VolatileStatus {
12257 target: MoveTarget::User,
12258 volatile_status: PokemonVolatileStatus::POWERSHIFT,
12259 }),
12260 ..Default::default()
12261 },
12262 );
12263 moves.insert(
12264 Choices::POWERSPLIT,
12265 Choice {
12266 move_id: Choices::POWERSPLIT,
12267 move_type: PokemonType::PSYCHIC,
12268 flags: Flags {
12269 protect: true,
12270 ..Default::default()
12271 },
12272 ..Default::default()
12273 },
12274 );
12275 moves.insert(
12276 Choices::POWERSWAP,
12277 Choice {
12278 move_id: Choices::POWERSWAP,
12279 move_type: PokemonType::PSYCHIC,
12280 flags: Flags {
12281 protect: true,
12282 ..Default::default()
12283 },
12284 ..Default::default()
12285 },
12286 );
12287 moves.insert(
12288 Choices::POWERTRICK,
12289 Choice {
12290 move_id: Choices::POWERTRICK,
12291 target: MoveTarget::User,
12292 move_type: PokemonType::PSYCHIC,
12293 flags: Flags {
12294 ..Default::default()
12295 },
12296 volatile_status: Some(VolatileStatus {
12297 target: MoveTarget::User,
12298 volatile_status: PokemonVolatileStatus::POWERTRICK,
12299 }),
12300 ..Default::default()
12301 },
12302 );
12303 moves.insert(
12304 Choices::POWERTRIP,
12305 Choice {
12306 move_id: Choices::POWERTRIP,
12307 base_power: 20.0,
12308 category: MoveCategory::Physical,
12309 move_type: PokemonType::DARK,
12310 flags: Flags {
12311 contact: true,
12312 protect: true,
12313 ..Default::default()
12314 },
12315 ..Default::default()
12316 },
12317 );
12318 moves.insert(
12319 Choices::POWERUPPUNCH,
12320 Choice {
12321 move_id: Choices::POWERUPPUNCH,
12322 base_power: 40.0,
12323 category: MoveCategory::Physical,
12324 move_type: PokemonType::FIGHTING,
12325 flags: Flags {
12326 contact: true,
12327 protect: true,
12328 punch: true,
12329 ..Default::default()
12330 },
12331 secondaries: Some(vec![Secondary {
12332 chance: 100.0,
12333 target: MoveTarget::User,
12334 effect: Effect::Boost(StatBoosts {
12335 attack: 1,
12336 defense: 0,
12337 special_attack: 0,
12338 special_defense: 0,
12339 speed: 0,
12340 accuracy: 0,
12341 }),
12342 }]),
12343 ..Default::default()
12344 },
12345 );
12346 moves.insert(
12347 Choices::POWERWHIP,
12348 Choice {
12349 move_id: Choices::POWERWHIP,
12350 accuracy: 85.0,
12351 base_power: 120.0,
12352 category: MoveCategory::Physical,
12353 move_type: PokemonType::GRASS,
12354 flags: Flags {
12355 contact: true,
12356 protect: true,
12357 ..Default::default()
12358 },
12359 ..Default::default()
12360 },
12361 );
12362 moves.insert(
12363 Choices::PRECIPICEBLADES,
12364 Choice {
12365 move_id: Choices::PRECIPICEBLADES,
12366 accuracy: 85.0,
12367 base_power: 120.0,
12368 category: MoveCategory::Physical,
12369 move_type: PokemonType::GROUND,
12370 flags: Flags {
12371 protect: true,
12372 ..Default::default()
12373 },
12374 ..Default::default()
12375 },
12376 );
12377 moves.insert(
12378 Choices::PRESENT,
12379 Choice {
12380 move_id: Choices::PRESENT,
12381 accuracy: 90.0,
12382 category: MoveCategory::Physical,
12383 move_type: PokemonType::NORMAL,
12384 flags: Flags {
12385 protect: true,
12386 ..Default::default()
12387 },
12388 ..Default::default()
12389 },
12390 );
12391 moves.insert(
12392 Choices::PRISMATICLASER,
12393 Choice {
12394 move_id: Choices::PRISMATICLASER,
12395 base_power: 160.0,
12396 category: MoveCategory::Special,
12397 move_type: PokemonType::PSYCHIC,
12398 flags: Flags {
12399 protect: true,
12400 recharge: true,
12401 ..Default::default()
12402 },
12403 ..Default::default()
12404 },
12405 );
12406 moves.insert(
12407 Choices::PROTECT,
12408 Choice {
12409 move_id: Choices::PROTECT,
12410 priority: 4,
12411 target: MoveTarget::User,
12412 move_type: PokemonType::NORMAL,
12413 flags: Flags {
12414 ..Default::default()
12415 },
12416 volatile_status: Some(VolatileStatus {
12417 target: MoveTarget::User,
12418 volatile_status: PokemonVolatileStatus::PROTECT,
12419 }),
12420 ..Default::default()
12421 },
12422 );
12423 moves.insert(
12424 Choices::PSYBEAM,
12425 Choice {
12426 move_id: Choices::PSYBEAM,
12427 base_power: 65.0,
12428 category: MoveCategory::Special,
12429 move_type: PokemonType::PSYCHIC,
12430 flags: Flags {
12431 protect: true,
12432 ..Default::default()
12433 },
12434 secondaries: Some(vec![Secondary {
12435 chance: 10.0,
12436 target: MoveTarget::Opponent,
12437 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
12438 }]),
12439 ..Default::default()
12440 },
12441 );
12442 moves.insert(
12443 Choices::PSYBLADE,
12444 Choice {
12445 move_id: Choices::PSYBLADE,
12446 base_power: 80.0,
12447 category: MoveCategory::Physical,
12448 move_type: PokemonType::PSYCHIC,
12449 flags: Flags {
12450 contact: true,
12451 protect: true,
12452 slicing: true,
12453 ..Default::default()
12454 },
12455 ..Default::default()
12456 },
12457 );
12458 if cfg!(feature = "gen1") {
12459 moves.insert(
12460 Choices::PSYCHIC,
12461 Choice {
12462 move_id: Choices::PSYCHIC,
12463 base_power: 90.0,
12464 category: MoveCategory::Special,
12465 move_type: PokemonType::PSYCHIC,
12466 flags: Flags {
12467 protect: true,
12468 ..Default::default()
12469 },
12470 secondaries: Some(vec![Secondary {
12471 chance: 33.2,
12472 target: MoveTarget::Opponent,
12473 effect: Effect::Boost(StatBoosts {
12474 attack: 0,
12475 defense: 0,
12476 special_attack: -1,
12477 special_defense: 0,
12478 speed: 0,
12479 accuracy: 0,
12480 }),
12481 }]),
12482 ..Default::default()
12483 },
12484 );
12485 } else {
12486 moves.insert(
12487 Choices::PSYCHIC,
12488 Choice {
12489 move_id: Choices::PSYCHIC,
12490 base_power: 90.0,
12491 category: MoveCategory::Special,
12492 move_type: PokemonType::PSYCHIC,
12493 flags: Flags {
12494 protect: true,
12495 ..Default::default()
12496 },
12497 secondaries: Some(vec![Secondary {
12498 chance: 10.0,
12499 target: MoveTarget::Opponent,
12500 effect: Effect::Boost(StatBoosts {
12501 attack: 0,
12502 defense: 0,
12503 special_attack: 0,
12504 special_defense: -1,
12505 speed: 0,
12506 accuracy: 0,
12507 }),
12508 }]),
12509 ..Default::default()
12510 },
12511 );
12512 }
12513 moves.insert(
12514 Choices::PSYCHICFANGS,
12515 Choice {
12516 move_id: Choices::PSYCHICFANGS,
12517 base_power: 85.0,
12518 category: MoveCategory::Physical,
12519 move_type: PokemonType::PSYCHIC,
12520 flags: Flags {
12521 bite: true,
12522 contact: true,
12523 protect: true,
12524 ..Default::default()
12525 },
12526 ..Default::default()
12527 },
12528 );
12529 moves.insert(
12530 Choices::PSYCHICNOISE,
12531 Choice {
12532 move_id: Choices::PSYCHICNOISE,
12533 base_power: 75.0,
12534 category: MoveCategory::Special,
12535 move_type: PokemonType::PSYCHIC,
12536 flags: Flags {
12537 protect: true,
12538 sound: true,
12539 ..Default::default()
12540 },
12541 volatile_status: Some(VolatileStatus {
12542 target: MoveTarget::Opponent,
12543 volatile_status: PokemonVolatileStatus::HEALBLOCK,
12544 }),
12545 ..Default::default()
12546 },
12547 );
12548 moves.insert(
12549 Choices::PSYCHICTERRAIN,
12550 Choice {
12551 move_id: Choices::PSYCHICTERRAIN,
12552 move_type: PokemonType::PSYCHIC,
12553 flags: Flags {
12554 ..Default::default()
12555 },
12556 ..Default::default()
12557 },
12558 );
12559 moves.insert(
12560 Choices::PSYCHOBOOST,
12561 Choice {
12562 move_id: Choices::PSYCHOBOOST,
12563 accuracy: 90.0,
12564 base_power: 140.0,
12565 category: MoveCategory::Special,
12566 move_type: PokemonType::PSYCHIC,
12567 flags: Flags {
12568 protect: true,
12569 ..Default::default()
12570 },
12571 boost: Some(Boost {
12572 target: MoveTarget::User,
12573 boosts: StatBoosts {
12574 attack: 0,
12575 defense: 0,
12576 special_attack: -2,
12577 special_defense: 0,
12578 speed: 0,
12579 accuracy: 0,
12580 },
12581 }),
12582 ..Default::default()
12583 },
12584 );
12585 moves.insert(
12586 Choices::PSYCHOCUT,
12587 Choice {
12588 move_id: Choices::PSYCHOCUT,
12589 base_power: 70.0,
12590 category: MoveCategory::Physical,
12591 move_type: PokemonType::PSYCHIC,
12592 flags: Flags {
12593 protect: true,
12594 slicing: true,
12595 ..Default::default()
12596 },
12597 ..Default::default()
12598 },
12599 );
12600 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12601 moves.insert(
12602 Choices::PSYCHOSHIFT,
12603 Choice {
12604 accuracy: 90.0,
12605 move_id: Choices::PSYCHOSHIFT,
12606 move_type: PokemonType::PSYCHIC,
12607 flags: Flags {
12608 protect: true,
12609 ..Default::default()
12610 },
12611 ..Default::default()
12612 },
12613 );
12614 } else {
12615 moves.insert(
12616 Choices::PSYCHOSHIFT,
12617 Choice {
12618 move_id: Choices::PSYCHOSHIFT,
12619 move_type: PokemonType::PSYCHIC,
12620 flags: Flags {
12621 protect: true,
12622 ..Default::default()
12623 },
12624 ..Default::default()
12625 },
12626 );
12627 }
12628 moves.insert(
12629 Choices::PSYCHUP,
12630 Choice {
12631 move_id: Choices::PSYCHUP,
12632 move_type: PokemonType::NORMAL,
12633 flags: Flags {
12634 ..Default::default()
12635 },
12636 ..Default::default()
12637 },
12638 );
12639 moves.insert(
12640 Choices::PSYSHIELDBASH,
12641 Choice {
12642 move_id: Choices::PSYSHIELDBASH,
12643 accuracy: 90.0,
12644 base_power: 70.0,
12645 category: MoveCategory::Physical,
12646 move_type: PokemonType::PSYCHIC,
12647 flags: Flags {
12648 contact: true,
12649 protect: true,
12650 ..Default::default()
12651 },
12652 secondaries: Some(vec![Secondary {
12653 chance: 100.0,
12654 target: MoveTarget::User,
12655 effect: Effect::Boost(StatBoosts {
12656 attack: 0,
12657 defense: 1,
12658 special_attack: 0,
12659 special_defense: 0,
12660 speed: 0,
12661 accuracy: 0,
12662 }),
12663 }]),
12664 ..Default::default()
12665 },
12666 );
12667 moves.insert(
12668 Choices::PSYSHOCK,
12669 Choice {
12670 move_id: Choices::PSYSHOCK,
12671 base_power: 80.0,
12672 category: MoveCategory::Special,
12673 move_type: PokemonType::PSYCHIC,
12674 flags: Flags {
12675 protect: true,
12676 ..Default::default()
12677 },
12678 ..Default::default()
12679 },
12680 );
12681 moves.insert(
12682 Choices::PSYSTRIKE,
12683 Choice {
12684 move_id: Choices::PSYSTRIKE,
12685 base_power: 100.0,
12686 category: MoveCategory::Special,
12687 move_type: PokemonType::PSYCHIC,
12688 flags: Flags {
12689 protect: true,
12690 ..Default::default()
12691 },
12692 ..Default::default()
12693 },
12694 );
12695 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12696 moves.insert(
12697 Choices::PSYWAVE,
12698 Choice {
12699 accuracy: 90.0,
12700 move_id: Choices::PSYWAVE,
12701 category: MoveCategory::Special,
12702 move_type: PokemonType::PSYCHIC,
12703 flags: Flags {
12704 protect: true,
12705 ..Default::default()
12706 },
12707 ..Default::default()
12708 },
12709 );
12710 } else {
12711 moves.insert(
12712 Choices::PSYWAVE,
12713 Choice {
12714 move_id: Choices::PSYWAVE,
12715 category: MoveCategory::Special,
12716 move_type: PokemonType::PSYCHIC,
12717 flags: Flags {
12718 protect: true,
12719 ..Default::default()
12720 },
12721 ..Default::default()
12722 },
12723 );
12724 }
12725 moves.insert(
12726 Choices::PUNISHMENT,
12727 Choice {
12728 move_id: Choices::PUNISHMENT,
12729 category: MoveCategory::Physical,
12730 move_type: PokemonType::DARK,
12731 flags: Flags {
12732 contact: true,
12733 protect: true,
12734 ..Default::default()
12735 },
12736 ..Default::default()
12737 },
12738 );
12739 moves.insert(
12740 Choices::PURIFY,
12741 Choice {
12742 move_id: Choices::PURIFY,
12743 move_type: PokemonType::POISON,
12744 flags: Flags {
12745 heal: true,
12746 protect: true,
12747 reflectable: true,
12748 ..Default::default()
12749 },
12750 ..Default::default()
12751 },
12752 );
12753 moves.insert(
12754 Choices::PURSUIT,
12755 Choice {
12756 move_id: Choices::PURSUIT,
12757 base_power: 40.0,
12758 category: MoveCategory::Physical,
12759 move_type: PokemonType::DARK,
12760 flags: Flags {
12761 contact: true,
12762 protect: true,
12763 ..Default::default()
12764 },
12765 ..Default::default()
12766 },
12767 );
12768 moves.insert(
12769 Choices::PYROBALL,
12770 Choice {
12771 move_id: Choices::PYROBALL,
12772 accuracy: 90.0,
12773 base_power: 120.0,
12774 category: MoveCategory::Physical,
12775 move_type: PokemonType::FIRE,
12776 flags: Flags {
12777 bullet: true,
12778 protect: true,
12779 ..Default::default()
12780 },
12781 secondaries: Some(vec![Secondary {
12782 chance: 10.0,
12783 target: MoveTarget::Opponent,
12784 effect: Effect::Status(PokemonStatus::BURN),
12785 }]),
12786 ..Default::default()
12787 },
12788 );
12789 moves.insert(
12790 Choices::QUASH,
12791 Choice {
12792 move_id: Choices::QUASH,
12793 move_type: PokemonType::DARK,
12794 flags: Flags {
12795 protect: true,
12796 ..Default::default()
12797 },
12798 ..Default::default()
12799 },
12800 );
12801 moves.insert(
12802 Choices::QUICKATTACK,
12803 Choice {
12804 move_id: Choices::QUICKATTACK,
12805 base_power: 40.0,
12806 category: MoveCategory::Physical,
12807 priority: 1,
12808 move_type: PokemonType::NORMAL,
12809 flags: Flags {
12810 contact: true,
12811 protect: true,
12812 ..Default::default()
12813 },
12814 ..Default::default()
12815 },
12816 );
12817 moves.insert(
12818 Choices::QUICKGUARD,
12819 Choice {
12820 move_id: Choices::QUICKGUARD,
12821 priority: 3,
12822 target: MoveTarget::User,
12823 move_type: PokemonType::FIGHTING,
12824 flags: Flags {
12825 ..Default::default()
12826 },
12827 side_condition: Some(SideCondition {
12828 target: MoveTarget::User,
12829 condition: PokemonSideCondition::QuickGuard,
12830 }),
12831 ..Default::default()
12832 },
12833 );
12834 moves.insert(
12835 Choices::QUIVERDANCE,
12836 Choice {
12837 move_id: Choices::QUIVERDANCE,
12838 target: MoveTarget::User,
12839 move_type: PokemonType::BUG,
12840 flags: Flags {
12841 ..Default::default()
12842 },
12843 boost: Some(Boost {
12844 target: MoveTarget::User,
12845 boosts: StatBoosts {
12846 attack: 0,
12847 defense: 0,
12848 special_attack: 1,
12849 special_defense: 1,
12850 speed: 1,
12851 accuracy: 0,
12852 },
12853 }),
12854 ..Default::default()
12855 },
12856 );
12857 moves.insert(
12858 Choices::RAGE,
12859 Choice {
12860 move_id: Choices::RAGE,
12861 base_power: 20.0,
12862 category: MoveCategory::Physical,
12863 move_type: PokemonType::NORMAL,
12864 flags: Flags {
12865 contact: true,
12866 protect: true,
12867 ..Default::default()
12868 },
12869 ..Default::default()
12870 },
12871 );
12872 moves.insert(
12873 Choices::RAGEFIST,
12874 Choice {
12875 move_id: Choices::RAGEFIST,
12876 base_power: 50.0,
12877 category: MoveCategory::Physical,
12878 move_type: PokemonType::GHOST,
12879 flags: Flags {
12880 contact: true,
12881 protect: true,
12882 punch: true,
12883 ..Default::default()
12884 },
12885 ..Default::default()
12886 },
12887 );
12888 moves.insert(
12889 Choices::RAGEPOWDER,
12890 Choice {
12891 move_id: Choices::RAGEPOWDER,
12892 priority: 2,
12893 target: MoveTarget::User,
12894 move_type: PokemonType::BUG,
12895 flags: Flags {
12896 powder: true,
12897 ..Default::default()
12898 },
12899 volatile_status: Some(VolatileStatus {
12900 target: MoveTarget::User,
12901 volatile_status: PokemonVolatileStatus::RAGEPOWDER,
12902 }),
12903 ..Default::default()
12904 },
12905 );
12906 moves.insert(
12907 Choices::RAGINGBULL,
12908 Choice {
12909 move_id: Choices::RAGINGBULL,
12910 base_power: 90.0,
12911 category: MoveCategory::Physical,
12912 move_type: PokemonType::NORMAL,
12913 flags: Flags {
12914 contact: true,
12915 protect: true,
12916 ..Default::default()
12917 },
12918 ..Default::default()
12919 },
12920 );
12921 moves.insert(
12922 Choices::RAGINGFURY,
12923 Choice {
12924 move_id: Choices::RAGINGFURY,
12925 base_power: 120.0,
12926 category: MoveCategory::Physical,
12927 move_type: PokemonType::FIRE,
12928 flags: Flags {
12929 protect: true,
12930 ..Default::default()
12931 },
12932 volatile_status: Some(VolatileStatus {
12933 target: MoveTarget::User,
12934 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
12935 }),
12936 ..Default::default()
12937 },
12938 );
12939 moves.insert(
12940 Choices::RAINDANCE,
12941 Choice {
12942 move_id: Choices::RAINDANCE,
12943 move_type: PokemonType::WATER,
12944 flags: Flags {
12945 ..Default::default()
12946 },
12947 ..Default::default()
12948 },
12949 );
12950
12951 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
12952 moves.insert(
12953 Choices::RAPIDSPIN,
12954 Choice {
12955 move_id: Choices::RAPIDSPIN,
12956 base_power: 50.0,
12957 category: MoveCategory::Physical,
12958 move_type: PokemonType::NORMAL,
12959 flags: Flags {
12960 contact: true,
12961 protect: true,
12962 ..Default::default()
12963 },
12964 secondaries: Some(vec![Secondary {
12965 chance: 100.0,
12966 target: MoveTarget::User,
12967 effect: Effect::Boost(StatBoosts {
12968 attack: 0,
12969 defense: 0,
12970 special_attack: 0,
12971 special_defense: 0,
12972 speed: 1,
12973 accuracy: 0,
12974 }),
12975 }]),
12976 ..Default::default()
12977 },
12978 );
12979 } else {
12980 moves.insert(
12981 Choices::RAPIDSPIN,
12982 Choice {
12983 move_id: Choices::RAPIDSPIN,
12984 base_power: 20.0,
12985 category: MoveCategory::Physical,
12986 move_type: PokemonType::NORMAL,
12987 flags: Flags {
12988 contact: true,
12989 protect: true,
12990 ..Default::default()
12991 },
12992 secondaries: None,
12993 ..Default::default()
12994 },
12995 );
12996 }
12997 moves.insert(
12998 Choices::RAZORLEAF,
12999 Choice {
13000 move_id: Choices::RAZORLEAF,
13001 accuracy: 95.0,
13002 base_power: 55.0,
13003 category: MoveCategory::Physical,
13004 move_type: PokemonType::GRASS,
13005 flags: Flags {
13006 protect: true,
13007 slicing: true,
13008 ..Default::default()
13009 },
13010 ..Default::default()
13011 },
13012 );
13013 moves.insert(
13014 Choices::RAZORSHELL,
13015 Choice {
13016 move_id: Choices::RAZORSHELL,
13017 accuracy: 95.0,
13018 base_power: 75.0,
13019 category: MoveCategory::Physical,
13020 move_type: PokemonType::WATER,
13021 flags: Flags {
13022 contact: true,
13023 protect: true,
13024 slicing: true,
13025 ..Default::default()
13026 },
13027 secondaries: Some(vec![Secondary {
13028 chance: 50.0,
13029 target: MoveTarget::Opponent,
13030 effect: Effect::Boost(StatBoosts {
13031 attack: 0,
13032 defense: -1,
13033 special_attack: 0,
13034 special_defense: 0,
13035 speed: 0,
13036 accuracy: 0,
13037 }),
13038 }]),
13039 ..Default::default()
13040 },
13041 );
13042 moves.insert(
13043 Choices::RAZORWIND,
13044 Choice {
13045 move_id: Choices::RAZORWIND,
13046 base_power: 80.0,
13047 category: MoveCategory::Special,
13048 move_type: PokemonType::NORMAL,
13049 flags: Flags {
13050 charge: true,
13051 protect: true,
13052 ..Default::default()
13053 },
13054 ..Default::default()
13055 },
13056 );
13057 moves.insert(
13058 Choices::RECHARGE,
13059 Choice {
13060 move_id: Choices::RECHARGE,
13061 target: MoveTarget::User,
13062 move_type: PokemonType::NORMAL,
13063 flags: Flags {
13064 ..Default::default()
13065 },
13066 ..Default::default()
13067 },
13068 );
13069 moves.insert(
13070 Choices::RECOVER,
13071 Choice {
13072 move_id: Choices::RECOVER,
13073 target: MoveTarget::User,
13074 move_type: PokemonType::NORMAL,
13075 flags: Flags {
13076 heal: true,
13077 ..Default::default()
13078 },
13079 heal: Some(Heal {
13080 target: MoveTarget::User,
13081 amount: 0.5,
13082 }),
13083 ..Default::default()
13084 },
13085 );
13086 moves.insert(
13087 Choices::RECYCLE,
13088 Choice {
13089 move_id: Choices::RECYCLE,
13090 target: MoveTarget::User,
13091 move_type: PokemonType::NORMAL,
13092 flags: Flags {
13093 ..Default::default()
13094 },
13095 ..Default::default()
13096 },
13097 );
13098 if cfg!(feature = "gen1") {
13099 moves.insert(
13100 Choices::REFLECT,
13101 Choice {
13102 move_id: Choices::REFLECT,
13103 target: MoveTarget::User,
13104 move_type: PokemonType::PSYCHIC,
13105 flags: Flags {
13106 ..Default::default()
13107 },
13108 volatile_status: Some(VolatileStatus {
13109 target: MoveTarget::User,
13110 volatile_status: PokemonVolatileStatus::REFLECT,
13111 }),
13112 ..Default::default()
13113 },
13114 );
13115 } else {
13116 moves.insert(
13117 Choices::REFLECT,
13118 Choice {
13119 move_id: Choices::REFLECT,
13120 target: MoveTarget::User,
13121 move_type: PokemonType::PSYCHIC,
13122 flags: Flags {
13123 ..Default::default()
13124 },
13125 side_condition: Some(SideCondition {
13126 target: MoveTarget::User,
13127 condition: PokemonSideCondition::Reflect,
13128 }),
13129 ..Default::default()
13130 },
13131 );
13132 }
13133 moves.insert(
13134 Choices::REFLECTTYPE,
13135 Choice {
13136 move_id: Choices::REFLECTTYPE,
13137 move_type: PokemonType::NORMAL,
13138 flags: Flags {
13139 protect: true,
13140 ..Default::default()
13141 },
13142 ..Default::default()
13143 },
13144 );
13145 moves.insert(
13146 Choices::REFRESH,
13147 Choice {
13148 move_id: Choices::REFRESH,
13149 target: MoveTarget::User,
13150 move_type: PokemonType::NORMAL,
13151 flags: Flags {
13152 ..Default::default()
13153 },
13154 ..Default::default()
13155 },
13156 );
13157 moves.insert(
13158 Choices::RELICSONG,
13159 Choice {
13160 move_id: Choices::RELICSONG,
13161 base_power: 75.0,
13162 category: MoveCategory::Special,
13163 move_type: PokemonType::NORMAL,
13164 flags: Flags {
13165 protect: true,
13166 sound: true,
13167 ..Default::default()
13168 },
13169 secondaries: Some(vec![Secondary {
13170 chance: 10.0,
13171 target: MoveTarget::Opponent,
13172 effect: Effect::Status(PokemonStatus::SLEEP),
13173 }]),
13174 ..Default::default()
13175 },
13176 );
13177 moves.insert(
13178 Choices::REST,
13179 Choice {
13180 move_id: Choices::REST,
13181 status: None, target: MoveTarget::User,
13183 move_type: PokemonType::PSYCHIC,
13184 flags: Flags {
13185 heal: true,
13186 ..Default::default()
13187 },
13188 heal: None, ..Default::default()
13190 },
13191 );
13192 moves.insert(
13193 Choices::RETALIATE,
13194 Choice {
13195 move_id: Choices::RETALIATE,
13196 base_power: 70.0,
13197 category: MoveCategory::Physical,
13198 move_type: PokemonType::NORMAL,
13199 flags: Flags {
13200 contact: true,
13201 protect: true,
13202 ..Default::default()
13203 },
13204 ..Default::default()
13205 },
13206 );
13207 moves.insert(
13208 Choices::RETURN,
13209 Choice {
13210 move_id: Choices::RETURN,
13211 base_power: 102.0,
13212 category: MoveCategory::Physical,
13213 move_type: PokemonType::NORMAL,
13214 flags: Flags {
13215 contact: true,
13216 protect: true,
13217 ..Default::default()
13218 },
13219 ..Default::default()
13220 },
13221 );
13222 moves.insert(
13223 Choices::RETURN102,
13224 Choice {
13225 move_id: Choices::RETURN102,
13226 base_power: 102.0,
13227 category: MoveCategory::Physical,
13228 move_type: PokemonType::NORMAL,
13229 flags: Flags {
13230 contact: true,
13231 protect: true,
13232 ..Default::default()
13233 },
13234 ..Default::default()
13235 },
13236 );
13237 moves.insert(
13238 Choices::REVELATIONDANCE,
13239 Choice {
13240 move_id: Choices::REVELATIONDANCE,
13241 base_power: 90.0,
13242 category: MoveCategory::Special,
13243 move_type: PokemonType::NORMAL,
13244 flags: Flags {
13245 protect: true,
13246 ..Default::default()
13247 },
13248 ..Default::default()
13249 },
13250 );
13251 moves.insert(
13252 Choices::REVENGE,
13253 Choice {
13254 move_id: Choices::REVENGE,
13255 base_power: 60.0,
13256 category: MoveCategory::Physical,
13257 priority: -4,
13258 move_type: PokemonType::FIGHTING,
13259 flags: Flags {
13260 contact: true,
13261 protect: true,
13262 ..Default::default()
13263 },
13264 ..Default::default()
13265 },
13266 );
13267 moves.insert(
13268 Choices::REVERSAL,
13269 Choice {
13270 move_id: Choices::REVERSAL,
13271 category: MoveCategory::Physical,
13272 move_type: PokemonType::FIGHTING,
13273 flags: Flags {
13274 contact: true,
13275 protect: true,
13276 ..Default::default()
13277 },
13278 ..Default::default()
13279 },
13280 );
13281 moves.insert(
13282 Choices::REVIVALBLESSING,
13283 Choice {
13284 move_id: Choices::REVIVALBLESSING,
13285 target: MoveTarget::User,
13286 move_type: PokemonType::NORMAL,
13287 flags: Flags {
13288 heal: true,
13289 ..Default::default()
13290 },
13291 ..Default::default()
13292 },
13293 );
13294 moves.insert(
13295 Choices::RISINGVOLTAGE,
13296 Choice {
13297 move_id: Choices::RISINGVOLTAGE,
13298 base_power: 70.0,
13299 category: MoveCategory::Special,
13300 move_type: PokemonType::ELECTRIC,
13301 flags: Flags {
13302 protect: true,
13303 ..Default::default()
13304 },
13305 ..Default::default()
13306 },
13307 );
13308 moves.insert(
13309 Choices::ROAR,
13310 Choice {
13311 move_id: Choices::ROAR,
13312 priority: -6,
13313 move_type: PokemonType::NORMAL,
13314 flags: Flags {
13315 drag: true,
13316 reflectable: true,
13317 sound: true,
13318 ..Default::default()
13319 },
13320 ..Default::default()
13321 },
13322 );
13323 moves.insert(
13324 Choices::ROAROFTIME,
13325 Choice {
13326 move_id: Choices::ROAROFTIME,
13327 accuracy: 90.0,
13328 base_power: 150.0,
13329 category: MoveCategory::Special,
13330 move_type: PokemonType::DRAGON,
13331 flags: Flags {
13332 protect: true,
13333 recharge: true,
13334 ..Default::default()
13335 },
13336 ..Default::default()
13337 },
13338 );
13339 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13340 moves.insert(
13341 Choices::ROCKBLAST,
13342 Choice {
13343 move_id: Choices::ROCKBLAST,
13344 accuracy: 80.0,
13345 base_power: 25.0,
13346 category: MoveCategory::Physical,
13347 move_type: PokemonType::ROCK,
13348 flags: Flags {
13349 bullet: true,
13350 protect: true,
13351 ..Default::default()
13352 },
13353 ..Default::default()
13354 },
13355 );
13356 } else {
13357 moves.insert(
13358 Choices::ROCKBLAST,
13359 Choice {
13360 move_id: Choices::ROCKBLAST,
13361 accuracy: 90.0,
13362 base_power: 25.0,
13363 category: MoveCategory::Physical,
13364 move_type: PokemonType::ROCK,
13365 flags: Flags {
13366 bullet: true,
13367 protect: true,
13368 ..Default::default()
13369 },
13370 ..Default::default()
13371 },
13372 );
13373 }
13374 moves.insert(
13375 Choices::ROCKCLIMB,
13376 Choice {
13377 move_id: Choices::ROCKCLIMB,
13378 accuracy: 85.0,
13379 base_power: 90.0,
13380 category: MoveCategory::Physical,
13381 move_type: PokemonType::NORMAL,
13382 flags: Flags {
13383 contact: true,
13384 protect: true,
13385 ..Default::default()
13386 },
13387 secondaries: Some(vec![Secondary {
13388 chance: 20.0,
13389 target: MoveTarget::Opponent,
13390 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
13391 }]),
13392 ..Default::default()
13393 },
13394 );
13395 moves.insert(
13396 Choices::ROCKPOLISH,
13397 Choice {
13398 move_id: Choices::ROCKPOLISH,
13399 target: MoveTarget::User,
13400 move_type: PokemonType::ROCK,
13401 flags: Flags {
13402 ..Default::default()
13403 },
13404 boost: Some(Boost {
13405 target: MoveTarget::User,
13406 boosts: StatBoosts {
13407 attack: 0,
13408 defense: 0,
13409 special_attack: 0,
13410 special_defense: 0,
13411 speed: 2,
13412 accuracy: 0,
13413 },
13414 }),
13415 ..Default::default()
13416 },
13417 );
13418 if cfg!(feature = "gen1") {
13419 moves.insert(
13420 Choices::ROCKSLIDE,
13421 Choice {
13422 move_id: Choices::ROCKSLIDE,
13423 accuracy: 90.0,
13424 base_power: 75.0,
13425 category: MoveCategory::Physical,
13426 move_type: PokemonType::ROCK,
13427 flags: Flags {
13428 protect: true,
13429 ..Default::default()
13430 },
13431 ..Default::default()
13432 },
13433 );
13434 } else {
13435 moves.insert(
13436 Choices::ROCKSLIDE,
13437 Choice {
13438 move_id: Choices::ROCKSLIDE,
13439 accuracy: 90.0,
13440 base_power: 75.0,
13441 category: MoveCategory::Physical,
13442 move_type: PokemonType::ROCK,
13443 flags: Flags {
13444 protect: true,
13445 ..Default::default()
13446 },
13447 secondaries: Some(vec![Secondary {
13448 chance: 30.0,
13449 target: MoveTarget::Opponent,
13450 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
13451 }]),
13452 ..Default::default()
13453 },
13454 );
13455 }
13456 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
13457 moves.insert(
13458 Choices::ROCKSMASH,
13459 Choice {
13460 move_id: Choices::ROCKSMASH,
13461 base_power: 20.0,
13462 category: MoveCategory::Physical,
13463 move_type: PokemonType::FIGHTING,
13464 flags: Flags {
13465 contact: true,
13466 protect: true,
13467 ..Default::default()
13468 },
13469 secondaries: Some(vec![Secondary {
13470 chance: 50.0,
13471 target: MoveTarget::Opponent,
13472 effect: Effect::Boost(StatBoosts {
13473 attack: 0,
13474 defense: -1,
13475 special_attack: 0,
13476 special_defense: 0,
13477 speed: 0,
13478 accuracy: 0,
13479 }),
13480 }]),
13481 ..Default::default()
13482 },
13483 );
13484 } else {
13485 moves.insert(
13486 Choices::ROCKSMASH,
13487 Choice {
13488 move_id: Choices::ROCKSMASH,
13489 base_power: 40.0,
13490 category: MoveCategory::Physical,
13491 move_type: PokemonType::FIGHTING,
13492 flags: Flags {
13493 contact: true,
13494 protect: true,
13495 ..Default::default()
13496 },
13497 secondaries: Some(vec![Secondary {
13498 chance: 50.0,
13499 target: MoveTarget::Opponent,
13500 effect: Effect::Boost(StatBoosts {
13501 attack: 0,
13502 defense: -1,
13503 special_attack: 0,
13504 special_defense: 0,
13505 speed: 0,
13506 accuracy: 0,
13507 }),
13508 }]),
13509 ..Default::default()
13510 },
13511 );
13512 }
13513 if cfg!(feature = "gen1") {
13514 moves.insert(
13515 Choices::ROCKTHROW,
13516 Choice {
13517 move_id: Choices::ROCKTHROW,
13518 accuracy: 65.0,
13519 base_power: 50.0,
13520 category: MoveCategory::Physical,
13521 move_type: PokemonType::ROCK,
13522 flags: Flags {
13523 protect: true,
13524 ..Default::default()
13525 },
13526 ..Default::default()
13527 },
13528 );
13529 } else {
13530 moves.insert(
13531 Choices::ROCKTHROW,
13532 Choice {
13533 move_id: Choices::ROCKTHROW,
13534 accuracy: 90.0,
13535 base_power: 50.0,
13536 category: MoveCategory::Physical,
13537 move_type: PokemonType::ROCK,
13538 flags: Flags {
13539 protect: true,
13540 ..Default::default()
13541 },
13542 ..Default::default()
13543 },
13544 );
13545 }
13546 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
13547 moves.insert(
13548 Choices::ROCKTOMB,
13549 Choice {
13550 move_id: Choices::ROCKTOMB,
13551 accuracy: 80.0,
13552 base_power: 50.0,
13553 category: MoveCategory::Physical,
13554 move_type: PokemonType::ROCK,
13555 flags: Flags {
13556 protect: true,
13557 ..Default::default()
13558 },
13559 secondaries: Some(vec![Secondary {
13560 chance: 100.0,
13561 target: MoveTarget::Opponent,
13562 effect: Effect::Boost(StatBoosts {
13563 attack: 0,
13564 defense: 0,
13565 special_attack: 0,
13566 special_defense: 0,
13567 speed: -1,
13568 accuracy: 0,
13569 }),
13570 }]),
13571 ..Default::default()
13572 },
13573 );
13574 } else {
13575 moves.insert(
13576 Choices::ROCKTOMB,
13577 Choice {
13578 move_id: Choices::ROCKTOMB,
13579 accuracy: 95.0,
13580 base_power: 60.0,
13581 category: MoveCategory::Physical,
13582 move_type: PokemonType::ROCK,
13583 flags: Flags {
13584 protect: true,
13585 ..Default::default()
13586 },
13587 secondaries: Some(vec![Secondary {
13588 chance: 100.0,
13589 target: MoveTarget::Opponent,
13590 effect: Effect::Boost(StatBoosts {
13591 attack: 0,
13592 defense: 0,
13593 special_attack: 0,
13594 special_defense: 0,
13595 speed: -1,
13596 accuracy: 0,
13597 }),
13598 }]),
13599 ..Default::default()
13600 },
13601 );
13602 }
13603 moves.insert(
13604 Choices::ROCKWRECKER,
13605 Choice {
13606 move_id: Choices::ROCKWRECKER,
13607 accuracy: 90.0,
13608 base_power: 150.0,
13609 category: MoveCategory::Physical,
13610 move_type: PokemonType::ROCK,
13611 flags: Flags {
13612 bullet: true,
13613 protect: true,
13614 recharge: true,
13615 ..Default::default()
13616 },
13617 ..Default::default()
13618 },
13619 );
13620 moves.insert(
13621 Choices::ROLEPLAY,
13622 Choice {
13623 move_id: Choices::ROLEPLAY,
13624 move_type: PokemonType::PSYCHIC,
13625 flags: Flags {
13626 ..Default::default()
13627 },
13628 ..Default::default()
13629 },
13630 );
13631 moves.insert(
13632 Choices::ROLLINGKICK,
13633 Choice {
13634 move_id: Choices::ROLLINGKICK,
13635 accuracy: 85.0,
13636 base_power: 60.0,
13637 category: MoveCategory::Physical,
13638 move_type: PokemonType::FIGHTING,
13639 flags: Flags {
13640 contact: true,
13641 protect: true,
13642 ..Default::default()
13643 },
13644 secondaries: Some(vec![Secondary {
13645 chance: 30.0,
13646 target: MoveTarget::Opponent,
13647 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
13648 }]),
13649 ..Default::default()
13650 },
13651 );
13652 moves.insert(
13653 Choices::ROLLOUT,
13654 Choice {
13655 move_id: Choices::ROLLOUT,
13656 accuracy: 90.0,
13657 base_power: 30.0,
13658 category: MoveCategory::Physical,
13659 move_type: PokemonType::ROCK,
13660 flags: Flags {
13661 contact: true,
13662 protect: true,
13663 ..Default::default()
13664 },
13665 ..Default::default()
13666 },
13667 );
13668 moves.insert(
13669 Choices::ROOST,
13670 Choice {
13671 move_id: Choices::ROOST,
13672 target: MoveTarget::User,
13673 move_type: PokemonType::FLYING,
13674 flags: Flags {
13675 heal: true,
13676 ..Default::default()
13677 },
13678 volatile_status: Some(VolatileStatus {
13679 target: MoveTarget::User,
13680 volatile_status: PokemonVolatileStatus::ROOST,
13681 }),
13682 heal: Some(Heal {
13683 target: MoveTarget::User,
13684 amount: 0.5,
13685 }),
13686 ..Default::default()
13687 },
13688 );
13689 moves.insert(
13690 Choices::ROTOTILLER,
13691 Choice {
13692 move_id: Choices::ROTOTILLER,
13693 move_type: PokemonType::GROUND,
13694 flags: Flags {
13695 ..Default::default()
13696 },
13697 ..Default::default()
13698 },
13699 );
13700 moves.insert(
13701 Choices::ROUND,
13702 Choice {
13703 move_id: Choices::ROUND,
13704 base_power: 60.0,
13705 category: MoveCategory::Special,
13706 move_type: PokemonType::NORMAL,
13707 flags: Flags {
13708 protect: true,
13709 sound: true,
13710 ..Default::default()
13711 },
13712 ..Default::default()
13713 },
13714 );
13715 moves.insert(
13716 Choices::RUINATION,
13717 Choice {
13718 move_id: Choices::RUINATION,
13719 accuracy: 90.0,
13720 category: MoveCategory::Special,
13721 move_type: PokemonType::DARK,
13722 flags: Flags {
13723 protect: true,
13724 ..Default::default()
13725 },
13726 ..Default::default()
13727 },
13728 );
13729 moves.insert(
13730 Choices::SACREDFIRE,
13731 Choice {
13732 move_id: Choices::SACREDFIRE,
13733 accuracy: 95.0,
13734 base_power: 100.0,
13735 category: MoveCategory::Physical,
13736 move_type: PokemonType::FIRE,
13737 flags: Flags {
13738 protect: true,
13739 ..Default::default()
13740 },
13741 secondaries: Some(vec![Secondary {
13742 chance: 50.0,
13743 target: MoveTarget::Opponent,
13744 effect: Effect::Status(PokemonStatus::BURN),
13745 }]),
13746 ..Default::default()
13747 },
13748 );
13749 moves.insert(
13750 Choices::SACREDSWORD,
13751 Choice {
13752 move_id: Choices::SACREDSWORD,
13753 base_power: 90.0,
13754 category: MoveCategory::Physical,
13755 move_type: PokemonType::FIGHTING,
13756 flags: Flags {
13757 contact: true,
13758 protect: true,
13759 slicing: true,
13760 ..Default::default()
13761 },
13762 ..Default::default()
13763 },
13764 );
13765 moves.insert(
13766 Choices::SAFEGUARD,
13767 Choice {
13768 move_id: Choices::SAFEGUARD,
13769 target: MoveTarget::User,
13770 move_type: PokemonType::NORMAL,
13771 flags: Flags {
13772 ..Default::default()
13773 },
13774 side_condition: Some(SideCondition {
13775 target: MoveTarget::User,
13776 condition: PokemonSideCondition::Safeguard,
13777 }),
13778 ..Default::default()
13779 },
13780 );
13781 moves.insert(
13782 Choices::SALTCURE,
13783 Choice {
13784 move_id: Choices::SALTCURE,
13785 base_power: 40.0,
13786 category: MoveCategory::Physical,
13787 move_type: PokemonType::ROCK,
13788 flags: Flags {
13789 protect: true,
13790 ..Default::default()
13791 },
13792 volatile_status: Some(VolatileStatus {
13793 target: MoveTarget::Opponent,
13794 volatile_status: PokemonVolatileStatus::SALTCURE,
13795 }),
13796 ..Default::default()
13797 },
13798 );
13799 if cfg!(feature = "gen1") {
13800 moves.insert(
13801 Choices::SANDATTACK,
13802 Choice {
13803 move_id: Choices::SANDATTACK,
13804 move_type: PokemonType::NORMAL,
13805 flags: Flags {
13806 protect: true,
13807 reflectable: true,
13808 ..Default::default()
13809 },
13810 boost: Some(Boost {
13811 target: MoveTarget::Opponent,
13812 boosts: StatBoosts {
13813 attack: 0,
13814 defense: 0,
13815 special_attack: 0,
13816 special_defense: 0,
13817 speed: 0,
13818 accuracy: -1,
13819 },
13820 }),
13821 ..Default::default()
13822 },
13823 );
13824 } else {
13825 moves.insert(
13826 Choices::SANDATTACK,
13827 Choice {
13828 move_id: Choices::SANDATTACK,
13829 move_type: PokemonType::GROUND,
13830 flags: Flags {
13831 protect: true,
13832 reflectable: true,
13833 ..Default::default()
13834 },
13835 boost: Some(Boost {
13836 target: MoveTarget::Opponent,
13837 boosts: StatBoosts {
13838 attack: 0,
13839 defense: 0,
13840 special_attack: 0,
13841 special_defense: 0,
13842 speed: 0,
13843 accuracy: -1,
13844 },
13845 }),
13846 ..Default::default()
13847 },
13848 );
13849 }
13850 moves.insert(
13851 Choices::SANDSEARSTORM,
13852 Choice {
13853 move_id: Choices::SANDSEARSTORM,
13854 accuracy: 80.0,
13855 base_power: 100.0,
13856 category: MoveCategory::Special,
13857 move_type: PokemonType::GROUND,
13858 flags: Flags {
13859 protect: true,
13860 wind: true,
13861 ..Default::default()
13862 },
13863 secondaries: Some(vec![Secondary {
13864 chance: 20.0,
13865 target: MoveTarget::Opponent,
13866 effect: Effect::Status(PokemonStatus::BURN),
13867 }]),
13868 ..Default::default()
13869 },
13870 );
13871 moves.insert(
13872 Choices::SANDSTORM,
13873 Choice {
13874 move_id: Choices::SANDSTORM,
13875 move_type: PokemonType::ROCK,
13876 flags: Flags {
13877 wind: true,
13878 ..Default::default()
13879 },
13880 ..Default::default()
13881 },
13882 );
13883 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13884 moves.insert(
13885 Choices::SANDTOMB,
13886 Choice {
13887 move_id: Choices::SANDTOMB,
13888 accuracy: 70.0,
13889 base_power: 15.0,
13890 category: MoveCategory::Physical,
13891 move_type: PokemonType::GROUND,
13892 flags: Flags {
13893 protect: true,
13894 ..Default::default()
13895 },
13896 volatile_status: Some(VolatileStatus {
13897 target: MoveTarget::Opponent,
13898 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
13899 }),
13900 ..Default::default()
13901 },
13902 );
13903 } else {
13904 moves.insert(
13905 Choices::SANDTOMB,
13906 Choice {
13907 move_id: Choices::SANDTOMB,
13908 accuracy: 85.0,
13909 base_power: 35.0,
13910 category: MoveCategory::Physical,
13911 move_type: PokemonType::GROUND,
13912 flags: Flags {
13913 protect: true,
13914 ..Default::default()
13915 },
13916 volatile_status: Some(VolatileStatus {
13917 target: MoveTarget::Opponent,
13918 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
13919 }),
13920 ..Default::default()
13921 },
13922 );
13923 }
13924 moves.insert(
13925 Choices::SAPPYSEED,
13926 Choice {
13927 move_id: Choices::SAPPYSEED,
13928 accuracy: 90.0,
13929 base_power: 100.0,
13930 category: MoveCategory::Physical,
13931 move_type: PokemonType::GRASS,
13932 flags: Flags {
13933 protect: true,
13934 reflectable: true,
13935 ..Default::default()
13936 },
13937 ..Default::default()
13938 },
13939 );
13940 moves.insert(
13941 Choices::SCALD,
13942 Choice {
13943 move_id: Choices::SCALD,
13944 base_power: 80.0,
13945 category: MoveCategory::Special,
13946 move_type: PokemonType::WATER,
13947 flags: Flags {
13948 protect: true,
13949 ..Default::default()
13950 },
13951 secondaries: Some(vec![Secondary {
13952 chance: 30.0,
13953 target: MoveTarget::Opponent,
13954 effect: Effect::Status(PokemonStatus::BURN),
13955 }]),
13956 ..Default::default()
13957 },
13958 );
13959 moves.insert(
13960 Choices::SCALESHOT,
13961 Choice {
13962 move_id: Choices::SCALESHOT,
13963 accuracy: 90.0,
13964 base_power: 25.0,
13965 category: MoveCategory::Physical,
13966 move_type: PokemonType::DRAGON,
13967 flags: Flags {
13968 protect: true,
13969 ..Default::default()
13970 },
13971 boost: Some(Boost {
13972 target: MoveTarget::User,
13973 boosts: StatBoosts {
13974 attack: 0,
13975 defense: -1,
13976 special_attack: 0,
13977 special_defense: 0,
13978 speed: 1,
13979 accuracy: 0,
13980 },
13981 }),
13982 ..Default::default()
13983 },
13984 );
13985 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13986 moves.insert(
13987 Choices::SCARYFACE,
13988 Choice {
13989 move_id: Choices::SCARYFACE,
13990 accuracy: 90.0,
13991 move_type: PokemonType::NORMAL,
13992 flags: Flags {
13993 protect: true,
13994 reflectable: true,
13995 ..Default::default()
13996 },
13997 boost: Some(Boost {
13998 target: MoveTarget::Opponent,
13999 boosts: StatBoosts {
14000 attack: 0,
14001 defense: 0,
14002 special_attack: 0,
14003 special_defense: 0,
14004 speed: -2,
14005 accuracy: 0,
14006 },
14007 }),
14008 ..Default::default()
14009 },
14010 );
14011 } else {
14012 moves.insert(
14013 Choices::SCARYFACE,
14014 Choice {
14015 move_id: Choices::SCARYFACE,
14016 move_type: PokemonType::NORMAL,
14017 flags: Flags {
14018 protect: true,
14019 reflectable: true,
14020 ..Default::default()
14021 },
14022 boost: Some(Boost {
14023 target: MoveTarget::Opponent,
14024 boosts: StatBoosts {
14025 attack: 0,
14026 defense: 0,
14027 special_attack: 0,
14028 special_defense: 0,
14029 speed: -2,
14030 accuracy: 0,
14031 },
14032 }),
14033 ..Default::default()
14034 },
14035 );
14036 }
14037 moves.insert(
14038 Choices::SCORCHINGSANDS,
14039 Choice {
14040 move_id: Choices::SCORCHINGSANDS,
14041 base_power: 70.0,
14042 category: MoveCategory::Special,
14043 move_type: PokemonType::GROUND,
14044 flags: Flags {
14045 protect: true,
14046 ..Default::default()
14047 },
14048 secondaries: Some(vec![Secondary {
14049 chance: 30.0,
14050 target: MoveTarget::Opponent,
14051 effect: Effect::Status(PokemonStatus::BURN),
14052 }]),
14053 ..Default::default()
14054 },
14055 );
14056 moves.insert(
14057 Choices::SCRATCH,
14058 Choice {
14059 move_id: Choices::SCRATCH,
14060 base_power: 40.0,
14061 category: MoveCategory::Physical,
14062 move_type: PokemonType::NORMAL,
14063 flags: Flags {
14064 contact: true,
14065 protect: true,
14066 ..Default::default()
14067 },
14068 ..Default::default()
14069 },
14070 );
14071 moves.insert(
14072 Choices::SCREECH,
14073 Choice {
14074 move_id: Choices::SCREECH,
14075 accuracy: 85.0,
14076 move_type: PokemonType::NORMAL,
14077 flags: Flags {
14078 protect: true,
14079 reflectable: true,
14080 sound: true,
14081 ..Default::default()
14082 },
14083 boost: Some(Boost {
14084 target: MoveTarget::Opponent,
14085 boosts: StatBoosts {
14086 attack: 0,
14087 defense: -2,
14088 special_attack: 0,
14089 special_defense: 0,
14090 speed: 0,
14091 accuracy: 0,
14092 },
14093 }),
14094 ..Default::default()
14095 },
14096 );
14097 moves.insert(
14098 Choices::SEARINGSHOT,
14099 Choice {
14100 move_id: Choices::SEARINGSHOT,
14101 base_power: 100.0,
14102 category: MoveCategory::Special,
14103 move_type: PokemonType::FIRE,
14104 flags: Flags {
14105 bullet: true,
14106 protect: true,
14107 ..Default::default()
14108 },
14109 secondaries: Some(vec![Secondary {
14110 chance: 30.0,
14111 target: MoveTarget::Opponent,
14112 effect: Effect::Status(PokemonStatus::BURN),
14113 }]),
14114 ..Default::default()
14115 },
14116 );
14117 moves.insert(
14118 Choices::SECRETPOWER,
14119 Choice {
14120 move_id: Choices::SECRETPOWER,
14121 base_power: 70.0,
14122 category: MoveCategory::Physical,
14123 move_type: PokemonType::NORMAL,
14124 flags: Flags {
14125 protect: true,
14126 ..Default::default()
14127 },
14128 secondaries: Some(vec![Secondary {
14129 chance: 30.0,
14130 target: MoveTarget::Opponent,
14131 effect: Effect::Status(PokemonStatus::PARALYZE),
14132 }]),
14133 ..Default::default()
14134 },
14135 );
14136 moves.insert(
14137 Choices::SECRETSWORD,
14138 Choice {
14139 move_id: Choices::SECRETSWORD,
14140 base_power: 85.0,
14141 category: MoveCategory::Special,
14142 move_type: PokemonType::FIGHTING,
14143 flags: Flags {
14144 protect: true,
14145 slicing: true,
14146 ..Default::default()
14147 },
14148 ..Default::default()
14149 },
14150 );
14151 moves.insert(
14152 Choices::SEEDBOMB,
14153 Choice {
14154 move_id: Choices::SEEDBOMB,
14155 base_power: 80.0,
14156 category: MoveCategory::Physical,
14157 move_type: PokemonType::GRASS,
14158 flags: Flags {
14159 bullet: true,
14160 protect: true,
14161 ..Default::default()
14162 },
14163 ..Default::default()
14164 },
14165 );
14166 moves.insert(
14167 Choices::SEEDFLARE,
14168 Choice {
14169 move_id: Choices::SEEDFLARE,
14170 accuracy: 85.0,
14171 base_power: 120.0,
14172 category: MoveCategory::Special,
14173 move_type: PokemonType::GRASS,
14174 flags: Flags {
14175 protect: true,
14176 ..Default::default()
14177 },
14178 secondaries: Some(vec![Secondary {
14179 chance: 40.0,
14180 target: MoveTarget::Opponent,
14181 effect: Effect::Boost(StatBoosts {
14182 attack: 0,
14183 defense: 0,
14184 special_attack: 0,
14185 special_defense: -2,
14186 speed: 0,
14187 accuracy: 0,
14188 }),
14189 }]),
14190 ..Default::default()
14191 },
14192 );
14193 moves.insert(
14194 Choices::SEISMICTOSS,
14195 Choice {
14196 move_id: Choices::SEISMICTOSS,
14197 category: MoveCategory::Physical,
14198 move_type: PokemonType::FIGHTING,
14199 flags: Flags {
14200 contact: true,
14201 protect: true,
14202 ..Default::default()
14203 },
14204 ..Default::default()
14205 },
14206 );
14207 if cfg!(feature = "gen1") {
14208 moves.insert(
14209 Choices::SELFDESTRUCT,
14210 Choice {
14211 move_id: Choices::SELFDESTRUCT,
14212 base_power: 130.0,
14213 category: MoveCategory::Physical,
14214 move_type: PokemonType::NORMAL,
14215 flags: Flags {
14216 protect: true,
14217 ..Default::default()
14218 },
14219 ..Default::default()
14220 },
14221 );
14222 } else {
14223 moves.insert(
14224 Choices::SELFDESTRUCT,
14225 Choice {
14226 move_id: Choices::SELFDESTRUCT,
14227 base_power: 200.0,
14228 category: MoveCategory::Physical,
14229 move_type: PokemonType::NORMAL,
14230 flags: Flags {
14231 protect: true,
14232 ..Default::default()
14233 },
14234 ..Default::default()
14235 },
14236 );
14237 }
14238 moves.insert(
14239 Choices::SHADOWBALL,
14240 Choice {
14241 move_id: Choices::SHADOWBALL,
14242 base_power: 80.0,
14243 category: MoveCategory::Special,
14244 move_type: PokemonType::GHOST,
14245 flags: Flags {
14246 bullet: true,
14247 protect: true,
14248 ..Default::default()
14249 },
14250 secondaries: Some(vec![Secondary {
14251 chance: 20.0,
14252 target: MoveTarget::Opponent,
14253 effect: Effect::Boost(StatBoosts {
14254 attack: 0,
14255 defense: 0,
14256 special_attack: 0,
14257 special_defense: -1,
14258 speed: 0,
14259 accuracy: 0,
14260 }),
14261 }]),
14262 ..Default::default()
14263 },
14264 );
14265 moves.insert(
14266 Choices::SHADOWBONE,
14267 Choice {
14268 move_id: Choices::SHADOWBONE,
14269 base_power: 85.0,
14270 category: MoveCategory::Physical,
14271 move_type: PokemonType::GHOST,
14272 flags: Flags {
14273 protect: true,
14274 ..Default::default()
14275 },
14276 secondaries: Some(vec![Secondary {
14277 chance: 20.0,
14278 target: MoveTarget::Opponent,
14279 effect: Effect::Boost(StatBoosts {
14280 attack: 0,
14281 defense: -1,
14282 special_attack: 0,
14283 special_defense: 0,
14284 speed: 0,
14285 accuracy: 0,
14286 }),
14287 }]),
14288 ..Default::default()
14289 },
14290 );
14291 moves.insert(
14292 Choices::SHADOWCLAW,
14293 Choice {
14294 move_id: Choices::SHADOWCLAW,
14295 base_power: 70.0,
14296 category: MoveCategory::Physical,
14297 move_type: PokemonType::GHOST,
14298 flags: Flags {
14299 contact: true,
14300 protect: true,
14301 ..Default::default()
14302 },
14303 ..Default::default()
14304 },
14305 );
14306 moves.insert(
14307 Choices::SHADOWFORCE,
14308 Choice {
14309 move_id: Choices::SHADOWFORCE,
14310 base_power: 120.0,
14311 category: MoveCategory::Physical,
14312 move_type: PokemonType::GHOST,
14313 flags: Flags {
14314 charge: true,
14315 contact: true,
14316 ..Default::default()
14317 },
14318 ..Default::default()
14319 },
14320 );
14321 moves.insert(
14322 Choices::SHADOWPUNCH,
14323 Choice {
14324 move_id: Choices::SHADOWPUNCH,
14325 base_power: 60.0,
14326 category: MoveCategory::Physical,
14327 move_type: PokemonType::GHOST,
14328 flags: Flags {
14329 contact: true,
14330 protect: true,
14331 punch: true,
14332 ..Default::default()
14333 },
14334 ..Default::default()
14335 },
14336 );
14337 moves.insert(
14338 Choices::SHADOWSNEAK,
14339 Choice {
14340 move_id: Choices::SHADOWSNEAK,
14341 base_power: 40.0,
14342 category: MoveCategory::Physical,
14343 priority: 1,
14344 move_type: PokemonType::GHOST,
14345 flags: Flags {
14346 contact: true,
14347 protect: true,
14348 ..Default::default()
14349 },
14350 ..Default::default()
14351 },
14352 );
14353 moves.insert(
14354 Choices::SHADOWSTRIKE,
14355 Choice {
14356 move_id: Choices::SHADOWSTRIKE,
14357 accuracy: 95.0,
14358 base_power: 80.0,
14359 category: MoveCategory::Physical,
14360 move_type: PokemonType::GHOST,
14361 flags: Flags {
14362 contact: true,
14363 protect: true,
14364 ..Default::default()
14365 },
14366 secondaries: Some(vec![Secondary {
14367 chance: 50.0,
14368 target: MoveTarget::Opponent,
14369 effect: Effect::Boost(StatBoosts {
14370 attack: 0,
14371 defense: -1,
14372 special_attack: 0,
14373 special_defense: 0,
14374 speed: 0,
14375 accuracy: 0,
14376 }),
14377 }]),
14378 ..Default::default()
14379 },
14380 );
14381 moves.insert(
14382 Choices::SHARPEN,
14383 Choice {
14384 move_id: Choices::SHARPEN,
14385 target: MoveTarget::User,
14386 move_type: PokemonType::NORMAL,
14387 flags: Flags {
14388 ..Default::default()
14389 },
14390 boost: Some(Boost {
14391 target: MoveTarget::User,
14392 boosts: StatBoosts {
14393 attack: 1,
14394 defense: 0,
14395 special_attack: 0,
14396 special_defense: 0,
14397 speed: 0,
14398 accuracy: 0,
14399 },
14400 }),
14401 ..Default::default()
14402 },
14403 );
14404 moves.insert(
14405 Choices::SHEDTAIL,
14406 Choice {
14407 move_id: Choices::SHEDTAIL,
14408 target: MoveTarget::User,
14409 move_type: PokemonType::NORMAL,
14410 flags: Flags {
14411 pivot: false, ..Default::default()
14413 },
14414 volatile_status: None, ..Default::default()
14416 },
14417 );
14418 moves.insert(
14419 Choices::SHEERCOLD,
14420 Choice {
14421 move_id: Choices::SHEERCOLD,
14422 accuracy: 30.0,
14423 category: MoveCategory::Special,
14424 move_type: PokemonType::ICE,
14425 flags: Flags {
14426 protect: true,
14427 ..Default::default()
14428 },
14429 ..Default::default()
14430 },
14431 );
14432 moves.insert(
14433 Choices::SHELLSIDEARM,
14434 Choice {
14435 move_id: Choices::SHELLSIDEARM,
14436 base_power: 90.0,
14437 category: MoveCategory::Special,
14438 move_type: PokemonType::POISON,
14439 flags: Flags {
14440 protect: true,
14441 ..Default::default()
14442 },
14443 secondaries: Some(vec![Secondary {
14444 chance: 20.0,
14445 target: MoveTarget::Opponent,
14446 effect: Effect::Status(PokemonStatus::POISON),
14447 }]),
14448 ..Default::default()
14449 },
14450 );
14451 moves.insert(
14452 Choices::SHELLSMASH,
14453 Choice {
14454 move_id: Choices::SHELLSMASH,
14455 target: MoveTarget::User,
14456 move_type: PokemonType::NORMAL,
14457 flags: Flags {
14458 ..Default::default()
14459 },
14460 boost: Some(Boost {
14461 target: MoveTarget::User,
14462 boosts: StatBoosts {
14463 attack: 2,
14464 defense: -1,
14465 special_attack: 2,
14466 special_defense: -1,
14467 speed: 2,
14468 accuracy: 0,
14469 },
14470 }),
14471 ..Default::default()
14472 },
14473 );
14474 moves.insert(
14475 Choices::SHELLTRAP,
14476 Choice {
14477 move_id: Choices::SHELLTRAP,
14478 base_power: 150.0,
14479 category: MoveCategory::Special,
14480 priority: -3,
14481 move_type: PokemonType::FIRE,
14482 flags: Flags {
14483 protect: true,
14484 ..Default::default()
14485 },
14486 ..Default::default()
14487 },
14488 );
14489 moves.insert(
14490 Choices::SHELTER,
14491 Choice {
14492 move_id: Choices::SHELTER,
14493 target: MoveTarget::User,
14494 move_type: PokemonType::STEEL,
14495 flags: Flags {
14496 ..Default::default()
14497 },
14498 boost: Some(Boost {
14499 target: MoveTarget::User,
14500 boosts: StatBoosts {
14501 attack: 0,
14502 defense: 2,
14503 special_attack: 0,
14504 special_defense: 0,
14505 speed: 0,
14506 accuracy: 0,
14507 },
14508 }),
14509 ..Default::default()
14510 },
14511 );
14512 moves.insert(
14513 Choices::SHIFTGEAR,
14514 Choice {
14515 move_id: Choices::SHIFTGEAR,
14516 target: MoveTarget::User,
14517 move_type: PokemonType::STEEL,
14518 flags: Flags {
14519 ..Default::default()
14520 },
14521 boost: Some(Boost {
14522 target: MoveTarget::User,
14523 boosts: StatBoosts {
14524 attack: 1,
14525 defense: 0,
14526 special_attack: 0,
14527 special_defense: 0,
14528 speed: 2,
14529 accuracy: 0,
14530 },
14531 }),
14532 ..Default::default()
14533 },
14534 );
14535 moves.insert(
14536 Choices::SHOCKWAVE,
14537 Choice {
14538 move_id: Choices::SHOCKWAVE,
14539 base_power: 60.0,
14540 category: MoveCategory::Special,
14541 move_type: PokemonType::ELECTRIC,
14542 flags: Flags {
14543 protect: true,
14544 ..Default::default()
14545 },
14546 ..Default::default()
14547 },
14548 );
14549 moves.insert(
14550 Choices::SHOREUP,
14551 Choice {
14552 move_id: Choices::SHOREUP,
14553 target: MoveTarget::User,
14554 move_type: PokemonType::GROUND,
14555 flags: Flags {
14556 heal: true,
14557 ..Default::default()
14558 },
14559 heal: Some(Heal {
14560 target: MoveTarget::User,
14561 amount: 0.5,
14562 }),
14563 ..Default::default()
14564 },
14565 );
14566 moves.insert(
14567 Choices::SIGNALBEAM,
14568 Choice {
14569 move_id: Choices::SIGNALBEAM,
14570 base_power: 75.0,
14571 category: MoveCategory::Special,
14572 move_type: PokemonType::BUG,
14573 flags: Flags {
14574 protect: true,
14575 ..Default::default()
14576 },
14577 secondaries: Some(vec![Secondary {
14578 chance: 10.0,
14579 target: MoveTarget::Opponent,
14580 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
14581 }]),
14582 ..Default::default()
14583 },
14584 );
14585 moves.insert(
14586 Choices::SILKTRAP,
14587 Choice {
14588 move_id: Choices::SILKTRAP,
14589 priority: 4,
14590 target: MoveTarget::User,
14591 move_type: PokemonType::BUG,
14592 flags: Flags {
14593 ..Default::default()
14594 },
14595 volatile_status: Some(VolatileStatus {
14596 target: MoveTarget::User,
14597 volatile_status: PokemonVolatileStatus::SILKTRAP,
14598 }),
14599 ..Default::default()
14600 },
14601 );
14602 moves.insert(
14603 Choices::SILVERWIND,
14604 Choice {
14605 move_id: Choices::SILVERWIND,
14606 base_power: 60.0,
14607 category: MoveCategory::Special,
14608 move_type: PokemonType::BUG,
14609 flags: Flags {
14610 protect: true,
14611 ..Default::default()
14612 },
14613 secondaries: Some(vec![Secondary {
14614 chance: 10.0,
14615 target: MoveTarget::User,
14616 effect: Effect::Boost(StatBoosts {
14617 attack: 1,
14618 defense: 1,
14619 special_attack: 1,
14620 special_defense: 1,
14621 speed: 1,
14622 accuracy: 0,
14623 }),
14624 }]),
14625 ..Default::default()
14626 },
14627 );
14628 moves.insert(
14629 Choices::SIMPLEBEAM,
14630 Choice {
14631 move_id: Choices::SIMPLEBEAM,
14632 move_type: PokemonType::NORMAL,
14633 flags: Flags {
14634 protect: true,
14635 reflectable: true,
14636 ..Default::default()
14637 },
14638 ..Default::default()
14639 },
14640 );
14641 moves.insert(
14642 Choices::SING,
14643 Choice {
14644 move_id: Choices::SING,
14645 accuracy: 55.0,
14646 status: Some(Status {
14647 target: MoveTarget::Opponent,
14648 status: PokemonStatus::SLEEP,
14649 }),
14650 move_type: PokemonType::NORMAL,
14651 flags: Flags {
14652 protect: true,
14653 reflectable: true,
14654 sound: true,
14655 ..Default::default()
14656 },
14657 ..Default::default()
14658 },
14659 );
14660 moves.insert(
14661 Choices::SIZZLYSLIDE,
14662 Choice {
14663 move_id: Choices::SIZZLYSLIDE,
14664 base_power: 60.0,
14665 category: MoveCategory::Physical,
14666 move_type: PokemonType::FIRE,
14667 flags: Flags {
14668 contact: true,
14669 protect: true,
14670 ..Default::default()
14671 },
14672 secondaries: Some(vec![Secondary {
14673 chance: 100.0,
14674 target: MoveTarget::Opponent,
14675 effect: Effect::Status(PokemonStatus::BURN),
14676 }]),
14677 ..Default::default()
14678 },
14679 );
14680 moves.insert(
14681 Choices::SKETCH,
14682 Choice {
14683 move_id: Choices::SKETCH,
14684 move_type: PokemonType::NORMAL,
14685 flags: Flags {
14686 ..Default::default()
14687 },
14688 ..Default::default()
14689 },
14690 );
14691 moves.insert(
14692 Choices::SKILLSWAP,
14693 Choice {
14694 move_id: Choices::SKILLSWAP,
14695 move_type: PokemonType::PSYCHIC,
14696 flags: Flags {
14697 protect: true,
14698 ..Default::default()
14699 },
14700 ..Default::default()
14701 },
14702 );
14703 moves.insert(
14704 Choices::SKITTERSMACK,
14705 Choice {
14706 move_id: Choices::SKITTERSMACK,
14707 accuracy: 90.0,
14708 base_power: 70.0,
14709 category: MoveCategory::Physical,
14710 move_type: PokemonType::BUG,
14711 flags: Flags {
14712 contact: true,
14713 protect: true,
14714 ..Default::default()
14715 },
14716 secondaries: Some(vec![Secondary {
14717 chance: 100.0,
14718 target: MoveTarget::Opponent,
14719 effect: Effect::Boost(StatBoosts {
14720 attack: 0,
14721 defense: 0,
14722 special_attack: -1,
14723 special_defense: 0,
14724 speed: 0,
14725 accuracy: 0,
14726 }),
14727 }]),
14728 ..Default::default()
14729 },
14730 );
14731 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
14732 moves.insert(
14733 Choices::SKULLBASH,
14734 Choice {
14735 move_id: Choices::SKULLBASH,
14736 base_power: 100.0,
14737 category: MoveCategory::Physical,
14738 move_type: PokemonType::NORMAL,
14739 flags: Flags {
14740 charge: true,
14741 contact: true,
14742 protect: true,
14743 ..Default::default()
14744 },
14745 ..Default::default()
14746 },
14747 );
14748 } else {
14749 moves.insert(
14750 Choices::SKULLBASH,
14751 Choice {
14752 move_id: Choices::SKULLBASH,
14753 base_power: 130.0,
14754 category: MoveCategory::Physical,
14755 move_type: PokemonType::NORMAL,
14756 flags: Flags {
14757 charge: true,
14758 contact: true,
14759 protect: true,
14760 ..Default::default()
14761 },
14762 ..Default::default()
14763 },
14764 );
14765 }
14766 moves.insert(
14767 Choices::SKYATTACK,
14768 Choice {
14769 move_id: Choices::SKYATTACK,
14770 accuracy: 90.0,
14771 base_power: 140.0,
14772 category: MoveCategory::Physical,
14773 move_type: PokemonType::FLYING,
14774 flags: Flags {
14775 charge: true,
14776 protect: true,
14777 ..Default::default()
14778 },
14779 secondaries: Some(vec![Secondary {
14780 chance: 30.0,
14781 target: MoveTarget::Opponent,
14782 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
14783 }]),
14784 ..Default::default()
14785 },
14786 );
14787 moves.insert(
14788 Choices::SKYDROP,
14789 Choice {
14790 move_id: Choices::SKYDROP,
14791 base_power: 60.0,
14792 category: MoveCategory::Physical,
14793 move_type: PokemonType::FLYING,
14794 flags: Flags {
14795 charge: true,
14796 contact: true,
14797 protect: true,
14798 ..Default::default()
14799 },
14800 ..Default::default()
14801 },
14802 );
14803 moves.insert(
14804 Choices::SKYUPPERCUT,
14805 Choice {
14806 move_id: Choices::SKYUPPERCUT,
14807 accuracy: 90.0,
14808 base_power: 85.0,
14809 category: MoveCategory::Physical,
14810 move_type: PokemonType::FIGHTING,
14811 flags: Flags {
14812 contact: true,
14813 protect: true,
14814 punch: true,
14815 ..Default::default()
14816 },
14817 ..Default::default()
14818 },
14819 );
14820 moves.insert(
14821 Choices::SLACKOFF,
14822 Choice {
14823 move_id: Choices::SLACKOFF,
14824 target: MoveTarget::User,
14825 move_type: PokemonType::NORMAL,
14826 flags: Flags {
14827 heal: true,
14828 ..Default::default()
14829 },
14830 heal: Some(Heal {
14831 target: MoveTarget::User,
14832 amount: 0.5,
14833 }),
14834 ..Default::default()
14835 },
14836 );
14837 moves.insert(
14838 Choices::SLAM,
14839 Choice {
14840 move_id: Choices::SLAM,
14841 accuracy: 75.0,
14842 base_power: 80.0,
14843 category: MoveCategory::Physical,
14844 move_type: PokemonType::NORMAL,
14845 flags: Flags {
14846 contact: true,
14847 protect: true,
14848 ..Default::default()
14849 },
14850 ..Default::default()
14851 },
14852 );
14853 moves.insert(
14854 Choices::SLASH,
14855 Choice {
14856 move_id: Choices::SLASH,
14857 base_power: 70.0,
14858 category: MoveCategory::Physical,
14859 move_type: PokemonType::NORMAL,
14860 flags: Flags {
14861 contact: true,
14862 protect: true,
14863 slicing: true,
14864 ..Default::default()
14865 },
14866 ..Default::default()
14867 },
14868 );
14869 moves.insert(
14870 Choices::SLEEPPOWDER,
14871 Choice {
14872 move_id: Choices::SLEEPPOWDER,
14873 accuracy: 75.0,
14874 status: Some(Status {
14875 target: MoveTarget::Opponent,
14876 status: PokemonStatus::SLEEP,
14877 }),
14878 move_type: PokemonType::GRASS,
14879 flags: Flags {
14880 powder: true,
14881 protect: true,
14882 reflectable: true,
14883 ..Default::default()
14884 },
14885 ..Default::default()
14886 },
14887 );
14888 moves.insert(
14889 Choices::SLEEPTALK,
14890 Choice {
14891 move_id: Choices::SLEEPTALK,
14892 target: MoveTarget::User,
14893 move_type: PokemonType::NORMAL,
14894 flags: Flags {
14895 ..Default::default()
14896 },
14897 ..Default::default()
14898 },
14899 );
14900 if cfg!(feature = "gen1") {
14901 moves.insert(
14902 Choices::SLUDGE,
14903 Choice {
14904 move_id: Choices::SLUDGE,
14905 base_power: 65.0,
14906 category: MoveCategory::Special,
14907 move_type: PokemonType::POISON,
14908 flags: Flags {
14909 protect: true,
14910 ..Default::default()
14911 },
14912 secondaries: Some(vec![Secondary {
14913 chance: 40.0,
14914 target: MoveTarget::Opponent,
14915 effect: Effect::Status(PokemonStatus::POISON),
14916 }]),
14917 ..Default::default()
14918 },
14919 );
14920 } else {
14921 moves.insert(
14922 Choices::SLUDGE,
14923 Choice {
14924 move_id: Choices::SLUDGE,
14925 base_power: 65.0,
14926 category: MoveCategory::Special,
14927 move_type: PokemonType::POISON,
14928 flags: Flags {
14929 protect: true,
14930 ..Default::default()
14931 },
14932 secondaries: Some(vec![Secondary {
14933 chance: 30.0,
14934 target: MoveTarget::Opponent,
14935 effect: Effect::Status(PokemonStatus::POISON),
14936 }]),
14937 ..Default::default()
14938 },
14939 );
14940 }
14941 moves.insert(
14942 Choices::SLUDGEBOMB,
14943 Choice {
14944 move_id: Choices::SLUDGEBOMB,
14945 base_power: 90.0,
14946 category: MoveCategory::Special,
14947 move_type: PokemonType::POISON,
14948 flags: Flags {
14949 bullet: true,
14950 protect: true,
14951 ..Default::default()
14952 },
14953 secondaries: Some(vec![Secondary {
14954 chance: 30.0,
14955 target: MoveTarget::Opponent,
14956 effect: Effect::Status(PokemonStatus::POISON),
14957 }]),
14958 ..Default::default()
14959 },
14960 );
14961 moves.insert(
14962 Choices::SLUDGEWAVE,
14963 Choice {
14964 move_id: Choices::SLUDGEWAVE,
14965 base_power: 95.0,
14966 category: MoveCategory::Special,
14967 move_type: PokemonType::POISON,
14968 flags: Flags {
14969 protect: true,
14970 ..Default::default()
14971 },
14972 secondaries: Some(vec![Secondary {
14973 chance: 10.0,
14974 target: MoveTarget::Opponent,
14975 effect: Effect::Status(PokemonStatus::POISON),
14976 }]),
14977 ..Default::default()
14978 },
14979 );
14980 moves.insert(
14981 Choices::SMACKDOWN,
14982 Choice {
14983 move_id: Choices::SMACKDOWN,
14984 base_power: 50.0,
14985 category: MoveCategory::Physical,
14986 move_type: PokemonType::ROCK,
14987 flags: Flags {
14988 protect: true,
14989 ..Default::default()
14990 },
14991 volatile_status: Some(VolatileStatus {
14992 target: MoveTarget::Opponent,
14993 volatile_status: PokemonVolatileStatus::SMACKDOWN,
14994 }),
14995 ..Default::default()
14996 },
14997 );
14998 moves.insert(
14999 Choices::SMARTSTRIKE,
15000 Choice {
15001 move_id: Choices::SMARTSTRIKE,
15002 base_power: 70.0,
15003 category: MoveCategory::Physical,
15004 move_type: PokemonType::STEEL,
15005 flags: Flags {
15006 contact: true,
15007 protect: true,
15008 ..Default::default()
15009 },
15010 ..Default::default()
15011 },
15012 );
15013 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15014 moves.insert(
15015 Choices::SMELLINGSALTS,
15016 Choice {
15017 move_id: Choices::SMELLINGSALTS,
15018 base_power: 60.0,
15019 category: MoveCategory::Physical,
15020 move_type: PokemonType::NORMAL,
15021 flags: Flags {
15022 contact: true,
15023 protect: true,
15024 ..Default::default()
15025 },
15026 ..Default::default()
15027 },
15028 );
15029 } else {
15030 moves.insert(
15031 Choices::SMELLINGSALTS,
15032 Choice {
15033 move_id: Choices::SMELLINGSALTS,
15034 base_power: 70.0,
15035 category: MoveCategory::Physical,
15036 move_type: PokemonType::NORMAL,
15037 flags: Flags {
15038 contact: true,
15039 protect: true,
15040 ..Default::default()
15041 },
15042 ..Default::default()
15043 },
15044 );
15045 }
15046 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15047 moves.insert(
15048 Choices::SMOG,
15049 Choice {
15050 move_id: Choices::SMOG,
15051 accuracy: 70.0,
15052 base_power: 20.0,
15053 category: MoveCategory::Special,
15054 move_type: PokemonType::POISON,
15055 flags: Flags {
15056 protect: true,
15057 ..Default::default()
15058 },
15059 secondaries: Some(vec![Secondary {
15060 chance: 40.0,
15061 target: MoveTarget::Opponent,
15062 effect: Effect::Status(PokemonStatus::POISON),
15063 }]),
15064 ..Default::default()
15065 },
15066 );
15067 } else {
15068 moves.insert(
15069 Choices::SMOG,
15070 Choice {
15071 move_id: Choices::SMOG,
15072 accuracy: 70.0,
15073 base_power: 30.0,
15074 category: MoveCategory::Special,
15075 move_type: PokemonType::POISON,
15076 flags: Flags {
15077 protect: true,
15078 ..Default::default()
15079 },
15080 secondaries: Some(vec![Secondary {
15081 chance: 40.0,
15082 target: MoveTarget::Opponent,
15083 effect: Effect::Status(PokemonStatus::POISON),
15084 }]),
15085 ..Default::default()
15086 },
15087 );
15088 }
15089 moves.insert(
15090 Choices::SMOKESCREEN,
15091 Choice {
15092 move_id: Choices::SMOKESCREEN,
15093 move_type: PokemonType::NORMAL,
15094 flags: Flags {
15095 protect: true,
15096 reflectable: true,
15097 ..Default::default()
15098 },
15099 boost: Some(Boost {
15100 target: MoveTarget::Opponent,
15101 boosts: StatBoosts {
15102 attack: 0,
15103 defense: 0,
15104 special_attack: 0,
15105 special_defense: 0,
15106 speed: 0,
15107 accuracy: -1,
15108 },
15109 }),
15110 ..Default::default()
15111 },
15112 );
15113 moves.insert(
15114 Choices::SNAPTRAP,
15115 Choice {
15116 move_id: Choices::SNAPTRAP,
15117 base_power: 35.0,
15118 category: MoveCategory::Physical,
15119 move_type: PokemonType::GRASS,
15120 flags: Flags {
15121 contact: true,
15122 protect: true,
15123 ..Default::default()
15124 },
15125 volatile_status: Some(VolatileStatus {
15126 target: MoveTarget::Opponent,
15127 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
15128 }),
15129 ..Default::default()
15130 },
15131 );
15132 moves.insert(
15133 Choices::SNARL,
15134 Choice {
15135 move_id: Choices::SNARL,
15136 accuracy: 95.0,
15137 base_power: 55.0,
15138 category: MoveCategory::Special,
15139 move_type: PokemonType::DARK,
15140 flags: Flags {
15141 protect: true,
15142 sound: true,
15143 ..Default::default()
15144 },
15145 secondaries: Some(vec![Secondary {
15146 chance: 100.0,
15147 target: MoveTarget::Opponent,
15148 effect: Effect::Boost(StatBoosts {
15149 attack: 0,
15150 defense: 0,
15151 special_attack: -1,
15152 special_defense: 0,
15153 speed: 0,
15154 accuracy: 0,
15155 }),
15156 }]),
15157 ..Default::default()
15158 },
15159 );
15160 moves.insert(
15161 Choices::SNATCH,
15162 Choice {
15163 move_id: Choices::SNATCH,
15164 priority: 4,
15165 target: MoveTarget::User,
15166 move_type: PokemonType::DARK,
15167 flags: Flags {
15168 ..Default::default()
15169 },
15170 volatile_status: Some(VolatileStatus {
15171 target: MoveTarget::User,
15172 volatile_status: PokemonVolatileStatus::SNATCH,
15173 }),
15174 ..Default::default()
15175 },
15176 );
15177 moves.insert(
15178 Choices::SNIPESHOT,
15179 Choice {
15180 move_id: Choices::SNIPESHOT,
15181 base_power: 80.0,
15182 category: MoveCategory::Special,
15183 move_type: PokemonType::WATER,
15184 flags: Flags {
15185 protect: true,
15186 ..Default::default()
15187 },
15188 ..Default::default()
15189 },
15190 );
15191 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15192 moves.insert(
15193 Choices::SNORE,
15194 Choice {
15195 move_id: Choices::SNORE,
15196 base_power: 40.0,
15197 category: MoveCategory::Special,
15198 move_type: PokemonType::NORMAL,
15199 flags: Flags {
15200 protect: true,
15201 sound: true,
15202 ..Default::default()
15203 },
15204 secondaries: Some(vec![Secondary {
15205 chance: 30.0,
15206 target: MoveTarget::Opponent,
15207 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15208 }]),
15209 ..Default::default()
15210 },
15211 );
15212 } else {
15213 moves.insert(
15214 Choices::SNORE,
15215 Choice {
15216 move_id: Choices::SNORE,
15217 base_power: 50.0,
15218 category: MoveCategory::Special,
15219 move_type: PokemonType::NORMAL,
15220 flags: Flags {
15221 protect: true,
15222 sound: true,
15223 ..Default::default()
15224 },
15225 secondaries: Some(vec![Secondary {
15226 chance: 30.0,
15227 target: MoveTarget::Opponent,
15228 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15229 }]),
15230 ..Default::default()
15231 },
15232 );
15233 }
15234 moves.insert(
15235 Choices::SNOWSCAPE,
15236 Choice {
15237 move_id: Choices::SNOWSCAPE,
15238 move_type: PokemonType::ICE,
15239 flags: Flags {
15240 ..Default::default()
15241 },
15242 ..Default::default()
15243 },
15244 );
15245 moves.insert(
15246 Choices::SOAK,
15247 Choice {
15248 move_id: Choices::SOAK,
15249 move_type: PokemonType::WATER,
15250 flags: Flags {
15251 protect: true,
15252 reflectable: true,
15253 ..Default::default()
15254 },
15255 ..Default::default()
15256 },
15257 );
15258 moves.insert(
15259 Choices::SOFTBOILED,
15260 Choice {
15261 move_id: Choices::SOFTBOILED,
15262 target: MoveTarget::User,
15263 move_type: PokemonType::NORMAL,
15264 flags: Flags {
15265 heal: true,
15266 ..Default::default()
15267 },
15268 heal: Some(Heal {
15269 target: MoveTarget::User,
15270 amount: 0.5,
15271 }),
15272 ..Default::default()
15273 },
15274 );
15275 moves.insert(
15276 Choices::SOLARBEAM,
15277 Choice {
15278 move_id: Choices::SOLARBEAM,
15279 base_power: 120.0,
15280 category: MoveCategory::Special,
15281 move_type: PokemonType::GRASS,
15282 flags: Flags {
15283 charge: true,
15284 protect: true,
15285 ..Default::default()
15286 },
15287 ..Default::default()
15288 },
15289 );
15290 moves.insert(
15291 Choices::SOLARBLADE,
15292 Choice {
15293 move_id: Choices::SOLARBLADE,
15294 base_power: 125.0,
15295 category: MoveCategory::Physical,
15296 move_type: PokemonType::GRASS,
15297 flags: Flags {
15298 charge: true,
15299 contact: true,
15300 protect: true,
15301 slicing: true,
15302 ..Default::default()
15303 },
15304 ..Default::default()
15305 },
15306 );
15307 moves.insert(
15308 Choices::SONICBOOM,
15309 Choice {
15310 move_id: Choices::SONICBOOM,
15311 accuracy: 90.0,
15312 category: MoveCategory::Special,
15313 move_type: PokemonType::NORMAL,
15314 flags: Flags {
15315 protect: true,
15316 ..Default::default()
15317 },
15318 ..Default::default()
15319 },
15320 );
15321 moves.insert(
15322 Choices::SPACIALREND,
15323 Choice {
15324 move_id: Choices::SPACIALREND,
15325 accuracy: 95.0,
15326 base_power: 100.0,
15327 category: MoveCategory::Special,
15328 move_type: PokemonType::DRAGON,
15329 flags: Flags {
15330 protect: true,
15331 ..Default::default()
15332 },
15333 ..Default::default()
15334 },
15335 );
15336 moves.insert(
15337 Choices::SPARK,
15338 Choice {
15339 move_id: Choices::SPARK,
15340 base_power: 65.0,
15341 category: MoveCategory::Physical,
15342 move_type: PokemonType::ELECTRIC,
15343 flags: Flags {
15344 contact: true,
15345 protect: true,
15346 ..Default::default()
15347 },
15348 secondaries: Some(vec![Secondary {
15349 chance: 30.0,
15350 target: MoveTarget::Opponent,
15351 effect: Effect::Status(PokemonStatus::PARALYZE),
15352 }]),
15353 ..Default::default()
15354 },
15355 );
15356 moves.insert(
15357 Choices::SPARKLINGARIA,
15358 Choice {
15359 move_id: Choices::SPARKLINGARIA,
15360 base_power: 90.0,
15361 category: MoveCategory::Special,
15362 move_type: PokemonType::WATER,
15363 flags: Flags {
15364 protect: true,
15365 sound: true,
15366 ..Default::default()
15367 },
15368 secondaries: Some(vec![Secondary {
15369 chance: 100.0,
15370 target: MoveTarget::Opponent,
15371 effect: Effect::VolatileStatus(PokemonVolatileStatus::SPARKLINGARIA),
15372 }]),
15373 ..Default::default()
15374 },
15375 );
15376 moves.insert(
15377 Choices::SPARKLYSWIRL,
15378 Choice {
15379 move_id: Choices::SPARKLYSWIRL,
15380 accuracy: 85.0,
15381 base_power: 120.0,
15382 category: MoveCategory::Special,
15383 move_type: PokemonType::FAIRY,
15384 flags: Flags {
15385 protect: true,
15386 ..Default::default()
15387 },
15388 ..Default::default()
15389 },
15390 );
15391 moves.insert(
15392 Choices::SPECTRALTHIEF,
15393 Choice {
15394 move_id: Choices::SPECTRALTHIEF,
15395 base_power: 90.0,
15396 category: MoveCategory::Physical,
15397 move_type: PokemonType::GHOST,
15398 flags: Flags {
15399 contact: true,
15400 protect: true,
15401 ..Default::default()
15402 },
15403 ..Default::default()
15404 },
15405 );
15406 moves.insert(
15407 Choices::SPEEDSWAP,
15408 Choice {
15409 move_id: Choices::SPEEDSWAP,
15410 move_type: PokemonType::PSYCHIC,
15411 flags: Flags {
15412 protect: true,
15413 ..Default::default()
15414 },
15415 ..Default::default()
15416 },
15417 );
15418 moves.insert(
15419 Choices::SPICYEXTRACT,
15420 Choice {
15421 move_id: Choices::SPICYEXTRACT,
15422 move_type: PokemonType::GRASS,
15423 flags: Flags {
15424 protect: true,
15425 reflectable: true,
15426 ..Default::default()
15427 },
15428 boost: Some(Boost {
15429 target: MoveTarget::Opponent,
15430 boosts: StatBoosts {
15431 attack: 2,
15432 defense: -2,
15433 special_attack: 0,
15434 special_defense: 0,
15435 speed: 0,
15436 accuracy: 0,
15437 },
15438 }),
15439 ..Default::default()
15440 },
15441 );
15442 moves.insert(
15443 Choices::SPIDERWEB,
15444 Choice {
15445 move_id: Choices::SPIDERWEB,
15446 move_type: PokemonType::BUG,
15447 flags: Flags {
15448 protect: true,
15449 reflectable: true,
15450 ..Default::default()
15451 },
15452 ..Default::default()
15453 },
15454 );
15455 moves.insert(
15456 Choices::SPIKECANNON,
15457 Choice {
15458 move_id: Choices::SPIKECANNON,
15459 base_power: 20.0,
15460 category: MoveCategory::Physical,
15461 move_type: PokemonType::NORMAL,
15462 flags: Flags {
15463 protect: true,
15464 ..Default::default()
15465 },
15466 ..Default::default()
15467 },
15468 );
15469 moves.insert(
15470 Choices::SPIKES,
15471 Choice {
15472 move_id: Choices::SPIKES,
15473 move_type: PokemonType::GROUND,
15474 flags: Flags {
15475 reflectable: true,
15476 ..Default::default()
15477 },
15478 side_condition: Some(SideCondition {
15479 target: MoveTarget::Opponent,
15480 condition: PokemonSideCondition::Spikes,
15481 }),
15482 ..Default::default()
15483 },
15484 );
15485 moves.insert(
15486 Choices::SPIKYSHIELD,
15487 Choice {
15488 move_id: Choices::SPIKYSHIELD,
15489 priority: 4,
15490 target: MoveTarget::User,
15491 move_type: PokemonType::GRASS,
15492 flags: Flags {
15493 ..Default::default()
15494 },
15495 volatile_status: Some(VolatileStatus {
15496 target: MoveTarget::User,
15497 volatile_status: PokemonVolatileStatus::SPIKYSHIELD,
15498 }),
15499 ..Default::default()
15500 },
15501 );
15502 moves.insert(
15503 Choices::SPINOUT,
15504 Choice {
15505 move_id: Choices::SPINOUT,
15506 base_power: 100.0,
15507 category: MoveCategory::Physical,
15508 move_type: PokemonType::STEEL,
15509 flags: Flags {
15510 contact: true,
15511 protect: true,
15512 ..Default::default()
15513 },
15514 boost: Some(Boost {
15515 target: MoveTarget::User,
15516 boosts: StatBoosts {
15517 attack: 0,
15518 defense: 0,
15519 special_attack: 0,
15520 special_defense: 0,
15521 speed: -2,
15522 accuracy: 0,
15523 },
15524 }),
15525 ..Default::default()
15526 },
15527 );
15528 moves.insert(
15529 Choices::SPIRITBREAK,
15530 Choice {
15531 move_id: Choices::SPIRITBREAK,
15532 base_power: 75.0,
15533 category: MoveCategory::Physical,
15534 move_type: PokemonType::FAIRY,
15535 flags: Flags {
15536 contact: true,
15537 protect: true,
15538 ..Default::default()
15539 },
15540 secondaries: Some(vec![Secondary {
15541 chance: 100.0,
15542 target: MoveTarget::Opponent,
15543 effect: Effect::Boost(StatBoosts {
15544 attack: 0,
15545 defense: 0,
15546 special_attack: -1,
15547 special_defense: 0,
15548 speed: 0,
15549 accuracy: 0,
15550 }),
15551 }]),
15552 ..Default::default()
15553 },
15554 );
15555 moves.insert(
15556 Choices::SPIRITSHACKLE,
15557 Choice {
15558 move_id: Choices::SPIRITSHACKLE,
15559 base_power: 80.0,
15560 category: MoveCategory::Physical,
15561 move_type: PokemonType::GHOST,
15562 flags: Flags {
15563 protect: true,
15564 ..Default::default()
15565 },
15566 ..Default::default()
15567 },
15568 );
15569 moves.insert(
15570 Choices::SPITE,
15571 Choice {
15572 move_id: Choices::SPITE,
15573 move_type: PokemonType::GHOST,
15574 flags: Flags {
15575 protect: true,
15576 reflectable: true,
15577 ..Default::default()
15578 },
15579 ..Default::default()
15580 },
15581 );
15582 moves.insert(
15583 Choices::SPITUP,
15584 Choice {
15585 move_id: Choices::SPITUP,
15586 category: MoveCategory::Special,
15587 move_type: PokemonType::NORMAL,
15588 flags: Flags {
15589 protect: true,
15590 ..Default::default()
15591 },
15592 ..Default::default()
15593 },
15594 );
15595 moves.insert(
15596 Choices::SPLASH,
15597 Choice {
15598 move_id: Choices::SPLASH,
15599 target: MoveTarget::User,
15600 move_type: PokemonType::NORMAL,
15601 flags: Flags {
15602 ..Default::default()
15603 },
15604 ..Default::default()
15605 },
15606 );
15607 moves.insert(
15608 Choices::SPLISHYSPLASH,
15609 Choice {
15610 move_id: Choices::SPLISHYSPLASH,
15611 base_power: 90.0,
15612 category: MoveCategory::Special,
15613 move_type: PokemonType::WATER,
15614 flags: Flags {
15615 protect: true,
15616 ..Default::default()
15617 },
15618 secondaries: Some(vec![Secondary {
15619 chance: 30.0,
15620 target: MoveTarget::Opponent,
15621 effect: Effect::Status(PokemonStatus::PARALYZE),
15622 }]),
15623 ..Default::default()
15624 },
15625 );
15626 moves.insert(
15627 Choices::SPORE,
15628 Choice {
15629 move_id: Choices::SPORE,
15630 status: Some(Status {
15631 target: MoveTarget::Opponent,
15632 status: PokemonStatus::SLEEP,
15633 }),
15634 move_type: PokemonType::GRASS,
15635 flags: Flags {
15636 powder: true,
15637 protect: true,
15638 reflectable: true,
15639 ..Default::default()
15640 },
15641 ..Default::default()
15642 },
15643 );
15644 moves.insert(
15645 Choices::SPOTLIGHT,
15646 Choice {
15647 move_id: Choices::SPOTLIGHT,
15648 priority: 3,
15649 move_type: PokemonType::NORMAL,
15650 flags: Flags {
15651 protect: true,
15652 reflectable: true,
15653 ..Default::default()
15654 },
15655 volatile_status: Some(VolatileStatus {
15656 target: MoveTarget::Opponent,
15657 volatile_status: PokemonVolatileStatus::SPOTLIGHT,
15658 }),
15659 ..Default::default()
15660 },
15661 );
15662 moves.insert(
15663 Choices::SPRINGTIDESTORM,
15664 Choice {
15665 move_id: Choices::SPRINGTIDESTORM,
15666 accuracy: 80.0,
15667 base_power: 100.0,
15668 category: MoveCategory::Special,
15669 move_type: PokemonType::FAIRY,
15670 flags: Flags {
15671 protect: true,
15672 wind: true,
15673 ..Default::default()
15674 },
15675 secondaries: Some(vec![Secondary {
15676 chance: 30.0,
15677 target: MoveTarget::Opponent,
15678 effect: Effect::Boost(StatBoosts {
15679 attack: -1,
15680 defense: 0,
15681 special_attack: 0,
15682 special_defense: 0,
15683 speed: 0,
15684 accuracy: 0,
15685 }),
15686 }]),
15687 ..Default::default()
15688 },
15689 );
15690 moves.insert(
15691 Choices::STEALTHROCK,
15692 Choice {
15693 move_id: Choices::STEALTHROCK,
15694 move_type: PokemonType::ROCK,
15695 flags: Flags {
15696 reflectable: true,
15697 ..Default::default()
15698 },
15699 side_condition: Some(SideCondition {
15700 target: MoveTarget::Opponent,
15701 condition: PokemonSideCondition::Stealthrock,
15702 }),
15703 ..Default::default()
15704 },
15705 );
15706 moves.insert(
15707 Choices::STEAMERUPTION,
15708 Choice {
15709 move_id: Choices::STEAMERUPTION,
15710 accuracy: 95.0,
15711 base_power: 110.0,
15712 category: MoveCategory::Special,
15713 move_type: PokemonType::WATER,
15714 flags: Flags {
15715 protect: true,
15716 ..Default::default()
15717 },
15718 secondaries: Some(vec![Secondary {
15719 chance: 30.0,
15720 target: MoveTarget::Opponent,
15721 effect: Effect::Status(PokemonStatus::BURN),
15722 }]),
15723 ..Default::default()
15724 },
15725 );
15726 moves.insert(
15727 Choices::STEAMROLLER,
15728 Choice {
15729 move_id: Choices::STEAMROLLER,
15730 base_power: 65.0,
15731 category: MoveCategory::Physical,
15732 move_type: PokemonType::BUG,
15733 flags: Flags {
15734 contact: true,
15735 protect: true,
15736 ..Default::default()
15737 },
15738 secondaries: Some(vec![Secondary {
15739 chance: 30.0,
15740 target: MoveTarget::Opponent,
15741 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15742 }]),
15743 ..Default::default()
15744 },
15745 );
15746 moves.insert(
15747 Choices::STEELBEAM,
15748 Choice {
15749 move_id: Choices::STEELBEAM,
15750 accuracy: 95.0,
15751 base_power: 140.0,
15752 category: MoveCategory::Special,
15753 move_type: PokemonType::STEEL,
15754 flags: Flags {
15755 protect: true,
15756 ..Default::default()
15757 },
15758 heal: Some(Heal {
15759 target: MoveTarget::User,
15760 amount: -0.5,
15761 }),
15762 ..Default::default()
15763 },
15764 );
15765 moves.insert(
15766 Choices::STEELROLLER,
15767 Choice {
15768 move_id: Choices::STEELROLLER,
15769 base_power: 130.0,
15770 category: MoveCategory::Physical,
15771 move_type: PokemonType::STEEL,
15772 flags: Flags {
15773 contact: true,
15774 protect: true,
15775 ..Default::default()
15776 },
15777 ..Default::default()
15778 },
15779 );
15780 moves.insert(
15781 Choices::STEELWING,
15782 Choice {
15783 move_id: Choices::STEELWING,
15784 accuracy: 90.0,
15785 base_power: 70.0,
15786 category: MoveCategory::Physical,
15787 move_type: PokemonType::STEEL,
15788 flags: Flags {
15789 contact: true,
15790 protect: true,
15791 ..Default::default()
15792 },
15793 secondaries: Some(vec![Secondary {
15794 chance: 10.0,
15795 target: MoveTarget::User,
15796 effect: Effect::Boost(StatBoosts {
15797 attack: 0,
15798 defense: 1,
15799 special_attack: 0,
15800 special_defense: 0,
15801 speed: 0,
15802 accuracy: 0,
15803 }),
15804 }]),
15805 ..Default::default()
15806 },
15807 );
15808 moves.insert(
15809 Choices::STICKYWEB,
15810 Choice {
15811 move_id: Choices::STICKYWEB,
15812 move_type: PokemonType::BUG,
15813 flags: Flags {
15814 reflectable: true,
15815 ..Default::default()
15816 },
15817 side_condition: Some(SideCondition {
15818 target: MoveTarget::Opponent,
15819 condition: PokemonSideCondition::StickyWeb,
15820 }),
15821 ..Default::default()
15822 },
15823 );
15824 moves.insert(
15825 Choices::STOCKPILE,
15826 Choice {
15827 move_id: Choices::STOCKPILE,
15828 target: MoveTarget::User,
15829 move_type: PokemonType::NORMAL,
15830 flags: Flags {
15831 ..Default::default()
15832 },
15833 volatile_status: Some(VolatileStatus {
15834 target: MoveTarget::User,
15835 volatile_status: PokemonVolatileStatus::STOCKPILE,
15836 }),
15837 ..Default::default()
15838 },
15839 );
15840 moves.insert(
15841 Choices::STOMP,
15842 Choice {
15843 move_id: Choices::STOMP,
15844 base_power: 65.0,
15845 category: MoveCategory::Physical,
15846 move_type: PokemonType::NORMAL,
15847 flags: Flags {
15848 contact: true,
15849 protect: true,
15850 ..Default::default()
15851 },
15852 secondaries: Some(vec![Secondary {
15853 chance: 30.0,
15854 target: MoveTarget::Opponent,
15855 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15856 }]),
15857 ..Default::default()
15858 },
15859 );
15860 moves.insert(
15861 Choices::STOMPINGTANTRUM,
15862 Choice {
15863 move_id: Choices::STOMPINGTANTRUM,
15864 base_power: 75.0,
15865 category: MoveCategory::Physical,
15866 move_type: PokemonType::GROUND,
15867 flags: Flags {
15868 contact: true,
15869 protect: true,
15870 ..Default::default()
15871 },
15872 ..Default::default()
15873 },
15874 );
15875 moves.insert(
15876 Choices::STONEAXE,
15877 Choice {
15878 move_id: Choices::STONEAXE,
15879 accuracy: 90.0,
15880 base_power: 65.0,
15881 category: MoveCategory::Physical,
15882 move_type: PokemonType::ROCK,
15883 flags: Flags {
15884 contact: true,
15885 protect: true,
15886 slicing: true,
15887 ..Default::default()
15888 },
15889 side_condition: Some(SideCondition {
15890 target: MoveTarget::Opponent,
15891 condition: PokemonSideCondition::Stealthrock,
15892 }),
15893 ..Default::default()
15894 },
15895 );
15896 moves.insert(
15897 Choices::STONEEDGE,
15898 Choice {
15899 move_id: Choices::STONEEDGE,
15900 accuracy: 80.0,
15901 base_power: 100.0,
15902 category: MoveCategory::Physical,
15903 move_type: PokemonType::ROCK,
15904 flags: Flags {
15905 protect: true,
15906 ..Default::default()
15907 },
15908 ..Default::default()
15909 },
15910 );
15911 moves.insert(
15912 Choices::STOREDPOWER,
15913 Choice {
15914 move_id: Choices::STOREDPOWER,
15915 base_power: 20.0,
15916 category: MoveCategory::Special,
15917 move_type: PokemonType::PSYCHIC,
15918 flags: Flags {
15919 protect: true,
15920 ..Default::default()
15921 },
15922 ..Default::default()
15923 },
15924 );
15925 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15926 moves.insert(
15927 Choices::STORMTHROW,
15928 Choice {
15929 move_id: Choices::STORMTHROW,
15930 base_power: 40.0,
15931 category: MoveCategory::Physical,
15932 move_type: PokemonType::FIGHTING,
15933 flags: Flags {
15934 contact: true,
15935 protect: true,
15936 ..Default::default()
15937 },
15938 ..Default::default()
15939 },
15940 );
15941 } else {
15942 moves.insert(
15943 Choices::STORMTHROW,
15944 Choice {
15945 move_id: Choices::STORMTHROW,
15946 base_power: 60.0,
15947 category: MoveCategory::Physical,
15948 move_type: PokemonType::FIGHTING,
15949 flags: Flags {
15950 contact: true,
15951 protect: true,
15952 ..Default::default()
15953 },
15954 ..Default::default()
15955 },
15956 );
15957 }
15958 moves.insert(
15959 Choices::STRANGESTEAM,
15960 Choice {
15961 move_id: Choices::STRANGESTEAM,
15962 accuracy: 95.0,
15963 base_power: 90.0,
15964 category: MoveCategory::Special,
15965 move_type: PokemonType::FAIRY,
15966 flags: Flags {
15967 protect: true,
15968 ..Default::default()
15969 },
15970 secondaries: Some(vec![Secondary {
15971 chance: 20.0,
15972 target: MoveTarget::Opponent,
15973 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
15974 }]),
15975 ..Default::default()
15976 },
15977 );
15978 moves.insert(
15979 Choices::STRENGTH,
15980 Choice {
15981 move_id: Choices::STRENGTH,
15982 base_power: 80.0,
15983 category: MoveCategory::Physical,
15984 move_type: PokemonType::NORMAL,
15985 flags: Flags {
15986 contact: true,
15987 protect: true,
15988 ..Default::default()
15989 },
15990 ..Default::default()
15991 },
15992 );
15993 moves.insert(
15994 Choices::STRENGTHSAP,
15995 Choice {
15996 move_id: Choices::STRENGTHSAP,
15997 move_type: PokemonType::GRASS,
15998 flags: Flags {
15999 heal: true,
16000 protect: true,
16001 reflectable: true,
16002 ..Default::default()
16003 },
16004 ..Default::default()
16005 },
16006 );
16007 moves.insert(
16008 Choices::STRINGSHOT,
16009 Choice {
16010 move_id: Choices::STRINGSHOT,
16011 accuracy: 95.0,
16012 move_type: PokemonType::BUG,
16013 flags: Flags {
16014 protect: true,
16015 reflectable: true,
16016 ..Default::default()
16017 },
16018 boost: Some(Boost {
16019 target: MoveTarget::Opponent,
16020 boosts: StatBoosts {
16021 attack: 0,
16022 defense: 0,
16023 special_attack: 0,
16024 special_defense: 0,
16025 speed: -2,
16026 accuracy: 0,
16027 },
16028 }),
16029 ..Default::default()
16030 },
16031 );
16032 moves.insert(
16033 Choices::STRUGGLE,
16034 Choice {
16035 move_id: Choices::STRUGGLE,
16036 base_power: 50.0,
16037 category: MoveCategory::Physical,
16038 move_type: PokemonType::NORMAL,
16039 flags: Flags {
16040 contact: true,
16041 protect: true,
16042 ..Default::default()
16043 },
16044 ..Default::default()
16045 },
16046 );
16047 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16048 moves.insert(
16049 Choices::STRUGGLEBUG,
16050 Choice {
16051 move_id: Choices::STRUGGLEBUG,
16052 base_power: 30.0,
16053 category: MoveCategory::Special,
16054 move_type: PokemonType::BUG,
16055 flags: Flags {
16056 protect: true,
16057 ..Default::default()
16058 },
16059 secondaries: Some(vec![Secondary {
16060 chance: 100.0,
16061 target: MoveTarget::Opponent,
16062 effect: Effect::Boost(StatBoosts {
16063 attack: 0,
16064 defense: 0,
16065 special_attack: -1,
16066 special_defense: 0,
16067 speed: 0,
16068 accuracy: 0,
16069 }),
16070 }]),
16071 ..Default::default()
16072 },
16073 );
16074 } else {
16075 moves.insert(
16076 Choices::STRUGGLEBUG,
16077 Choice {
16078 move_id: Choices::STRUGGLEBUG,
16079 base_power: 50.0,
16080 category: MoveCategory::Special,
16081 move_type: PokemonType::BUG,
16082 flags: Flags {
16083 protect: true,
16084 ..Default::default()
16085 },
16086 secondaries: Some(vec![Secondary {
16087 chance: 100.0,
16088 target: MoveTarget::Opponent,
16089 effect: Effect::Boost(StatBoosts {
16090 attack: 0,
16091 defense: 0,
16092 special_attack: -1,
16093 special_defense: 0,
16094 speed: 0,
16095 accuracy: 0,
16096 }),
16097 }]),
16098 ..Default::default()
16099 },
16100 );
16101 }
16102 moves.insert(
16103 Choices::STUFFCHEEKS,
16104 Choice {
16105 move_id: Choices::STUFFCHEEKS,
16106 target: MoveTarget::User,
16107 move_type: PokemonType::NORMAL,
16108 flags: Flags {
16109 ..Default::default()
16110 },
16111 ..Default::default()
16112 },
16113 );
16114 moves.insert(
16115 Choices::STUNSPORE,
16116 Choice {
16117 move_id: Choices::STUNSPORE,
16118 accuracy: 75.0,
16119 status: Some(Status {
16120 target: MoveTarget::Opponent,
16121 status: PokemonStatus::PARALYZE,
16122 }),
16123 move_type: PokemonType::GRASS,
16124 flags: Flags {
16125 powder: true,
16126 protect: true,
16127 reflectable: true,
16128 ..Default::default()
16129 },
16130 ..Default::default()
16131 },
16132 );
16133 moves.insert(
16134 Choices::SUBMISSION,
16135 Choice {
16136 move_id: Choices::SUBMISSION,
16137 accuracy: 80.0,
16138 base_power: 80.0,
16139 category: MoveCategory::Physical,
16140 move_type: PokemonType::FIGHTING,
16141 flags: Flags {
16142 contact: true,
16143 protect: true,
16144 ..Default::default()
16145 },
16146 recoil: Some(0.25),
16147 ..Default::default()
16148 },
16149 );
16150 moves.insert(
16151 Choices::SUBSTITUTE,
16152 Choice {
16153 move_id: Choices::SUBSTITUTE,
16154 target: MoveTarget::User,
16155 move_type: PokemonType::NORMAL,
16156 flags: Flags {
16157 ..Default::default()
16158 },
16159 volatile_status: Some(VolatileStatus {
16160 target: MoveTarget::User,
16161 volatile_status: PokemonVolatileStatus::SUBSTITUTE,
16162 }),
16163 ..Default::default()
16164 },
16165 );
16166 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
16167 moves.insert(
16168 Choices::SUCKERPUNCH,
16169 Choice {
16170 move_id: Choices::SUCKERPUNCH,
16171 base_power: 80.0,
16172 category: MoveCategory::Physical,
16173 priority: 1,
16174 move_type: PokemonType::DARK,
16175 flags: Flags {
16176 contact: true,
16177 protect: true,
16178 ..Default::default()
16179 },
16180 ..Default::default()
16181 },
16182 );
16183 } else {
16184 moves.insert(
16185 Choices::SUCKERPUNCH,
16186 Choice {
16187 move_id: Choices::SUCKERPUNCH,
16188 base_power: 70.0,
16189 category: MoveCategory::Physical,
16190 priority: 1,
16191 move_type: PokemonType::DARK,
16192 flags: Flags {
16193 contact: true,
16194 protect: true,
16195 ..Default::default()
16196 },
16197 ..Default::default()
16198 },
16199 );
16200 }
16201 moves.insert(
16202 Choices::SUNNYDAY,
16203 Choice {
16204 move_id: Choices::SUNNYDAY,
16205 move_type: PokemonType::FIRE,
16206 flags: Flags {
16207 ..Default::default()
16208 },
16209 ..Default::default()
16210 },
16211 );
16212 moves.insert(
16213 Choices::SUNSTEELSTRIKE,
16214 Choice {
16215 move_id: Choices::SUNSTEELSTRIKE,
16216 base_power: 100.0,
16217 category: MoveCategory::Physical,
16218 move_type: PokemonType::STEEL,
16219 flags: Flags {
16220 contact: true,
16221 protect: true,
16222 ..Default::default()
16223 },
16224 ..Default::default()
16225 },
16226 );
16227 moves.insert(
16228 Choices::SUPERCELLSLAM,
16229 Choice {
16230 accuracy: 95.0,
16231 move_id: Choices::SUPERCELLSLAM,
16232 base_power: 100.0,
16233 category: MoveCategory::Physical,
16234 move_type: PokemonType::ELECTRIC,
16235 flags: Flags {
16236 contact: true,
16237 protect: true,
16238 ..Default::default()
16239 },
16240 crash: Some(0.5),
16241 ..Default::default()
16242 },
16243 );
16244 moves.insert(
16245 Choices::SUPERFANG,
16246 Choice {
16247 move_id: Choices::SUPERFANG,
16248 accuracy: 90.0,
16249 category: MoveCategory::Physical,
16250 move_type: PokemonType::NORMAL,
16251 flags: Flags {
16252 contact: true,
16253 protect: true,
16254 ..Default::default()
16255 },
16256 ..Default::default()
16257 },
16258 );
16259 moves.insert(
16260 Choices::SUPERPOWER,
16261 Choice {
16262 move_id: Choices::SUPERPOWER,
16263 base_power: 120.0,
16264 category: MoveCategory::Physical,
16265 move_type: PokemonType::FIGHTING,
16266 flags: Flags {
16267 contact: true,
16268 protect: true,
16269 ..Default::default()
16270 },
16271 boost: Some(Boost {
16272 target: MoveTarget::User,
16273 boosts: StatBoosts {
16274 attack: -1,
16275 defense: -1,
16276 special_attack: 0,
16277 special_defense: 0,
16278 speed: 0,
16279 accuracy: 0,
16280 },
16281 }),
16282 ..Default::default()
16283 },
16284 );
16285 moves.insert(
16286 Choices::SUPERSONIC,
16287 Choice {
16288 move_id: Choices::SUPERSONIC,
16289 accuracy: 55.0,
16290 move_type: PokemonType::NORMAL,
16291 flags: Flags {
16292 protect: true,
16293 reflectable: true,
16294 sound: true,
16295 ..Default::default()
16296 },
16297 volatile_status: Some(VolatileStatus {
16298 target: MoveTarget::Opponent,
16299 volatile_status: PokemonVolatileStatus::CONFUSION,
16300 }),
16301 ..Default::default()
16302 },
16303 );
16304 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16305 moves.insert(
16306 Choices::SURF,
16307 Choice {
16308 move_id: Choices::SURF,
16309 base_power: 95.0,
16310 category: MoveCategory::Special,
16311 move_type: PokemonType::WATER,
16312 flags: Flags {
16313 protect: true,
16314 ..Default::default()
16315 },
16316 ..Default::default()
16317 },
16318 );
16319 } else {
16320 moves.insert(
16321 Choices::SURF,
16322 Choice {
16323 move_id: Choices::SURF,
16324 base_power: 90.0,
16325 category: MoveCategory::Special,
16326 move_type: PokemonType::WATER,
16327 flags: Flags {
16328 protect: true,
16329 ..Default::default()
16330 },
16331 ..Default::default()
16332 },
16333 );
16334 }
16335 moves.insert(
16336 Choices::SURGINGSTRIKES,
16337 Choice {
16338 move_id: Choices::SURGINGSTRIKES,
16339 base_power: 25.0,
16340 category: MoveCategory::Physical,
16341 move_type: PokemonType::WATER,
16342 flags: Flags {
16343 contact: true,
16344 protect: true,
16345 punch: true,
16346 ..Default::default()
16347 },
16348 ..Default::default()
16349 },
16350 );
16351
16352 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
16353 moves.insert(
16354 Choices::SWAGGER,
16355 Choice {
16356 move_id: Choices::SWAGGER,
16357 accuracy: 85.0,
16358 move_type: PokemonType::NORMAL,
16359 flags: Flags {
16360 protect: true,
16361 reflectable: true,
16362 ..Default::default()
16363 },
16364 boost: Some(Boost {
16365 target: MoveTarget::Opponent,
16366 boosts: StatBoosts {
16367 attack: 2,
16368 defense: 0,
16369 special_attack: 0,
16370 special_defense: 0,
16371 speed: 0,
16372 accuracy: 0,
16373 },
16374 }),
16375 volatile_status: Some(VolatileStatus {
16376 target: MoveTarget::Opponent,
16377 volatile_status: PokemonVolatileStatus::CONFUSION,
16378 }),
16379 ..Default::default()
16380 },
16381 );
16382 } else {
16383 moves.insert(
16384 Choices::SWAGGER,
16385 Choice {
16386 move_id: Choices::SWAGGER,
16387 accuracy: 90.0,
16388 move_type: PokemonType::NORMAL,
16389 flags: Flags {
16390 protect: true,
16391 reflectable: true,
16392 ..Default::default()
16393 },
16394 boost: Some(Boost {
16395 target: MoveTarget::Opponent,
16396 boosts: StatBoosts {
16397 attack: 2,
16398 defense: 0,
16399 special_attack: 0,
16400 special_defense: 0,
16401 speed: 0,
16402 accuracy: 0,
16403 },
16404 }),
16405 volatile_status: Some(VolatileStatus {
16406 target: MoveTarget::Opponent,
16407 volatile_status: PokemonVolatileStatus::CONFUSION,
16408 }),
16409 ..Default::default()
16410 },
16411 );
16412 }
16413 moves.insert(
16414 Choices::SWALLOW,
16415 Choice {
16416 move_id: Choices::SWALLOW,
16417 target: MoveTarget::User,
16418 move_type: PokemonType::NORMAL,
16419 flags: Flags {
16420 heal: true,
16421 ..Default::default()
16422 },
16423 ..Default::default()
16424 },
16425 );
16426 moves.insert(
16427 Choices::SWEETKISS,
16428 Choice {
16429 move_id: Choices::SWEETKISS,
16430 accuracy: 75.0,
16431 move_type: PokemonType::FAIRY,
16432 flags: Flags {
16433 protect: true,
16434 reflectable: true,
16435 ..Default::default()
16436 },
16437 volatile_status: Some(VolatileStatus {
16438 target: MoveTarget::Opponent,
16439 volatile_status: PokemonVolatileStatus::CONFUSION,
16440 }),
16441 ..Default::default()
16442 },
16443 );
16444 moves.insert(
16445 Choices::SWEETSCENT,
16446 Choice {
16447 move_id: Choices::SWEETSCENT,
16448 move_type: PokemonType::NORMAL,
16449 flags: Flags {
16450 protect: true,
16451 reflectable: true,
16452 ..Default::default()
16453 },
16454 boost: Some(Boost {
16455 target: MoveTarget::Opponent,
16456 boosts: StatBoosts {
16457 attack: 0,
16458 defense: 0,
16459 special_attack: 0,
16460 special_defense: 0,
16461 speed: 0,
16462 accuracy: 0,
16463 },
16464 }),
16465 ..Default::default()
16466 },
16467 );
16468 moves.insert(
16469 Choices::SWIFT,
16470 Choice {
16471 move_id: Choices::SWIFT,
16472 base_power: 60.0,
16473 category: MoveCategory::Special,
16474 move_type: PokemonType::NORMAL,
16475 flags: Flags {
16476 protect: true,
16477 ..Default::default()
16478 },
16479 ..Default::default()
16480 },
16481 );
16482 moves.insert(
16483 Choices::SWITCHEROO,
16484 Choice {
16485 move_id: Choices::SWITCHEROO,
16486 move_type: PokemonType::DARK,
16487 flags: Flags {
16488 protect: true,
16489 ..Default::default()
16490 },
16491 ..Default::default()
16492 },
16493 );
16494 moves.insert(
16495 Choices::SWORDSDANCE,
16496 Choice {
16497 move_id: Choices::SWORDSDANCE,
16498 target: MoveTarget::User,
16499 move_type: PokemonType::NORMAL,
16500 flags: Flags {
16501 ..Default::default()
16502 },
16503 boost: Some(Boost {
16504 target: MoveTarget::User,
16505 boosts: StatBoosts {
16506 attack: 2,
16507 defense: 0,
16508 special_attack: 0,
16509 special_defense: 0,
16510 speed: 0,
16511 accuracy: 0,
16512 },
16513 }),
16514 ..Default::default()
16515 },
16516 );
16517 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16518 moves.insert(
16519 Choices::SYNCHRONOISE,
16520 Choice {
16521 move_id: Choices::SYNCHRONOISE,
16522 base_power: 70.0,
16523 category: MoveCategory::Special,
16524 move_type: PokemonType::PSYCHIC,
16525 flags: Flags {
16526 protect: true,
16527 ..Default::default()
16528 },
16529 ..Default::default()
16530 },
16531 );
16532 } else {
16533 moves.insert(
16534 Choices::SYNCHRONOISE,
16535 Choice {
16536 move_id: Choices::SYNCHRONOISE,
16537 base_power: 120.0,
16538 category: MoveCategory::Special,
16539 move_type: PokemonType::PSYCHIC,
16540 flags: Flags {
16541 protect: true,
16542 ..Default::default()
16543 },
16544 ..Default::default()
16545 },
16546 );
16547 }
16548 moves.insert(
16549 Choices::SYNTHESIS,
16550 Choice {
16551 move_id: Choices::SYNTHESIS,
16552 target: MoveTarget::User,
16553 move_type: PokemonType::GRASS,
16554 flags: Flags {
16555 heal: true,
16556 ..Default::default()
16557 },
16558 heal: Some(Heal {
16559 target: MoveTarget::User,
16560 amount: 0.5,
16561 }),
16562 ..Default::default()
16563 },
16564 );
16565 moves.insert(
16566 Choices::SYRUPBOMB,
16567 Choice {
16568 move_id: Choices::SYRUPBOMB,
16569 accuracy: 85.0,
16570 base_power: 60.0,
16571 category: MoveCategory::Special,
16572 move_type: PokemonType::GRASS,
16573 flags: Flags {
16574 bullet: true,
16575 protect: true,
16576 ..Default::default()
16577 },
16578 secondaries: Some(vec![Secondary {
16579 chance: 100.0,
16580 target: MoveTarget::Opponent,
16581 effect: Effect::VolatileStatus(PokemonVolatileStatus::SYRUPBOMB),
16582 }]),
16583 ..Default::default()
16584 },
16585 );
16586 moves.insert(
16587 Choices::TACHYONCUTTER,
16588 Choice {
16589 move_id: Choices::TACHYONCUTTER,
16590 base_power: 50.0,
16591 category: MoveCategory::Special,
16592 move_type: PokemonType::STEEL,
16593 flags: Flags {
16594 protect: true,
16595 slicing: true,
16596 ..Default::default()
16597 },
16598 ..Default::default()
16599 },
16600 );
16601 moves.insert(
16602 Choices::TACKLE,
16603 Choice {
16604 move_id: Choices::TACKLE,
16605 base_power: 40.0,
16606 category: MoveCategory::Physical,
16607 move_type: PokemonType::NORMAL,
16608 flags: Flags {
16609 contact: true,
16610 protect: true,
16611 ..Default::default()
16612 },
16613 ..Default::default()
16614 },
16615 );
16616 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
16617 moves.insert(
16618 Choices::TAILGLOW,
16619 Choice {
16620 move_id: Choices::TAILGLOW,
16621 target: MoveTarget::User,
16622 move_type: PokemonType::BUG,
16623 flags: Flags {
16624 ..Default::default()
16625 },
16626 boost: Some(Boost {
16627 target: MoveTarget::User,
16628 boosts: StatBoosts {
16629 attack: 0,
16630 defense: 0,
16631 special_attack: 2,
16632 special_defense: 0,
16633 speed: 0,
16634 accuracy: 0,
16635 },
16636 }),
16637 ..Default::default()
16638 },
16639 );
16640 } else {
16641 moves.insert(
16642 Choices::TAILGLOW,
16643 Choice {
16644 move_id: Choices::TAILGLOW,
16645 target: MoveTarget::User,
16646 move_type: PokemonType::BUG,
16647 flags: Flags {
16648 ..Default::default()
16649 },
16650 boost: Some(Boost {
16651 target: MoveTarget::User,
16652 boosts: StatBoosts {
16653 attack: 0,
16654 defense: 0,
16655 special_attack: 3,
16656 special_defense: 0,
16657 speed: 0,
16658 accuracy: 0,
16659 },
16660 }),
16661 ..Default::default()
16662 },
16663 );
16664 }
16665 moves.insert(
16666 Choices::TAILSLAP,
16667 Choice {
16668 move_id: Choices::TAILSLAP,
16669 accuracy: 85.0,
16670 base_power: 25.0,
16671 category: MoveCategory::Physical,
16672 move_type: PokemonType::NORMAL,
16673 flags: Flags {
16674 contact: true,
16675 protect: true,
16676 ..Default::default()
16677 },
16678 ..Default::default()
16679 },
16680 );
16681 moves.insert(
16682 Choices::TAILWHIP,
16683 Choice {
16684 move_id: Choices::TAILWHIP,
16685 move_type: PokemonType::NORMAL,
16686 flags: Flags {
16687 protect: true,
16688 reflectable: true,
16689 ..Default::default()
16690 },
16691 boost: Some(Boost {
16692 target: MoveTarget::Opponent,
16693 boosts: StatBoosts {
16694 attack: 0,
16695 defense: -1,
16696 special_attack: 0,
16697 special_defense: 0,
16698 speed: 0,
16699 accuracy: 0,
16700 },
16701 }),
16702 ..Default::default()
16703 },
16704 );
16705 moves.insert(
16706 Choices::TAILWIND,
16707 Choice {
16708 move_id: Choices::TAILWIND,
16709 target: MoveTarget::User,
16710 move_type: PokemonType::FLYING,
16711 flags: Flags {
16712 wind: true,
16713 ..Default::default()
16714 },
16715 side_condition: Some(SideCondition {
16716 target: MoveTarget::User,
16717 condition: PokemonSideCondition::Tailwind,
16718 }),
16719 ..Default::default()
16720 },
16721 );
16722 moves.insert(
16723 Choices::TAKEDOWN,
16724 Choice {
16725 move_id: Choices::TAKEDOWN,
16726 accuracy: 85.0,
16727 base_power: 90.0,
16728 category: MoveCategory::Physical,
16729 move_type: PokemonType::NORMAL,
16730 flags: Flags {
16731 contact: true,
16732 protect: true,
16733 ..Default::default()
16734 },
16735 recoil: Some(0.33),
16736 ..Default::default()
16737 },
16738 );
16739 moves.insert(
16740 Choices::TAKEHEART,
16741 Choice {
16742 move_id: Choices::TAKEHEART,
16743 target: MoveTarget::User,
16744 move_type: PokemonType::PSYCHIC,
16745 flags: Flags {
16746 ..Default::default()
16747 },
16748 ..Default::default()
16749 },
16750 );
16751 moves.insert(
16752 Choices::TARSHOT,
16753 Choice {
16754 move_id: Choices::TARSHOT,
16755 move_type: PokemonType::ROCK,
16756 flags: Flags {
16757 protect: true,
16758 reflectable: true,
16759 ..Default::default()
16760 },
16761 boost: Some(Boost {
16762 target: MoveTarget::Opponent,
16763 boosts: StatBoosts {
16764 attack: 0,
16765 defense: 0,
16766 special_attack: 0,
16767 special_defense: 0,
16768 speed: -1,
16769 accuracy: 0,
16770 },
16771 }),
16772 volatile_status: Some(VolatileStatus {
16773 target: MoveTarget::Opponent,
16774 volatile_status: PokemonVolatileStatus::TARSHOT,
16775 }),
16776 ..Default::default()
16777 },
16778 );
16779 moves.insert(
16780 Choices::TAUNT,
16781 Choice {
16782 move_id: Choices::TAUNT,
16783 move_type: PokemonType::DARK,
16784 flags: Flags {
16785 protect: true,
16786 reflectable: true,
16787 ..Default::default()
16788 },
16789 volatile_status: Some(VolatileStatus {
16790 target: MoveTarget::Opponent,
16791 volatile_status: PokemonVolatileStatus::TAUNT,
16792 }),
16793 ..Default::default()
16794 },
16795 );
16796 moves.insert(
16797 Choices::TEARFULLOOK,
16798 Choice {
16799 move_id: Choices::TEARFULLOOK,
16800 move_type: PokemonType::NORMAL,
16801 flags: Flags {
16802 reflectable: true,
16803 ..Default::default()
16804 },
16805 boost: Some(Boost {
16806 target: MoveTarget::Opponent,
16807 boosts: StatBoosts {
16808 attack: -1,
16809 defense: 0,
16810 special_attack: -1,
16811 special_defense: 0,
16812 speed: 0,
16813 accuracy: 0,
16814 },
16815 }),
16816 ..Default::default()
16817 },
16818 );
16819 moves.insert(
16820 Choices::TEATIME,
16821 Choice {
16822 move_id: Choices::TEATIME,
16823 move_type: PokemonType::NORMAL,
16824 flags: Flags {
16825 ..Default::default()
16826 },
16827 ..Default::default()
16828 },
16829 );
16830 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16831 moves.insert(
16832 Choices::TECHNOBLAST,
16833 Choice {
16834 move_id: Choices::TECHNOBLAST,
16835 base_power: 85.0,
16836 category: MoveCategory::Special,
16837 move_type: PokemonType::NORMAL,
16838 flags: Flags {
16839 protect: true,
16840 ..Default::default()
16841 },
16842 ..Default::default()
16843 },
16844 );
16845 } else {
16846 moves.insert(
16847 Choices::TECHNOBLAST,
16848 Choice {
16849 move_id: Choices::TECHNOBLAST,
16850 base_power: 120.0,
16851 category: MoveCategory::Special,
16852 move_type: PokemonType::NORMAL,
16853 flags: Flags {
16854 protect: true,
16855 ..Default::default()
16856 },
16857 ..Default::default()
16858 },
16859 );
16860 }
16861 moves.insert(
16862 Choices::TEETERDANCE,
16863 Choice {
16864 move_id: Choices::TEETERDANCE,
16865 move_type: PokemonType::NORMAL,
16866 flags: Flags {
16867 protect: true,
16868 ..Default::default()
16869 },
16870 volatile_status: Some(VolatileStatus {
16871 target: MoveTarget::Opponent,
16872 volatile_status: PokemonVolatileStatus::CONFUSION,
16873 }),
16874 ..Default::default()
16875 },
16876 );
16877 moves.insert(
16878 Choices::TELEKINESIS,
16879 Choice {
16880 move_id: Choices::TELEKINESIS,
16881 move_type: PokemonType::PSYCHIC,
16882 flags: Flags {
16883 protect: true,
16884 reflectable: true,
16885 ..Default::default()
16886 },
16887 volatile_status: Some(VolatileStatus {
16888 target: MoveTarget::Opponent,
16889 volatile_status: PokemonVolatileStatus::TELEKINESIS,
16890 }),
16891 ..Default::default()
16892 },
16893 );
16894
16895 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
16896 moves.insert(
16897 Choices::TELEPORT,
16898 Choice {
16899 move_id: Choices::TELEPORT,
16900 priority: -6,
16901 target: MoveTarget::User,
16902 move_type: PokemonType::PSYCHIC,
16903 flags: Flags {
16904 pivot: true,
16905 ..Default::default()
16906 },
16907 ..Default::default()
16908 },
16909 );
16910 } else {
16911 moves.insert(
16912 Choices::TELEPORT,
16913 Choice {
16914 move_id: Choices::TELEPORT,
16915 priority: 0,
16916 target: MoveTarget::User,
16917 move_type: PokemonType::PSYCHIC,
16918 flags: Flags {
16919 ..Default::default()
16920 },
16921 ..Default::default()
16922 },
16923 );
16924 }
16925 moves.insert(
16926 Choices::TEMPERFLARE,
16927 Choice {
16928 move_id: Choices::TEMPERFLARE,
16929 base_power: 75.0,
16930 category: MoveCategory::Physical,
16931 move_type: PokemonType::FIRE,
16932 flags: Flags {
16933 contact: true,
16934 protect: true,
16935 ..Default::default()
16936 },
16937 ..Default::default()
16938 },
16939 );
16940 moves.insert(
16941 Choices::TERABLAST,
16942 Choice {
16943 move_id: Choices::TERABLAST,
16944 base_power: 80.0,
16945 category: MoveCategory::Special,
16946 move_type: PokemonType::NORMAL,
16947 flags: Flags {
16948 protect: true,
16949 ..Default::default()
16950 },
16951 ..Default::default()
16952 },
16953 );
16954 moves.insert(
16955 Choices::TERASTARSTORM,
16956 Choice {
16957 move_id: Choices::TERASTARSTORM,
16958 base_power: 120.0,
16959 category: MoveCategory::Special,
16960 move_type: PokemonType::NORMAL,
16961 flags: Flags {
16962 protect: true,
16963 ..Default::default()
16964 },
16965 ..Default::default()
16966 },
16967 );
16968 moves.insert(
16969 Choices::TERRAINPULSE,
16970 Choice {
16971 move_id: Choices::TERRAINPULSE,
16972 base_power: 50.0,
16973 category: MoveCategory::Special,
16974 move_type: PokemonType::NORMAL,
16975 flags: Flags {
16976 protect: true,
16977 pulse: true,
16978 ..Default::default()
16979 },
16980 ..Default::default()
16981 },
16982 );
16983 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16984 moves.insert(
16985 Choices::THIEF,
16986 Choice {
16987 move_id: Choices::THIEF,
16988 base_power: 40.0,
16989 category: MoveCategory::Physical,
16990 move_type: PokemonType::DARK,
16991 flags: Flags {
16992 contact: true,
16993 protect: true,
16994 ..Default::default()
16995 },
16996 ..Default::default()
16997 },
16998 );
16999 } else {
17000 moves.insert(
17001 Choices::THIEF,
17002 Choice {
17003 move_id: Choices::THIEF,
17004 base_power: 60.0,
17005 category: MoveCategory::Physical,
17006 move_type: PokemonType::DARK,
17007 flags: Flags {
17008 contact: true,
17009 protect: true,
17010 ..Default::default()
17011 },
17012 ..Default::default()
17013 },
17014 );
17015 }
17016 moves.insert(
17017 Choices::THOUSANDARROWS,
17018 Choice {
17019 move_id: Choices::THOUSANDARROWS,
17020 base_power: 90.0,
17021 category: MoveCategory::Physical,
17022 move_type: PokemonType::GROUND,
17023 flags: Flags {
17024 protect: true,
17025 ..Default::default()
17026 },
17027 volatile_status: Some(VolatileStatus {
17028 target: MoveTarget::Opponent,
17029 volatile_status: PokemonVolatileStatus::SMACKDOWN,
17030 }),
17031 ..Default::default()
17032 },
17033 );
17034 moves.insert(
17035 Choices::THOUSANDWAVES,
17036 Choice {
17037 move_id: Choices::THOUSANDWAVES,
17038 base_power: 90.0,
17039 category: MoveCategory::Physical,
17040 move_type: PokemonType::GROUND,
17041 flags: Flags {
17042 protect: true,
17043 ..Default::default()
17044 },
17045 ..Default::default()
17046 },
17047 );
17048 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17049 moves.insert(
17050 Choices::THRASH,
17051 Choice {
17052 move_id: Choices::THRASH,
17053 base_power: 90.0,
17054 category: MoveCategory::Physical,
17055 move_type: PokemonType::NORMAL,
17056 flags: Flags {
17057 contact: true,
17058 protect: true,
17059 ..Default::default()
17060 },
17061 volatile_status: Some(VolatileStatus {
17062 target: MoveTarget::User,
17063 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
17064 }),
17065 ..Default::default()
17066 },
17067 );
17068 } else {
17069 moves.insert(
17070 Choices::THRASH,
17071 Choice {
17072 move_id: Choices::THRASH,
17073 base_power: 120.0,
17074 category: MoveCategory::Physical,
17075 move_type: PokemonType::NORMAL,
17076 flags: Flags {
17077 contact: true,
17078 protect: true,
17079 ..Default::default()
17080 },
17081 volatile_status: Some(VolatileStatus {
17082 target: MoveTarget::User,
17083 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
17084 }),
17085 ..Default::default()
17086 },
17087 );
17088 }
17089 moves.insert(
17090 Choices::THROATCHOP,
17091 Choice {
17092 move_id: Choices::THROATCHOP,
17093 base_power: 80.0,
17094 category: MoveCategory::Physical,
17095 move_type: PokemonType::DARK,
17096 flags: Flags {
17097 contact: true,
17098 protect: true,
17099 ..Default::default()
17100 },
17101 volatile_status: Some(VolatileStatus {
17102 target: MoveTarget::Opponent,
17103 volatile_status: PokemonVolatileStatus::THROATCHOP,
17104 }),
17105 ..Default::default()
17106 },
17107 );
17108 if cfg!(feature = "gen1") {
17109 moves.insert(
17110 Choices::THUNDER,
17111 Choice {
17112 move_id: Choices::THUNDER,
17113 accuracy: 70.0,
17114 base_power: 120.0,
17115 category: MoveCategory::Special,
17116 move_type: PokemonType::ELECTRIC,
17117 flags: Flags {
17118 protect: true,
17119 ..Default::default()
17120 },
17121 secondaries: Some(vec![Secondary {
17122 chance: 10.0,
17123 target: MoveTarget::Opponent,
17124 effect: Effect::Status(PokemonStatus::PARALYZE),
17125 }]),
17126 ..Default::default()
17127 },
17128 );
17129 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
17130 moves.insert(
17131 Choices::THUNDER,
17132 Choice {
17133 move_id: Choices::THUNDER,
17134 accuracy: 70.0,
17135 base_power: 120.0,
17136 category: MoveCategory::Special,
17137 move_type: PokemonType::ELECTRIC,
17138 flags: Flags {
17139 protect: true,
17140 ..Default::default()
17141 },
17142 secondaries: Some(vec![Secondary {
17143 chance: 30.0,
17144 target: MoveTarget::Opponent,
17145 effect: Effect::Status(PokemonStatus::PARALYZE),
17146 }]),
17147 ..Default::default()
17148 },
17149 );
17150 } else {
17151 moves.insert(
17152 Choices::THUNDER,
17153 Choice {
17154 move_id: Choices::THUNDER,
17155 accuracy: 70.0,
17156 base_power: 110.0,
17157 category: MoveCategory::Special,
17158 move_type: PokemonType::ELECTRIC,
17159 flags: Flags {
17160 protect: true,
17161 ..Default::default()
17162 },
17163 secondaries: Some(vec![Secondary {
17164 chance: 30.0,
17165 target: MoveTarget::Opponent,
17166 effect: Effect::Status(PokemonStatus::PARALYZE),
17167 }]),
17168 ..Default::default()
17169 },
17170 );
17171 }
17172 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
17173 moves.insert(
17174 Choices::THUNDERBOLT,
17175 Choice {
17176 move_id: Choices::THUNDERBOLT,
17177 base_power: 95.0,
17178 category: MoveCategory::Special,
17179 move_type: PokemonType::ELECTRIC,
17180 flags: Flags {
17181 protect: true,
17182 ..Default::default()
17183 },
17184 secondaries: Some(vec![Secondary {
17185 chance: 10.0,
17186 target: MoveTarget::Opponent,
17187 effect: Effect::Status(PokemonStatus::PARALYZE),
17188 }]),
17189 ..Default::default()
17190 },
17191 );
17192 } else {
17193 moves.insert(
17194 Choices::THUNDERBOLT,
17195 Choice {
17196 move_id: Choices::THUNDERBOLT,
17197 base_power: 90.0,
17198 category: MoveCategory::Special,
17199 move_type: PokemonType::ELECTRIC,
17200 flags: Flags {
17201 protect: true,
17202 ..Default::default()
17203 },
17204 secondaries: Some(vec![Secondary {
17205 chance: 10.0,
17206 target: MoveTarget::Opponent,
17207 effect: Effect::Status(PokemonStatus::PARALYZE),
17208 }]),
17209 ..Default::default()
17210 },
17211 );
17212 }
17213 moves.insert(
17214 Choices::THUNDERCAGE,
17215 Choice {
17216 move_id: Choices::THUNDERCAGE,
17217 accuracy: 90.0,
17218 base_power: 80.0,
17219 category: MoveCategory::Special,
17220 move_type: PokemonType::ELECTRIC,
17221 flags: Flags {
17222 protect: true,
17223 ..Default::default()
17224 },
17225 volatile_status: Some(VolatileStatus {
17226 target: MoveTarget::Opponent,
17227 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
17228 }),
17229 ..Default::default()
17230 },
17231 );
17232 moves.insert(
17233 Choices::THUNDERCLAP,
17234 Choice {
17235 move_id: Choices::THUNDERCLAP,
17236 base_power: 70.0,
17237 priority: 1,
17238 category: MoveCategory::Special,
17239 move_type: PokemonType::ELECTRIC,
17240 flags: Flags {
17241 protect: true,
17242 ..Default::default()
17243 },
17244 ..Default::default()
17245 },
17246 );
17247 moves.insert(
17248 Choices::THUNDERFANG,
17249 Choice {
17250 move_id: Choices::THUNDERFANG,
17251 accuracy: 95.0,
17252 base_power: 65.0,
17253 category: MoveCategory::Physical,
17254 move_type: PokemonType::ELECTRIC,
17255 flags: Flags {
17256 bite: true,
17257 contact: true,
17258 protect: true,
17259 ..Default::default()
17260 },
17261 secondaries: Some(vec![
17262 Secondary {
17263 chance: 10.0,
17264 target: MoveTarget::Opponent,
17265 effect: Effect::Status(PokemonStatus::PARALYZE),
17266 },
17267 Secondary {
17268 chance: 10.0,
17269 target: MoveTarget::Opponent,
17270 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17271 },
17272 ]),
17273 ..Default::default()
17274 },
17275 );
17276 moves.insert(
17277 Choices::THUNDEROUSKICK,
17278 Choice {
17279 move_id: Choices::THUNDEROUSKICK,
17280 base_power: 90.0,
17281 category: MoveCategory::Physical,
17282 move_type: PokemonType::FIGHTING,
17283 flags: Flags {
17284 contact: true,
17285 protect: true,
17286 ..Default::default()
17287 },
17288 secondaries: Some(vec![Secondary {
17289 chance: 100.0,
17290 target: MoveTarget::Opponent,
17291 effect: Effect::Boost(StatBoosts {
17292 attack: 0,
17293 defense: -1,
17294 special_attack: 0,
17295 special_defense: 0,
17296 speed: 0,
17297 accuracy: 0,
17298 }),
17299 }]),
17300 ..Default::default()
17301 },
17302 );
17303 moves.insert(
17304 Choices::THUNDERPUNCH,
17305 Choice {
17306 move_id: Choices::THUNDERPUNCH,
17307 base_power: 75.0,
17308 category: MoveCategory::Physical,
17309 move_type: PokemonType::ELECTRIC,
17310 flags: Flags {
17311 contact: true,
17312 protect: true,
17313 punch: true,
17314 ..Default::default()
17315 },
17316 secondaries: Some(vec![Secondary {
17317 chance: 10.0,
17318 target: MoveTarget::Opponent,
17319 effect: Effect::Status(PokemonStatus::PARALYZE),
17320 }]),
17321 ..Default::default()
17322 },
17323 );
17324 moves.insert(
17325 Choices::THUNDERSHOCK,
17326 Choice {
17327 move_id: Choices::THUNDERSHOCK,
17328 base_power: 40.0,
17329 category: MoveCategory::Special,
17330 move_type: PokemonType::ELECTRIC,
17331 flags: Flags {
17332 protect: true,
17333 ..Default::default()
17334 },
17335 secondaries: Some(vec![Secondary {
17336 chance: 10.0,
17337 target: MoveTarget::Opponent,
17338 effect: Effect::Status(PokemonStatus::PARALYZE),
17339 }]),
17340 ..Default::default()
17341 },
17342 );
17343 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
17344 moves.insert(
17345 Choices::THUNDERWAVE,
17346 Choice {
17347 move_id: Choices::THUNDERWAVE,
17348 accuracy: 100.0,
17349 status: Some(Status {
17350 target: MoveTarget::Opponent,
17351 status: PokemonStatus::PARALYZE,
17352 }),
17353 move_type: PokemonType::ELECTRIC,
17354 flags: Flags {
17355 protect: true,
17356 reflectable: true,
17357 ..Default::default()
17358 },
17359 ..Default::default()
17360 },
17361 );
17362 } else {
17363 moves.insert(
17364 Choices::THUNDERWAVE,
17365 Choice {
17366 move_id: Choices::THUNDERWAVE,
17367 accuracy: 90.0,
17368 status: Some(Status {
17369 target: MoveTarget::Opponent,
17370 status: PokemonStatus::PARALYZE,
17371 }),
17372 move_type: PokemonType::ELECTRIC,
17373 flags: Flags {
17374 protect: true,
17375 reflectable: true,
17376 ..Default::default()
17377 },
17378 ..Default::default()
17379 },
17380 );
17381 }
17382 moves.insert(
17383 Choices::TICKLE,
17384 Choice {
17385 move_id: Choices::TICKLE,
17386 move_type: PokemonType::NORMAL,
17387 flags: Flags {
17388 protect: true,
17389 reflectable: true,
17390 ..Default::default()
17391 },
17392 boost: Some(Boost {
17393 target: MoveTarget::Opponent,
17394 boosts: StatBoosts {
17395 attack: -1,
17396 defense: -1,
17397 special_attack: 0,
17398 special_defense: 0,
17399 speed: 0,
17400 accuracy: 0,
17401 },
17402 }),
17403 ..Default::default()
17404 },
17405 );
17406 moves.insert(
17407 Choices::TIDYUP,
17408 Choice {
17409 move_id: Choices::TIDYUP,
17410 target: MoveTarget::User,
17411 move_type: PokemonType::NORMAL,
17412 flags: Flags {
17413 ..Default::default()
17414 },
17415 boost: Some(Boost {
17416 target: MoveTarget::User,
17417 boosts: StatBoosts {
17418 attack: 1,
17419 defense: 0,
17420 special_attack: 0,
17421 special_defense: 0,
17422 speed: 1,
17423 accuracy: 0,
17424 },
17425 }),
17426 ..Default::default()
17427 },
17428 );
17429 moves.insert(
17430 Choices::TOPSYTURVY,
17431 Choice {
17432 move_id: Choices::TOPSYTURVY,
17433 move_type: PokemonType::DARK,
17434 flags: Flags {
17435 protect: true,
17436 reflectable: true,
17437 ..Default::default()
17438 },
17439 ..Default::default()
17440 },
17441 );
17442 moves.insert(
17443 Choices::TORCHSONG,
17444 Choice {
17445 move_id: Choices::TORCHSONG,
17446 base_power: 80.0,
17447 category: MoveCategory::Special,
17448 move_type: PokemonType::FIRE,
17449 flags: Flags {
17450 protect: true,
17451 sound: true,
17452 ..Default::default()
17453 },
17454 secondaries: Some(vec![Secondary {
17455 chance: 100.0,
17456 target: MoveTarget::User,
17457 effect: Effect::Boost(StatBoosts {
17458 attack: 0,
17459 defense: 0,
17460 special_attack: 1,
17461 special_defense: 0,
17462 speed: 0,
17463 accuracy: 0,
17464 }),
17465 }]),
17466 ..Default::default()
17467 },
17468 );
17469 moves.insert(
17470 Choices::TORMENT,
17471 Choice {
17472 move_id: Choices::TORMENT,
17473 move_type: PokemonType::DARK,
17474 flags: Flags {
17475 protect: true,
17476 reflectable: true,
17477 ..Default::default()
17478 },
17479 volatile_status: Some(VolatileStatus {
17480 target: MoveTarget::Opponent,
17481 volatile_status: PokemonVolatileStatus::TORMENT,
17482 }),
17483 ..Default::default()
17484 },
17485 );
17486 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17487 moves.insert(
17488 Choices::TOXIC,
17489 Choice {
17490 move_id: Choices::TOXIC,
17491 accuracy: 85.0,
17492 status: Some(Status {
17493 target: MoveTarget::Opponent,
17494 status: PokemonStatus::TOXIC,
17495 }),
17496 move_type: PokemonType::POISON,
17497 flags: Flags {
17498 protect: true,
17499 reflectable: true,
17500 ..Default::default()
17501 },
17502 ..Default::default()
17503 },
17504 );
17505 } else {
17506 moves.insert(
17507 Choices::TOXIC,
17508 Choice {
17509 move_id: Choices::TOXIC,
17510 accuracy: 90.0,
17511 status: Some(Status {
17512 target: MoveTarget::Opponent,
17513 status: PokemonStatus::TOXIC,
17514 }),
17515 move_type: PokemonType::POISON,
17516 flags: Flags {
17517 protect: true,
17518 reflectable: true,
17519 ..Default::default()
17520 },
17521 ..Default::default()
17522 },
17523 );
17524 }
17525 moves.insert(
17526 Choices::TOXICSPIKES,
17527 Choice {
17528 move_id: Choices::TOXICSPIKES,
17529 move_type: PokemonType::POISON,
17530 flags: Flags {
17531 reflectable: true,
17532 ..Default::default()
17533 },
17534 side_condition: Some(SideCondition {
17535 target: MoveTarget::Opponent,
17536 condition: PokemonSideCondition::ToxicSpikes,
17537 }),
17538 ..Default::default()
17539 },
17540 );
17541 moves.insert(
17542 Choices::TOXICTHREAD,
17543 Choice {
17544 move_id: Choices::TOXICTHREAD,
17545 status: Some(Status {
17546 target: MoveTarget::Opponent,
17547 status: PokemonStatus::POISON,
17548 }),
17549 move_type: PokemonType::POISON,
17550 flags: Flags {
17551 protect: true,
17552 reflectable: true,
17553 ..Default::default()
17554 },
17555 boost: Some(Boost {
17556 target: MoveTarget::Opponent,
17557 boosts: StatBoosts {
17558 attack: 0,
17559 defense: 0,
17560 special_attack: 0,
17561 special_defense: 0,
17562 speed: -1,
17563 accuracy: 0,
17564 },
17565 }),
17566 ..Default::default()
17567 },
17568 );
17569 moves.insert(
17570 Choices::TRAILBLAZE,
17571 Choice {
17572 move_id: Choices::TRAILBLAZE,
17573 base_power: 50.0,
17574 category: MoveCategory::Physical,
17575 move_type: PokemonType::GRASS,
17576 flags: Flags {
17577 contact: true,
17578 protect: true,
17579 ..Default::default()
17580 },
17581 secondaries: Some(vec![Secondary {
17582 chance: 100.0,
17583 target: MoveTarget::User,
17584 effect: Effect::Boost(StatBoosts {
17585 attack: 0,
17586 defense: 0,
17587 special_attack: 0,
17588 special_defense: 0,
17589 speed: 1,
17590 accuracy: 0,
17591 }),
17592 }]),
17593 ..Default::default()
17594 },
17595 );
17596 moves.insert(
17597 Choices::TRANSFORM,
17598 Choice {
17599 move_id: Choices::TRANSFORM,
17600 move_type: PokemonType::NORMAL,
17601 flags: Flags {
17602 ..Default::default()
17603 },
17604 ..Default::default()
17605 },
17606 );
17607 if cfg!(feature = "gen1") {
17608 moves.insert(
17609 Choices::TRIATTACK,
17610 Choice {
17611 move_id: Choices::TRIATTACK,
17612 base_power: 80.0,
17613 category: MoveCategory::Special,
17614 move_type: PokemonType::NORMAL,
17615 flags: Flags {
17616 protect: true,
17617 ..Default::default()
17618 },
17619 ..Default::default()
17620 },
17621 );
17622 } else {
17623 moves.insert(
17624 Choices::TRIATTACK,
17625 Choice {
17626 move_id: Choices::TRIATTACK,
17627 base_power: 80.0,
17628 category: MoveCategory::Special,
17629 move_type: PokemonType::NORMAL,
17630 flags: Flags {
17631 protect: true,
17632 ..Default::default()
17633 },
17634 secondaries: Some(
17637 vec![
17638 Secondary {
17639 chance: 6.67,
17640 target: MoveTarget::Opponent,
17641 effect: Effect::Status(PokemonStatus::PARALYZE),
17642 },
17643 Secondary {
17644 chance: 6.67,
17645 target: MoveTarget::Opponent,
17646 effect: Effect::Status(PokemonStatus::BURN),
17647 },
17648 Secondary {
17649 chance: 6.67,
17650 target: MoveTarget::Opponent,
17651 effect: Effect::Status(PokemonStatus::FREEZE),
17652 },
17653 ]
17654 ),
17655 ..Default::default()
17656 },
17657 );
17658 }
17659 moves.insert(
17660 Choices::TRICK,
17661 Choice {
17662 move_id: Choices::TRICK,
17663 move_type: PokemonType::PSYCHIC,
17664 flags: Flags {
17665 protect: true,
17666 ..Default::default()
17667 },
17668 ..Default::default()
17669 },
17670 );
17671 moves.insert(
17672 Choices::TRICKORTREAT,
17673 Choice {
17674 move_id: Choices::TRICKORTREAT,
17675 move_type: PokemonType::GHOST,
17676 flags: Flags {
17677 protect: true,
17678 reflectable: true,
17679 ..Default::default()
17680 },
17681 ..Default::default()
17682 },
17683 );
17684 moves.insert(
17685 Choices::TRICKROOM,
17686 Choice {
17687 move_id: Choices::TRICKROOM,
17688 priority: -7,
17689 move_type: PokemonType::PSYCHIC,
17690 flags: Flags {
17691 ..Default::default()
17692 },
17693 ..Default::default()
17694 },
17695 );
17696 moves.insert(
17697 Choices::TRIPLEARROWS,
17698 Choice {
17699 move_id: Choices::TRIPLEARROWS,
17700 base_power: 90.0,
17701 category: MoveCategory::Physical,
17702 move_type: PokemonType::FIGHTING,
17703 flags: Flags {
17704 protect: true,
17705 ..Default::default()
17706 },
17707 secondaries: Some(vec![
17708 Secondary {
17709 chance: 50.0,
17710 target: MoveTarget::Opponent,
17711 effect: Effect::Boost(StatBoosts {
17712 attack: 0,
17713 defense: -1,
17714 special_attack: 0,
17715 special_defense: 0,
17716 speed: 0,
17717 accuracy: 0,
17718 }),
17719 },
17720 Secondary {
17721 chance: 30.0,
17722 target: MoveTarget::Opponent,
17723 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17724 },
17725 ]),
17726 ..Default::default()
17727 },
17728 );
17729 moves.insert(
17730 Choices::TRIPLEAXEL,
17731 Choice {
17732 move_id: Choices::TRIPLEAXEL,
17733 accuracy: 90.0,
17734 base_power: 40.0,
17735 category: MoveCategory::Physical,
17736 move_type: PokemonType::ICE,
17737 flags: Flags {
17738 contact: true,
17739 protect: true,
17740 ..Default::default()
17741 },
17742 ..Default::default()
17743 },
17744 );
17745 moves.insert(
17746 Choices::TRIPLEDIVE,
17747 Choice {
17748 move_id: Choices::TRIPLEDIVE,
17749 accuracy: 95.0,
17750 base_power: 30.0,
17751 category: MoveCategory::Physical,
17752 move_type: PokemonType::WATER,
17753 flags: Flags {
17754 contact: true,
17755 protect: true,
17756 ..Default::default()
17757 },
17758 ..Default::default()
17759 },
17760 );
17761 moves.insert(
17762 Choices::TRIPLEKICK,
17763 Choice {
17764 move_id: Choices::TRIPLEKICK,
17765 accuracy: 90.0,
17766 base_power: 10.0,
17767 category: MoveCategory::Physical,
17768 move_type: PokemonType::FIGHTING,
17769 flags: Flags {
17770 contact: true,
17771 protect: true,
17772 ..Default::default()
17773 },
17774 ..Default::default()
17775 },
17776 );
17777 moves.insert(
17778 Choices::TROPKICK,
17779 Choice {
17780 move_id: Choices::TROPKICK,
17781 base_power: 70.0,
17782 category: MoveCategory::Physical,
17783 move_type: PokemonType::GRASS,
17784 flags: Flags {
17785 contact: true,
17786 protect: true,
17787 ..Default::default()
17788 },
17789 secondaries: Some(vec![Secondary {
17790 chance: 100.0,
17791 target: MoveTarget::Opponent,
17792 effect: Effect::Boost(StatBoosts {
17793 attack: -1,
17794 defense: 0,
17795 special_attack: 0,
17796 special_defense: 0,
17797 speed: 0,
17798 accuracy: 0,
17799 }),
17800 }]),
17801 ..Default::default()
17802 },
17803 );
17804 moves.insert(
17805 Choices::TRUMPCARD,
17806 Choice {
17807 move_id: Choices::TRUMPCARD,
17808 category: MoveCategory::Special,
17809 move_type: PokemonType::NORMAL,
17810 flags: Flags {
17811 contact: true,
17812 protect: true,
17813 ..Default::default()
17814 },
17815 ..Default::default()
17816 },
17817 );
17818 moves.insert(
17819 Choices::TWINBEAM,
17820 Choice {
17821 move_id: Choices::TWINBEAM,
17822 base_power: 40.0,
17823 category: MoveCategory::Special,
17824 move_type: PokemonType::PSYCHIC,
17825 flags: Flags {
17826 protect: true,
17827 ..Default::default()
17828 },
17829 ..Default::default()
17830 },
17831 );
17832 moves.insert(
17833 Choices::TWINEEDLE,
17834 Choice {
17835 move_id: Choices::TWINEEDLE,
17836 base_power: 25.0,
17837 category: MoveCategory::Physical,
17838 move_type: PokemonType::BUG,
17839 flags: Flags {
17840 protect: true,
17841 ..Default::default()
17842 },
17843 secondaries: Some(vec![Secondary {
17844 chance: 20.0,
17845 target: MoveTarget::Opponent,
17846 effect: Effect::Status(PokemonStatus::POISON),
17847 }]),
17848 ..Default::default()
17849 },
17850 );
17851 moves.insert(
17852 Choices::TWISTER,
17853 Choice {
17854 move_id: Choices::TWISTER,
17855 base_power: 40.0,
17856 category: MoveCategory::Special,
17857 move_type: PokemonType::DRAGON,
17858 flags: Flags {
17859 protect: true,
17860 wind: true,
17861 ..Default::default()
17862 },
17863 secondaries: Some(vec![Secondary {
17864 chance: 20.0,
17865 target: MoveTarget::Opponent,
17866 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17867 }]),
17868 ..Default::default()
17869 },
17870 );
17871 moves.insert(
17872 Choices::UPPERHAND,
17873 Choice {
17874 move_id: Choices::UPPERHAND,
17875 base_power: 65.0,
17876 priority: 3,
17877 category: MoveCategory::Physical,
17878 move_type: PokemonType::FIGHTING,
17879 flags: Flags {
17880 contact: true,
17881 protect: true,
17882 ..Default::default()
17883 },
17884 secondaries: Some(vec![Secondary {
17885 chance: 100.0,
17886 target: MoveTarget::Opponent,
17887 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17888 }]),
17889 ..Default::default()
17890 },
17891 );
17892 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17893 moves.insert(
17894 Choices::UPROAR,
17895 Choice {
17896 move_id: Choices::UPROAR,
17897 base_power: 50.0,
17898 category: MoveCategory::Special,
17899 move_type: PokemonType::NORMAL,
17900 flags: Flags {
17901 protect: true,
17902 sound: true,
17903 ..Default::default()
17904 },
17905 ..Default::default()
17906 },
17907 );
17908 } else {
17909 moves.insert(
17910 Choices::UPROAR,
17911 Choice {
17912 move_id: Choices::UPROAR,
17913 base_power: 90.0,
17914 category: MoveCategory::Special,
17915 move_type: PokemonType::NORMAL,
17916 flags: Flags {
17917 protect: true,
17918 sound: true,
17919 ..Default::default()
17920 },
17921 ..Default::default()
17922 },
17923 );
17924 }
17925 moves.insert(
17926 Choices::UTURN,
17927 Choice {
17928 move_id: Choices::UTURN,
17929 base_power: 70.0,
17930 category: MoveCategory::Physical,
17931 move_type: PokemonType::BUG,
17932 flags: Flags {
17933 contact: true,
17934 protect: true,
17935 pivot: true,
17936 ..Default::default()
17937 },
17938 ..Default::default()
17939 },
17940 );
17941 moves.insert(
17942 Choices::VACUUMWAVE,
17943 Choice {
17944 move_id: Choices::VACUUMWAVE,
17945 base_power: 40.0,
17946 category: MoveCategory::Special,
17947 priority: 1,
17948 move_type: PokemonType::FIGHTING,
17949 flags: Flags {
17950 protect: true,
17951 ..Default::default()
17952 },
17953 ..Default::default()
17954 },
17955 );
17956 moves.insert(
17957 Choices::VCREATE,
17958 Choice {
17959 move_id: Choices::VCREATE,
17960 accuracy: 95.0,
17961 base_power: 180.0,
17962 category: MoveCategory::Physical,
17963 move_type: PokemonType::FIRE,
17964 flags: Flags {
17965 contact: true,
17966 protect: true,
17967 ..Default::default()
17968 },
17969 boost: Some(Boost {
17970 target: MoveTarget::User,
17971 boosts: StatBoosts {
17972 attack: 0,
17973 defense: -1,
17974 special_attack: 0,
17975 special_defense: -1,
17976 speed: -1,
17977 accuracy: 0,
17978 },
17979 }),
17980 ..Default::default()
17981 },
17982 );
17983 moves.insert(
17984 Choices::VEEVEEVOLLEY,
17985 Choice {
17986 move_id: Choices::VEEVEEVOLLEY,
17987 category: MoveCategory::Physical,
17988 move_type: PokemonType::NORMAL,
17989 flags: Flags {
17990 contact: true,
17991 protect: true,
17992 ..Default::default()
17993 },
17994 ..Default::default()
17995 },
17996 );
17997 moves.insert(
17998 Choices::VENOMDRENCH,
17999 Choice {
18000 move_id: Choices::VENOMDRENCH,
18001 move_type: PokemonType::POISON,
18002 flags: Flags {
18003 protect: true,
18004 reflectable: true,
18005 ..Default::default()
18006 },
18007 ..Default::default()
18008 },
18009 );
18010 moves.insert(
18011 Choices::VENOSHOCK,
18012 Choice {
18013 move_id: Choices::VENOSHOCK,
18014 base_power: 65.0,
18015 category: MoveCategory::Special,
18016 move_type: PokemonType::POISON,
18017 flags: Flags {
18018 protect: true,
18019 ..Default::default()
18020 },
18021 ..Default::default()
18022 },
18023 );
18024 moves.insert(
18025 Choices::VICTORYDANCE,
18026 Choice {
18027 move_id: Choices::VICTORYDANCE,
18028 target: MoveTarget::User,
18029 move_type: PokemonType::FIGHTING,
18030 flags: Flags {
18031 ..Default::default()
18032 },
18033 boost: Some(Boost {
18034 target: MoveTarget::User,
18035 boosts: StatBoosts {
18036 attack: 1,
18037 defense: 1,
18038 special_attack: 0,
18039 special_defense: 0,
18040 speed: 1,
18041 accuracy: 0,
18042 },
18043 }),
18044 ..Default::default()
18045 },
18046 );
18047 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18048 moves.insert(
18049 Choices::VINEWHIP,
18050 Choice {
18051 move_id: Choices::VINEWHIP,
18052 base_power: 35.0,
18053 category: MoveCategory::Physical,
18054 move_type: PokemonType::GRASS,
18055 flags: Flags {
18056 contact: true,
18057 protect: true,
18058 ..Default::default()
18059 },
18060 ..Default::default()
18061 },
18062 );
18063 } else {
18064 moves.insert(
18065 Choices::VINEWHIP,
18066 Choice {
18067 move_id: Choices::VINEWHIP,
18068 base_power: 45.0,
18069 category: MoveCategory::Physical,
18070 move_type: PokemonType::GRASS,
18071 flags: Flags {
18072 contact: true,
18073 protect: true,
18074 ..Default::default()
18075 },
18076 ..Default::default()
18077 },
18078 );
18079 }
18080 moves.insert(
18081 Choices::VISEGRIP,
18082 Choice {
18083 move_id: Choices::VISEGRIP,
18084 base_power: 55.0,
18085 category: MoveCategory::Physical,
18086 move_type: PokemonType::NORMAL,
18087 flags: Flags {
18088 contact: true,
18089 protect: true,
18090 ..Default::default()
18091 },
18092 ..Default::default()
18093 },
18094 );
18095 moves.insert(
18096 Choices::VITALTHROW,
18097 Choice {
18098 move_id: Choices::VITALTHROW,
18099 base_power: 70.0,
18100 category: MoveCategory::Physical,
18101 priority: -1,
18102 move_type: PokemonType::FIGHTING,
18103 flags: Flags {
18104 contact: true,
18105 protect: true,
18106 ..Default::default()
18107 },
18108 ..Default::default()
18109 },
18110 );
18111 moves.insert(
18112 Choices::VOLTSWITCH,
18113 Choice {
18114 move_id: Choices::VOLTSWITCH,
18115 base_power: 70.0,
18116 category: MoveCategory::Special,
18117 move_type: PokemonType::ELECTRIC,
18118 flags: Flags {
18119 protect: true,
18120 pivot: true,
18121 ..Default::default()
18122 },
18123 ..Default::default()
18124 },
18125 );
18126 moves.insert(
18127 Choices::VOLTTACKLE,
18128 Choice {
18129 move_id: Choices::VOLTTACKLE,
18130 base_power: 120.0,
18131 category: MoveCategory::Physical,
18132 move_type: PokemonType::ELECTRIC,
18133 flags: Flags {
18134 contact: true,
18135 protect: true,
18136 ..Default::default()
18137 },
18138 secondaries: Some(vec![Secondary {
18139 chance: 10.0,
18140 target: MoveTarget::Opponent,
18141 effect: Effect::Status(PokemonStatus::PARALYZE),
18142 }]),
18143 recoil: Some(0.33),
18144 ..Default::default()
18145 },
18146 );
18147 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18148 moves.insert(
18149 Choices::WAKEUPSLAP,
18150 Choice {
18151 move_id: Choices::WAKEUPSLAP,
18152 base_power: 60.0,
18153 category: MoveCategory::Physical,
18154 move_type: PokemonType::FIGHTING,
18155 flags: Flags {
18156 contact: true,
18157 protect: true,
18158 ..Default::default()
18159 },
18160 ..Default::default()
18161 },
18162 );
18163 } else {
18164 moves.insert(
18165 Choices::WAKEUPSLAP,
18166 Choice {
18167 move_id: Choices::WAKEUPSLAP,
18168 base_power: 70.0,
18169 category: MoveCategory::Physical,
18170 move_type: PokemonType::FIGHTING,
18171 flags: Flags {
18172 contact: true,
18173 protect: true,
18174 ..Default::default()
18175 },
18176 ..Default::default()
18177 },
18178 );
18179 }
18180 moves.insert(
18181 Choices::WATERFALL,
18182 Choice {
18183 move_id: Choices::WATERFALL,
18184 base_power: 80.0,
18185 category: MoveCategory::Physical,
18186 move_type: PokemonType::WATER,
18187 flags: Flags {
18188 contact: true,
18189 protect: true,
18190 ..Default::default()
18191 },
18192 secondaries: Some(vec![Secondary {
18193 chance: 20.0,
18194 target: MoveTarget::Opponent,
18195 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18196 }]),
18197 ..Default::default()
18198 },
18199 );
18200 moves.insert(
18201 Choices::WATERGUN,
18202 Choice {
18203 move_id: Choices::WATERGUN,
18204 base_power: 40.0,
18205 category: MoveCategory::Special,
18206 move_type: PokemonType::WATER,
18207 flags: Flags {
18208 protect: true,
18209 ..Default::default()
18210 },
18211 ..Default::default()
18212 },
18213 );
18214 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18215 moves.insert(
18216 Choices::WATERPLEDGE,
18217 Choice {
18218 move_id: Choices::WATERPLEDGE,
18219 base_power: 50.0,
18220 category: MoveCategory::Special,
18221 move_type: PokemonType::WATER,
18222 flags: Flags {
18223 protect: true,
18224 ..Default::default()
18225 },
18226 ..Default::default()
18227 },
18228 );
18229 } else {
18230 moves.insert(
18231 Choices::WATERPLEDGE,
18232 Choice {
18233 move_id: Choices::WATERPLEDGE,
18234 base_power: 80.0,
18235 category: MoveCategory::Special,
18236 move_type: PokemonType::WATER,
18237 flags: Flags {
18238 protect: true,
18239 ..Default::default()
18240 },
18241 ..Default::default()
18242 },
18243 );
18244 }
18245 moves.insert(
18246 Choices::WATERPULSE,
18247 Choice {
18248 move_id: Choices::WATERPULSE,
18249 base_power: 60.0,
18250 category: MoveCategory::Special,
18251 move_type: PokemonType::WATER,
18252 flags: Flags {
18253 protect: true,
18254 pulse: true,
18255 ..Default::default()
18256 },
18257 secondaries: Some(vec![Secondary {
18258 chance: 20.0,
18259 target: MoveTarget::Opponent,
18260 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
18261 }]),
18262 ..Default::default()
18263 },
18264 );
18265
18266 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
18267 moves.insert(
18268 Choices::WATERSHURIKEN,
18269 Choice {
18270 move_id: Choices::WATERSHURIKEN,
18271 base_power: 15.0,
18272 category: MoveCategory::Physical,
18273 priority: 1,
18274 move_type: PokemonType::WATER,
18275 flags: Flags {
18276 protect: true,
18277 ..Default::default()
18278 },
18279 ..Default::default()
18280 },
18281 );
18282 } else {
18283 moves.insert(
18284 Choices::WATERSHURIKEN,
18285 Choice {
18286 move_id: Choices::WATERSHURIKEN,
18287 base_power: 15.0,
18288 category: MoveCategory::Special,
18289 priority: 1,
18290 move_type: PokemonType::WATER,
18291 flags: Flags {
18292 protect: true,
18293 ..Default::default()
18294 },
18295 ..Default::default()
18296 },
18297 );
18298 }
18299
18300 moves.insert(
18301 Choices::WATERSPORT,
18302 Choice {
18303 move_id: Choices::WATERSPORT,
18304 move_type: PokemonType::WATER,
18305 flags: Flags {
18306 ..Default::default()
18307 },
18308 ..Default::default()
18309 },
18310 );
18311 moves.insert(
18312 Choices::WATERSPOUT,
18313 Choice {
18314 move_id: Choices::WATERSPOUT,
18315 base_power: 150.0,
18316 category: MoveCategory::Special,
18317 move_type: PokemonType::WATER,
18318 flags: Flags {
18319 protect: true,
18320 ..Default::default()
18321 },
18322 ..Default::default()
18323 },
18324 );
18325 moves.insert(
18326 Choices::WAVECRASH,
18327 Choice {
18328 move_id: Choices::WAVECRASH,
18329 base_power: 120.0,
18330 category: MoveCategory::Physical,
18331 move_type: PokemonType::WATER,
18332 flags: Flags {
18333 contact: true,
18334 protect: true,
18335 ..Default::default()
18336 },
18337 recoil: Some(0.33),
18338 ..Default::default()
18339 },
18340 );
18341 moves.insert(
18342 Choices::WEATHERBALL,
18343 Choice {
18344 move_id: Choices::WEATHERBALL,
18345 base_power: 50.0,
18346 category: MoveCategory::Special,
18347 move_type: PokemonType::NORMAL,
18348 flags: Flags {
18349 bullet: true,
18350 protect: true,
18351 ..Default::default()
18352 },
18353 ..Default::default()
18354 },
18355 );
18356 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
18357 moves.insert(
18358 Choices::WHIRLPOOL,
18359 Choice {
18360 move_id: Choices::WHIRLPOOL,
18361 accuracy: 70.0,
18362 base_power: 15.0,
18363 category: MoveCategory::Special,
18364 move_type: PokemonType::WATER,
18365 flags: Flags {
18366 protect: true,
18367 ..Default::default()
18368 },
18369 volatile_status: Some(VolatileStatus {
18370 target: MoveTarget::Opponent,
18371 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18372 }),
18373 ..Default::default()
18374 },
18375 );
18376 } else {
18377 moves.insert(
18378 Choices::WHIRLPOOL,
18379 Choice {
18380 move_id: Choices::WHIRLPOOL,
18381 accuracy: 85.0,
18382 base_power: 35.0,
18383 category: MoveCategory::Special,
18384 move_type: PokemonType::WATER,
18385 flags: Flags {
18386 protect: true,
18387 ..Default::default()
18388 },
18389 volatile_status: Some(VolatileStatus {
18390 target: MoveTarget::Opponent,
18391 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18392 }),
18393 ..Default::default()
18394 },
18395 );
18396 }
18397 moves.insert(
18398 Choices::WHIRLWIND,
18399 Choice {
18400 move_id: Choices::WHIRLWIND,
18401 priority: -6,
18402 move_type: PokemonType::NORMAL,
18403 flags: Flags {
18404 drag: true,
18405 reflectable: true,
18406 wind: true,
18407 ..Default::default()
18408 },
18409 ..Default::default()
18410 },
18411 );
18412
18413 if cfg!(feature = "gen9") {
18414 moves.insert(
18415 Choices::WICKEDBLOW,
18416 Choice {
18417 move_id: Choices::WICKEDBLOW,
18418 base_power: 75.0,
18419 category: MoveCategory::Physical,
18420 move_type: PokemonType::DARK,
18421 flags: Flags {
18422 contact: true,
18423 protect: true,
18424 punch: true,
18425 ..Default::default()
18426 },
18427 ..Default::default()
18428 },
18429 );
18430 } else {
18431 moves.insert(
18432 Choices::WICKEDBLOW,
18433 Choice {
18434 move_id: Choices::WICKEDBLOW,
18435 base_power: 80.0,
18436 category: MoveCategory::Physical,
18437 move_type: PokemonType::DARK,
18438 flags: Flags {
18439 contact: true,
18440 protect: true,
18441 punch: true,
18442 ..Default::default()
18443 },
18444 ..Default::default()
18445 },
18446 );
18447 }
18448
18449 moves.insert(
18450 Choices::WICKEDTORQUE,
18451 Choice {
18452 move_id: Choices::WICKEDTORQUE,
18453 base_power: 80.0,
18454 category: MoveCategory::Physical,
18455 move_type: PokemonType::DARK,
18456 flags: Flags {
18457 protect: true,
18458 ..Default::default()
18459 },
18460 secondaries: Some(vec![Secondary {
18461 chance: 10.0,
18462 target: MoveTarget::Opponent,
18463 effect: Effect::Status(PokemonStatus::SLEEP),
18464 }]),
18465 ..Default::default()
18466 },
18467 );
18468 moves.insert(
18469 Choices::WIDEGUARD,
18470 Choice {
18471 move_id: Choices::WIDEGUARD,
18472 priority: 3,
18473 target: MoveTarget::User,
18474 move_type: PokemonType::ROCK,
18475 flags: Flags {
18476 ..Default::default()
18477 },
18478 side_condition: Some(SideCondition {
18479 target: MoveTarget::User,
18480 condition: PokemonSideCondition::WideGuard,
18481 }),
18482 ..Default::default()
18483 },
18484 );
18485 moves.insert(
18486 Choices::WILDBOLTSTORM,
18487 Choice {
18488 move_id: Choices::WILDBOLTSTORM,
18489 accuracy: 80.0,
18490 base_power: 100.0,
18491 category: MoveCategory::Special,
18492 move_type: PokemonType::ELECTRIC,
18493 flags: Flags {
18494 protect: true,
18495 wind: true,
18496 ..Default::default()
18497 },
18498 secondaries: Some(vec![Secondary {
18499 chance: 20.0,
18500 target: MoveTarget::Opponent,
18501 effect: Effect::Status(PokemonStatus::PARALYZE),
18502 }]),
18503 ..Default::default()
18504 },
18505 );
18506 moves.insert(
18507 Choices::WILDCHARGE,
18508 Choice {
18509 move_id: Choices::WILDCHARGE,
18510 base_power: 90.0,
18511 category: MoveCategory::Physical,
18512 move_type: PokemonType::ELECTRIC,
18513 flags: Flags {
18514 contact: true,
18515 protect: true,
18516 ..Default::default()
18517 },
18518 recoil: Some(0.25),
18519 ..Default::default()
18520 },
18521 );
18522 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18523 moves.insert(
18524 Choices::WILLOWISP,
18525 Choice {
18526 move_id: Choices::WILLOWISP,
18527 accuracy: 75.0,
18528 status: Some(Status {
18529 target: MoveTarget::Opponent,
18530 status: PokemonStatus::BURN,
18531 }),
18532 move_type: PokemonType::FIRE,
18533 flags: Flags {
18534 protect: true,
18535 reflectable: true,
18536 ..Default::default()
18537 },
18538 ..Default::default()
18539 },
18540 );
18541 } else {
18542 moves.insert(
18543 Choices::WILLOWISP,
18544 Choice {
18545 move_id: Choices::WILLOWISP,
18546 accuracy: 85.0,
18547 status: Some(Status {
18548 target: MoveTarget::Opponent,
18549 status: PokemonStatus::BURN,
18550 }),
18551 move_type: PokemonType::FIRE,
18552 flags: Flags {
18553 protect: true,
18554 reflectable: true,
18555 ..Default::default()
18556 },
18557 ..Default::default()
18558 },
18559 );
18560 }
18561 if cfg!(feature = "gen1") {
18562 moves.insert(
18563 Choices::WINGATTACK,
18564 Choice {
18565 move_id: Choices::WINGATTACK,
18566 base_power: 35.0,
18567 category: MoveCategory::Physical,
18568 move_type: PokemonType::FLYING,
18569 flags: Flags {
18570 contact: true,
18571 protect: true,
18572 ..Default::default()
18573 },
18574 ..Default::default()
18575 },
18576 );
18577 } else {
18578 moves.insert(
18579 Choices::WINGATTACK,
18580 Choice {
18581 move_id: Choices::WINGATTACK,
18582 base_power: 60.0,
18583 category: MoveCategory::Physical,
18584 move_type: PokemonType::FLYING,
18585 flags: Flags {
18586 contact: true,
18587 protect: true,
18588 ..Default::default()
18589 },
18590 ..Default::default()
18591 },
18592 );
18593 }
18594 moves.insert(
18595 Choices::WISH,
18596 Choice {
18597 move_id: Choices::WISH,
18598 target: MoveTarget::User,
18599 move_type: PokemonType::NORMAL,
18600 flags: Flags {
18601 heal: true,
18602 ..Default::default()
18603 },
18604 ..Default::default()
18605 },
18606 );
18607 moves.insert(
18608 Choices::WITHDRAW,
18609 Choice {
18610 move_id: Choices::WITHDRAW,
18611 target: MoveTarget::User,
18612 move_type: PokemonType::WATER,
18613 flags: Flags {
18614 ..Default::default()
18615 },
18616 boost: Some(Boost {
18617 target: MoveTarget::User,
18618 boosts: StatBoosts {
18619 attack: 0,
18620 defense: 1,
18621 special_attack: 0,
18622 special_defense: 0,
18623 speed: 0,
18624 accuracy: 0,
18625 },
18626 }),
18627 ..Default::default()
18628 },
18629 );
18630 moves.insert(
18631 Choices::WONDERROOM,
18632 Choice {
18633 move_id: Choices::WONDERROOM,
18634 move_type: PokemonType::PSYCHIC,
18635 flags: Flags {
18636 ..Default::default()
18637 },
18638 ..Default::default()
18639 },
18640 );
18641 moves.insert(
18642 Choices::WOODHAMMER,
18643 Choice {
18644 move_id: Choices::WOODHAMMER,
18645 base_power: 120.0,
18646 category: MoveCategory::Physical,
18647 move_type: PokemonType::GRASS,
18648 flags: Flags {
18649 contact: true,
18650 protect: true,
18651 ..Default::default()
18652 },
18653 recoil: Some(0.33),
18654 ..Default::default()
18655 },
18656 );
18657 moves.insert(
18658 Choices::WORKUP,
18659 Choice {
18660 move_id: Choices::WORKUP,
18661 target: MoveTarget::User,
18662 move_type: PokemonType::NORMAL,
18663 flags: Flags {
18664 ..Default::default()
18665 },
18666 boost: Some(Boost {
18667 target: MoveTarget::User,
18668 boosts: StatBoosts {
18669 attack: 1,
18670 defense: 0,
18671 special_attack: 1,
18672 special_defense: 0,
18673 speed: 0,
18674 accuracy: 0,
18675 },
18676 }),
18677 ..Default::default()
18678 },
18679 );
18680 moves.insert(
18681 Choices::WORRYSEED,
18682 Choice {
18683 move_id: Choices::WORRYSEED,
18684 move_type: PokemonType::GRASS,
18685 flags: Flags {
18686 protect: true,
18687 reflectable: true,
18688 ..Default::default()
18689 },
18690 ..Default::default()
18691 },
18692 );
18693 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
18694 moves.insert(
18695 Choices::WRAP,
18696 Choice {
18697 move_id: Choices::WRAP,
18698 accuracy: 85.0,
18699 base_power: 15.0,
18700 category: MoveCategory::Physical,
18701 move_type: PokemonType::NORMAL,
18702 flags: Flags {
18703 contact: true,
18704 protect: true,
18705 ..Default::default()
18706 },
18707 volatile_status: Some(VolatileStatus {
18708 target: MoveTarget::Opponent,
18709 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18710 }),
18711 ..Default::default()
18712 },
18713 );
18714 } else {
18715 moves.insert(
18716 Choices::WRAP,
18717 Choice {
18718 move_id: Choices::WRAP,
18719 accuracy: 90.0,
18720 base_power: 15.0,
18721 category: MoveCategory::Physical,
18722 move_type: PokemonType::NORMAL,
18723 flags: Flags {
18724 contact: true,
18725 protect: true,
18726 ..Default::default()
18727 },
18728 volatile_status: Some(VolatileStatus {
18729 target: MoveTarget::Opponent,
18730 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18731 }),
18732 ..Default::default()
18733 },
18734 );
18735 }
18736 moves.insert(
18737 Choices::WRINGOUT,
18738 Choice {
18739 move_id: Choices::WRINGOUT,
18740 category: MoveCategory::Special,
18741 move_type: PokemonType::NORMAL,
18742 flags: Flags {
18743 contact: true,
18744 protect: true,
18745 ..Default::default()
18746 },
18747 ..Default::default()
18748 },
18749 );
18750 moves.insert(
18751 Choices::XSCISSOR,
18752 Choice {
18753 move_id: Choices::XSCISSOR,
18754 base_power: 80.0,
18755 category: MoveCategory::Physical,
18756 move_type: PokemonType::BUG,
18757 flags: Flags {
18758 contact: true,
18759 protect: true,
18760 slicing: true,
18761 ..Default::default()
18762 },
18763 ..Default::default()
18764 },
18765 );
18766 moves.insert(
18767 Choices::YAWN,
18768 Choice {
18769 move_id: Choices::YAWN,
18770 move_type: PokemonType::NORMAL,
18771 flags: Flags {
18772 protect: true,
18773 reflectable: true,
18774 ..Default::default()
18775 },
18776 volatile_status: Some(VolatileStatus {
18777 target: MoveTarget::Opponent,
18778 volatile_status: PokemonVolatileStatus::YAWN,
18779 }),
18780 ..Default::default()
18781 },
18782 );
18783 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
18784 moves.insert(
18785 Choices::ZAPCANNON,
18786 Choice {
18787 move_id: Choices::ZAPCANNON,
18788 accuracy: 50.0,
18789 base_power: 100.0,
18790 category: MoveCategory::Special,
18791 move_type: PokemonType::ELECTRIC,
18792 flags: Flags {
18793 bullet: true,
18794 protect: true,
18795 ..Default::default()
18796 },
18797 secondaries: Some(vec![Secondary {
18798 chance: 100.0,
18799 target: MoveTarget::Opponent,
18800 effect: Effect::Status(PokemonStatus::PARALYZE),
18801 }]),
18802 ..Default::default()
18803 },
18804 );
18805 } else {
18806 moves.insert(
18807 Choices::ZAPCANNON,
18808 Choice {
18809 move_id: Choices::ZAPCANNON,
18810 accuracy: 50.0,
18811 base_power: 120.0,
18812 category: MoveCategory::Special,
18813 move_type: PokemonType::ELECTRIC,
18814 flags: Flags {
18815 bullet: true,
18816 protect: true,
18817 ..Default::default()
18818 },
18819 secondaries: Some(vec![Secondary {
18820 chance: 100.0,
18821 target: MoveTarget::Opponent,
18822 effect: Effect::Status(PokemonStatus::PARALYZE),
18823 }]),
18824 ..Default::default()
18825 },
18826 );
18827 }
18828 moves.insert(
18829 Choices::ZENHEADBUTT,
18830 Choice {
18831 move_id: Choices::ZENHEADBUTT,
18832 accuracy: 90.0,
18833 base_power: 80.0,
18834 category: MoveCategory::Physical,
18835 move_type: PokemonType::PSYCHIC,
18836 flags: Flags {
18837 contact: true,
18838 protect: true,
18839 ..Default::default()
18840 },
18841 secondaries: Some(vec![Secondary {
18842 chance: 20.0,
18843 target: MoveTarget::Opponent,
18844 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18845 }]),
18846 ..Default::default()
18847 },
18848 );
18849 moves.insert(
18850 Choices::ZINGZAP,
18851 Choice {
18852 move_id: Choices::ZINGZAP,
18853 base_power: 80.0,
18854 category: MoveCategory::Physical,
18855 move_type: PokemonType::ELECTRIC,
18856 flags: Flags {
18857 contact: true,
18858 protect: true,
18859 ..Default::default()
18860 },
18861 secondaries: Some(vec![Secondary {
18862 chance: 30.0,
18863 target: MoveTarget::Opponent,
18864 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18865 }]),
18866 ..Default::default()
18867 },
18868 );
18869 moves.insert(
18870 Choices::ZIPPYZAP,
18871 Choice {
18872 move_id: Choices::ZIPPYZAP,
18873 base_power: 80.0,
18874 category: MoveCategory::Physical,
18875 priority: 2,
18876 move_type: PokemonType::ELECTRIC,
18877 flags: Flags {
18878 contact: true,
18879 protect: true,
18880 ..Default::default()
18881 },
18882 secondaries: Some(vec![Secondary {
18883 chance: 100.0,
18884 target: MoveTarget::User,
18885 effect: Effect::Boost(StatBoosts {
18886 attack: 0,
18887 defense: 0,
18888 special_attack: 0,
18889 special_defense: 0,
18890 speed: 0,
18891 accuracy: 0,
18892 }),
18893 }]),
18894 ..Default::default()
18895 },
18896 );
18897
18898 #[cfg(any(feature = "gen1", feature = "gen2", feature = "gen3"))]
18899 undo_physical_special_split(&mut moves);
18900
18901 moves
18902 };
18903}
18904
18905#[derive(Debug, PartialEq, Clone, Copy)]
18906pub enum MoveCategory {
18907 Physical,
18908 Special,
18909 Status,
18910 Switch,
18911}
18912
18913#[derive(PartialEq, Debug, Clone)]
18914pub enum MoveTarget {
18915 User,
18916 Opponent,
18917}
18918
18919#[derive(Debug, Clone)]
18920pub struct VolatileStatus {
18921 pub target: MoveTarget,
18922 pub volatile_status: PokemonVolatileStatus,
18923}
18924
18925#[derive(Debug, Clone)]
18926pub struct SideCondition {
18927 pub target: MoveTarget,
18928 pub condition: PokemonSideCondition,
18929}
18930
18931#[derive(Debug, Clone)]
18932pub struct Boost {
18933 pub target: MoveTarget,
18934 pub boosts: StatBoosts,
18935}
18936
18937#[derive(Debug, Clone)]
18938pub struct Heal {
18939 pub target: MoveTarget,
18940 pub amount: f32,
18941}
18942
18943#[derive(Debug, Clone)]
18944pub struct Status {
18945 pub target: MoveTarget,
18946 pub status: PokemonStatus,
18947}
18948
18949#[derive(Debug, Clone, PartialEq)]
18950pub struct StatBoosts {
18951 pub attack: i8,
18952 pub defense: i8,
18953 pub special_attack: i8,
18954 pub special_defense: i8,
18955 pub speed: i8,
18956 pub accuracy: i8,
18957}
18958
18959impl Default for StatBoosts {
18960 fn default() -> StatBoosts {
18961 StatBoosts {
18962 attack: 0,
18963 defense: 0,
18964 special_attack: 0,
18965 special_defense: 0,
18966 speed: 0,
18967 accuracy: 0,
18968 }
18969 }
18970}
18971
18972impl StatBoosts {
18973 pub fn get_as_pokemon_boostable(&self) -> [(PokemonBoostableStat, i8); 6] {
18974 [
18975 (PokemonBoostableStat::Attack, self.attack),
18976 (PokemonBoostableStat::Defense, self.defense),
18977 (PokemonBoostableStat::SpecialAttack, self.special_attack),
18978 (PokemonBoostableStat::SpecialDefense, self.special_defense),
18979 (PokemonBoostableStat::Speed, self.speed),
18980 (PokemonBoostableStat::Accuracy, self.accuracy),
18981 ]
18982 }
18983}
18984
18985#[derive(Debug)]
18986pub struct Myself {
18987 pub volatile_status: Option<VolatileStatus>,
18988 pub boosts: StatBoosts,
18989}
18990
18991#[derive(Debug, Clone)]
18992pub struct Flags {
18993 pub bite: bool,
18994 pub bullet: bool,
18995 pub charge: bool,
18996 pub contact: bool,
18997 pub drag: bool,
18998 pub heal: bool,
18999 pub powder: bool,
19000 pub protect: bool,
19001 pub pulse: bool,
19002 pub punch: bool,
19003 pub recharge: bool,
19004 pub reflectable: bool,
19005 pub slicing: bool,
19006 pub sound: bool,
19007 pub pivot: bool,
19008 pub wind: bool,
19009}
19010
19011impl Default for Flags {
19012 fn default() -> Flags {
19013 Flags {
19014 bite: false,
19015 bullet: false,
19016 charge: false,
19017 contact: false,
19018 drag: false,
19019 heal: false,
19020 powder: false,
19021 protect: false,
19022 pulse: false,
19023 punch: false,
19024 recharge: false,
19025 reflectable: false,
19026 slicing: false,
19027 sound: false,
19028 pivot: false,
19029 wind: false,
19030 }
19031 }
19032}
19033
19034impl Flags {
19035 pub fn clear_all(&mut self) {
19036 self.bite = false;
19037 self.bullet = false;
19038 self.charge = false;
19039 self.contact = false;
19040 self.drag = false;
19041 self.heal = false;
19042 self.powder = false;
19043 self.protect = false;
19044 self.pulse = false;
19045 self.punch = false;
19046 self.recharge = false;
19047 self.reflectable = false;
19048 self.slicing = false;
19049 self.sound = false;
19050 self.pivot = false;
19051 self.wind = false;
19052 }
19053}
19054
19055#[derive(Debug, Clone)]
19056pub struct Secondary {
19057 pub chance: f32,
19058 pub target: MoveTarget,
19059 pub effect: Effect,
19060}
19061
19062#[derive(Debug, Clone, PartialEq)]
19063pub enum Effect {
19064 VolatileStatus(PokemonVolatileStatus),
19065 Boost(StatBoosts),
19066 Status(PokemonStatus),
19067 Heal(f32),
19068 RemoveItem,
19069}
19070
19071#[derive(PartialEq)]
19072pub enum MultiHitMove {
19073 None,
19074 DoubleHit,
19075 TripleHit,
19076 TwoToFiveHits,
19077 PopulationBomb,
19078 TripleAxel,
19079}
19080
19081#[derive(PartialEq)]
19082pub enum MultiAccuracyMove {
19083 None,
19084 TripleHit,
19085 TenHits,
19086}
19087
19088define_enum_with_from_str! {
19089 #[repr(u16)]
19090 #[derive(Eq, PartialEq, Debug, Hash, Copy, Clone)]
19091 Choices {
19092 NONE,
19093 ABSORB,
19094 ACCELEROCK,
19095 ACID,
19096 ACIDARMOR,
19097 ACIDSPRAY,
19098 ACROBATICS,
19099 ACUPRESSURE,
19100 AERIALACE,
19101 AEROBLAST,
19102 AFTERYOU,
19103 AGILITY,
19104 AIRCUTTER,
19105 AIRSLASH,
19106 ALLURINGVOICE,
19107 ALLYSWITCH,
19108 AMNESIA,
19109 ANCHORSHOT,
19110 ANCIENTPOWER,
19111 APPLEACID,
19112 AQUACUTTER,
19113 AQUAJET,
19114 AQUARING,
19115 AQUASTEP,
19116 AQUATAIL,
19117 ARMORCANNON,
19118 ARMTHRUST,
19119 AROMATHERAPY,
19120 AROMATICMIST,
19121 ASSIST,
19122 ASSURANCE,
19123 ASTONISH,
19124 ASTRALBARRAGE,
19125 ATTACKORDER,
19126 ATTRACT,
19127 AURASPHERE,
19128 AURAWHEEL,
19129 AURORABEAM,
19130 AURORAVEIL,
19131 AUTOTOMIZE,
19132 AVALANCHE,
19133 AXEKICK,
19134 BABYDOLLEYES,
19135 BADDYBAD,
19136 BANEFULBUNKER,
19137 BARBBARRAGE,
19138 BARRAGE,
19139 BARRIER,
19140 BATONPASS,
19141 BEAKBLAST,
19142 BEATUP,
19143 BEHEMOTHBASH,
19144 BEHEMOTHBLADE,
19145 BELCH,
19146 BELLYDRUM,
19147 BESTOW,
19148 BIDE,
19149 BIND,
19150 BITE,
19151 BITTERBLADE,
19152 BITTERMALICE,
19153 BLASTBURN,
19154 BLAZEKICK,
19155 BLAZINGTORQUE,
19156 BLEAKWINDSTORM,
19157 BLIZZARD,
19158 BLOCK,
19159 BLOODMOON,
19160 BLUEFLARE,
19161 BODYPRESS,
19162 BODYSLAM,
19163 BOLTBEAK,
19164 BOLTSTRIKE,
19165 BONECLUB,
19166 BONEMERANG,
19167 BONERUSH,
19168 BOOMBURST,
19169 BOUNCE,
19170 BOUNCYBUBBLE,
19171 BRANCHPOKE,
19172 BRAVEBIRD,
19173 BREAKINGSWIPE,
19174 BRICKBREAK,
19175 BRINE,
19176 BRUTALSWING,
19177 BUBBLE,
19178 BUBBLEBEAM,
19179 BUGBITE,
19180 BUGBUZZ,
19181 BULKUP,
19182 BULLDOZE,
19183 BULLETPUNCH,
19184 BULLETSEED,
19185 BURNINGBULWARK,
19186 BURNINGJEALOUSY,
19187 BURNUP,
19188 BUZZYBUZZ,
19189 CALMMIND,
19190 CAMOUFLAGE,
19191 CAPTIVATE,
19192 CEASELESSEDGE,
19193 CELEBRATE,
19194 CHARGE,
19195 CHARGEBEAM,
19196 CHARM,
19197 CHATTER,
19198 CHILLINGWATER,
19199 CHILLYRECEPTION,
19200 CHIPAWAY,
19201 CHLOROBLAST,
19202 CIRCLETHROW,
19203 CLAMP,
19204 CLANGINGSCALES,
19205 CLANGOROUSSOUL,
19206 CLEARSMOG,
19207 CLOSECOMBAT,
19208 COACHING,
19209 COIL,
19210 COLLISIONCOURSE,
19211 COMBATTORQUE,
19212 COMETPUNCH,
19213 COMEUPPANCE,
19214 CONFIDE,
19215 CONFUSERAY,
19216 CONFUSION,
19217 CONSTRICT,
19218 CONVERSION,
19219 CONVERSION2,
19220 COPYCAT,
19221 COREENFORCER,
19222 CORROSIVEGAS,
19223 COSMICPOWER,
19224 COTTONGUARD,
19225 COTTONSPORE,
19226 COUNTER,
19227 COURTCHANGE,
19228 COVET,
19229 CRABHAMMER,
19230 CRAFTYSHIELD,
19231 CROSSCHOP,
19232 CROSSPOISON,
19233 CRUNCH,
19234 CRUSHCLAW,
19235 CRUSHGRIP,
19236 CURSE,
19237 CUT,
19238 DARKESTLARIAT,
19239 DARKPULSE,
19240 DARKVOID,
19241 DAZZLINGGLEAM,
19242 DECORATE,
19243 DEFENDORDER,
19244 DEFENSECURL,
19245 DEFOG,
19246 DESTINYBOND,
19247 DETECT,
19248 DIAMONDSTORM,
19249 DIG,
19250 DIRECLAW,
19251 DISABLE,
19252 DISARMINGVOICE,
19253 DISCHARGE,
19254 DIVE,
19255 DIZZYPUNCH,
19256 DOODLE,
19257 DOOMDESIRE,
19258 DOUBLEEDGE,
19259 DOUBLEHIT,
19260 DOUBLEIRONBASH,
19261 DOUBLEKICK,
19262 DOUBLESHOCK,
19263 DOUBLESLAP,
19264 DOUBLETEAM,
19265 DRACOMETEOR,
19266 DRAGONASCENT,
19267 DRAGONBREATH,
19268 DRAGONCHEER,
19269 DRAGONCLAW,
19270 DRAGONDANCE,
19271 DRAGONDARTS,
19272 DRAGONENERGY,
19273 DRAGONHAMMER,
19274 DRAGONPULSE,
19275 DRAGONRAGE,
19276 DRAGONRUSH,
19277 DRAGONTAIL,
19278 DRAININGKISS,
19279 DRAINPUNCH,
19280 DREAMEATER,
19281 DRILLPECK,
19282 DRILLRUN,
19283 DRUMBEATING,
19284 DUALCHOP,
19285 DUALWINGBEAT,
19286 DYNAMAXCANNON,
19287 DYNAMICPUNCH,
19288 EARTHPOWER,
19289 EARTHQUAKE,
19290 ECHOEDVOICE,
19291 EERIEIMPULSE,
19292 EERIESPELL,
19293 EGGBOMB,
19294 ELECTRICTERRAIN,
19295 ELECTRIFY,
19296 ELECTROBALL,
19297 ELECTRODRIFT,
19298 ELECTROSHOT,
19299 ELECTROWEB,
19300 EMBARGO,
19301 EMBER,
19302 ENCORE,
19303 ENDEAVOR,
19304 ENDURE,
19305 ENERGYBALL,
19306 ENTRAINMENT,
19307 ERUPTION,
19308 ESPERWING,
19309 ETERNABEAM,
19310 EXPANDINGFORCE,
19311 EXPLOSION,
19312 EXTRASENSORY,
19313 EXTREMESPEED,
19314 FACADE,
19315 FAIRYLOCK,
19316 FAIRYWIND,
19317 FAKEOUT,
19318 FAKETEARS,
19319 FALSESURRENDER,
19320 FALSESWIPE,
19321 FEATHERDANCE,
19322 FEINT,
19323 FEINTATTACK,
19324 FELLSTINGER,
19325 FICKLEBEAM,
19326 FIERYDANCE,
19327 FIERYWRATH,
19328 FILLETAWAY,
19329 FINALGAMBIT,
19330 FIREBLAST,
19331 FIREFANG,
19332 FIRELASH,
19333 FIREPLEDGE,
19334 FIREPUNCH,
19335 FIRESPIN,
19336 FIRSTIMPRESSION,
19337 FISHIOUSREND,
19338 FISSURE,
19339 FLAIL,
19340 FLAMEBURST,
19341 FLAMECHARGE,
19342 FLAMETHROWER,
19343 FLAMEWHEEL,
19344 FLAREBLITZ,
19345 FLASH,
19346 FLASHCANNON,
19347 FLATTER,
19348 FLEURCANNON,
19349 FLING,
19350 FLIPTURN,
19351 FLOATYFALL,
19352 FLORALHEALING,
19353 FLOWERSHIELD,
19354 FLOWERTRICK,
19355 FLY,
19356 FLYINGPRESS,
19357 FOCUSBLAST,
19358 FOCUSENERGY,
19359 FOCUSPUNCH,
19360 FOLLOWME,
19361 FORCEPALM,
19362 FORESIGHT,
19363 FORESTSCURSE,
19364 FOULPLAY,
19365 FREEZEDRY,
19366 FREEZESHOCK,
19367 FREEZINGGLARE,
19368 FREEZYFROST,
19369 FRENZYPLANT,
19370 FROSTBREATH,
19371 FRUSTRATION,
19372 FURYATTACK,
19373 FURYCUTTER,
19374 FURYSWIPES,
19375 FUSIONBOLT,
19376 FUSIONFLARE,
19377 FUTURESIGHT,
19378 GASTROACID,
19379 GEARGRIND,
19380 GEARUP,
19381 GEOMANCY,
19382 GIGADRAIN,
19383 GIGAIMPACT,
19384 GIGATONHAMMER,
19385 GLACIALLANCE,
19386 GLACIATE,
19387 GLAIVERUSH,
19388 GLARE,
19389 GLITZYGLOW,
19390 GRASSKNOT,
19391 GRASSPLEDGE,
19392 GRASSWHISTLE,
19393 GRASSYGLIDE,
19394 GRASSYTERRAIN,
19395 GRAVAPPLE,
19396 GRAVITY,
19397 GROWL,
19398 GROWTH,
19399 GRUDGE,
19400 GUARDSPLIT,
19401 GUARDSWAP,
19402 GUILLOTINE,
19403 GUNKSHOT,
19404 GUST,
19405 GYROBALL,
19406 HAIL,
19407 HAMMERARM,
19408 HAPPYHOUR,
19409 HARDEN,
19410 HARDPRESS,
19411 HAZE,
19412 HEADBUTT,
19413 HEADCHARGE,
19414 HEADLONGRUSH,
19415 HEADSMASH,
19416 HEALBELL,
19417 HEALBLOCK,
19418 HEALINGWISH,
19419 HEALORDER,
19420 HEALPULSE,
19421 HEARTSTAMP,
19422 HEARTSWAP,
19423 HEATCRASH,
19424 HEATWAVE,
19425 HEAVYSLAM,
19426 HELPINGHAND,
19427 HEX,
19428 HIDDENPOWER,
19429 HIDDENPOWERBUG60,
19430 HIDDENPOWERBUG70,
19431 HIDDENPOWERDARK60,
19432 HIDDENPOWERDARK70,
19433 HIDDENPOWERDRAGON60,
19434 HIDDENPOWERDRAGON70,
19435 HIDDENPOWERELECTRIC60,
19436 HIDDENPOWERELECTRIC70,
19437 HIDDENPOWERFIGHTING60,
19438 HIDDENPOWERFIGHTING70,
19439 HIDDENPOWERFIRE60,
19440 HIDDENPOWERFIRE70,
19441 HIDDENPOWERFLYING60,
19442 HIDDENPOWERFLYING70,
19443 HIDDENPOWERGHOST60,
19444 HIDDENPOWERGHOST70,
19445 HIDDENPOWERGRASS60,
19446 HIDDENPOWERGRASS70,
19447 HIDDENPOWERGROUND60,
19448 HIDDENPOWERGROUND70,
19449 HIDDENPOWERICE60,
19450 HIDDENPOWERICE70,
19451 HIDDENPOWERPOISON60,
19452 HIDDENPOWERPOISON70,
19453 HIDDENPOWERPSYCHIC60,
19454 HIDDENPOWERPSYCHIC70,
19455 HIDDENPOWERROCK60,
19456 HIDDENPOWERROCK70,
19457 HIDDENPOWERSTEEL60,
19458 HIDDENPOWERSTEEL70,
19459 HIDDENPOWERWATER60,
19460 HIDDENPOWERWATER70,
19461 HIGHHORSEPOWER,
19462 HIGHJUMPKICK,
19463 HOLDBACK,
19464 HOLDHANDS,
19465 HONECLAWS,
19466 HORNATTACK,
19467 HORNDRILL,
19468 HORNLEECH,
19469 HOWL,
19470 HURRICANE,
19471 HYDROCANNON,
19472 HYDROPUMP,
19473 HYDROSTEAM,
19474 HYPERBEAM,
19475 HYPERDRILL,
19476 HYPERFANG,
19477 HYPERSPACEFURY,
19478 HYPERSPACEHOLE,
19479 HYPERVOICE,
19480 HYPNOSIS,
19481 ICEBALL,
19482 ICEBEAM,
19483 ICEBURN,
19484 ICEFANG,
19485 ICEHAMMER,
19486 ICEPUNCH,
19487 ICESHARD,
19488 ICESPINNER,
19489 ICICLECRASH,
19490 ICICLESPEAR,
19491 ICYWIND,
19492 IMPRISON,
19493 INCINERATE,
19494 INFERNALPARADE,
19495 INFERNO,
19496 INFESTATION,
19497 INGRAIN,
19498 INSTRUCT,
19499 IONDELUGE,
19500 IRONDEFENSE,
19501 IRONHEAD,
19502 IRONTAIL,
19503 IVYCUDGEL,
19504 JAWLOCK,
19505 JETPUNCH,
19506 JUDGMENT,
19507 JUMPKICK,
19508 JUNGLEHEALING,
19509 KARATECHOP,
19510 KINESIS,
19511 KINGSSHIELD,
19512 KNOCKOFF,
19513 KOWTOWCLEAVE,
19514 LANDSWRATH,
19515 LASERFOCUS,
19516 LASHOUT,
19517 LASTRESORT,
19518 LASTRESPECTS,
19519 LAVAPLUME,
19520 LEAFAGE,
19521 LEAFBLADE,
19522 LEAFSTORM,
19523 LEAFTORNADO,
19524 LEECHLIFE,
19525 LEECHSEED,
19526 LEER,
19527 LICK,
19528 LIFEDEW,
19529 LIGHTOFRUIN,
19530 LIGHTSCREEN,
19531 LIQUIDATION,
19532 LOCKON,
19533 LOVELYKISS,
19534 LOWKICK,
19535 LOWSWEEP,
19536 LUCKYCHANT,
19537 LUMINACRASH,
19538 LUNARBLESSING,
19539 LUNARDANCE,
19540 LUNGE,
19541 LUSTERPURGE,
19542 MACHPUNCH,
19543 MAGICALLEAF,
19544 MAGICALTORQUE,
19545 MAGICCOAT,
19546 MAGICPOWDER,
19547 MAGICROOM,
19548 MAGMASTORM,
19549 MAGNETBOMB,
19550 MAGNETICFLUX,
19551 MAGNETRISE,
19552 MAGNITUDE,
19553 MAKEITRAIN,
19554 MALIGNANTCHAIN,
19555 MATBLOCK,
19556 MATCHAGOTCHA,
19557 MEANLOOK,
19558 MEDITATE,
19559 MEFIRST,
19560 MEGADRAIN,
19561 MEGAHORN,
19562 MEGAKICK,
19563 MEGAPUNCH,
19564 MEMENTO,
19565 METALBURST,
19566 METALCLAW,
19567 METALSOUND,
19568 METEORASSAULT,
19569 METEORBEAM,
19570 METEORMASH,
19571 METRONOME,
19572 MIGHTYCLEAVE,
19573 MILKDRINK,
19574 MIMIC,
19575 MINDBLOWN,
19576 MINDREADER,
19577 MINIMIZE,
19578 MIRACLEEYE,
19579 MIRRORCOAT,
19580 MIRRORMOVE,
19581 MIRRORSHOT,
19582 MIST,
19583 MISTBALL,
19584 MISTYEXPLOSION,
19585 MISTYTERRAIN,
19586 MOONBLAST,
19587 MOONGEISTBEAM,
19588 MOONLIGHT,
19589 MORNINGSUN,
19590 MORTALSPIN,
19591 MOUNTAINGALE,
19592 MUDBOMB,
19593 MUDDYWATER,
19594 MUDSHOT,
19595 MUDSLAP,
19596 MUDSPORT,
19597 MULTIATTACK,
19598 MYSTICALFIRE,
19599 MYSTICALPOWER,
19600 NASTYPLOT,
19601 NATURALGIFT,
19602 NATUREPOWER,
19603 NATURESMADNESS,
19604 NEEDLEARM,
19605 NIGHTDAZE,
19606 NIGHTMARE,
19607 NIGHTSHADE,
19608 NIGHTSLASH,
19609 NOBLEROAR,
19610 NORETREAT,
19611 NOTHING,
19612 NOXIOUSTORQUE,
19613 NUZZLE,
19614 OBLIVIONWING,
19615 OBSTRUCT,
19616 OCTAZOOKA,
19617 OCTOLOCK,
19618 ODORSLEUTH,
19619 OMINOUSWIND,
19620 ORDERUP,
19621 ORIGINPULSE,
19622 OUTRAGE,
19623 OVERDRIVE,
19624 OVERHEAT,
19625 PAINSPLIT,
19626 PALEOWAVE,
19627 PARABOLICCHARGE,
19628 PARTINGSHOT,
19629 PAYBACK,
19630 PAYDAY,
19631 PECK,
19632 PERISHSONG,
19633 PETALBLIZZARD,
19634 PETALDANCE,
19635 PHANTOMFORCE,
19636 PHOTONGEYSER,
19637 PIKAPAPOW,
19638 PINMISSILE,
19639 PLASMAFISTS,
19640 PLAYNICE,
19641 PLAYROUGH,
19642 PLUCK,
19643 POISONFANG,
19644 POISONGAS,
19645 POISONJAB,
19646 POISONPOWDER,
19647 POISONSTING,
19648 POISONTAIL,
19649 POLLENPUFF,
19650 POLTERGEIST,
19651 POPULATIONBOMB,
19652 POUNCE,
19653 POUND,
19654 POWDER,
19655 POWDERSNOW,
19656 POWERGEM,
19657 POWERSHIFT,
19658 POWERSPLIT,
19659 POWERSWAP,
19660 POWERTRICK,
19661 POWERTRIP,
19662 POWERUPPUNCH,
19663 POWERWHIP,
19664 PRECIPICEBLADES,
19665 PRESENT,
19666 PRISMATICLASER,
19667 PROTECT,
19668 PSYBEAM,
19669 PSYBLADE,
19670 PSYCHIC,
19671 PSYCHICFANGS,
19672 PSYCHICNOISE,
19673 PSYCHICTERRAIN,
19674 PSYCHOBOOST,
19675 PSYCHOCUT,
19676 PSYCHOSHIFT,
19677 PSYCHUP,
19678 PSYSHIELDBASH,
19679 PSYSHOCK,
19680 PSYSTRIKE,
19681 PSYWAVE,
19682 PUNISHMENT,
19683 PURIFY,
19684 PURSUIT,
19685 PYROBALL,
19686 QUASH,
19687 QUICKATTACK,
19688 QUICKGUARD,
19689 QUIVERDANCE,
19690 RAGE,
19691 RAGEFIST,
19692 RAGEPOWDER,
19693 RAGINGBULL,
19694 RAGINGFURY,
19695 RAINDANCE,
19696 RAPIDSPIN,
19697 RAZORLEAF,
19698 RAZORSHELL,
19699 RAZORWIND,
19700 RECHARGE,
19701 RECOVER,
19702 RECYCLE,
19703 REFLECT,
19704 REFLECTTYPE,
19705 REFRESH,
19706 RELICSONG,
19707 REST,
19708 RETALIATE,
19709 RETURN,
19710 RETURN102,
19711 REVELATIONDANCE,
19712 REVENGE,
19713 REVERSAL,
19714 REVIVALBLESSING,
19715 RISINGVOLTAGE,
19716 ROAR,
19717 ROAROFTIME,
19718 ROCKBLAST,
19719 ROCKCLIMB,
19720 ROCKPOLISH,
19721 ROCKSLIDE,
19722 ROCKSMASH,
19723 ROCKTHROW,
19724 ROCKTOMB,
19725 ROCKWRECKER,
19726 ROLEPLAY,
19727 ROLLINGKICK,
19728 ROLLOUT,
19729 ROOST,
19730 ROTOTILLER,
19731 ROUND,
19732 RUINATION,
19733 SACREDFIRE,
19734 SACREDSWORD,
19735 SAFEGUARD,
19736 SALTCURE,
19737 SANDATTACK,
19738 SANDSEARSTORM,
19739 SANDSTORM,
19740 SANDTOMB,
19741 SAPPYSEED,
19742 SCALD,
19743 SCALESHOT,
19744 SCARYFACE,
19745 SCORCHINGSANDS,
19746 SCRATCH,
19747 SCREECH,
19748 SEARINGSHOT,
19749 SECRETPOWER,
19750 SECRETSWORD,
19751 SEEDBOMB,
19752 SEEDFLARE,
19753 SEISMICTOSS,
19754 SELFDESTRUCT,
19755 SHADOWBALL,
19756 SHADOWBONE,
19757 SHADOWCLAW,
19758 SHADOWFORCE,
19759 SHADOWPUNCH,
19760 SHADOWSNEAK,
19761 SHADOWSTRIKE,
19762 SHARPEN,
19763 SHEDTAIL,
19764 SHEERCOLD,
19765 SHELLSIDEARM,
19766 SHELLSMASH,
19767 SHELLTRAP,
19768 SHELTER,
19769 SHIFTGEAR,
19770 SHOCKWAVE,
19771 SHOREUP,
19772 SIGNALBEAM,
19773 SILKTRAP,
19774 SILVERWIND,
19775 SIMPLEBEAM,
19776 SING,
19777 SIZZLYSLIDE,
19778 SKETCH,
19779 SKILLSWAP,
19780 SKITTERSMACK,
19781 SKULLBASH,
19782 SKYATTACK,
19783 SKYDROP,
19784 SKYUPPERCUT,
19785 SLACKOFF,
19786 SLAM,
19787 SLASH,
19788 SLEEPPOWDER,
19789 SLEEPTALK,
19790 SLUDGE,
19791 SLUDGEBOMB,
19792 SLUDGEWAVE,
19793 SMACKDOWN,
19794 SMARTSTRIKE,
19795 SMELLINGSALTS,
19796 SMOG,
19797 SMOKESCREEN,
19798 SNAPTRAP,
19799 SNARL,
19800 SNATCH,
19801 SNIPESHOT,
19802 SNORE,
19803 SNOWSCAPE,
19804 SOAK,
19805 SOFTBOILED,
19806 SOLARBEAM,
19807 SOLARBLADE,
19808 SONICBOOM,
19809 SPACIALREND,
19810 SPARK,
19811 SPARKLINGARIA,
19812 SPARKLYSWIRL,
19813 SPECTRALTHIEF,
19814 SPEEDSWAP,
19815 SPICYEXTRACT,
19816 SPIDERWEB,
19817 SPIKECANNON,
19818 SPIKES,
19819 SPIKYSHIELD,
19820 SPINOUT,
19821 SPIRITBREAK,
19822 SPIRITSHACKLE,
19823 SPITE,
19824 SPITUP,
19825 SPLASH,
19826 SPLISHYSPLASH,
19827 SPORE,
19828 SPOTLIGHT,
19829 SPRINGTIDESTORM,
19830 STEALTHROCK,
19831 STEAMERUPTION,
19832 STEAMROLLER,
19833 STEELBEAM,
19834 STEELROLLER,
19835 STEELWING,
19836 STICKYWEB,
19837 STOCKPILE,
19838 STOMP,
19839 STOMPINGTANTRUM,
19840 STONEAXE,
19841 STONEEDGE,
19842 STOREDPOWER,
19843 STORMTHROW,
19844 STRANGESTEAM,
19845 STRENGTH,
19846 STRENGTHSAP,
19847 STRINGSHOT,
19848 STRUGGLE,
19849 STRUGGLEBUG,
19850 STUFFCHEEKS,
19851 STUNSPORE,
19852 SUBMISSION,
19853 SUBSTITUTE,
19854 SUCKERPUNCH,
19855 SUNNYDAY,
19856 SUNSTEELSTRIKE,
19857 SUPERCELLSLAM,
19858 SUPERFANG,
19859 SUPERPOWER,
19860 SUPERSONIC,
19861 SURF,
19862 SURGINGSTRIKES,
19863 SWAGGER,
19864 SWALLOW,
19865 SWEETKISS,
19866 SWEETSCENT,
19867 SWIFT,
19868 SWITCHEROO,
19869 SWORDSDANCE,
19870 SYNCHRONOISE,
19871 SYNTHESIS,
19872 SYRUPBOMB,
19873 TACHYONCUTTER,
19874 TACKLE,
19875 TAILGLOW,
19876 TAILSLAP,
19877 TAILWHIP,
19878 TAILWIND,
19879 TAKEDOWN,
19880 TAKEHEART,
19881 TARSHOT,
19882 TAUNT,
19883 TEARFULLOOK,
19884 TEATIME,
19885 TECHNOBLAST,
19886 TEETERDANCE,
19887 TELEKINESIS,
19888 TELEPORT,
19889 TEMPERFLARE,
19890 TERABLAST,
19891 TERASTARSTORM,
19892 TERRAINPULSE,
19893 THIEF,
19894 THOUSANDARROWS,
19895 THOUSANDWAVES,
19896 THRASH,
19897 THROATCHOP,
19898 THUNDER,
19899 THUNDERBOLT,
19900 THUNDERCAGE,
19901 THUNDERCLAP,
19902 THUNDERFANG,
19903 THUNDEROUSKICK,
19904 THUNDERPUNCH,
19905 THUNDERSHOCK,
19906 THUNDERWAVE,
19907 TICKLE,
19908 TIDYUP,
19909 TOPSYTURVY,
19910 TORCHSONG,
19911 TORMENT,
19912 TOXIC,
19913 TOXICSPIKES,
19914 TOXICTHREAD,
19915 TRAILBLAZE,
19916 TRANSFORM,
19917 TRIATTACK,
19918 TRICK,
19919 TRICKORTREAT,
19920 TRICKROOM,
19921 TRIPLEARROWS,
19922 TRIPLEAXEL,
19923 TRIPLEDIVE,
19924 TRIPLEKICK,
19925 TROPKICK,
19926 TRUMPCARD,
19927 TWINBEAM,
19928 TWINEEDLE,
19929 TWISTER,
19930 UPPERHAND,
19931 UPROAR,
19932 UTURN,
19933 VACUUMWAVE,
19934 VCREATE,
19935 VEEVEEVOLLEY,
19936 VENOMDRENCH,
19937 VENOSHOCK,
19938 VICTORYDANCE,
19939 VINEWHIP,
19940 VISEGRIP,
19941 VITALTHROW,
19942 VOLTSWITCH,
19943 VOLTTACKLE,
19944 WAKEUPSLAP,
19945 WATERFALL,
19946 WATERGUN,
19947 WATERPLEDGE,
19948 WATERPULSE,
19949 WATERSHURIKEN,
19950 WATERSPORT,
19951 WATERSPOUT,
19952 WAVECRASH,
19953 WEATHERBALL,
19954 WHIRLPOOL,
19955 WHIRLWIND,
19956 WICKEDBLOW,
19957 WICKEDTORQUE,
19958 WIDEGUARD,
19959 WILDBOLTSTORM,
19960 WILDCHARGE,
19961 WILLOWISP,
19962 WINGATTACK,
19963 WISH,
19964 WITHDRAW,
19965 WONDERROOM,
19966 WOODHAMMER,
19967 WORKUP,
19968 WORRYSEED,
19969 WRAP,
19970 WRINGOUT,
19971 XSCISSOR,
19972 YAWN,
19973 ZAPCANNON,
19974 ZENHEADBUTT,
19975 ZINGZAP,
19976 ZIPPYZAP,
19977 },
19978 default = NONE
19979}
19980
19981impl Choices {
19982 pub fn is_hiddenpower(&self) -> bool {
19983 match self {
19984 Choices::HIDDENPOWER
19985 | Choices::HIDDENPOWERBUG60
19986 | Choices::HIDDENPOWERBUG70
19987 | Choices::HIDDENPOWERDARK60
19988 | Choices::HIDDENPOWERDARK70
19989 | Choices::HIDDENPOWERDRAGON60
19990 | Choices::HIDDENPOWERDRAGON70
19991 | Choices::HIDDENPOWERELECTRIC60
19992 | Choices::HIDDENPOWERELECTRIC70
19993 | Choices::HIDDENPOWERFIGHTING60
19994 | Choices::HIDDENPOWERFIGHTING70
19995 | Choices::HIDDENPOWERFIRE60
19996 | Choices::HIDDENPOWERFIRE70
19997 | Choices::HIDDENPOWERFLYING60
19998 | Choices::HIDDENPOWERFLYING70
19999 | Choices::HIDDENPOWERGHOST60
20000 | Choices::HIDDENPOWERGHOST70
20001 | Choices::HIDDENPOWERGRASS60
20002 | Choices::HIDDENPOWERGRASS70
20003 | Choices::HIDDENPOWERGROUND60
20004 | Choices::HIDDENPOWERGROUND70
20005 | Choices::HIDDENPOWERICE60
20006 | Choices::HIDDENPOWERICE70
20007 | Choices::HIDDENPOWERPOISON60
20008 | Choices::HIDDENPOWERPOISON70
20009 | Choices::HIDDENPOWERPSYCHIC60
20010 | Choices::HIDDENPOWERPSYCHIC70
20011 | Choices::HIDDENPOWERROCK60
20012 | Choices::HIDDENPOWERROCK70
20013 | Choices::HIDDENPOWERSTEEL60
20014 | Choices::HIDDENPOWERSTEEL70
20015 | Choices::HIDDENPOWERWATER60
20016 | Choices::HIDDENPOWERWATER70 => true,
20017 _ => false,
20018 }
20019 }
20020 pub fn increased_crit_ratio(&self) -> bool {
20021 match self {
20022 Choices::AEROBLAST
20023 | Choices::AIRCUTTER
20024 | Choices::AQUACUTTER
20025 | Choices::ATTACKORDER
20026 | Choices::BLAZEKICK
20027 | Choices::CRABHAMMER
20028 | Choices::CROSSCHOP
20029 | Choices::CROSSPOISON
20030 | Choices::DIRECLAW
20031 | Choices::DRILLRUN
20032 | Choices::ESPERWING
20033 | Choices::IVYCUDGEL
20034 | Choices::KARATECHOP
20035 | Choices::LEAFBLADE
20036 | Choices::NIGHTSLASH
20037 | Choices::POISONTAIL
20038 | Choices::PSYCHOCUT
20039 | Choices::RAZORLEAF
20040 | Choices::RAZORWIND
20041 | Choices::SHADOWCLAW
20042 | Choices::SKYATTACK
20043 | Choices::SLASH
20044 | Choices::SNIPESHOT
20045 | Choices::SPACIALREND
20046 | Choices::STONEEDGE
20047 | Choices::TRIPLEARROWS => true,
20048 _ => false,
20049 }
20050 }
20051 pub fn guaranteed_crit(&self) -> bool {
20052 match self {
20053 Choices::WICKEDBLOW
20054 | Choices::SURGINGSTRIKES
20055 | Choices::FLOWERTRICK
20056 | Choices::STORMTHROW
20057 | Choices::FROSTBREATH => true,
20058 _ => false,
20059 }
20060 }
20061}
20062
20063#[derive(Clone)]
20064pub struct Choice {
20065 pub move_id: Choices, pub move_index: PokemonMoveIndex,
20068 pub switch_id: PokemonIndex,
20069 pub move_type: PokemonType,
20070 pub accuracy: f32,
20071 pub category: MoveCategory,
20072 pub base_power: f32,
20073 pub boost: Option<Boost>,
20074 pub priority: i8,
20075 pub flags: Flags,
20076 pub drain: Option<f32>,
20077 pub recoil: Option<f32>,
20078 pub crash: Option<f32>,
20079 pub heal: Option<Heal>,
20080 pub status: Option<Status>,
20081 pub volatile_status: Option<VolatileStatus>,
20082 pub side_condition: Option<SideCondition>,
20083 pub secondaries: Option<Vec<Secondary>>,
20084
20085 pub target: MoveTarget,
20086
20087 pub first_move: bool,
20088 pub sleep_talk_move: bool,
20089}
20090
20091impl fmt::Debug for Choice {
20092 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20093 write!(f, "Choice: {:?}", self.move_id)
20094 }
20095}
20096
20097impl Choice {
20098 pub fn multi_accuracy(&self) -> MultiAccuracyMove {
20099 match self.move_id {
20100 Choices::TRIPLEAXEL => MultiAccuracyMove::TripleHit,
20101 Choices::TRIPLEKICK => MultiAccuracyMove::TripleHit,
20102 Choices::POPULATIONBOMB => MultiAccuracyMove::TenHits,
20103 _ => MultiAccuracyMove::None,
20104 }
20105 }
20106 pub fn multi_hit(&self) -> MultiHitMove {
20107 match self.move_id {
20108 Choices::ARMTHRUST => MultiHitMove::TwoToFiveHits,
20109 Choices::BARRAGE => MultiHitMove::TwoToFiveHits,
20110 Choices::BONEMERANG => MultiHitMove::DoubleHit,
20111 Choices::BONERUSH => MultiHitMove::TwoToFiveHits,
20112 Choices::BULLETSEED => MultiHitMove::TwoToFiveHits,
20113 Choices::COMETPUNCH => MultiHitMove::TwoToFiveHits,
20114 Choices::DOUBLEHIT => MultiHitMove::DoubleHit,
20115 Choices::DOUBLEIRONBASH => MultiHitMove::DoubleHit,
20116 Choices::DOUBLEKICK => MultiHitMove::DoubleHit,
20117 Choices::DOUBLESLAP => MultiHitMove::TwoToFiveHits,
20118 Choices::DRAGONDARTS => MultiHitMove::DoubleHit,
20119 Choices::DUALCHOP => MultiHitMove::DoubleHit,
20120 Choices::DUALWINGBEAT => MultiHitMove::DoubleHit,
20121 Choices::FURYATTACK => MultiHitMove::TwoToFiveHits,
20122 Choices::FURYSWIPES => MultiHitMove::TwoToFiveHits,
20123 Choices::GEARGRIND => MultiHitMove::DoubleHit,
20124 Choices::ICICLESPEAR => MultiHitMove::TwoToFiveHits,
20125 Choices::PINMISSILE => MultiHitMove::TwoToFiveHits,
20126 Choices::ROCKBLAST => MultiHitMove::TwoToFiveHits,
20127 Choices::SCALESHOT => MultiHitMove::TwoToFiveHits,
20128 Choices::SPIKECANNON => MultiHitMove::TwoToFiveHits,
20129 Choices::SURGINGSTRIKES => MultiHitMove::TripleHit,
20130 Choices::TACHYONCUTTER => MultiHitMove::DoubleHit,
20131 Choices::TAILSLAP => MultiHitMove::TwoToFiveHits,
20132 Choices::TRIPLEDIVE => MultiHitMove::TripleHit,
20133 Choices::TWINBEAM => MultiHitMove::DoubleHit,
20134 Choices::TWINEEDLE => MultiHitMove::DoubleHit,
20135 Choices::WATERSHURIKEN => MultiHitMove::TwoToFiveHits,
20136
20137 Choices::POPULATIONBOMB => MultiHitMove::PopulationBomb,
20140 Choices::TRIPLEAXEL => MultiHitMove::TripleAxel,
20141 _ => MultiHitMove::None,
20142 }
20143 }
20144 pub fn targets_special_defense(&self) -> bool {
20145 self.category == MoveCategory::Special
20146 && !(self.move_id == Choices::PSYSHOCK
20147 || self.move_id == Choices::SECRETSWORD
20148 || self.move_id == Choices::PSYSTRIKE)
20149 }
20150 pub fn add_or_create_secondaries(&mut self, secondary: Secondary) {
20151 if let Some(secondaries) = &mut self.secondaries {
20152 secondaries.push(secondary);
20153 } else {
20154 self.secondaries = Some(vec![secondary]);
20155 }
20156 }
20157 pub fn remove_effects_for_protect(&mut self) {
20158 self.base_power = 0.0;
20161 self.category = MoveCategory::Status;
20162 self.accuracy = 100.0;
20163 self.flags.drag = false;
20164 self.flags.pivot = false;
20165 self.heal = None;
20166 self.drain = None;
20167 self.recoil = None;
20168 self.boost = None;
20169 self.status = None;
20170 self.volatile_status = None;
20171 self.side_condition = None;
20172 self.secondaries = None;
20173 }
20174 pub fn remove_all_effects(&mut self) {
20175 self.category = MoveCategory::Status;
20176 self.flags.clear_all();
20177 self.base_power = 0.0;
20178 self.accuracy = 100.0;
20179 self.heal = None;
20180 self.drain = None;
20181 self.recoil = None;
20182 self.crash = None;
20183 self.heal = None;
20184 self.boost = None;
20185 self.status = None;
20186 self.volatile_status = None;
20187 self.side_condition = None;
20188 self.secondaries = None;
20189 }
20190}
20191
20192impl Default for Choice {
20193 fn default() -> Choice {
20194 Choice {
20195 move_id: Choices::NONE,
20196 move_index: PokemonMoveIndex::M0,
20197 switch_id: PokemonIndex::P0,
20198 move_type: PokemonType::NORMAL,
20199 accuracy: 100.0,
20200 category: MoveCategory::Status,
20201 base_power: 0.0,
20202 boost: None,
20203 priority: 0,
20204 flags: Flags {
20205 ..Default::default()
20206 },
20207 drain: None,
20208 recoil: None,
20209 crash: None,
20210 heal: None,
20211 status: None,
20212 volatile_status: None,
20213 side_condition: None,
20214 secondaries: None,
20215 target: MoveTarget::Opponent,
20216 first_move: true,
20217 sleep_talk_move: false,
20218 }
20219 }
20220}
20221
20222pub fn undo_physical_special_split(moves: &mut HashMap<Choices, Choice>) {
20223 for (_, choice) in moves.iter_mut() {
20224 if choice.category == MoveCategory::Status {
20225 continue;
20226 }
20227 match choice.move_type {
20228 PokemonType::NORMAL
20229 | PokemonType::FIGHTING
20230 | PokemonType::POISON
20231 | PokemonType::GROUND
20232 | PokemonType::FLYING
20233 | PokemonType::BUG
20234 | PokemonType::ROCK
20235 | PokemonType::GHOST
20236 | PokemonType::STEEL => {
20237 choice.category = MoveCategory::Physical;
20238 }
20239 _ => {
20240 choice.category = MoveCategory::Special;
20241 }
20242 }
20243 }
20244}