1use crate::define_enum_with_from_str;
2use crate::state::PokemonVolatileStatus;
3use crate::state::{PokemonBoostableStat, PokemonSideCondition};
4use crate::state::{PokemonIndex, PokemonStatus};
5use crate::state::{PokemonMoveIndex, PokemonType};
6use lazy_static::lazy_static;
7use std::collections::HashMap;
8use std::fmt;
9
10lazy_static! {
11 pub static ref MOVES: HashMap<Choices, Choice> = {
12 let mut moves: HashMap<Choices, Choice> = HashMap::new();
13 moves.insert(
14 Choices::NONE,
15 Choice {
16 move_id: Choices::NONE,
17 ..Default::default()
18 },
19 );
20 moves.insert(
21 Choices::ABSORB,
22 Choice {
23 move_id: Choices::ABSORB,
24 base_power: 20.0,
25 category: MoveCategory::Special,
26 move_type: PokemonType::GRASS,
27 flags: Flags {
28 heal: true,
29 protect: true,
30 ..Default::default()
31 },
32 drain: Some(0.5),
33 ..Default::default()
34 },
35 );
36 moves.insert(
37 Choices::ACCELEROCK,
38 Choice {
39 move_id: Choices::ACCELEROCK,
40 base_power: 40.0,
41 category: MoveCategory::Physical,
42 priority: 1,
43 move_type: PokemonType::ROCK,
44 flags: Flags {
45 contact: true,
46 protect: true,
47 ..Default::default()
48 },
49 ..Default::default()
50 },
51 );
52 if cfg!(feature = "gen1") {
53 moves.insert(
54 Choices::ACID,
55 Choice {
56 move_id: Choices::ACID,
57 base_power: 40.0,
58 category: MoveCategory::Special,
59 move_type: PokemonType::POISON,
60 flags: Flags {
61 protect: true,
62 ..Default::default()
63 },
64 secondaries: Some(vec![Secondary {
65 chance: 33.2,
66 target: MoveTarget::Opponent,
67 effect: Effect::Boost(StatBoosts {
68 attack: 0,
69 defense: -1,
70 special_attack: 0,
71 special_defense: 0,
72 speed: 0,
73 accuracy: 0,
74 }),
75 }]),
76 ..Default::default()
77 },
78 );
79 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") {
80 moves.insert(
81 Choices::ACID,
82 Choice {
83 move_id: Choices::ACID,
84 base_power: 40.0,
85 category: MoveCategory::Special,
86 move_type: PokemonType::POISON,
87 flags: Flags {
88 protect: true,
89 ..Default::default()
90 },
91 secondaries: Some(vec![Secondary {
92 chance: 10.0,
93 target: MoveTarget::Opponent,
94 effect: Effect::Boost(StatBoosts {
95 attack: 0,
96 defense: -1,
97 special_attack: 0,
98 special_defense: 0,
99 speed: 0,
100 accuracy: 0,
101 }),
102 }]),
103 ..Default::default()
104 },
105 );
106 } else {
107 moves.insert(
108 Choices::ACID,
109 Choice {
110 move_id: Choices::ACID,
111 base_power: 40.0,
112 category: MoveCategory::Special,
113 move_type: PokemonType::POISON,
114 flags: Flags {
115 protect: true,
116 ..Default::default()
117 },
118 secondaries: Some(vec![Secondary {
119 chance: 10.0,
120 target: MoveTarget::Opponent,
121 effect: Effect::Boost(StatBoosts {
122 attack: 0,
123 defense: 0,
124 special_attack: 0,
125 special_defense: -1,
126 speed: 0,
127 accuracy: 0,
128 }),
129 }]),
130 ..Default::default()
131 },
132 );
133 }
134 moves.insert(
135 Choices::ACIDARMOR,
136 Choice {
137 move_id: Choices::ACIDARMOR,
138 target: MoveTarget::User,
139 move_type: PokemonType::POISON,
140 flags: Flags {
141 ..Default::default()
142 },
143 boost: Some(Boost {
144 target: MoveTarget::User,
145 boosts: StatBoosts {
146 attack: 0,
147 defense: 2,
148 special_attack: 0,
149 special_defense: 0,
150 speed: 0,
151 accuracy: 0,
152 },
153 }),
154 ..Default::default()
155 },
156 );
157 moves.insert(
158 Choices::ACIDSPRAY,
159 Choice {
160 move_id: Choices::ACIDSPRAY,
161 base_power: 40.0,
162 category: MoveCategory::Special,
163 move_type: PokemonType::POISON,
164 flags: Flags {
165 bullet: true,
166 protect: true,
167 ..Default::default()
168 },
169 secondaries: Some(vec![Secondary {
170 chance: 100.0,
171 target: MoveTarget::Opponent,
172 effect: Effect::Boost(StatBoosts {
173 attack: 0,
174 defense: 0,
175 special_attack: 0,
176 special_defense: -2,
177 speed: 0,
178 accuracy: 0,
179 }),
180 }]),
181 ..Default::default()
182 },
183 );
184 moves.insert(
185 Choices::ACROBATICS,
186 Choice {
187 move_id: Choices::ACROBATICS,
188 base_power: 55.0,
189 category: MoveCategory::Physical,
190 move_type: PokemonType::FLYING,
191 flags: Flags {
192 contact: true,
193 protect: true,
194 ..Default::default()
195 },
196 ..Default::default()
197 },
198 );
199 moves.insert(
200 Choices::ACUPRESSURE,
201 Choice {
202 move_id: Choices::ACUPRESSURE,
203 target: MoveTarget::User,
204 move_type: PokemonType::NORMAL,
205 flags: Flags {
206 ..Default::default()
207 },
208 ..Default::default()
209 },
210 );
211 moves.insert(
212 Choices::AERIALACE,
213 Choice {
214 move_id: Choices::AERIALACE,
215 base_power: 60.0,
216 category: MoveCategory::Physical,
217 move_type: PokemonType::FLYING,
218 flags: Flags {
219 contact: true,
220 protect: true,
221 slicing: true,
222 ..Default::default()
223 },
224 ..Default::default()
225 },
226 );
227 moves.insert(
228 Choices::AEROBLAST,
229 Choice {
230 move_id: Choices::AEROBLAST,
231 accuracy: 95.0,
232 base_power: 100.0,
233 category: MoveCategory::Special,
234 move_type: PokemonType::FLYING,
235 flags: Flags {
236 protect: true,
237 wind: true,
238 ..Default::default()
239 },
240 ..Default::default()
241 },
242 );
243 moves.insert(
244 Choices::AFTERYOU,
245 Choice {
246 move_id: Choices::AFTERYOU,
247 move_type: PokemonType::NORMAL,
248 flags: Flags {
249 ..Default::default()
250 },
251 ..Default::default()
252 },
253 );
254 moves.insert(
255 Choices::AGILITY,
256 Choice {
257 move_id: Choices::AGILITY,
258 target: MoveTarget::User,
259 move_type: PokemonType::PSYCHIC,
260 flags: Flags {
261 ..Default::default()
262 },
263 boost: Some(Boost {
264 target: MoveTarget::User,
265 boosts: StatBoosts {
266 attack: 0,
267 defense: 0,
268 special_attack: 0,
269 special_defense: 0,
270 speed: 2,
271 accuracy: 0,
272 },
273 }),
274 ..Default::default()
275 },
276 );
277 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
278 moves.insert(
279 Choices::AIRCUTTER,
280 Choice {
281 move_id: Choices::AIRCUTTER,
282 accuracy: 95.0,
283 base_power: 55.0,
284 category: MoveCategory::Special,
285 move_type: PokemonType::FLYING,
286 flags: Flags {
287 protect: true,
288 slicing: true,
289 wind: true,
290 ..Default::default()
291 },
292 ..Default::default()
293 },
294 );
295 } else {
296 moves.insert(
297 Choices::AIRCUTTER,
298 Choice {
299 move_id: Choices::AIRCUTTER,
300 accuracy: 95.0,
301 base_power: 60.0,
302 category: MoveCategory::Special,
303 move_type: PokemonType::FLYING,
304 flags: Flags {
305 protect: true,
306 ..Default::default()
307 },
308 ..Default::default()
309 },
310 );
311 }
312 moves.insert(
313 Choices::AIRSLASH,
314 Choice {
315 move_id: Choices::AIRSLASH,
316 accuracy: 95.0,
317 base_power: 75.0,
318 category: MoveCategory::Special,
319 move_type: PokemonType::FLYING,
320 flags: Flags {
321 protect: true,
322 slicing: true,
323 ..Default::default()
324 },
325 secondaries: Some(vec![Secondary {
326 chance: 30.0,
327 target: MoveTarget::Opponent,
328 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
329 }]),
330 ..Default::default()
331 },
332 );
333 moves.insert(
334 Choices::ALLURINGVOICE,
335 Choice {
336 base_power: 80.0,
337 category: MoveCategory::Special,
338 move_id: Choices::ALLURINGVOICE,
339 move_type: PokemonType::FAIRY,
340 flags: Flags {
341 sound: true,
342 protect: true,
343 ..Default::default()
344 },
345 ..Default::default()
346 },
347 );
348 moves.insert(
349 Choices::ALLYSWITCH,
350 Choice {
351 move_id: Choices::ALLYSWITCH,
352 priority: 2,
353 target: MoveTarget::User,
354 move_type: PokemonType::PSYCHIC,
355 flags: Flags {
356 ..Default::default()
357 },
358 ..Default::default()
359 },
360 );
361 if cfg!(feature = "gen1") {
362 moves.insert(
363 Choices::AMNESIA,
364 Choice {
365 move_id: Choices::AMNESIA,
366 target: MoveTarget::User,
367 move_type: PokemonType::PSYCHIC,
368 flags: Flags {
369 ..Default::default()
370 },
371 boost: Some(Boost {
372 target: MoveTarget::User,
373 boosts: StatBoosts {
374 attack: 0,
375 defense: 0,
376 special_attack: 2,
377 special_defense: 0,
378 speed: 0,
379 accuracy: 0,
380 },
381 }),
382 ..Default::default()
383 },
384 );
385 } else {
386 moves.insert(
387 Choices::AMNESIA,
388 Choice {
389 move_id: Choices::AMNESIA,
390 target: MoveTarget::User,
391 move_type: PokemonType::PSYCHIC,
392 flags: Flags {
393 ..Default::default()
394 },
395 boost: Some(Boost {
396 target: MoveTarget::User,
397 boosts: StatBoosts {
398 attack: 0,
399 defense: 0,
400 special_attack: 0,
401 special_defense: 2,
402 speed: 0,
403 accuracy: 0,
404 },
405 }),
406 ..Default::default()
407 },
408 );
409 }
410 moves.insert(
411 Choices::ANCHORSHOT,
412 Choice {
413 move_id: Choices::ANCHORSHOT,
414 base_power: 80.0,
415 category: MoveCategory::Physical,
416 move_type: PokemonType::STEEL,
417 flags: Flags {
418 contact: true,
419 protect: true,
420 ..Default::default()
421 },
422 ..Default::default()
423 },
424 );
425 moves.insert(
426 Choices::ANCIENTPOWER,
427 Choice {
428 move_id: Choices::ANCIENTPOWER,
429 base_power: 60.0,
430 category: MoveCategory::Special,
431 move_type: PokemonType::ROCK,
432 flags: Flags {
433 protect: true,
434 ..Default::default()
435 },
436 secondaries: Some(vec![Secondary {
437 chance: 10.0,
438 target: MoveTarget::User,
439 effect: Effect::Boost(StatBoosts {
440 attack: 1,
441 defense: 1,
442 special_attack: 1,
443 special_defense: 1,
444 speed: 1,
445 accuracy: 0,
446 }),
447 }]),
448 ..Default::default()
449 },
450 );
451 moves.insert(
452 Choices::APPLEACID,
453 Choice {
454 move_id: Choices::APPLEACID,
455 base_power: 80.0,
456 category: MoveCategory::Special,
457 move_type: PokemonType::GRASS,
458 flags: Flags {
459 protect: true,
460 ..Default::default()
461 },
462 secondaries: Some(vec![Secondary {
463 chance: 100.0,
464 target: MoveTarget::Opponent,
465 effect: Effect::Boost(StatBoosts {
466 attack: 0,
467 defense: 0,
468 special_attack: 0,
469 special_defense: -1,
470 speed: 0,
471 accuracy: 0,
472 }),
473 }]),
474 ..Default::default()
475 },
476 );
477 moves.insert(
478 Choices::AQUACUTTER,
479 Choice {
480 move_id: Choices::AQUACUTTER,
481 base_power: 70.0,
482 category: MoveCategory::Physical,
483 move_type: PokemonType::WATER,
484 flags: Flags {
485 protect: true,
486 slicing: true,
487 ..Default::default()
488 },
489 ..Default::default()
490 },
491 );
492 moves.insert(
493 Choices::AQUAJET,
494 Choice {
495 move_id: Choices::AQUAJET,
496 base_power: 40.0,
497 category: MoveCategory::Physical,
498 priority: 1,
499 move_type: PokemonType::WATER,
500 flags: Flags {
501 contact: true,
502 protect: true,
503 ..Default::default()
504 },
505 ..Default::default()
506 },
507 );
508 moves.insert(
509 Choices::AQUARING,
510 Choice {
511 move_id: Choices::AQUARING,
512 target: MoveTarget::User,
513 move_type: PokemonType::WATER,
514 flags: Flags {
515 ..Default::default()
516 },
517 volatile_status: Some(VolatileStatus {
518 target: MoveTarget::User,
519 volatile_status: PokemonVolatileStatus::AQUARING,
520 }),
521 ..Default::default()
522 },
523 );
524 moves.insert(
525 Choices::AQUASTEP,
526 Choice {
527 move_id: Choices::AQUASTEP,
528 base_power: 80.0,
529 category: MoveCategory::Physical,
530 move_type: PokemonType::WATER,
531 flags: Flags {
532 contact: true,
533 protect: true,
534 ..Default::default()
535 },
536 secondaries: Some(vec![Secondary {
537 chance: 100.0,
538 target: MoveTarget::User,
539 effect: Effect::Boost(StatBoosts {
540 attack: 0,
541 defense: 0,
542 special_attack: 0,
543 special_defense: 0,
544 speed: 1,
545 accuracy: 0,
546 }),
547 }]),
548 ..Default::default()
549 },
550 );
551 moves.insert(
552 Choices::AQUATAIL,
553 Choice {
554 move_id: Choices::AQUATAIL,
555 accuracy: 90.0,
556 base_power: 90.0,
557 category: MoveCategory::Physical,
558 move_type: PokemonType::WATER,
559 flags: Flags {
560 contact: true,
561 protect: true,
562 ..Default::default()
563 },
564 ..Default::default()
565 },
566 );
567 moves.insert(
568 Choices::ARMORCANNON,
569 Choice {
570 move_id: Choices::ARMORCANNON,
571 base_power: 120.0,
572 category: MoveCategory::Special,
573 move_type: PokemonType::FIRE,
574 flags: Flags {
575 protect: true,
576 ..Default::default()
577 },
578 ..Default::default()
579 },
580 );
581 moves.insert(
582 Choices::ARMTHRUST,
583 Choice {
584 move_id: Choices::ARMTHRUST,
585 base_power: 15.0,
586 category: MoveCategory::Physical,
587 move_type: PokemonType::FIGHTING,
588 flags: Flags {
589 contact: true,
590 protect: true,
591 ..Default::default()
592 },
593 ..Default::default()
594 },
595 );
596 moves.insert(
597 Choices::AROMATHERAPY,
598 Choice {
599 move_id: Choices::AROMATHERAPY,
600 target: MoveTarget::User,
601 move_type: PokemonType::GRASS,
602 flags: Flags {
603 ..Default::default()
604 },
605 ..Default::default()
606 },
607 );
608 moves.insert(
609 Choices::AROMATICMIST,
610 Choice {
611 move_id: Choices::AROMATICMIST,
612 target: MoveTarget::User,
613 move_type: PokemonType::FAIRY,
614 flags: Flags {
615 ..Default::default()
616 },
617 boost: Some(Boost {
618 target: MoveTarget::User,
619 boosts: StatBoosts {
620 attack: 0,
621 defense: 0,
622 special_attack: 0,
623 special_defense: 1,
624 speed: 0,
625 accuracy: 0,
626 },
627 }),
628 ..Default::default()
629 },
630 );
631 moves.insert(
632 Choices::ASSIST,
633 Choice {
634 move_id: Choices::ASSIST,
635 target: MoveTarget::User,
636 move_type: PokemonType::NORMAL,
637 flags: Flags {
638 ..Default::default()
639 },
640 ..Default::default()
641 },
642 );
643 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
644 moves.insert(
645 Choices::ASSURANCE,
646 Choice {
647 move_id: Choices::ASSURANCE,
648 base_power: 50.0,
649 category: MoveCategory::Physical,
650 move_type: PokemonType::DARK,
651 flags: Flags {
652 contact: true,
653 protect: true,
654 ..Default::default()
655 },
656 ..Default::default()
657 },
658 );
659 } else {
660 moves.insert(
661 Choices::ASSURANCE,
662 Choice {
663 move_id: Choices::ASSURANCE,
664 base_power: 60.0,
665 category: MoveCategory::Physical,
666 move_type: PokemonType::DARK,
667 flags: Flags {
668 contact: true,
669 protect: true,
670 ..Default::default()
671 },
672 ..Default::default()
673 },
674 );
675 }
676 moves.insert(
677 Choices::ASTONISH,
678 Choice {
679 move_id: Choices::ASTONISH,
680 base_power: 30.0,
681 category: MoveCategory::Physical,
682 move_type: PokemonType::GHOST,
683 flags: Flags {
684 contact: true,
685 protect: true,
686 ..Default::default()
687 },
688 secondaries: Some(vec![Secondary {
689 chance: 30.0,
690 target: MoveTarget::Opponent,
691 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
692 }]),
693 ..Default::default()
694 },
695 );
696 moves.insert(
697 Choices::ASTRALBARRAGE,
698 Choice {
699 move_id: Choices::ASTRALBARRAGE,
700 base_power: 120.0,
701 category: MoveCategory::Special,
702 move_type: PokemonType::GHOST,
703 flags: Flags {
704 protect: true,
705 ..Default::default()
706 },
707 ..Default::default()
708 },
709 );
710 moves.insert(
711 Choices::ATTACKORDER,
712 Choice {
713 move_id: Choices::ATTACKORDER,
714 base_power: 90.0,
715 category: MoveCategory::Physical,
716 move_type: PokemonType::BUG,
717 flags: Flags {
718 protect: true,
719 ..Default::default()
720 },
721 ..Default::default()
722 },
723 );
724 moves.insert(
725 Choices::ATTRACT,
726 Choice {
727 move_id: Choices::ATTRACT,
728 move_type: PokemonType::NORMAL,
729 flags: Flags {
730 protect: true,
731 reflectable: true,
732 ..Default::default()
733 },
734 volatile_status: Some(VolatileStatus {
735 target: MoveTarget::Opponent,
736 volatile_status: PokemonVolatileStatus::ATTRACT,
737 }),
738 ..Default::default()
739 },
740 );
741 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
742 moves.insert(
743 Choices::AURASPHERE,
744 Choice {
745 move_id: Choices::AURASPHERE,
746 base_power: 90.0,
747 category: MoveCategory::Special,
748 move_type: PokemonType::FIGHTING,
749 flags: Flags {
750 bullet: true,
751 protect: true,
752 pulse: true,
753 ..Default::default()
754 },
755 ..Default::default()
756 },
757 );
758 } else {
759 moves.insert(
760 Choices::AURASPHERE,
761 Choice {
762 move_id: Choices::AURASPHERE,
763 base_power: 80.0,
764 category: MoveCategory::Special,
765 move_type: PokemonType::FIGHTING,
766 flags: Flags {
767 bullet: true,
768 protect: true,
769 pulse: true,
770 ..Default::default()
771 },
772 ..Default::default()
773 },
774 );
775 }
776 moves.insert(
777 Choices::AURAWHEEL,
778 Choice {
779 move_id: Choices::AURAWHEEL,
780 base_power: 110.0,
781 category: MoveCategory::Physical,
782 move_type: PokemonType::ELECTRIC,
783 flags: Flags {
784 protect: true,
785 ..Default::default()
786 },
787 secondaries: Some(vec![Secondary {
788 chance: 100.0,
789 target: MoveTarget::User,
790 effect: Effect::Boost(StatBoosts {
791 attack: 0,
792 defense: 0,
793 special_attack: 0,
794 special_defense: 0,
795 speed: 1,
796 accuracy: 0,
797 }),
798 }]),
799 ..Default::default()
800 },
801 );
802 if cfg!(feature = "gen1") {
803 moves.insert(
804 Choices::AURORABEAM,
805 Choice {
806 move_id: Choices::AURORABEAM,
807 base_power: 65.0,
808 category: MoveCategory::Special,
809 move_type: PokemonType::ICE,
810 flags: Flags {
811 protect: true,
812 ..Default::default()
813 },
814 secondaries: Some(vec![Secondary {
815 chance: 33.2,
816 target: MoveTarget::Opponent,
817 effect: Effect::Boost(StatBoosts {
818 attack: -1,
819 defense: 0,
820 special_attack: 0,
821 special_defense: 0,
822 speed: 0,
823 accuracy: 0,
824 }),
825 }]),
826 ..Default::default()
827 },
828 );
829 } else {
830 moves.insert(
831 Choices::AURORABEAM,
832 Choice {
833 move_id: Choices::AURORABEAM,
834 base_power: 65.0,
835 category: MoveCategory::Special,
836 move_type: PokemonType::ICE,
837 flags: Flags {
838 protect: true,
839 ..Default::default()
840 },
841 secondaries: Some(vec![Secondary {
842 chance: 10.0,
843 target: MoveTarget::Opponent,
844 effect: Effect::Boost(StatBoosts {
845 attack: -1,
846 defense: 0,
847 special_attack: 0,
848 special_defense: 0,
849 speed: 0,
850 accuracy: 0,
851 }),
852 }]),
853 ..Default::default()
854 },
855 );
856 }
857 moves.insert(
858 Choices::AURORAVEIL,
859 Choice {
860 move_id: Choices::AURORAVEIL,
861 target: MoveTarget::User,
862 move_type: PokemonType::ICE,
863 flags: Flags {
864 ..Default::default()
865 },
866 side_condition: Some(SideCondition {
867 target: MoveTarget::User,
868 condition: PokemonSideCondition::AuroraVeil,
869 }),
870 ..Default::default()
871 },
872 );
873 moves.insert(
874 Choices::AUTOTOMIZE,
875 Choice {
876 move_id: Choices::AUTOTOMIZE,
877 target: MoveTarget::User,
878 move_type: PokemonType::STEEL,
879 flags: Flags {
880 ..Default::default()
881 },
882 boost: Some(Boost {
883 target: MoveTarget::User,
884 boosts: StatBoosts {
885 attack: 0,
886 defense: 0,
887 special_attack: 0,
888 special_defense: 0,
889 speed: 2,
890 accuracy: 0,
891 },
892 }),
893 ..Default::default()
894 },
895 );
896 moves.insert(
897 Choices::AVALANCHE,
898 Choice {
899 move_id: Choices::AVALANCHE,
900 base_power: 60.0,
901 category: MoveCategory::Physical,
902 priority: -4,
903 move_type: PokemonType::ICE,
904 flags: Flags {
905 contact: true,
906 protect: true,
907 ..Default::default()
908 },
909 ..Default::default()
910 },
911 );
912 moves.insert(
913 Choices::AXEKICK,
914 Choice {
915 move_id: Choices::AXEKICK,
916 accuracy: 90.0,
917 base_power: 120.0,
918 category: MoveCategory::Physical,
919 move_type: PokemonType::FIGHTING,
920 flags: Flags {
921 contact: true,
922 protect: true,
923 ..Default::default()
924 },
925 secondaries: Some(vec![Secondary {
926 chance: 30.0,
927 target: MoveTarget::Opponent,
928 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
929 }]),
930 crash: Some(0.5),
931 ..Default::default()
932 },
933 );
934 moves.insert(
935 Choices::BABYDOLLEYES,
936 Choice {
937 move_id: Choices::BABYDOLLEYES,
938 priority: 1,
939 move_type: PokemonType::FAIRY,
940 flags: Flags {
941 protect: true,
942 reflectable: true,
943 ..Default::default()
944 },
945 boost: Some(Boost {
946 target: MoveTarget::Opponent,
947 boosts: StatBoosts {
948 attack: -1,
949 defense: 0,
950 special_attack: 0,
951 special_defense: 0,
952 speed: 0,
953 accuracy: 0,
954 },
955 }),
956 ..Default::default()
957 },
958 );
959 moves.insert(
960 Choices::BADDYBAD,
961 Choice {
962 move_id: Choices::BADDYBAD,
963 accuracy: 95.0,
964 base_power: 80.0,
965 category: MoveCategory::Special,
966 move_type: PokemonType::DARK,
967 flags: Flags {
968 protect: true,
969 ..Default::default()
970 },
971 ..Default::default()
972 },
973 );
974 moves.insert(
975 Choices::BANEFULBUNKER,
976 Choice {
977 move_id: Choices::BANEFULBUNKER,
978 priority: 4,
979 target: MoveTarget::User,
980 move_type: PokemonType::POISON,
981 flags: Flags {
982 ..Default::default()
983 },
984 volatile_status: Some(VolatileStatus {
985 target: MoveTarget::User,
986 volatile_status: PokemonVolatileStatus::BANEFULBUNKER,
987 }),
988 ..Default::default()
989 },
990 );
991 moves.insert(
992 Choices::BARBBARRAGE,
993 Choice {
994 move_id: Choices::BARBBARRAGE,
995 base_power: 60.0,
996 category: MoveCategory::Physical,
997 move_type: PokemonType::POISON,
998 flags: Flags {
999 protect: true,
1000 ..Default::default()
1001 },
1002 secondaries: Some(vec![Secondary {
1003 chance: 50.0,
1004 target: MoveTarget::Opponent,
1005 effect: Effect::Status(PokemonStatus::POISON),
1006 }]),
1007 ..Default::default()
1008 },
1009 );
1010 moves.insert(
1011 Choices::BARRAGE,
1012 Choice {
1013 move_id: Choices::BARRAGE,
1014 accuracy: 85.0,
1015 base_power: 15.0,
1016 category: MoveCategory::Physical,
1017 move_type: PokemonType::NORMAL,
1018 flags: Flags {
1019 bullet: true,
1020 protect: true,
1021 ..Default::default()
1022 },
1023 ..Default::default()
1024 },
1025 );
1026 moves.insert(
1027 Choices::BARRIER,
1028 Choice {
1029 move_id: Choices::BARRIER,
1030 target: MoveTarget::User,
1031 move_type: PokemonType::PSYCHIC,
1032 flags: Flags {
1033 ..Default::default()
1034 },
1035 boost: Some(Boost {
1036 target: MoveTarget::User,
1037 boosts: StatBoosts {
1038 attack: 0,
1039 defense: 2,
1040 special_attack: 0,
1041 special_defense: 0,
1042 speed: 0,
1043 accuracy: 0,
1044 },
1045 }),
1046 ..Default::default()
1047 },
1048 );
1049 moves.insert(
1050 Choices::BATONPASS,
1051 Choice {
1052 move_id: Choices::BATONPASS,
1053 target: MoveTarget::User,
1054 move_type: PokemonType::NORMAL,
1055 flags: Flags {
1056 pivot: true,
1057 ..Default::default()
1058 },
1059 ..Default::default()
1060 },
1061 );
1062 moves.insert(
1063 Choices::BEAKBLAST,
1064 Choice {
1065 move_id: Choices::BEAKBLAST,
1066 base_power: 100.0,
1067 category: MoveCategory::Physical,
1068 priority: -3,
1069 move_type: PokemonType::FLYING,
1070 flags: Flags {
1071 bullet: true,
1072 protect: true,
1073 ..Default::default()
1074 },
1075 ..Default::default()
1076 },
1077 );
1078 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1079 moves.insert(
1080 Choices::BEATUP,
1081 Choice {
1082 base_power: 10.0,
1083 move_id: Choices::BEATUP,
1084 category: MoveCategory::Physical,
1085 move_type: PokemonType::DARK,
1086 flags: Flags {
1087 protect: true,
1088 ..Default::default()
1089 },
1090 ..Default::default()
1091 },
1092 );
1093 } else {
1094 moves.insert(
1095 Choices::BEATUP,
1096 Choice {
1097 move_id: Choices::BEATUP,
1098 category: MoveCategory::Physical,
1099 move_type: PokemonType::DARK,
1100 flags: Flags {
1101 protect: true,
1102 ..Default::default()
1103 },
1104 ..Default::default()
1105 },
1106 );
1107 }
1108 moves.insert(
1109 Choices::BEHEMOTHBASH,
1110 Choice {
1111 move_id: Choices::BEHEMOTHBASH,
1112 base_power: 100.0,
1113 category: MoveCategory::Physical,
1114 move_type: PokemonType::STEEL,
1115 flags: Flags {
1116 contact: true,
1117 protect: true,
1118 ..Default::default()
1119 },
1120 ..Default::default()
1121 },
1122 );
1123 moves.insert(
1124 Choices::BEHEMOTHBLADE,
1125 Choice {
1126 move_id: Choices::BEHEMOTHBLADE,
1127 base_power: 100.0,
1128 category: MoveCategory::Physical,
1129 move_type: PokemonType::STEEL,
1130 flags: Flags {
1131 contact: true,
1132 protect: true,
1133 slicing: true,
1134 ..Default::default()
1135 },
1136 ..Default::default()
1137 },
1138 );
1139 moves.insert(
1140 Choices::BELCH,
1141 Choice {
1142 move_id: Choices::BELCH,
1143 accuracy: 90.0,
1144 base_power: 120.0,
1145 category: MoveCategory::Special,
1146 move_type: PokemonType::POISON,
1147 flags: Flags {
1148 protect: true,
1149 ..Default::default()
1150 },
1151 ..Default::default()
1152 },
1153 );
1154 moves.insert(
1155 Choices::BELLYDRUM,
1156 Choice {
1157 move_id: Choices::BELLYDRUM,
1158 target: MoveTarget::User,
1159 move_type: PokemonType::NORMAL,
1160 flags: Flags {
1161 ..Default::default()
1162 },
1163 ..Default::default()
1164 },
1165 );
1166 moves.insert(
1167 Choices::BESTOW,
1168 Choice {
1169 move_id: Choices::BESTOW,
1170 move_type: PokemonType::NORMAL,
1171 flags: Flags {
1172 ..Default::default()
1173 },
1174 ..Default::default()
1175 },
1176 );
1177 moves.insert(
1178 Choices::BIDE,
1179 Choice {
1180 move_id: Choices::BIDE,
1181 category: MoveCategory::Physical,
1182 priority: 1,
1183 target: MoveTarget::User,
1184 move_type: PokemonType::NORMAL,
1185 flags: Flags {
1186 contact: true,
1187 protect: true,
1188 ..Default::default()
1189 },
1190 volatile_status: Some(VolatileStatus {
1191 target: MoveTarget::User,
1192 volatile_status: PokemonVolatileStatus::BIDE,
1193 }),
1194 ..Default::default()
1195 },
1196 );
1197 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1198 moves.insert(
1199 Choices::BIND,
1200 Choice {
1201 move_id: Choices::BIND,
1202 accuracy: 75.0,
1203 base_power: 15.0,
1204 category: MoveCategory::Physical,
1205 move_type: PokemonType::NORMAL,
1206 flags: Flags {
1207 contact: true,
1208 protect: true,
1209 ..Default::default()
1210 },
1211 volatile_status: Some(VolatileStatus {
1212 target: MoveTarget::Opponent,
1213 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
1214 }),
1215 ..Default::default()
1216 },
1217 );
1218 } else {
1219 moves.insert(
1220 Choices::BIND,
1221 Choice {
1222 move_id: Choices::BIND,
1223 accuracy: 85.0,
1224 base_power: 15.0,
1225 category: MoveCategory::Physical,
1226 move_type: PokemonType::NORMAL,
1227 flags: Flags {
1228 contact: true,
1229 protect: true,
1230 ..Default::default()
1231 },
1232 volatile_status: Some(VolatileStatus {
1233 target: MoveTarget::Opponent,
1234 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
1235 }),
1236 ..Default::default()
1237 },
1238 );
1239 }
1240 if cfg!(feature = "gen1") {
1241 moves.insert(
1242 Choices::BITE,
1243 Choice {
1244 move_id: Choices::BITE,
1245 base_power: 60.0,
1246 category: MoveCategory::Physical,
1247 move_type: PokemonType::NORMAL,
1248 flags: Flags {
1249 bite: true,
1250 contact: true,
1251 protect: true,
1252 ..Default::default()
1253 },
1254 secondaries: Some(vec![Secondary {
1255 chance: 10.0,
1256 target: MoveTarget::Opponent,
1257 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1258 }]),
1259 ..Default::default()
1260 },
1261 );
1262 } else {
1263 moves.insert(
1264 Choices::BITE,
1265 Choice {
1266 move_id: Choices::BITE,
1267 base_power: 60.0,
1268 category: MoveCategory::Physical,
1269 move_type: PokemonType::DARK,
1270 flags: Flags {
1271 bite: true,
1272 contact: true,
1273 protect: true,
1274 ..Default::default()
1275 },
1276 secondaries: Some(vec![Secondary {
1277 chance: 30.0,
1278 target: MoveTarget::Opponent,
1279 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1280 }]),
1281 ..Default::default()
1282 },
1283 );
1284 }
1285 moves.insert(
1286 Choices::BITTERBLADE,
1287 Choice {
1288 move_id: Choices::BITTERBLADE,
1289 base_power: 90.0,
1290 category: MoveCategory::Physical,
1291 move_type: PokemonType::FIRE,
1292 flags: Flags {
1293 contact: true,
1294 protect: true,
1295 slicing: true,
1296 heal: true,
1297 ..Default::default()
1298 },
1299 drain: Some(0.5),
1300 ..Default::default()
1301 },
1302 );
1303 moves.insert(
1304 Choices::BITTERMALICE,
1305 Choice {
1306 move_id: Choices::BITTERMALICE,
1307 base_power: 75.0,
1308 category: MoveCategory::Special,
1309 move_type: PokemonType::GHOST,
1310 flags: Flags {
1311 protect: true,
1312 ..Default::default()
1313 },
1314 secondaries: Some(vec![Secondary {
1315 chance: 100.0,
1316 target: MoveTarget::Opponent,
1317 effect: Effect::Boost(StatBoosts {
1318 attack: -1,
1319 defense: 0,
1320 special_attack: 0,
1321 special_defense: 0,
1322 speed: 0,
1323 accuracy: 0,
1324 }),
1325 }]),
1326 ..Default::default()
1327 },
1328 );
1329 moves.insert(
1330 Choices::BLASTBURN,
1331 Choice {
1332 move_id: Choices::BLASTBURN,
1333 accuracy: 90.0,
1334 base_power: 150.0,
1335 category: MoveCategory::Special,
1336 move_type: PokemonType::FIRE,
1337 flags: Flags {
1338 protect: true,
1339 recharge: true,
1340 ..Default::default()
1341 },
1342 ..Default::default()
1343 },
1344 );
1345 moves.insert(
1346 Choices::BLAZEKICK,
1347 Choice {
1348 move_id: Choices::BLAZEKICK,
1349 accuracy: 90.0,
1350 base_power: 85.0,
1351 category: MoveCategory::Physical,
1352 move_type: PokemonType::FIRE,
1353 flags: Flags {
1354 contact: true,
1355 protect: true,
1356 ..Default::default()
1357 },
1358 secondaries: Some(vec![Secondary {
1359 chance: 10.0,
1360 target: MoveTarget::Opponent,
1361 effect: Effect::Status(PokemonStatus::BURN),
1362 }]),
1363 ..Default::default()
1364 },
1365 );
1366 moves.insert(
1367 Choices::BLAZINGTORQUE,
1368 Choice {
1369 move_id: Choices::BLAZINGTORQUE,
1370 base_power: 80.0,
1371 category: MoveCategory::Physical,
1372 move_type: PokemonType::FIRE,
1373 flags: Flags {
1374 protect: true,
1375 ..Default::default()
1376 },
1377 secondaries: Some(vec![Secondary {
1378 chance: 30.0,
1379 target: MoveTarget::Opponent,
1380 effect: Effect::Status(PokemonStatus::BURN),
1381 }]),
1382 ..Default::default()
1383 },
1384 );
1385 moves.insert(
1386 Choices::BLEAKWINDSTORM,
1387 Choice {
1388 move_id: Choices::BLEAKWINDSTORM,
1389 accuracy: 80.0,
1390 base_power: 100.0,
1391 category: MoveCategory::Special,
1392 move_type: PokemonType::FLYING,
1393 flags: Flags {
1394 protect: true,
1395 wind: true,
1396 ..Default::default()
1397 },
1398 secondaries: Some(vec![Secondary {
1399 chance: 30.0,
1400 target: MoveTarget::Opponent,
1401 effect: Effect::Boost(StatBoosts {
1402 attack: 0,
1403 defense: 0,
1404 special_attack: 0,
1405 special_defense: 0,
1406 speed: -1,
1407 accuracy: 0,
1408 }),
1409 }]),
1410 ..Default::default()
1411 },
1412 );
1413 if cfg!(feature = "gen1") {
1414 moves.insert(
1415 Choices::BLIZZARD,
1416 Choice {
1417 move_id: Choices::BLIZZARD,
1418 accuracy: 90.0,
1419 base_power: 120.0,
1420 category: MoveCategory::Special,
1421 move_type: PokemonType::ICE,
1422 flags: Flags {
1423 protect: true,
1424 wind: true,
1425 ..Default::default()
1426 },
1427 secondaries: Some(vec![Secondary {
1428 chance: 10.0,
1429 target: MoveTarget::Opponent,
1430 effect: Effect::Status(PokemonStatus::FREEZE),
1431 }]),
1432 ..Default::default()
1433 },
1434 );
1435 }
1436 else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
1437 moves.insert(
1438 Choices::BLIZZARD,
1439 Choice {
1440 move_id: Choices::BLIZZARD,
1441 accuracy: 70.0,
1442 base_power: 120.0,
1443 category: MoveCategory::Special,
1444 move_type: PokemonType::ICE,
1445 flags: Flags {
1446 protect: true,
1447 wind: true,
1448 ..Default::default()
1449 },
1450 secondaries: Some(vec![Secondary {
1451 chance: 10.0,
1452 target: MoveTarget::Opponent,
1453 effect: Effect::Status(PokemonStatus::FREEZE),
1454 }]),
1455 ..Default::default()
1456 },
1457 );
1458 } else {
1459 moves.insert(
1460 Choices::BLIZZARD,
1461 Choice {
1462 move_id: Choices::BLIZZARD,
1463 accuracy: 70.0,
1464 base_power: 110.0,
1465 category: MoveCategory::Special,
1466 move_type: PokemonType::ICE,
1467 flags: Flags {
1468 protect: true,
1469 ..Default::default()
1470 },
1471 secondaries: Some(vec![Secondary {
1472 chance: 10.0,
1473 target: MoveTarget::Opponent,
1474 effect: Effect::Status(PokemonStatus::FREEZE),
1475 }]),
1476 ..Default::default()
1477 },
1478 );
1479 }
1480 moves.insert(
1481 Choices::BLOCK,
1482 Choice {
1483 move_id: Choices::BLOCK,
1484 move_type: PokemonType::NORMAL,
1485 flags: Flags {
1486 reflectable: true,
1487 ..Default::default()
1488 },
1489 ..Default::default()
1490 },
1491 );
1492 moves.insert(
1493 Choices::BLOODMOON,
1494 Choice {
1495 move_id: Choices::BLOODMOON,
1496 base_power: 140.0,
1497 category: MoveCategory::Special,
1498 move_type: PokemonType::NORMAL,
1499 flags: Flags {
1500 protect: true,
1501 ..Default::default()
1502 },
1503 ..Default::default()
1504 },
1505 );
1506 moves.insert(
1507 Choices::BLUEFLARE,
1508 Choice {
1509 move_id: Choices::BLUEFLARE,
1510 accuracy: 85.0,
1511 base_power: 130.0,
1512 category: MoveCategory::Special,
1513 move_type: PokemonType::FIRE,
1514 flags: Flags {
1515 protect: true,
1516 ..Default::default()
1517 },
1518 secondaries: Some(vec![Secondary {
1519 chance: 20.0,
1520 target: MoveTarget::Opponent,
1521 effect: Effect::Status(PokemonStatus::BURN),
1522 }]),
1523 ..Default::default()
1524 },
1525 );
1526 moves.insert(
1527 Choices::BODYPRESS,
1528 Choice {
1529 move_id: Choices::BODYPRESS,
1530 base_power: 80.0,
1531 category: MoveCategory::Physical,
1532 move_type: PokemonType::FIGHTING,
1533 flags: Flags {
1534 contact: true,
1535 protect: true,
1536 ..Default::default()
1537 },
1538 ..Default::default()
1539 },
1540 );
1541 moves.insert(
1542 Choices::BODYSLAM,
1543 Choice {
1544 move_id: Choices::BODYSLAM,
1545 base_power: 85.0,
1546 category: MoveCategory::Physical,
1547 move_type: PokemonType::NORMAL,
1548 flags: Flags {
1549 contact: true,
1550 protect: true,
1551 ..Default::default()
1552 },
1553 secondaries: Some(vec![Secondary {
1554 chance: 30.0,
1555 target: MoveTarget::Opponent,
1556 effect: Effect::Status(PokemonStatus::PARALYZE),
1557 }]),
1558 ..Default::default()
1559 },
1560 );
1561 moves.insert(
1562 Choices::BOLTBEAK,
1563 Choice {
1564 move_id: Choices::BOLTBEAK,
1565 base_power: 85.0,
1566 category: MoveCategory::Physical,
1567 move_type: PokemonType::ELECTRIC,
1568 flags: Flags {
1569 contact: true,
1570 protect: true,
1571 ..Default::default()
1572 },
1573 ..Default::default()
1574 },
1575 );
1576 moves.insert(
1577 Choices::BOLTSTRIKE,
1578 Choice {
1579 move_id: Choices::BOLTSTRIKE,
1580 accuracy: 85.0,
1581 base_power: 130.0,
1582 category: MoveCategory::Physical,
1583 move_type: PokemonType::ELECTRIC,
1584 flags: Flags {
1585 contact: true,
1586 protect: true,
1587 ..Default::default()
1588 },
1589 secondaries: Some(vec![Secondary {
1590 chance: 20.0,
1591 target: MoveTarget::Opponent,
1592 effect: Effect::Status(PokemonStatus::PARALYZE),
1593 }]),
1594 ..Default::default()
1595 },
1596 );
1597 moves.insert(
1598 Choices::BONECLUB,
1599 Choice {
1600 move_id: Choices::BONECLUB,
1601 accuracy: 85.0,
1602 base_power: 65.0,
1603 category: MoveCategory::Physical,
1604 move_type: PokemonType::GROUND,
1605 flags: Flags {
1606 protect: true,
1607 ..Default::default()
1608 },
1609 secondaries: Some(vec![Secondary {
1610 chance: 10.0,
1611 target: MoveTarget::Opponent,
1612 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
1613 }]),
1614 ..Default::default()
1615 },
1616 );
1617 moves.insert(
1618 Choices::BONEMERANG,
1619 Choice {
1620 move_id: Choices::BONEMERANG,
1621 accuracy: 90.0,
1622 base_power: 50.0,
1623 category: MoveCategory::Physical,
1624 move_type: PokemonType::GROUND,
1625 flags: Flags {
1626 protect: true,
1627 ..Default::default()
1628 },
1629 ..Default::default()
1630 },
1631 );
1632 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
1633 moves.insert(
1634 Choices::BONERUSH,
1635 Choice {
1636 move_id: Choices::BONERUSH,
1637 accuracy: 80.0,
1638 base_power: 25.0,
1639 category: MoveCategory::Physical,
1640 move_type: PokemonType::GROUND,
1641 flags: Flags {
1642 protect: true,
1643 ..Default::default()
1644 },
1645 ..Default::default()
1646 },
1647 );
1648 } else {
1649 moves.insert(
1650 Choices::BONERUSH,
1651 Choice {
1652 move_id: Choices::BONERUSH,
1653 accuracy: 90.0,
1654 base_power: 25.0,
1655 category: MoveCategory::Physical,
1656 move_type: PokemonType::GROUND,
1657 flags: Flags {
1658 protect: true,
1659 ..Default::default()
1660 },
1661 ..Default::default()
1662 },
1663 );
1664 }
1665 moves.insert(
1666 Choices::BOOMBURST,
1667 Choice {
1668 move_id: Choices::BOOMBURST,
1669 base_power: 140.0,
1670 category: MoveCategory::Special,
1671 move_type: PokemonType::NORMAL,
1672 flags: Flags {
1673 protect: true,
1674 sound: true,
1675 ..Default::default()
1676 },
1677 ..Default::default()
1678 },
1679 );
1680 moves.insert(
1681 Choices::BOUNCE,
1682 Choice {
1683 move_id: Choices::BOUNCE,
1684 accuracy: 85.0,
1685 base_power: 85.0,
1686 category: MoveCategory::Physical,
1687 move_type: PokemonType::FLYING,
1688 flags: Flags {
1689 charge: true,
1690 contact: true,
1691 protect: true,
1692 ..Default::default()
1693 },
1694 secondaries: Some(vec![Secondary {
1695 chance: 30.0,
1696 target: MoveTarget::Opponent,
1697 effect: Effect::Status(PokemonStatus::PARALYZE),
1698 }]),
1699 ..Default::default()
1700 },
1701 );
1702 moves.insert(
1703 Choices::BOUNCYBUBBLE,
1704 Choice {
1705 move_id: Choices::BOUNCYBUBBLE,
1706 base_power: 60.0,
1707 category: MoveCategory::Special,
1708 move_type: PokemonType::WATER,
1709 flags: Flags {
1710 heal: true,
1711 protect: true,
1712 ..Default::default()
1713 },
1714 drain: Some(0.5),
1715 ..Default::default()
1716 },
1717 );
1718 moves.insert(
1719 Choices::BRANCHPOKE,
1720 Choice {
1721 move_id: Choices::BRANCHPOKE,
1722 base_power: 40.0,
1723 category: MoveCategory::Physical,
1724 move_type: PokemonType::GRASS,
1725 flags: Flags {
1726 contact: true,
1727 protect: true,
1728 ..Default::default()
1729 },
1730 ..Default::default()
1731 },
1732 );
1733 moves.insert(
1734 Choices::BRAVEBIRD,
1735 Choice {
1736 move_id: Choices::BRAVEBIRD,
1737 base_power: 120.0,
1738 category: MoveCategory::Physical,
1739 move_type: PokemonType::FLYING,
1740 flags: Flags {
1741 contact: true,
1742 protect: true,
1743 ..Default::default()
1744 },
1745 recoil: Some(0.33),
1746 ..Default::default()
1747 },
1748 );
1749 moves.insert(
1750 Choices::BREAKINGSWIPE,
1751 Choice {
1752 move_id: Choices::BREAKINGSWIPE,
1753 base_power: 60.0,
1754 category: MoveCategory::Physical,
1755 move_type: PokemonType::DRAGON,
1756 flags: Flags {
1757 contact: true,
1758 protect: true,
1759 ..Default::default()
1760 },
1761 secondaries: Some(vec![Secondary {
1762 chance: 100.0,
1763 target: MoveTarget::Opponent,
1764 effect: Effect::Boost(StatBoosts {
1765 attack: -1,
1766 defense: 0,
1767 special_attack: 0,
1768 special_defense: 0,
1769 speed: 0,
1770 accuracy: 0,
1771 }),
1772 }]),
1773 ..Default::default()
1774 },
1775 );
1776 moves.insert(
1777 Choices::BRICKBREAK,
1778 Choice {
1779 move_id: Choices::BRICKBREAK,
1780 base_power: 75.0,
1781 category: MoveCategory::Physical,
1782 move_type: PokemonType::FIGHTING,
1783 flags: Flags {
1784 contact: true,
1785 protect: true,
1786 ..Default::default()
1787 },
1788 ..Default::default()
1789 },
1790 );
1791 moves.insert(
1792 Choices::BRINE,
1793 Choice {
1794 move_id: Choices::BRINE,
1795 base_power: 65.0,
1796 category: MoveCategory::Special,
1797 move_type: PokemonType::WATER,
1798 flags: Flags {
1799 protect: true,
1800 ..Default::default()
1801 },
1802 ..Default::default()
1803 },
1804 );
1805 moves.insert(
1806 Choices::BRUTALSWING,
1807 Choice {
1808 move_id: Choices::BRUTALSWING,
1809 base_power: 60.0,
1810 category: MoveCategory::Physical,
1811 move_type: PokemonType::DARK,
1812 flags: Flags {
1813 contact: true,
1814 protect: true,
1815 ..Default::default()
1816 },
1817 ..Default::default()
1818 },
1819 );
1820 if cfg!(feature = "gen1") {
1821 moves.insert(
1822 Choices::BUBBLE,
1823 Choice {
1824 move_id: Choices::BUBBLE,
1825 base_power: 20.0,
1826 category: MoveCategory::Special,
1827 move_type: PokemonType::WATER,
1828 flags: Flags {
1829 protect: true,
1830 ..Default::default()
1831 },
1832 secondaries: Some(vec![Secondary {
1833 chance: 33.2,
1834 target: MoveTarget::Opponent,
1835 effect: Effect::Boost(StatBoosts {
1836 attack: 0,
1837 defense: 0,
1838 special_attack: 0,
1839 special_defense: 0,
1840 speed: -1,
1841 accuracy: 0,
1842 }),
1843 }]),
1844 ..Default::default()
1845 },
1846 );
1847 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
1848 moves.insert(
1849 Choices::BUBBLE,
1850 Choice {
1851 move_id: Choices::BUBBLE,
1852 base_power: 20.0,
1853 category: MoveCategory::Special,
1854 move_type: PokemonType::WATER,
1855 flags: Flags {
1856 protect: true,
1857 ..Default::default()
1858 },
1859 secondaries: Some(vec![Secondary {
1860 chance: 10.0,
1861 target: MoveTarget::Opponent,
1862 effect: Effect::Boost(StatBoosts {
1863 attack: 0,
1864 defense: 0,
1865 special_attack: 0,
1866 special_defense: 0,
1867 speed: -1,
1868 accuracy: 0,
1869 }),
1870 }]),
1871 ..Default::default()
1872 },
1873 );
1874 } else {
1875 moves.insert(
1876 Choices::BUBBLE,
1877 Choice {
1878 move_id: Choices::BUBBLE,
1879 base_power: 40.0,
1880 category: MoveCategory::Special,
1881 move_type: PokemonType::WATER,
1882 flags: Flags {
1883 protect: true,
1884 ..Default::default()
1885 },
1886 secondaries: Some(vec![Secondary {
1887 chance: 10.0,
1888 target: MoveTarget::Opponent,
1889 effect: Effect::Boost(StatBoosts {
1890 attack: 0,
1891 defense: 0,
1892 special_attack: 0,
1893 special_defense: 0,
1894 speed: -1,
1895 accuracy: 0,
1896 }),
1897 }]),
1898 ..Default::default()
1899 },
1900 );
1901 }
1902 if cfg!(feature = "gen1") {
1903 moves.insert(
1904 Choices::BUBBLEBEAM,
1905 Choice {
1906 move_id: Choices::BUBBLEBEAM,
1907 base_power: 65.0,
1908 category: MoveCategory::Special,
1909 move_type: PokemonType::WATER,
1910 flags: Flags {
1911 protect: true,
1912 ..Default::default()
1913 },
1914 secondaries: Some(vec![Secondary {
1915 chance: 33.2,
1916 target: MoveTarget::Opponent,
1917 effect: Effect::Boost(StatBoosts {
1918 attack: 0,
1919 defense: 0,
1920 special_attack: 0,
1921 special_defense: 0,
1922 speed: -1,
1923 accuracy: 0,
1924 }),
1925 }]),
1926 ..Default::default()
1927 },
1928 );
1929 } else {
1930 moves.insert(
1931 Choices::BUBBLEBEAM,
1932 Choice {
1933 move_id: Choices::BUBBLEBEAM,
1934 base_power: 65.0,
1935 category: MoveCategory::Special,
1936 move_type: PokemonType::WATER,
1937 flags: Flags {
1938 protect: true,
1939 ..Default::default()
1940 },
1941 secondaries: Some(vec![Secondary {
1942 chance: 10.0,
1943 target: MoveTarget::Opponent,
1944 effect: Effect::Boost(StatBoosts {
1945 attack: 0,
1946 defense: 0,
1947 special_attack: 0,
1948 special_defense: 0,
1949 speed: -1,
1950 accuracy: 0,
1951 }),
1952 }]),
1953 ..Default::default()
1954 },
1955 );
1956 }
1957 moves.insert(
1958 Choices::BUGBITE,
1959 Choice {
1960 move_id: Choices::BUGBITE,
1961 base_power: 60.0,
1962 category: MoveCategory::Physical,
1963 move_type: PokemonType::BUG,
1964 flags: Flags {
1965 contact: true,
1966 protect: true,
1967 ..Default::default()
1968 },
1969 ..Default::default()
1970 },
1971 );
1972 moves.insert(
1973 Choices::BUGBUZZ,
1974 Choice {
1975 move_id: Choices::BUGBUZZ,
1976 base_power: 90.0,
1977 category: MoveCategory::Special,
1978 move_type: PokemonType::BUG,
1979 flags: Flags {
1980 protect: true,
1981 sound: true,
1982 ..Default::default()
1983 },
1984 secondaries: Some(vec![Secondary {
1985 chance: 10.0,
1986 target: MoveTarget::Opponent,
1987 effect: Effect::Boost(StatBoosts {
1988 attack: 0,
1989 defense: 0,
1990 special_attack: 0,
1991 special_defense: -1,
1992 speed: 0,
1993 accuracy: 0,
1994 }),
1995 }]),
1996 ..Default::default()
1997 },
1998 );
1999 moves.insert(
2000 Choices::BULKUP,
2001 Choice {
2002 move_id: Choices::BULKUP,
2003 target: MoveTarget::User,
2004 move_type: PokemonType::FIGHTING,
2005 flags: Flags {
2006 ..Default::default()
2007 },
2008 boost: Some(Boost {
2009 target: MoveTarget::User,
2010 boosts: StatBoosts {
2011 attack: 1,
2012 defense: 1,
2013 special_attack: 0,
2014 special_defense: 0,
2015 speed: 0,
2016 accuracy: 0,
2017 },
2018 }),
2019 ..Default::default()
2020 },
2021 );
2022 moves.insert(
2023 Choices::BULLDOZE,
2024 Choice {
2025 move_id: Choices::BULLDOZE,
2026 base_power: 60.0,
2027 category: MoveCategory::Physical,
2028 move_type: PokemonType::GROUND,
2029 flags: Flags {
2030 protect: true,
2031 ..Default::default()
2032 },
2033 secondaries: Some(vec![Secondary {
2034 chance: 100.0,
2035 target: MoveTarget::Opponent,
2036 effect: Effect::Boost(StatBoosts {
2037 attack: 0,
2038 defense: 0,
2039 special_attack: 0,
2040 special_defense: 0,
2041 speed: -1,
2042 accuracy: 0,
2043 }),
2044 }]),
2045 ..Default::default()
2046 },
2047 );
2048 moves.insert(
2049 Choices::BULLETPUNCH,
2050 Choice {
2051 move_id: Choices::BULLETPUNCH,
2052 base_power: 40.0,
2053 category: MoveCategory::Physical,
2054 priority: 1,
2055 move_type: PokemonType::STEEL,
2056 flags: Flags {
2057 contact: true,
2058 protect: true,
2059 punch: true,
2060 ..Default::default()
2061 },
2062 ..Default::default()
2063 },
2064 );
2065 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2066 moves.insert(
2067 Choices::BULLETSEED,
2068 Choice {
2069 move_id: Choices::BULLETSEED,
2070 base_power: 10.0,
2071 category: MoveCategory::Physical,
2072 move_type: PokemonType::GRASS,
2073 flags: Flags {
2074 bullet: true,
2075 protect: true,
2076 ..Default::default()
2077 },
2078 ..Default::default()
2079 },
2080 );
2081 } else {
2082 moves.insert(
2083 Choices::BULLETSEED,
2084 Choice {
2085 move_id: Choices::BULLETSEED,
2086 base_power: 25.0,
2087 category: MoveCategory::Physical,
2088 move_type: PokemonType::GRASS,
2089 flags: Flags {
2090 bullet: true,
2091 protect: true,
2092 ..Default::default()
2093 },
2094 ..Default::default()
2095 },
2096 );
2097 }
2098 moves.insert(
2099 Choices::BURNINGBULWARK,
2100 Choice {
2101 move_id: Choices::BURNINGBULWARK,
2102 category: MoveCategory::Status,
2103 move_type: PokemonType::FIRE,
2104 priority: 4,
2105 flags: Flags {
2106 ..Default::default()
2107 },
2108 volatile_status: Some(VolatileStatus {
2109 target: MoveTarget::User,
2110 volatile_status: PokemonVolatileStatus::BURNINGBULWARK,
2111 }),
2112 ..Default::default()
2113 },
2114 );
2115 moves.insert(
2116 Choices::BURNINGJEALOUSY,
2117 Choice {
2118 move_id: Choices::BURNINGJEALOUSY,
2119 base_power: 70.0,
2120 category: MoveCategory::Special,
2121 move_type: PokemonType::FIRE,
2122 flags: Flags {
2123 protect: true,
2124 ..Default::default()
2125 },
2126 ..Default::default()
2127 },
2128 );
2129 moves.insert(
2130 Choices::BURNUP,
2131 Choice {
2132 move_id: Choices::BURNUP,
2133 base_power: 130.0,
2134 category: MoveCategory::Special,
2135 move_type: PokemonType::FIRE,
2136 flags: Flags {
2137 protect: true,
2138 ..Default::default()
2139 },
2140 ..Default::default()
2141 },
2142 );
2143 moves.insert(
2144 Choices::BUZZYBUZZ,
2145 Choice {
2146 move_id: Choices::BUZZYBUZZ,
2147 base_power: 60.0,
2148 category: MoveCategory::Special,
2149 move_type: PokemonType::ELECTRIC,
2150 flags: Flags {
2151 protect: true,
2152 ..Default::default()
2153 },
2154 secondaries: Some(vec![Secondary {
2155 chance: 100.0,
2156 target: MoveTarget::Opponent,
2157 effect: Effect::Status(PokemonStatus::PARALYZE),
2158 }]),
2159 ..Default::default()
2160 },
2161 );
2162 moves.insert(
2163 Choices::CALMMIND,
2164 Choice {
2165 move_id: Choices::CALMMIND,
2166 target: MoveTarget::User,
2167 move_type: PokemonType::PSYCHIC,
2168 flags: Flags {
2169 ..Default::default()
2170 },
2171 boost: Some(Boost {
2172 target: MoveTarget::User,
2173 boosts: StatBoosts {
2174 attack: 0,
2175 defense: 0,
2176 special_attack: 1,
2177 special_defense: 1,
2178 speed: 0,
2179 accuracy: 0,
2180 },
2181 }),
2182 ..Default::default()
2183 },
2184 );
2185 moves.insert(
2186 Choices::CAMOUFLAGE,
2187 Choice {
2188 move_id: Choices::CAMOUFLAGE,
2189 target: MoveTarget::User,
2190 move_type: PokemonType::NORMAL,
2191 flags: Flags {
2192 ..Default::default()
2193 },
2194 ..Default::default()
2195 },
2196 );
2197 moves.insert(
2198 Choices::CAPTIVATE,
2199 Choice {
2200 move_id: Choices::CAPTIVATE,
2201 move_type: PokemonType::NORMAL,
2202 flags: Flags {
2203 protect: true,
2204 reflectable: true,
2205 ..Default::default()
2206 },
2207 boost: Some(Boost {
2208 target: MoveTarget::Opponent,
2209 boosts: StatBoosts {
2210 attack: 0,
2211 defense: 0,
2212 special_attack: -2,
2213 special_defense: 0,
2214 speed: 0,
2215 accuracy: 0,
2216 },
2217 }),
2218 ..Default::default()
2219 },
2220 );
2221 moves.insert(
2222 Choices::CEASELESSEDGE,
2223 Choice {
2224 move_id: Choices::CEASELESSEDGE,
2225 accuracy: 90.0,
2226 base_power: 65.0,
2227 category: MoveCategory::Physical,
2228 move_type: PokemonType::DARK,
2229 flags: Flags {
2230 contact: true,
2231 protect: true,
2232 slicing: true,
2233 ..Default::default()
2234 },
2235 side_condition: Some(SideCondition {
2236 target: MoveTarget::Opponent,
2237 condition: PokemonSideCondition::Spikes,
2238 }),
2239 ..Default::default()
2240 },
2241 );
2242 moves.insert(
2243 Choices::CELEBRATE,
2244 Choice {
2245 move_id: Choices::CELEBRATE,
2246 target: MoveTarget::User,
2247 move_type: PokemonType::NORMAL,
2248 flags: Flags {
2249 ..Default::default()
2250 },
2251 ..Default::default()
2252 },
2253 );
2254 moves.insert(
2255 Choices::CHARGE,
2256 Choice {
2257 move_id: Choices::CHARGE,
2258 target: MoveTarget::User,
2259 move_type: PokemonType::ELECTRIC,
2260 flags: Flags {
2261 ..Default::default()
2262 },
2263 boost: Some(Boost {
2264 target: MoveTarget::User,
2265 boosts: StatBoosts {
2266 attack: 0,
2267 defense: 0,
2268 special_attack: 0,
2269 special_defense: 1,
2270 speed: 0,
2271 accuracy: 0,
2272 },
2273 }),
2274 volatile_status: Some(VolatileStatus {
2275 target: MoveTarget::User,
2276 volatile_status: PokemonVolatileStatus::CHARGE,
2277 }),
2278 ..Default::default()
2279 },
2280 );
2281 moves.insert(
2282 Choices::CHARGEBEAM,
2283 Choice {
2284 move_id: Choices::CHARGEBEAM,
2285 accuracy: 90.0,
2286 base_power: 50.0,
2287 category: MoveCategory::Special,
2288 move_type: PokemonType::ELECTRIC,
2289 flags: Flags {
2290 protect: true,
2291 ..Default::default()
2292 },
2293 secondaries: Some(vec![Secondary {
2294 chance: 70.0,
2295 target: MoveTarget::User,
2296 effect: Effect::Boost(StatBoosts {
2297 attack: 0,
2298 defense: 0,
2299 special_attack: 1,
2300 special_defense: 0,
2301 speed: 0,
2302 accuracy: 0,
2303 }),
2304 }]),
2305 ..Default::default()
2306 },
2307 );
2308 moves.insert(
2309 Choices::CHARM,
2310 Choice {
2311 move_id: Choices::CHARM,
2312 move_type: PokemonType::FAIRY,
2313 flags: Flags {
2314 protect: true,
2315 reflectable: true,
2316 ..Default::default()
2317 },
2318 boost: Some(Boost {
2319 target: MoveTarget::Opponent,
2320 boosts: StatBoosts {
2321 attack: -2,
2322 defense: 0,
2323 special_attack: 0,
2324 special_defense: 0,
2325 speed: 0,
2326 accuracy: 0,
2327 },
2328 }),
2329 ..Default::default()
2330 },
2331 );
2332 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
2333 moves.insert(
2334 Choices::CHATTER,
2335 Choice {
2336 move_id: Choices::CHATTER,
2337 base_power: 65.0,
2338 category: MoveCategory::Special,
2339 move_type: PokemonType::FLYING,
2340 flags: Flags {
2341 protect: true,
2342 sound: true,
2343 ..Default::default()
2344 },
2345 secondaries: Some(vec![Secondary {
2346 chance: 100.0,
2347 target: MoveTarget::Opponent,
2348 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2349 }]),
2350 ..Default::default()
2351 },
2352 );
2353 } else {
2354 moves.insert(
2355 Choices::CHATTER,
2356 Choice {
2357 move_id: Choices::CHATTER,
2358 base_power: 65.0,
2359 category: MoveCategory::Special,
2360 move_type: PokemonType::FLYING,
2361 flags: Flags {
2362 protect: true,
2363 sound: true,
2364 ..Default::default()
2365 },
2366 secondaries: Some(vec![Secondary {
2367 chance: 100.0,
2368 target: MoveTarget::Opponent,
2369 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2370 }]),
2371 ..Default::default()
2372 },
2373 );
2374 }
2375 moves.insert(
2376 Choices::CHILLINGWATER,
2377 Choice {
2378 move_id: Choices::CHILLINGWATER,
2379 base_power: 50.0,
2380 category: MoveCategory::Special,
2381 move_type: PokemonType::WATER,
2382 flags: Flags {
2383 protect: true,
2384 ..Default::default()
2385 },
2386 secondaries: Some(vec![Secondary {
2387 chance: 100.0,
2388 target: MoveTarget::Opponent,
2389 effect: Effect::Boost(StatBoosts {
2390 attack: -1,
2391 defense: 0,
2392 special_attack: 0,
2393 special_defense: 0,
2394 speed: 0,
2395 accuracy: 0,
2396 }),
2397 }]),
2398 ..Default::default()
2399 },
2400 );
2401 moves.insert(
2402 Choices::CHILLYRECEPTION,
2403 Choice {
2404 move_id: Choices::CHILLYRECEPTION,
2405 move_type: PokemonType::ICE,
2406 flags: Flags {
2407 pivot: true,
2408 ..Default::default()
2409 },
2410 ..Default::default()
2411 },
2412 );
2413 moves.insert(
2414 Choices::CHIPAWAY,
2415 Choice {
2416 move_id: Choices::CHIPAWAY,
2417 base_power: 70.0,
2418 category: MoveCategory::Physical,
2419 move_type: PokemonType::NORMAL,
2420 flags: Flags {
2421 contact: true,
2422 protect: true,
2423 ..Default::default()
2424 },
2425 ..Default::default()
2426 },
2427 );
2428 moves.insert(
2429 Choices::CHLOROBLAST,
2430 Choice {
2431 move_id: Choices::CHLOROBLAST,
2432 accuracy: 95.0,
2433 base_power: 150.0,
2434 category: MoveCategory::Special,
2435 move_type: PokemonType::GRASS,
2436 flags: Flags {
2437 protect: true,
2438 ..Default::default()
2439 },
2440 heal: Some(Heal {
2441 target: MoveTarget::User,
2442 amount: -0.5,
2443 }),
2444 ..Default::default()
2445 },
2446 );
2447 moves.insert(
2448 Choices::CIRCLETHROW,
2449 Choice {
2450 move_id: Choices::CIRCLETHROW,
2451 accuracy: 90.0,
2452 base_power: 60.0,
2453 category: MoveCategory::Physical,
2454 priority: -6,
2455 move_type: PokemonType::FIGHTING,
2456 flags: Flags {
2457 contact: true,
2458 drag: true,
2459 protect: true,
2460 ..Default::default()
2461 },
2462 ..Default::default()
2463 },
2464 );
2465 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2466 moves.insert(
2467 Choices::CLAMP,
2468 Choice {
2469 move_id: Choices::CLAMP,
2470 accuracy: 75.0,
2471 base_power: 35.0,
2472 category: MoveCategory::Physical,
2473 move_type: PokemonType::WATER,
2474 flags: Flags {
2475 contact: true,
2476 protect: true,
2477 ..Default::default()
2478 },
2479 volatile_status: Some(VolatileStatus {
2480 target: MoveTarget::Opponent,
2481 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
2482 }),
2483 ..Default::default()
2484 },
2485 );
2486 } else {
2487 moves.insert(
2488 Choices::CLAMP,
2489 Choice {
2490 move_id: Choices::CLAMP,
2491 accuracy: 85.0,
2492 base_power: 35.0,
2493 category: MoveCategory::Physical,
2494 move_type: PokemonType::WATER,
2495 flags: Flags {
2496 contact: true,
2497 protect: true,
2498 ..Default::default()
2499 },
2500 volatile_status: Some(VolatileStatus {
2501 target: MoveTarget::Opponent,
2502 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
2503 }),
2504 ..Default::default()
2505 },
2506 );
2507 }
2508 moves.insert(
2509 Choices::CLANGINGSCALES,
2510 Choice {
2511 move_id: Choices::CLANGINGSCALES,
2512 base_power: 110.0,
2513 category: MoveCategory::Special,
2514 move_type: PokemonType::DRAGON,
2515 flags: Flags {
2516 protect: true,
2517 sound: true,
2518 ..Default::default()
2519 },
2520 boost: Some(Boost {
2521 target: MoveTarget::User,
2522 boosts: StatBoosts {
2523 attack: 0,
2524 defense: -1,
2525 special_attack: 0,
2526 special_defense: 0,
2527 speed: 0,
2528 accuracy: 0,
2529 },
2530 }),
2531 ..Default::default()
2532 },
2533 );
2534 moves.insert(
2535 Choices::CLANGOROUSSOUL,
2536 Choice {
2537 move_id: Choices::CLANGOROUSSOUL,
2538 target: MoveTarget::User,
2539 move_type: PokemonType::DRAGON,
2540 flags: Flags {
2541 sound: true,
2542 ..Default::default()
2543 },
2544 ..Default::default()
2545 },
2546 );
2547 moves.insert(
2548 Choices::CLEARSMOG,
2549 Choice {
2550 move_id: Choices::CLEARSMOG,
2551 base_power: 50.0,
2552 category: MoveCategory::Special,
2553 move_type: PokemonType::POISON,
2554 flags: Flags {
2555 protect: true,
2556 ..Default::default()
2557 },
2558 ..Default::default()
2559 },
2560 );
2561 moves.insert(
2562 Choices::CLOSECOMBAT,
2563 Choice {
2564 move_id: Choices::CLOSECOMBAT,
2565 base_power: 120.0,
2566 category: MoveCategory::Physical,
2567 move_type: PokemonType::FIGHTING,
2568 flags: Flags {
2569 contact: true,
2570 protect: true,
2571 ..Default::default()
2572 },
2573 boost: Some(Boost {
2574 target: MoveTarget::User,
2575 boosts: StatBoosts {
2576 attack: 0,
2577 defense: -1,
2578 special_attack: 0,
2579 special_defense: -1,
2580 speed: 0,
2581 accuracy: 0,
2582 },
2583 }),
2584 ..Default::default()
2585 },
2586 );
2587 moves.insert(
2588 Choices::COACHING,
2589 Choice {
2590 move_id: Choices::COACHING,
2591 target: MoveTarget::User,
2592 move_type: PokemonType::FIGHTING,
2593 flags: Flags {
2594 ..Default::default()
2595 },
2596 boost: Some(Boost {
2597 target: MoveTarget::User,
2598 boosts: StatBoosts {
2599 attack: 1,
2600 defense: 1,
2601 special_attack: 0,
2602 special_defense: 0,
2603 speed: 0,
2604 accuracy: 0,
2605 },
2606 }),
2607 ..Default::default()
2608 },
2609 );
2610 moves.insert(
2611 Choices::COIL,
2612 Choice {
2613 move_id: Choices::COIL,
2614 target: MoveTarget::User,
2615 move_type: PokemonType::POISON,
2616 flags: Flags {
2617 ..Default::default()
2618 },
2619 boost: Some(Boost {
2620 target: MoveTarget::User,
2621 boosts: StatBoosts {
2622 attack: 1,
2623 defense: 1,
2624 special_attack: 0,
2625 special_defense: 0,
2626 speed: 0,
2627 accuracy: 1,
2628 },
2629 }),
2630 ..Default::default()
2631 },
2632 );
2633 moves.insert(
2634 Choices::COLLISIONCOURSE,
2635 Choice {
2636 move_id: Choices::COLLISIONCOURSE,
2637 base_power: 100.0,
2638 category: MoveCategory::Physical,
2639 move_type: PokemonType::FIGHTING,
2640 flags: Flags {
2641 contact: true,
2642 protect: true,
2643 ..Default::default()
2644 },
2645 ..Default::default()
2646 },
2647 );
2648 moves.insert(
2649 Choices::COMBATTORQUE,
2650 Choice {
2651 move_id: Choices::COMBATTORQUE,
2652 base_power: 100.0,
2653 category: MoveCategory::Physical,
2654 move_type: PokemonType::FIGHTING,
2655 flags: Flags {
2656 protect: true,
2657 ..Default::default()
2658 },
2659 secondaries: Some(vec![Secondary {
2660 chance: 30.0,
2661 target: MoveTarget::Opponent,
2662 effect: Effect::Status(PokemonStatus::PARALYZE),
2663 }]),
2664 ..Default::default()
2665 },
2666 );
2667 moves.insert(
2668 Choices::COMETPUNCH,
2669 Choice {
2670 move_id: Choices::COMETPUNCH,
2671 accuracy: 85.0,
2672 base_power: 18.0,
2673 category: MoveCategory::Physical,
2674 move_type: PokemonType::NORMAL,
2675 flags: Flags {
2676 contact: true,
2677 protect: true,
2678 punch: true,
2679 ..Default::default()
2680 },
2681 ..Default::default()
2682 },
2683 );
2684 moves.insert(
2685 Choices::COMEUPPANCE,
2686 Choice {
2687 move_id: Choices::COMEUPPANCE,
2688 category: MoveCategory::Physical,
2689 move_type: PokemonType::DARK,
2690 flags: Flags {
2691 contact: true,
2692 protect: true,
2693 ..Default::default()
2694 },
2695 ..Default::default()
2696 },
2697 );
2698 moves.insert(
2699 Choices::CONFIDE,
2700 Choice {
2701 move_id: Choices::CONFIDE,
2702 move_type: PokemonType::NORMAL,
2703 flags: Flags {
2704 reflectable: true,
2705 sound: true,
2706 ..Default::default()
2707 },
2708 boost: Some(Boost {
2709 target: MoveTarget::Opponent,
2710 boosts: StatBoosts {
2711 attack: 0,
2712 defense: 0,
2713 special_attack: -1,
2714 special_defense: 0,
2715 speed: 0,
2716 accuracy: 0,
2717 },
2718 }),
2719 ..Default::default()
2720 },
2721 );
2722 moves.insert(
2723 Choices::CONFUSERAY,
2724 Choice {
2725 move_id: Choices::CONFUSERAY,
2726 move_type: PokemonType::GHOST,
2727 flags: Flags {
2728 protect: true,
2729 reflectable: true,
2730 ..Default::default()
2731 },
2732 volatile_status: Some(VolatileStatus {
2733 target: MoveTarget::Opponent,
2734 volatile_status: PokemonVolatileStatus::CONFUSION,
2735 }),
2736 ..Default::default()
2737 },
2738 );
2739 moves.insert(
2740 Choices::CONFUSION,
2741 Choice {
2742 move_id: Choices::CONFUSION,
2743 base_power: 50.0,
2744 category: MoveCategory::Special,
2745 move_type: PokemonType::PSYCHIC,
2746 flags: Flags {
2747 protect: true,
2748 ..Default::default()
2749 },
2750 secondaries: Some(vec![Secondary {
2751 chance: 10.0,
2752 target: MoveTarget::Opponent,
2753 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
2754 }]),
2755 ..Default::default()
2756 },
2757 );
2758 if cfg!(feature = "gen1") {
2759 moves.insert(
2760 Choices::CONSTRICT,
2761 Choice {
2762 move_id: Choices::CONSTRICT,
2763 base_power: 10.0,
2764 category: MoveCategory::Physical,
2765 move_type: PokemonType::NORMAL,
2766 flags: Flags {
2767 contact: true,
2768 protect: true,
2769 ..Default::default()
2770 },
2771 secondaries: Some(vec![Secondary {
2772 chance: 33.2,
2773 target: MoveTarget::Opponent,
2774 effect: Effect::Boost(StatBoosts {
2775 attack: 0,
2776 defense: 0,
2777 special_attack: 0,
2778 special_defense: 0,
2779 speed: -1,
2780 accuracy: 0,
2781 }),
2782 }]),
2783 ..Default::default()
2784 },
2785 );
2786 } else {
2787 moves.insert(
2788 Choices::CONSTRICT,
2789 Choice {
2790 move_id: Choices::CONSTRICT,
2791 base_power: 10.0,
2792 category: MoveCategory::Physical,
2793 move_type: PokemonType::NORMAL,
2794 flags: Flags {
2795 contact: true,
2796 protect: true,
2797 ..Default::default()
2798 },
2799 secondaries: Some(vec![Secondary {
2800 chance: 10.0,
2801 target: MoveTarget::Opponent,
2802 effect: Effect::Boost(StatBoosts {
2803 attack: 0,
2804 defense: 0,
2805 special_attack: 0,
2806 special_defense: 0,
2807 speed: -1,
2808 accuracy: 0,
2809 }),
2810 }]),
2811 ..Default::default()
2812 },
2813 );
2814 }
2815 moves.insert(
2816 Choices::CONVERSION,
2817 Choice {
2818 move_id: Choices::CONVERSION,
2819 target: MoveTarget::User,
2820 move_type: PokemonType::NORMAL,
2821 flags: Flags {
2822 ..Default::default()
2823 },
2824 ..Default::default()
2825 },
2826 );
2827 moves.insert(
2828 Choices::CONVERSION2,
2829 Choice {
2830 move_id: Choices::CONVERSION2,
2831 move_type: PokemonType::NORMAL,
2832 flags: Flags {
2833 ..Default::default()
2834 },
2835 ..Default::default()
2836 },
2837 );
2838 moves.insert(
2839 Choices::COPYCAT,
2840 Choice {
2841 move_id: Choices::COPYCAT,
2842 target: MoveTarget::User,
2843 move_type: PokemonType::NORMAL,
2844 flags: Flags {
2845 ..Default::default()
2846 },
2847 ..Default::default()
2848 },
2849 );
2850 moves.insert(
2851 Choices::COREENFORCER,
2852 Choice {
2853 move_id: Choices::COREENFORCER,
2854 base_power: 100.0,
2855 category: MoveCategory::Special,
2856 move_type: PokemonType::DRAGON,
2857 flags: Flags {
2858 protect: true,
2859 ..Default::default()
2860 },
2861 ..Default::default()
2862 },
2863 );
2864 moves.insert(
2865 Choices::CORROSIVEGAS,
2866 Choice {
2867 move_id: Choices::CORROSIVEGAS,
2868 move_type: PokemonType::POISON,
2869 flags: Flags {
2870 protect: true,
2871 reflectable: true,
2872 ..Default::default()
2873 },
2874 ..Default::default()
2875 },
2876 );
2877 moves.insert(
2878 Choices::COSMICPOWER,
2879 Choice {
2880 move_id: Choices::COSMICPOWER,
2881 target: MoveTarget::User,
2882 move_type: PokemonType::PSYCHIC,
2883 flags: Flags {
2884 ..Default::default()
2885 },
2886 boost: Some(Boost {
2887 target: MoveTarget::User,
2888 boosts: StatBoosts {
2889 attack: 0,
2890 defense: 1,
2891 special_attack: 0,
2892 special_defense: 1,
2893 speed: 0,
2894 accuracy: 0,
2895 },
2896 }),
2897 ..Default::default()
2898 },
2899 );
2900 moves.insert(
2901 Choices::COTTONGUARD,
2902 Choice {
2903 move_id: Choices::COTTONGUARD,
2904 target: MoveTarget::User,
2905 move_type: PokemonType::GRASS,
2906 flags: Flags {
2907 ..Default::default()
2908 },
2909 boost: Some(Boost {
2910 target: MoveTarget::User,
2911 boosts: StatBoosts {
2912 attack: 0,
2913 defense: 3,
2914 special_attack: 0,
2915 special_defense: 0,
2916 speed: 0,
2917 accuracy: 0,
2918 },
2919 }),
2920 ..Default::default()
2921 },
2922 );
2923 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
2924 moves.insert(
2925 Choices::COTTONSPORE,
2926 Choice {
2927 move_id: Choices::COTTONSPORE,
2928 accuracy: 85.0,
2929 move_type: PokemonType::GRASS,
2930 flags: Flags {
2931 powder: true,
2932 protect: true,
2933 reflectable: true,
2934 ..Default::default()
2935 },
2936 boost: Some(Boost {
2937 target: MoveTarget::Opponent,
2938 boosts: StatBoosts {
2939 attack: 0,
2940 defense: 0,
2941 special_attack: 0,
2942 special_defense: 0,
2943 speed: -2,
2944 accuracy: 0,
2945 },
2946 }),
2947 ..Default::default()
2948 },
2949 );
2950 } else {
2951 moves.insert(
2952 Choices::COTTONSPORE,
2953 Choice {
2954 move_id: Choices::COTTONSPORE,
2955 move_type: PokemonType::GRASS,
2956 flags: Flags {
2957 powder: true,
2958 protect: true,
2959 reflectable: true,
2960 ..Default::default()
2961 },
2962 boost: Some(Boost {
2963 target: MoveTarget::Opponent,
2964 boosts: StatBoosts {
2965 attack: 0,
2966 defense: 0,
2967 special_attack: 0,
2968 special_defense: 0,
2969 speed: -2,
2970 accuracy: 0,
2971 },
2972 }),
2973 ..Default::default()
2974 },
2975 );
2976 }
2977 moves.insert(
2978 Choices::COUNTER,
2979 Choice {
2980 move_id: Choices::COUNTER,
2981 category: MoveCategory::Physical,
2982 priority: -5,
2983 move_type: PokemonType::FIGHTING,
2984 flags: Flags {
2985 contact: true,
2986 protect: true,
2987 ..Default::default()
2988 },
2989 ..Default::default()
2990 },
2991 );
2992 moves.insert(
2993 Choices::COURTCHANGE,
2994 Choice {
2995 move_id: Choices::COURTCHANGE,
2996 move_type: PokemonType::NORMAL,
2997 flags: Flags {
2998 ..Default::default()
2999 },
3000 ..Default::default()
3001 },
3002 );
3003 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3004 moves.insert(
3005 Choices::COVET,
3006 Choice {
3007 move_id: Choices::COVET,
3008 base_power: 40.0,
3009 category: MoveCategory::Physical,
3010 move_type: PokemonType::NORMAL,
3011 flags: Flags {
3012 contact: true,
3013 protect: true,
3014 ..Default::default()
3015 },
3016 ..Default::default()
3017 },
3018 );
3019 } else {
3020 moves.insert(
3021 Choices::COVET,
3022 Choice {
3023 move_id: Choices::COVET,
3024 base_power: 60.0,
3025 category: MoveCategory::Physical,
3026 move_type: PokemonType::NORMAL,
3027 flags: Flags {
3028 contact: true,
3029 protect: true,
3030 ..Default::default()
3031 },
3032 ..Default::default()
3033 },
3034 );
3035 }
3036 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
3037 moves.insert(
3038 Choices::CRABHAMMER,
3039 Choice {
3040 move_id: Choices::CRABHAMMER,
3041 accuracy: 85.0,
3042 base_power: 90.0,
3043 category: MoveCategory::Physical,
3044 move_type: PokemonType::WATER,
3045 flags: Flags {
3046 contact: true,
3047 protect: true,
3048 ..Default::default()
3049 },
3050 ..Default::default()
3051 },
3052 );
3053 } else {
3054 moves.insert(
3055 Choices::CRABHAMMER,
3056 Choice {
3057 move_id: Choices::CRABHAMMER,
3058 accuracy: 90.0,
3059 base_power: 100.0,
3060 category: MoveCategory::Physical,
3061 move_type: PokemonType::WATER,
3062 flags: Flags {
3063 contact: true,
3064 protect: true,
3065 ..Default::default()
3066 },
3067 ..Default::default()
3068 },
3069 );
3070 }
3071 moves.insert(
3072 Choices::CRAFTYSHIELD,
3073 Choice {
3074 move_id: Choices::CRAFTYSHIELD,
3075 priority: 3,
3076 target: MoveTarget::User,
3077 move_type: PokemonType::FAIRY,
3078 flags: Flags {
3079 ..Default::default()
3080 },
3081 side_condition: Some(SideCondition {
3082 target: MoveTarget::User,
3083 condition: PokemonSideCondition::CraftyShield,
3084 }),
3085 ..Default::default()
3086 },
3087 );
3088 moves.insert(
3089 Choices::CROSSCHOP,
3090 Choice {
3091 move_id: Choices::CROSSCHOP,
3092 accuracy: 80.0,
3093 base_power: 100.0,
3094 category: MoveCategory::Physical,
3095 move_type: PokemonType::FIGHTING,
3096 flags: Flags {
3097 contact: true,
3098 protect: true,
3099 ..Default::default()
3100 },
3101 ..Default::default()
3102 },
3103 );
3104 moves.insert(
3105 Choices::CROSSPOISON,
3106 Choice {
3107 move_id: Choices::CROSSPOISON,
3108 base_power: 70.0,
3109 category: MoveCategory::Physical,
3110 move_type: PokemonType::POISON,
3111 flags: Flags {
3112 contact: true,
3113 protect: true,
3114 slicing: true,
3115 ..Default::default()
3116 },
3117 secondaries: Some(vec![Secondary {
3118 chance: 10.0,
3119 target: MoveTarget::Opponent,
3120 effect: Effect::Status(PokemonStatus::POISON),
3121 }]),
3122 ..Default::default()
3123 },
3124 );
3125 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3126 moves.insert(
3127 Choices::CRUNCH,
3128 Choice {
3129 move_id: Choices::CRUNCH,
3130 base_power: 80.0,
3131 category: MoveCategory::Physical,
3132 move_type: PokemonType::DARK,
3133 flags: Flags {
3134 bite: true,
3135 contact: true,
3136 protect: true,
3137 ..Default::default()
3138 },
3139 secondaries: Some(vec![Secondary {
3140 chance: 20.0,
3141 target: MoveTarget::Opponent,
3142 effect: Effect::Boost(StatBoosts {
3143 attack: 0,
3144 defense: 0,
3145 special_attack: 0,
3146 special_defense: -1,
3147 speed: 0,
3148 accuracy: 0,
3149 }),
3150 }]),
3151 ..Default::default()
3152 },
3153 );
3154 }
3155 else {
3156 moves.insert(
3157 Choices::CRUNCH,
3158 Choice {
3159 move_id: Choices::CRUNCH,
3160 base_power: 80.0,
3161 category: MoveCategory::Physical,
3162 move_type: PokemonType::DARK,
3163 flags: Flags {
3164 bite: true,
3165 contact: true,
3166 protect: true,
3167 ..Default::default()
3168 },
3169 secondaries: Some(vec![Secondary {
3170 chance: 20.0,
3171 target: MoveTarget::Opponent,
3172 effect: Effect::Boost(StatBoosts {
3173 attack: 0,
3174 defense: -1,
3175 special_attack: 0,
3176 special_defense: 0,
3177 speed: 0,
3178 accuracy: 0,
3179 }),
3180 }]),
3181 ..Default::default()
3182 },
3183 );
3184 }
3185 moves.insert(
3186 Choices::CRUSHCLAW,
3187 Choice {
3188 move_id: Choices::CRUSHCLAW,
3189 accuracy: 95.0,
3190 base_power: 75.0,
3191 category: MoveCategory::Physical,
3192 move_type: PokemonType::NORMAL,
3193 flags: Flags {
3194 contact: true,
3195 protect: true,
3196 ..Default::default()
3197 },
3198 secondaries: Some(vec![Secondary {
3199 chance: 50.0,
3200 target: MoveTarget::Opponent,
3201 effect: Effect::Boost(StatBoosts {
3202 attack: 0,
3203 defense: -1,
3204 special_attack: 0,
3205 special_defense: 0,
3206 speed: 0,
3207 accuracy: 0,
3208 }),
3209 }]),
3210 ..Default::default()
3211 },
3212 );
3213 moves.insert(
3214 Choices::CRUSHGRIP,
3215 Choice {
3216 move_id: Choices::CRUSHGRIP,
3217 category: MoveCategory::Physical,
3218 move_type: PokemonType::NORMAL,
3219 flags: Flags {
3220 contact: true,
3221 protect: true,
3222 ..Default::default()
3223 },
3224 ..Default::default()
3225 },
3226 );
3227 moves.insert(
3228 Choices::CURSE,
3229 Choice {
3230 move_id: Choices::CURSE,
3231 move_type: PokemonType::GHOST,
3232 flags: Flags {
3233 ..Default::default()
3234 },
3235 boost: Some(Boost {
3236 target: MoveTarget::User,
3237 boosts: StatBoosts {
3238 attack: 1,
3239 defense: 1,
3240 special_attack: 0,
3241 special_defense: 0,
3242 speed: -1,
3243 accuracy: 0,
3244 },
3245 }),
3246 volatile_status: Some(VolatileStatus {
3247 target: MoveTarget::User,
3248 volatile_status: PokemonVolatileStatus::CURSE,
3249 }),
3250 ..Default::default()
3251 },
3252 );
3253 moves.insert(
3254 Choices::CUT,
3255 Choice {
3256 move_id: Choices::CUT,
3257 accuracy: 95.0,
3258 base_power: 50.0,
3259 category: MoveCategory::Physical,
3260 move_type: PokemonType::NORMAL,
3261 flags: Flags {
3262 contact: true,
3263 protect: true,
3264 slicing: true,
3265 ..Default::default()
3266 },
3267 ..Default::default()
3268 },
3269 );
3270 moves.insert(
3271 Choices::DARKESTLARIAT,
3272 Choice {
3273 move_id: Choices::DARKESTLARIAT,
3274 base_power: 85.0,
3275 category: MoveCategory::Physical,
3276 move_type: PokemonType::DARK,
3277 flags: Flags {
3278 contact: true,
3279 protect: true,
3280 ..Default::default()
3281 },
3282 ..Default::default()
3283 },
3284 );
3285 moves.insert(
3286 Choices::DARKPULSE,
3287 Choice {
3288 move_id: Choices::DARKPULSE,
3289 base_power: 80.0,
3290 category: MoveCategory::Special,
3291 move_type: PokemonType::DARK,
3292 flags: Flags {
3293 protect: true,
3294 pulse: true,
3295 ..Default::default()
3296 },
3297 secondaries: Some(vec![Secondary {
3298 chance: 20.0,
3299 target: MoveTarget::Opponent,
3300 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
3301 }]),
3302 ..Default::default()
3303 },
3304 );
3305 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
3306 moves.insert(
3307 Choices::DARKVOID,
3308 Choice {
3309 move_id: Choices::DARKVOID,
3310 accuracy: 80.0,
3311 status: Some(Status {
3312 target: MoveTarget::Opponent,
3313 status: PokemonStatus::SLEEP,
3314 }),
3315 move_type: PokemonType::DARK,
3316 flags: Flags {
3317 protect: true,
3318 reflectable: true,
3319 ..Default::default()
3320 },
3321 ..Default::default()
3322 },
3323 );
3324 } else {
3325 moves.insert(
3326 Choices::DARKVOID,
3327 Choice {
3328 move_id: Choices::DARKVOID,
3329 accuracy: 50.0,
3330 status: Some(Status {
3331 target: MoveTarget::Opponent,
3332 status: PokemonStatus::SLEEP,
3333 }),
3334 move_type: PokemonType::DARK,
3335 flags: Flags {
3336 protect: true,
3337 reflectable: true,
3338 ..Default::default()
3339 },
3340 ..Default::default()
3341 },
3342 );
3343 }
3344 moves.insert(
3345 Choices::DAZZLINGGLEAM,
3346 Choice {
3347 move_id: Choices::DAZZLINGGLEAM,
3348 base_power: 80.0,
3349 category: MoveCategory::Special,
3350 move_type: PokemonType::FAIRY,
3351 flags: Flags {
3352 protect: true,
3353 ..Default::default()
3354 },
3355 ..Default::default()
3356 },
3357 );
3358 moves.insert(
3359 Choices::DECORATE,
3360 Choice {
3361 move_id: Choices::DECORATE,
3362 move_type: PokemonType::FAIRY,
3363 flags: Flags {
3364 ..Default::default()
3365 },
3366 boost: Some(Boost {
3367 target: MoveTarget::Opponent,
3368 boosts: StatBoosts {
3369 attack: 2,
3370 defense: 0,
3371 special_attack: 2,
3372 special_defense: 0,
3373 speed: 0,
3374 accuracy: 0,
3375 },
3376 }),
3377 ..Default::default()
3378 },
3379 );
3380 moves.insert(
3381 Choices::DEFENDORDER,
3382 Choice {
3383 move_id: Choices::DEFENDORDER,
3384 target: MoveTarget::User,
3385 move_type: PokemonType::BUG,
3386 flags: Flags {
3387 ..Default::default()
3388 },
3389 boost: Some(Boost {
3390 target: MoveTarget::User,
3391 boosts: StatBoosts {
3392 attack: 0,
3393 defense: 1,
3394 special_attack: 0,
3395 special_defense: 1,
3396 speed: 0,
3397 accuracy: 0,
3398 },
3399 }),
3400 ..Default::default()
3401 },
3402 );
3403 moves.insert(
3404 Choices::DEFENSECURL,
3405 Choice {
3406 move_id: Choices::DEFENSECURL,
3407 target: MoveTarget::User,
3408 move_type: PokemonType::NORMAL,
3409 flags: Flags {
3410 ..Default::default()
3411 },
3412 boost: Some(Boost {
3413 target: MoveTarget::User,
3414 boosts: StatBoosts {
3415 attack: 0,
3416 defense: 1,
3417 special_attack: 0,
3418 special_defense: 0,
3419 speed: 0,
3420 accuracy: 0,
3421 },
3422 }),
3423 volatile_status: Some(VolatileStatus {
3424 target: MoveTarget::User,
3425 volatile_status: PokemonVolatileStatus::DEFENSECURL,
3426 }),
3427 ..Default::default()
3428 },
3429 );
3430 moves.insert(
3431 Choices::DEFOG,
3432 Choice {
3433 move_id: Choices::DEFOG,
3434 move_type: PokemonType::FLYING,
3435 flags: Flags {
3436 protect: true,
3437 reflectable: true,
3438 ..Default::default()
3439 },
3440 boost: Some(Boost {
3441 target: MoveTarget::Opponent,
3442 boosts: StatBoosts {
3443 attack: 0,
3444 defense: 0,
3445 special_attack: 0,
3446 special_defense: 0,
3447 speed: 0,
3448 accuracy: 0,
3449 },
3450 }),
3451 ..Default::default()
3452 },
3453 );
3454 moves.insert(
3455 Choices::DESTINYBOND,
3456 Choice {
3457 move_id: Choices::DESTINYBOND,
3458 target: MoveTarget::User,
3459 move_type: PokemonType::GHOST,
3460 flags: Flags {
3461 ..Default::default()
3462 },
3463 volatile_status: Some(VolatileStatus {
3464 target: MoveTarget::User,
3465 volatile_status: PokemonVolatileStatus::DESTINYBOND,
3466 }),
3467 ..Default::default()
3468 },
3469 );
3470 moves.insert(
3471 Choices::DETECT,
3472 Choice {
3473 move_id: Choices::DETECT,
3474 priority: 4,
3475 target: MoveTarget::User,
3476 move_type: PokemonType::FIGHTING,
3477 flags: Flags {
3478 ..Default::default()
3479 },
3480 volatile_status: Some(VolatileStatus {
3481 target: MoveTarget::User,
3482 volatile_status: PokemonVolatileStatus::PROTECT,
3483 }),
3484 ..Default::default()
3485 },
3486 );
3487
3488 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
3489 moves.insert(
3490 Choices::DIAMONDSTORM,
3491 Choice {
3492 move_id: Choices::DIAMONDSTORM,
3493 accuracy: 95.0,
3494 base_power: 100.0,
3495 category: MoveCategory::Physical,
3496 move_type: PokemonType::ROCK,
3497 flags: Flags {
3498 protect: true,
3499 ..Default::default()
3500 },
3501 secondaries: Some(vec![Secondary {
3502 chance: 50.0,
3503 target: MoveTarget::User,
3504 effect: Effect::Boost(StatBoosts {
3505 attack: 0,
3506 defense: 1,
3507 special_attack: 0,
3508 special_defense: 0,
3509 speed: 0,
3510 accuracy: 0,
3511 }),
3512 }]),
3513 ..Default::default()
3514 },
3515 );
3516 } else {
3517 moves.insert(
3518 Choices::DIAMONDSTORM,
3519 Choice {
3520 move_id: Choices::DIAMONDSTORM,
3521 accuracy: 95.0,
3522 base_power: 100.0,
3523 category: MoveCategory::Physical,
3524 move_type: PokemonType::ROCK,
3525 flags: Flags {
3526 protect: true,
3527 ..Default::default()
3528 },
3529 secondaries: Some(vec![Secondary {
3530 chance: 50.0,
3531 target: MoveTarget::User,
3532 effect: Effect::Boost(StatBoosts {
3533 attack: 0,
3534 defense: 2,
3535 special_attack: 0,
3536 special_defense: 0,
3537 speed: 0,
3538 accuracy: 0,
3539 }),
3540 }]),
3541 ..Default::default()
3542 },
3543 );
3544 }
3545 if cfg!(feature = "gen1") {
3546 moves.insert(
3547 Choices::DIG,
3548 Choice {
3549 move_id: Choices::DIG,
3550 base_power: 100.0,
3551 category: MoveCategory::Physical,
3552 move_type: PokemonType::GROUND,
3553 flags: Flags {
3554 charge: true,
3555 contact: true,
3556 protect: true,
3557 ..Default::default()
3558 },
3559 ..Default::default()
3560 },
3561 );
3562 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3563 moves.insert(
3564 Choices::DIG,
3565 Choice {
3566 move_id: Choices::DIG,
3567 base_power: 60.0,
3568 category: MoveCategory::Physical,
3569 move_type: PokemonType::GROUND,
3570 flags: Flags {
3571 charge: true,
3572 contact: true,
3573 protect: true,
3574 ..Default::default()
3575 },
3576 ..Default::default()
3577 },
3578 );
3579 } else {
3580 moves.insert(
3581 Choices::DIG,
3582 Choice {
3583 move_id: Choices::DIG,
3584 base_power: 80.0,
3585 category: MoveCategory::Physical,
3586 move_type: PokemonType::GROUND,
3587 flags: Flags {
3588 charge: true,
3589 contact: true,
3590 protect: true,
3591 ..Default::default()
3592 },
3593 ..Default::default()
3594 },
3595 );
3596 }
3597 moves.insert(
3598 Choices::DIRECLAW,
3599 Choice {
3600 move_id: Choices::DIRECLAW,
3601 base_power: 80.0,
3602 category: MoveCategory::Physical,
3603 move_type: PokemonType::POISON,
3604 flags: Flags {
3605 contact: true,
3606 protect: true,
3607 ..Default::default()
3608 },
3609 ..Default::default()
3610 },
3611 );
3612 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3613 moves.insert(
3614 Choices::DISABLE,
3615 Choice {
3616 move_id: Choices::DISABLE,
3617 accuracy: 80.0,
3618 move_type: PokemonType::NORMAL,
3619 flags: Flags {
3620 protect: true,
3621 reflectable: true,
3622 ..Default::default()
3623 },
3624 volatile_status: Some(VolatileStatus {
3625 target: MoveTarget::Opponent,
3626 volatile_status: PokemonVolatileStatus::DISABLE,
3627 }),
3628 ..Default::default()
3629 },
3630 );
3631 } else {
3632 moves.insert(
3633 Choices::DISABLE,
3634 Choice {
3635 move_id: Choices::DISABLE,
3636 move_type: PokemonType::NORMAL,
3637 flags: Flags {
3638 protect: true,
3639 reflectable: true,
3640 ..Default::default()
3641 },
3642 volatile_status: Some(VolatileStatus {
3643 target: MoveTarget::Opponent,
3644 volatile_status: PokemonVolatileStatus::DISABLE,
3645 }),
3646 ..Default::default()
3647 },
3648 );
3649 }
3650 moves.insert(
3651 Choices::DISARMINGVOICE,
3652 Choice {
3653 move_id: Choices::DISARMINGVOICE,
3654 base_power: 40.0,
3655 category: MoveCategory::Special,
3656 move_type: PokemonType::FAIRY,
3657 flags: Flags {
3658 protect: true,
3659 sound: true,
3660 ..Default::default()
3661 },
3662 ..Default::default()
3663 },
3664 );
3665 moves.insert(
3666 Choices::DISCHARGE,
3667 Choice {
3668 move_id: Choices::DISCHARGE,
3669 base_power: 80.0,
3670 category: MoveCategory::Special,
3671 move_type: PokemonType::ELECTRIC,
3672 flags: Flags {
3673 protect: true,
3674 ..Default::default()
3675 },
3676 secondaries: Some(vec![Secondary {
3677 chance: 30.0,
3678 target: MoveTarget::Opponent,
3679 effect: Effect::Status(PokemonStatus::PARALYZE),
3680 }]),
3681 ..Default::default()
3682 },
3683 );
3684 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
3685 moves.insert(
3686 Choices::DIVE,
3687 Choice {
3688 move_id: Choices::DIVE,
3689 base_power: 60.0,
3690 category: MoveCategory::Physical,
3691 move_type: PokemonType::WATER,
3692 flags: Flags {
3693 charge: true,
3694 contact: true,
3695 protect: true,
3696 ..Default::default()
3697 },
3698 ..Default::default()
3699 },
3700 );
3701 } else {
3702 moves.insert(
3703 Choices::DIVE,
3704 Choice {
3705 move_id: Choices::DIVE,
3706 base_power: 80.0,
3707 category: MoveCategory::Physical,
3708 move_type: PokemonType::WATER,
3709 flags: Flags {
3710 charge: true,
3711 contact: true,
3712 protect: true,
3713 ..Default::default()
3714 },
3715 ..Default::default()
3716 },
3717 );
3718 }
3719 if cfg!(feature = "gen1") {
3720 moves.insert(
3721 Choices::DIZZYPUNCH,
3722 Choice {
3723 move_id: Choices::DIZZYPUNCH,
3724 base_power: 70.0,
3725 category: MoveCategory::Physical,
3726 move_type: PokemonType::NORMAL,
3727 flags: Flags {
3728 contact: true,
3729 protect: true,
3730 punch: true,
3731 ..Default::default()
3732 },
3733 ..Default::default()
3734 },
3735 );
3736 } else {
3737 moves.insert(
3738 Choices::DIZZYPUNCH,
3739 Choice {
3740 move_id: Choices::DIZZYPUNCH,
3741 base_power: 70.0,
3742 category: MoveCategory::Physical,
3743 move_type: PokemonType::NORMAL,
3744 flags: Flags {
3745 contact: true,
3746 protect: true,
3747 punch: true,
3748 ..Default::default()
3749 },
3750 secondaries: Some(vec![Secondary {
3751 chance: 20.0,
3752 target: MoveTarget::Opponent,
3753 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
3754 }]),
3755 ..Default::default()
3756 },
3757 );
3758 }
3759 moves.insert(
3760 Choices::DOODLE,
3761 Choice {
3762 move_id: Choices::DOODLE,
3763 move_type: PokemonType::NORMAL,
3764 flags: Flags {
3765 ..Default::default()
3766 },
3767 ..Default::default()
3768 },
3769 );
3770 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
3771 moves.insert(
3772 Choices::DOOMDESIRE,
3773 Choice {
3774 move_id: Choices::DOOMDESIRE,
3775 accuracy: 85.0,
3776 base_power: 120.0,
3777 category: MoveCategory::Special,
3778 move_type: PokemonType::STEEL,
3779 flags: Flags {
3780 ..Default::default()
3781 },
3782 ..Default::default()
3783 },
3784 );
3785 } else {
3786 moves.insert(
3787 Choices::DOOMDESIRE,
3788 Choice {
3789 move_id: Choices::DOOMDESIRE,
3790 base_power: 140.0,
3791 category: MoveCategory::Special,
3792 move_type: PokemonType::STEEL,
3793 flags: Flags {
3794 ..Default::default()
3795 },
3796 ..Default::default()
3797 },
3798 );
3799 }
3800 if cfg!(feature = "gen1") {
3801 moves.insert(
3802 Choices::DOUBLEEDGE,
3803 Choice {
3804 move_id: Choices::DOUBLEEDGE,
3805 base_power: 100.0,
3806 category: MoveCategory::Physical,
3807 move_type: PokemonType::NORMAL,
3808 flags: Flags {
3809 contact: true,
3810 protect: true,
3811 ..Default::default()
3812 },
3813 recoil: Some(0.33),
3814 ..Default::default()
3815 },
3816 );
3817 } else {
3818 moves.insert(
3819 Choices::DOUBLEEDGE,
3820 Choice {
3821 move_id: Choices::DOUBLEEDGE,
3822 base_power: 120.0,
3823 category: MoveCategory::Physical,
3824 move_type: PokemonType::NORMAL,
3825 flags: Flags {
3826 contact: true,
3827 protect: true,
3828 ..Default::default()
3829 },
3830 recoil: Some(0.33),
3831 ..Default::default()
3832 },
3833 );
3834 }
3835 moves.insert(
3836 Choices::DOUBLEHIT,
3837 Choice {
3838 move_id: Choices::DOUBLEHIT,
3839 accuracy: 90.0,
3840 base_power: 35.0,
3841 category: MoveCategory::Physical,
3842 move_type: PokemonType::NORMAL,
3843 flags: Flags {
3844 contact: true,
3845 protect: true,
3846 ..Default::default()
3847 },
3848 ..Default::default()
3849 },
3850 );
3851 moves.insert(
3852 Choices::DOUBLEIRONBASH,
3853 Choice {
3854 move_id: Choices::DOUBLEIRONBASH,
3855 base_power: 60.0,
3856 category: MoveCategory::Physical,
3857 move_type: PokemonType::STEEL,
3858 flags: Flags {
3859 contact: true,
3860 protect: true,
3861 punch: true,
3862 ..Default::default()
3863 },
3864 secondaries: Some(vec![Secondary {
3865 chance: 30.0,
3866 target: MoveTarget::Opponent,
3867 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
3868 }]),
3869 ..Default::default()
3870 },
3871 );
3872 moves.insert(
3873 Choices::DOUBLEKICK,
3874 Choice {
3875 move_id: Choices::DOUBLEKICK,
3876 base_power: 30.0,
3877 category: MoveCategory::Physical,
3878 move_type: PokemonType::FIGHTING,
3879 flags: Flags {
3880 contact: true,
3881 protect: true,
3882 ..Default::default()
3883 },
3884 ..Default::default()
3885 },
3886 );
3887 moves.insert(
3888 Choices::DOUBLESHOCK,
3889 Choice {
3890 move_id: Choices::DOUBLESHOCK,
3891 base_power: 120.0,
3892 category: MoveCategory::Physical,
3893 move_type: PokemonType::ELECTRIC,
3894 flags: Flags {
3895 contact: true,
3896 protect: true,
3897 ..Default::default()
3898 },
3899 ..Default::default()
3900 },
3901 );
3902 moves.insert(
3903 Choices::DOUBLESLAP,
3904 Choice {
3905 move_id: Choices::DOUBLESLAP,
3906 accuracy: 85.0,
3907 base_power: 15.0,
3908 category: MoveCategory::Physical,
3909 move_type: PokemonType::NORMAL,
3910 flags: Flags {
3911 contact: true,
3912 protect: true,
3913 ..Default::default()
3914 },
3915 ..Default::default()
3916 },
3917 );
3918 moves.insert(
3919 Choices::DOUBLETEAM,
3920 Choice {
3921 move_id: Choices::DOUBLETEAM,
3922 target: MoveTarget::User,
3923 move_type: PokemonType::NORMAL,
3924 flags: Flags {
3925 ..Default::default()
3926 },
3927 boost: Some(Boost {
3928 target: MoveTarget::User,
3929 boosts: StatBoosts {
3930 attack: 0,
3931 defense: 0,
3932 special_attack: 0,
3933 special_defense: 0,
3934 speed: 0,
3935 accuracy: 0,
3936 },
3937 }),
3938 ..Default::default()
3939 },
3940 );
3941 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
3942 moves.insert(
3943 Choices::DRACOMETEOR,
3944 Choice {
3945 move_id: Choices::DRACOMETEOR,
3946 accuracy: 90.0,
3947 base_power: 140.0,
3948 category: MoveCategory::Special,
3949 move_type: PokemonType::DRAGON,
3950 flags: Flags {
3951 protect: true,
3952 ..Default::default()
3953 },
3954 boost: Some(Boost {
3955 target: MoveTarget::User,
3956 boosts: StatBoosts {
3957 attack: 0,
3958 defense: 0,
3959 special_attack: -2,
3960 special_defense: 0,
3961 speed: 0,
3962 accuracy: 0,
3963 },
3964 }),
3965 ..Default::default()
3966 },
3967 );
3968 } else {
3969 moves.insert(
3970 Choices::DRACOMETEOR,
3971 Choice {
3972 move_id: Choices::DRACOMETEOR,
3973 accuracy: 90.0,
3974 base_power: 130.0,
3975 category: MoveCategory::Special,
3976 move_type: PokemonType::DRAGON,
3977 flags: Flags {
3978 protect: true,
3979 ..Default::default()
3980 },
3981 boost: Some(Boost {
3982 target: MoveTarget::User,
3983 boosts: StatBoosts {
3984 attack: 0,
3985 defense: 0,
3986 special_attack: -2,
3987 special_defense: 0,
3988 speed: 0,
3989 accuracy: 0,
3990 },
3991 }),
3992 ..Default::default()
3993 },
3994 );
3995 }
3996 moves.insert(
3997 Choices::DRAGONASCENT,
3998 Choice {
3999 move_id: Choices::DRAGONASCENT,
4000 base_power: 120.0,
4001 category: MoveCategory::Physical,
4002 move_type: PokemonType::FLYING,
4003 flags: Flags {
4004 contact: true,
4005 protect: true,
4006 ..Default::default()
4007 },
4008 boost: Some(Boost {
4009 target: MoveTarget::User,
4010 boosts: StatBoosts {
4011 attack: 0,
4012 defense: -1,
4013 special_attack: 0,
4014 special_defense: -1,
4015 speed: 0,
4016 accuracy: 0,
4017 },
4018 }),
4019 ..Default::default()
4020 },
4021 );
4022 moves.insert(
4023 Choices::DRAGONBREATH,
4024 Choice {
4025 move_id: Choices::DRAGONBREATH,
4026 base_power: 60.0,
4027 category: MoveCategory::Special,
4028 move_type: PokemonType::DRAGON,
4029 flags: Flags {
4030 protect: true,
4031 ..Default::default()
4032 },
4033 secondaries: Some(vec![Secondary {
4034 chance: 30.0,
4035 target: MoveTarget::Opponent,
4036 effect: Effect::Status(PokemonStatus::PARALYZE),
4037 }]),
4038 ..Default::default()
4039 },
4040 );
4041 moves.insert(
4042 Choices::DRAGONCHEER,
4043 Choice {
4044 move_id: Choices::DRAGONCHEER,
4045 base_power: 60.0,
4046 category: MoveCategory::Status,
4047 move_type: PokemonType::DRAGON,
4048 target: MoveTarget::User,
4049 flags: Flags {
4050 ..Default::default()
4051 },
4052 ..Default::default()
4053 },
4054 );
4055 moves.insert(
4056 Choices::DRAGONCLAW,
4057 Choice {
4058 move_id: Choices::DRAGONCLAW,
4059 base_power: 80.0,
4060 category: MoveCategory::Physical,
4061 move_type: PokemonType::DRAGON,
4062 flags: Flags {
4063 contact: true,
4064 protect: true,
4065 ..Default::default()
4066 },
4067 ..Default::default()
4068 },
4069 );
4070 moves.insert(
4071 Choices::DRAGONDANCE,
4072 Choice {
4073 move_id: Choices::DRAGONDANCE,
4074 target: MoveTarget::User,
4075 move_type: PokemonType::DRAGON,
4076 flags: Flags {
4077 ..Default::default()
4078 },
4079 boost: Some(Boost {
4080 target: MoveTarget::User,
4081 boosts: StatBoosts {
4082 attack: 1,
4083 defense: 0,
4084 special_attack: 0,
4085 special_defense: 0,
4086 speed: 1,
4087 accuracy: 0,
4088 },
4089 }),
4090 ..Default::default()
4091 },
4092 );
4093 moves.insert(
4094 Choices::DRAGONDARTS,
4095 Choice {
4096 move_id: Choices::DRAGONDARTS,
4097 base_power: 50.0,
4098 category: MoveCategory::Physical,
4099 move_type: PokemonType::DRAGON,
4100 flags: Flags {
4101 protect: true,
4102 ..Default::default()
4103 },
4104 ..Default::default()
4105 },
4106 );
4107 moves.insert(
4108 Choices::DRAGONENERGY,
4109 Choice {
4110 move_id: Choices::DRAGONENERGY,
4111 base_power: 150.0,
4112 category: MoveCategory::Special,
4113 move_type: PokemonType::DRAGON,
4114 flags: Flags {
4115 protect: true,
4116 ..Default::default()
4117 },
4118 ..Default::default()
4119 },
4120 );
4121 moves.insert(
4122 Choices::DRAGONHAMMER,
4123 Choice {
4124 move_id: Choices::DRAGONHAMMER,
4125 base_power: 90.0,
4126 category: MoveCategory::Physical,
4127 move_type: PokemonType::DRAGON,
4128 flags: Flags {
4129 contact: true,
4130 protect: true,
4131 ..Default::default()
4132 },
4133 ..Default::default()
4134 },
4135 );
4136 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
4137 moves.insert(
4138 Choices::DRAGONPULSE,
4139 Choice {
4140 move_id: Choices::DRAGONPULSE,
4141 base_power: 90.0,
4142 category: MoveCategory::Special,
4143 move_type: PokemonType::DRAGON,
4144 flags: Flags {
4145 protect: true,
4146 pulse: true,
4147 ..Default::default()
4148 },
4149 ..Default::default()
4150 },
4151 );
4152 } else {
4153 moves.insert(
4154 Choices::DRAGONPULSE,
4155 Choice {
4156 move_id: Choices::DRAGONPULSE,
4157 base_power: 85.0,
4158 category: MoveCategory::Special,
4159 move_type: PokemonType::DRAGON,
4160 flags: Flags {
4161 protect: true,
4162 pulse: true,
4163 ..Default::default()
4164 },
4165 ..Default::default()
4166 },
4167 );
4168 }
4169 moves.insert(
4170 Choices::DRAGONRAGE,
4171 Choice {
4172 move_id: Choices::DRAGONRAGE,
4173 category: MoveCategory::Special,
4174 move_type: PokemonType::DRAGON,
4175 flags: Flags {
4176 protect: true,
4177 ..Default::default()
4178 },
4179 ..Default::default()
4180 },
4181 );
4182 moves.insert(
4183 Choices::DRAGONRUSH,
4184 Choice {
4185 move_id: Choices::DRAGONRUSH,
4186 accuracy: 75.0,
4187 base_power: 100.0,
4188 category: MoveCategory::Physical,
4189 move_type: PokemonType::DRAGON,
4190 flags: Flags {
4191 contact: true,
4192 protect: true,
4193 ..Default::default()
4194 },
4195 secondaries: Some(vec![Secondary {
4196 chance: 20.0,
4197 target: MoveTarget::Opponent,
4198 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4199 }]),
4200 ..Default::default()
4201 },
4202 );
4203 moves.insert(
4204 Choices::DRAGONTAIL,
4205 Choice {
4206 move_id: Choices::DRAGONTAIL,
4207 accuracy: 90.0,
4208 base_power: 60.0,
4209 category: MoveCategory::Physical,
4210 priority: -6,
4211 move_type: PokemonType::DRAGON,
4212 flags: Flags {
4213 contact: true,
4214 drag: true,
4215 protect: true,
4216 ..Default::default()
4217 },
4218 ..Default::default()
4219 },
4220 );
4221 moves.insert(
4222 Choices::DRAININGKISS,
4223 Choice {
4224 move_id: Choices::DRAININGKISS,
4225 base_power: 50.0,
4226 category: MoveCategory::Special,
4227 move_type: PokemonType::FAIRY,
4228 flags: Flags {
4229 contact: true,
4230 heal: true,
4231 protect: true,
4232 ..Default::default()
4233 },
4234 drain: Some(0.75),
4235 ..Default::default()
4236 },
4237 );
4238 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
4239 moves.insert(
4240 Choices::DRAINPUNCH,
4241 Choice {
4242 move_id: Choices::DRAINPUNCH,
4243 base_power: 60.0,
4244 category: MoveCategory::Physical,
4245 move_type: PokemonType::FIGHTING,
4246 flags: Flags {
4247 contact: true,
4248 heal: true,
4249 protect: true,
4250 punch: true,
4251 ..Default::default()
4252 },
4253 drain: Some(0.5),
4254 ..Default::default()
4255 },
4256 );
4257 } else {
4258 moves.insert(
4259 Choices::DRAINPUNCH,
4260 Choice {
4261 move_id: Choices::DRAINPUNCH,
4262 base_power: 75.0,
4263 category: MoveCategory::Physical,
4264 move_type: PokemonType::FIGHTING,
4265 flags: Flags {
4266 contact: true,
4267 heal: true,
4268 protect: true,
4269 punch: true,
4270 ..Default::default()
4271 },
4272 drain: Some(0.5),
4273 ..Default::default()
4274 },
4275 );
4276 }
4277 moves.insert(
4278 Choices::DREAMEATER,
4279 Choice {
4280 move_id: Choices::DREAMEATER,
4281 base_power: 100.0,
4282 category: MoveCategory::Special,
4283 move_type: PokemonType::PSYCHIC,
4284 flags: Flags {
4285 heal: true,
4286 protect: true,
4287 ..Default::default()
4288 },
4289 drain: Some(0.5),
4290 ..Default::default()
4291 },
4292 );
4293 moves.insert(
4294 Choices::DRILLPECK,
4295 Choice {
4296 move_id: Choices::DRILLPECK,
4297 base_power: 80.0,
4298 category: MoveCategory::Physical,
4299 move_type: PokemonType::FLYING,
4300 flags: Flags {
4301 contact: true,
4302 protect: true,
4303 ..Default::default()
4304 },
4305 ..Default::default()
4306 },
4307 );
4308 moves.insert(
4309 Choices::DRILLRUN,
4310 Choice {
4311 move_id: Choices::DRILLRUN,
4312 accuracy: 95.0,
4313 base_power: 80.0,
4314 category: MoveCategory::Physical,
4315 move_type: PokemonType::GROUND,
4316 flags: Flags {
4317 contact: true,
4318 protect: true,
4319 ..Default::default()
4320 },
4321 ..Default::default()
4322 },
4323 );
4324 moves.insert(
4325 Choices::DRUMBEATING,
4326 Choice {
4327 move_id: Choices::DRUMBEATING,
4328 base_power: 80.0,
4329 category: MoveCategory::Physical,
4330 move_type: PokemonType::GRASS,
4331 flags: Flags {
4332 protect: true,
4333 ..Default::default()
4334 },
4335 secondaries: Some(vec![Secondary {
4336 chance: 100.0,
4337 target: MoveTarget::Opponent,
4338 effect: Effect::Boost(StatBoosts {
4339 attack: 0,
4340 defense: 0,
4341 special_attack: 0,
4342 special_defense: 0,
4343 speed: -1,
4344 accuracy: 0,
4345 }),
4346 }]),
4347 ..Default::default()
4348 },
4349 );
4350 moves.insert(
4351 Choices::DUALCHOP,
4352 Choice {
4353 move_id: Choices::DUALCHOP,
4354 accuracy: 90.0,
4355 base_power: 40.0,
4356 category: MoveCategory::Physical,
4357 move_type: PokemonType::DRAGON,
4358 flags: Flags {
4359 contact: true,
4360 protect: true,
4361 ..Default::default()
4362 },
4363 ..Default::default()
4364 },
4365 );
4366 moves.insert(
4367 Choices::DUALWINGBEAT,
4368 Choice {
4369 move_id: Choices::DUALWINGBEAT,
4370 accuracy: 90.0,
4371 base_power: 40.0,
4372 category: MoveCategory::Physical,
4373 move_type: PokemonType::FLYING,
4374 flags: Flags {
4375 contact: true,
4376 protect: true,
4377 ..Default::default()
4378 },
4379 ..Default::default()
4380 },
4381 );
4382 moves.insert(
4383 Choices::DYNAMAXCANNON,
4384 Choice {
4385 move_id: Choices::DYNAMAXCANNON,
4386 base_power: 100.0,
4387 category: MoveCategory::Special,
4388 move_type: PokemonType::DRAGON,
4389 flags: Flags {
4390 protect: true,
4391 ..Default::default()
4392 },
4393 ..Default::default()
4394 },
4395 );
4396 moves.insert(
4397 Choices::DYNAMICPUNCH,
4398 Choice {
4399 move_id: Choices::DYNAMICPUNCH,
4400 accuracy: 50.0,
4401 base_power: 100.0,
4402 category: MoveCategory::Physical,
4403 move_type: PokemonType::FIGHTING,
4404 flags: Flags {
4405 contact: true,
4406 protect: true,
4407 punch: true,
4408 ..Default::default()
4409 },
4410 secondaries: Some(vec![Secondary {
4411 chance: 100.0,
4412 target: MoveTarget::Opponent,
4413 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
4414 }]),
4415 ..Default::default()
4416 },
4417 );
4418 moves.insert(
4419 Choices::EARTHPOWER,
4420 Choice {
4421 move_id: Choices::EARTHPOWER,
4422 base_power: 90.0,
4423 category: MoveCategory::Special,
4424 move_type: PokemonType::GROUND,
4425 flags: Flags {
4426 protect: true,
4427 ..Default::default()
4428 },
4429 secondaries: Some(vec![Secondary {
4430 chance: 10.0,
4431 target: MoveTarget::Opponent,
4432 effect: Effect::Boost(StatBoosts {
4433 attack: 0,
4434 defense: 0,
4435 special_attack: 0,
4436 special_defense: -1,
4437 speed: 0,
4438 accuracy: 0,
4439 }),
4440 }]),
4441 ..Default::default()
4442 },
4443 );
4444 moves.insert(
4445 Choices::EARTHQUAKE,
4446 Choice {
4447 move_id: Choices::EARTHQUAKE,
4448 base_power: 100.0,
4449 category: MoveCategory::Physical,
4450 move_type: PokemonType::GROUND,
4451 flags: Flags {
4452 protect: true,
4453 ..Default::default()
4454 },
4455 ..Default::default()
4456 },
4457 );
4458 moves.insert(
4459 Choices::ECHOEDVOICE,
4460 Choice {
4461 move_id: Choices::ECHOEDVOICE,
4462 base_power: 40.0,
4463 category: MoveCategory::Special,
4464 move_type: PokemonType::NORMAL,
4465 flags: Flags {
4466 protect: true,
4467 sound: true,
4468 ..Default::default()
4469 },
4470 ..Default::default()
4471 },
4472 );
4473 moves.insert(
4474 Choices::EERIEIMPULSE,
4475 Choice {
4476 move_id: Choices::EERIEIMPULSE,
4477 move_type: PokemonType::ELECTRIC,
4478 flags: Flags {
4479 protect: true,
4480 reflectable: true,
4481 ..Default::default()
4482 },
4483 boost: Some(Boost {
4484 target: MoveTarget::Opponent,
4485 boosts: StatBoosts {
4486 attack: 0,
4487 defense: 0,
4488 special_attack: -2,
4489 special_defense: 0,
4490 speed: 0,
4491 accuracy: 0,
4492 },
4493 }),
4494 ..Default::default()
4495 },
4496 );
4497 moves.insert(
4498 Choices::EERIESPELL,
4499 Choice {
4500 move_id: Choices::EERIESPELL,
4501 base_power: 80.0,
4502 category: MoveCategory::Special,
4503 move_type: PokemonType::PSYCHIC,
4504 flags: Flags {
4505 protect: true,
4506 sound: true,
4507 ..Default::default()
4508 },
4509 ..Default::default()
4510 },
4511 );
4512 moves.insert(
4513 Choices::EGGBOMB,
4514 Choice {
4515 move_id: Choices::EGGBOMB,
4516 accuracy: 75.0,
4517 base_power: 100.0,
4518 category: MoveCategory::Physical,
4519 move_type: PokemonType::NORMAL,
4520 flags: Flags {
4521 bullet: true,
4522 protect: true,
4523 ..Default::default()
4524 },
4525 ..Default::default()
4526 },
4527 );
4528 moves.insert(
4529 Choices::ELECTRICTERRAIN,
4530 Choice {
4531 move_id: Choices::ELECTRICTERRAIN,
4532 move_type: PokemonType::ELECTRIC,
4533 flags: Flags {
4534 ..Default::default()
4535 },
4536 ..Default::default()
4537 },
4538 );
4539 moves.insert(
4540 Choices::ELECTRIFY,
4541 Choice {
4542 move_id: Choices::ELECTRIFY,
4543 move_type: PokemonType::ELECTRIC,
4544 flags: Flags {
4545 protect: true,
4546 ..Default::default()
4547 },
4548 volatile_status: Some(VolatileStatus {
4549 target: MoveTarget::Opponent,
4550 volatile_status: PokemonVolatileStatus::ELECTRIFY,
4551 }),
4552 ..Default::default()
4553 },
4554 );
4555 moves.insert(
4556 Choices::ELECTROBALL,
4557 Choice {
4558 move_id: Choices::ELECTROBALL,
4559 category: MoveCategory::Special,
4560 move_type: PokemonType::ELECTRIC,
4561 flags: Flags {
4562 bullet: true,
4563 protect: true,
4564 ..Default::default()
4565 },
4566 ..Default::default()
4567 },
4568 );
4569 moves.insert(
4570 Choices::ELECTRODRIFT,
4571 Choice {
4572 move_id: Choices::ELECTRODRIFT,
4573 base_power: 100.0,
4574 category: MoveCategory::Special,
4575 move_type: PokemonType::ELECTRIC,
4576 flags: Flags {
4577 contact: true,
4578 protect: true,
4579 ..Default::default()
4580 },
4581 ..Default::default()
4582 },
4583 );
4584 moves.insert(
4585 Choices::ELECTROSHOT,
4586 Choice {
4587 move_id: Choices::ELECTROSHOT,
4588 base_power: 130.0,
4589 category: MoveCategory::Special,
4590 move_type: PokemonType::ELECTRIC,
4591 flags: Flags {
4592 charge: true,
4593 protect: true,
4594 ..Default::default()
4595 },
4596 ..Default::default()
4597 },
4598 );
4599 moves.insert(
4600 Choices::ELECTROWEB,
4601 Choice {
4602 move_id: Choices::ELECTROWEB,
4603 accuracy: 95.0,
4604 base_power: 55.0,
4605 category: MoveCategory::Special,
4606 move_type: PokemonType::ELECTRIC,
4607 flags: Flags {
4608 protect: true,
4609 ..Default::default()
4610 },
4611 secondaries: Some(vec![Secondary {
4612 chance: 100.0,
4613 target: MoveTarget::Opponent,
4614 effect: Effect::Boost(StatBoosts {
4615 attack: 0,
4616 defense: 0,
4617 special_attack: 0,
4618 special_defense: 0,
4619 speed: -1,
4620 accuracy: 0,
4621 }),
4622 }]),
4623 ..Default::default()
4624 },
4625 );
4626 moves.insert(
4627 Choices::EMBARGO,
4628 Choice {
4629 move_id: Choices::EMBARGO,
4630 move_type: PokemonType::DARK,
4631 flags: Flags {
4632 protect: true,
4633 reflectable: true,
4634 ..Default::default()
4635 },
4636 volatile_status: Some(VolatileStatus {
4637 target: MoveTarget::Opponent,
4638 volatile_status: PokemonVolatileStatus::EMBARGO,
4639 }),
4640 ..Default::default()
4641 },
4642 );
4643 moves.insert(
4644 Choices::EMBER,
4645 Choice {
4646 move_id: Choices::EMBER,
4647 base_power: 40.0,
4648 category: MoveCategory::Special,
4649 move_type: PokemonType::FIRE,
4650 flags: Flags {
4651 protect: true,
4652 ..Default::default()
4653 },
4654 secondaries: Some(vec![Secondary {
4655 chance: 10.0,
4656 target: MoveTarget::Opponent,
4657 effect: Effect::Status(PokemonStatus::BURN),
4658 }]),
4659 ..Default::default()
4660 },
4661 );
4662 moves.insert(
4663 Choices::ENCORE,
4664 Choice {
4665 move_id: Choices::ENCORE,
4666 move_type: PokemonType::NORMAL,
4667 flags: Flags {
4668 protect: true,
4669 reflectable: true,
4670 ..Default::default()
4671 },
4672 volatile_status: Some(VolatileStatus {
4673 target: MoveTarget::Opponent,
4674 volatile_status: PokemonVolatileStatus::ENCORE,
4675 }),
4676 ..Default::default()
4677 },
4678 );
4679 moves.insert(
4680 Choices::ENDEAVOR,
4681 Choice {
4682 move_id: Choices::ENDEAVOR,
4683 category: MoveCategory::Physical,
4684 move_type: PokemonType::NORMAL,
4685 flags: Flags {
4686 contact: true,
4687 protect: true,
4688 ..Default::default()
4689 },
4690 ..Default::default()
4691 },
4692 );
4693 moves.insert(
4694 Choices::ENDURE,
4695 Choice {
4696 move_id: Choices::ENDURE,
4697 priority: 4,
4698 target: MoveTarget::User,
4699 move_type: PokemonType::NORMAL,
4700 flags: Flags {
4701 ..Default::default()
4702 },
4703 volatile_status: Some(VolatileStatus {
4704 target: MoveTarget::User,
4705 volatile_status: PokemonVolatileStatus::ENDURE,
4706 }),
4707 ..Default::default()
4708 },
4709 );
4710 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
4711 moves.insert(
4712 Choices::ENERGYBALL,
4713 Choice {
4714 move_id: Choices::ENERGYBALL,
4715 base_power: 80.0,
4716 category: MoveCategory::Special,
4717 move_type: PokemonType::GRASS,
4718 flags: Flags {
4719 bullet: true,
4720 protect: true,
4721 ..Default::default()
4722 },
4723 secondaries: Some(vec![Secondary {
4724 chance: 10.0,
4725 target: MoveTarget::Opponent,
4726 effect: Effect::Boost(StatBoosts {
4727 attack: 0,
4728 defense: 0,
4729 special_attack: 0,
4730 special_defense: -1,
4731 speed: 0,
4732 accuracy: 0,
4733 }),
4734 }]),
4735 ..Default::default()
4736 },
4737 );
4738 } else {
4739 moves.insert(
4740 Choices::ENERGYBALL,
4741 Choice {
4742 move_id: Choices::ENERGYBALL,
4743 base_power: 90.0,
4744 category: MoveCategory::Special,
4745 move_type: PokemonType::GRASS,
4746 flags: Flags {
4747 bullet: true,
4748 protect: true,
4749 ..Default::default()
4750 },
4751 secondaries: Some(vec![Secondary {
4752 chance: 10.0,
4753 target: MoveTarget::Opponent,
4754 effect: Effect::Boost(StatBoosts {
4755 attack: 0,
4756 defense: 0,
4757 special_attack: 0,
4758 special_defense: -1,
4759 speed: 0,
4760 accuracy: 0,
4761 }),
4762 }]),
4763 ..Default::default()
4764 },
4765 );
4766 }
4767 moves.insert(
4768 Choices::ENTRAINMENT,
4769 Choice {
4770 move_id: Choices::ENTRAINMENT,
4771 move_type: PokemonType::NORMAL,
4772 flags: Flags {
4773 protect: true,
4774 reflectable: true,
4775 ..Default::default()
4776 },
4777 ..Default::default()
4778 },
4779 );
4780 moves.insert(
4781 Choices::ERUPTION,
4782 Choice {
4783 move_id: Choices::ERUPTION,
4784 base_power: 150.0,
4785 category: MoveCategory::Special,
4786 move_type: PokemonType::FIRE,
4787 flags: Flags {
4788 protect: true,
4789 ..Default::default()
4790 },
4791 ..Default::default()
4792 },
4793 );
4794 moves.insert(
4795 Choices::ESPERWING,
4796 Choice {
4797 move_id: Choices::ESPERWING,
4798 base_power: 80.0,
4799 category: MoveCategory::Special,
4800 move_type: PokemonType::PSYCHIC,
4801 flags: Flags {
4802 protect: true,
4803 ..Default::default()
4804 },
4805 secondaries: Some(vec![Secondary {
4806 chance: 100.0,
4807 target: MoveTarget::User,
4808 effect: Effect::Boost(StatBoosts {
4809 attack: 0,
4810 defense: 0,
4811 special_attack: 0,
4812 special_defense: 0,
4813 speed: 1,
4814 accuracy: 0,
4815 }),
4816 }]),
4817 ..Default::default()
4818 },
4819 );
4820 moves.insert(
4821 Choices::ETERNABEAM,
4822 Choice {
4823 move_id: Choices::ETERNABEAM,
4824 accuracy: 90.0,
4825 base_power: 160.0,
4826 category: MoveCategory::Special,
4827 move_type: PokemonType::DRAGON,
4828 flags: Flags {
4829 protect: true,
4830 recharge: true,
4831 ..Default::default()
4832 },
4833 ..Default::default()
4834 },
4835 );
4836 moves.insert(
4837 Choices::EXPANDINGFORCE,
4838 Choice {
4839 move_id: Choices::EXPANDINGFORCE,
4840 base_power: 80.0,
4841 category: MoveCategory::Special,
4842 move_type: PokemonType::PSYCHIC,
4843 flags: Flags {
4844 protect: true,
4845 ..Default::default()
4846 },
4847 ..Default::default()
4848 },
4849 );
4850 if cfg!(feature = "gen1") {
4851 moves.insert(
4852 Choices::EXPLOSION,
4853 Choice {
4854 move_id: Choices::EXPLOSION,
4855 base_power: 170.0,
4856 category: MoveCategory::Physical,
4857 move_type: PokemonType::NORMAL,
4858 flags: Flags {
4859 protect: true,
4860 ..Default::default()
4861 },
4862 ..Default::default()
4863 },
4864 );
4865 } else {
4866 moves.insert(
4867 Choices::EXPLOSION,
4868 Choice {
4869 move_id: Choices::EXPLOSION,
4870 base_power: 250.0,
4871 category: MoveCategory::Physical,
4872 move_type: PokemonType::NORMAL,
4873 flags: Flags {
4874 protect: true,
4875 ..Default::default()
4876 },
4877 ..Default::default()
4878 },
4879 );
4880 }
4881 moves.insert(
4882 Choices::EXTRASENSORY,
4883 Choice {
4884 move_id: Choices::EXTRASENSORY,
4885 base_power: 80.0,
4886 category: MoveCategory::Special,
4887 move_type: PokemonType::PSYCHIC,
4888 flags: Flags {
4889 protect: true,
4890 ..Default::default()
4891 },
4892 secondaries: Some(vec![Secondary {
4893 chance: 10.0,
4894 target: MoveTarget::Opponent,
4895 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4896 }]),
4897 ..Default::default()
4898 },
4899 );
4900 moves.insert(
4901 Choices::EXTREMESPEED,
4902 Choice {
4903 move_id: Choices::EXTREMESPEED,
4904 base_power: 80.0,
4905 category: MoveCategory::Physical,
4906 priority: 2,
4907 move_type: PokemonType::NORMAL,
4908 flags: Flags {
4909 contact: true,
4910 protect: true,
4911 ..Default::default()
4912 },
4913 ..Default::default()
4914 },
4915 );
4916 moves.insert(
4917 Choices::FACADE,
4918 Choice {
4919 move_id: Choices::FACADE,
4920 base_power: 70.0,
4921 category: MoveCategory::Physical,
4922 move_type: PokemonType::NORMAL,
4923 flags: Flags {
4924 contact: true,
4925 protect: true,
4926 ..Default::default()
4927 },
4928 ..Default::default()
4929 },
4930 );
4931 moves.insert(
4932 Choices::FAIRYLOCK,
4933 Choice {
4934 move_id: Choices::FAIRYLOCK,
4935 move_type: PokemonType::FAIRY,
4936 flags: Flags {
4937 ..Default::default()
4938 },
4939 ..Default::default()
4940 },
4941 );
4942 moves.insert(
4943 Choices::FAIRYWIND,
4944 Choice {
4945 move_id: Choices::FAIRYWIND,
4946 base_power: 40.0,
4947 category: MoveCategory::Special,
4948 move_type: PokemonType::FAIRY,
4949 flags: Flags {
4950 protect: true,
4951 wind: true,
4952 ..Default::default()
4953 },
4954 ..Default::default()
4955 },
4956 );
4957 moves.insert(
4958 Choices::FAKEOUT,
4959 Choice {
4960 move_id: Choices::FAKEOUT,
4961 base_power: 40.0,
4962 category: MoveCategory::Physical,
4963 priority: 3,
4964 move_type: PokemonType::NORMAL,
4965 flags: Flags {
4966 contact: true,
4967 protect: true,
4968 ..Default::default()
4969 },
4970 secondaries: Some(vec![Secondary {
4971 chance: 100.0,
4972 target: MoveTarget::Opponent,
4973 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
4974 }]),
4975 ..Default::default()
4976 },
4977 );
4978 moves.insert(
4979 Choices::FAKETEARS,
4980 Choice {
4981 move_id: Choices::FAKETEARS,
4982 move_type: PokemonType::DARK,
4983 flags: Flags {
4984 protect: true,
4985 reflectable: true,
4986 ..Default::default()
4987 },
4988 boost: Some(Boost {
4989 target: MoveTarget::Opponent,
4990 boosts: StatBoosts {
4991 attack: 0,
4992 defense: 0,
4993 special_attack: 0,
4994 special_defense: -2,
4995 speed: 0,
4996 accuracy: 0,
4997 },
4998 }),
4999 ..Default::default()
5000 },
5001 );
5002 moves.insert(
5003 Choices::FALSESURRENDER,
5004 Choice {
5005 move_id: Choices::FALSESURRENDER,
5006 base_power: 80.0,
5007 category: MoveCategory::Physical,
5008 move_type: PokemonType::DARK,
5009 flags: Flags {
5010 contact: true,
5011 protect: true,
5012 ..Default::default()
5013 },
5014 ..Default::default()
5015 },
5016 );
5017 moves.insert(
5018 Choices::FALSESWIPE,
5019 Choice {
5020 move_id: Choices::FALSESWIPE,
5021 base_power: 40.0,
5022 category: MoveCategory::Physical,
5023 move_type: PokemonType::NORMAL,
5024 flags: Flags {
5025 contact: true,
5026 protect: true,
5027 ..Default::default()
5028 },
5029 ..Default::default()
5030 },
5031 );
5032 moves.insert(
5033 Choices::FEATHERDANCE,
5034 Choice {
5035 move_id: Choices::FEATHERDANCE,
5036 move_type: PokemonType::FLYING,
5037 flags: Flags {
5038 protect: true,
5039 reflectable: true,
5040 ..Default::default()
5041 },
5042 boost: Some(Boost {
5043 target: MoveTarget::Opponent,
5044 boosts: StatBoosts {
5045 attack: -2,
5046 defense: 0,
5047 special_attack: 0,
5048 special_defense: 0,
5049 speed: 0,
5050 accuracy: 0,
5051 },
5052 }),
5053 ..Default::default()
5054 },
5055 );
5056 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
5057 moves.insert(
5058 Choices::FEINT,
5059 Choice {
5060 move_id: Choices::FEINT,
5061 base_power: 50.0,
5062 category: MoveCategory::Physical,
5063 priority: 2,
5064 move_type: PokemonType::NORMAL,
5065 flags: Flags {
5066 ..Default::default()
5067 },
5068 ..Default::default()
5069 },
5070 );
5071 } else {
5072 moves.insert(
5073 Choices::FEINT,
5074 Choice {
5075 move_id: Choices::FEINT,
5076 base_power: 30.0,
5077 category: MoveCategory::Physical,
5078 priority: 2,
5079 move_type: PokemonType::NORMAL,
5080 flags: Flags {
5081 ..Default::default()
5082 },
5083 ..Default::default()
5084 },
5085 );
5086 }
5087 moves.insert(
5088 Choices::FEINTATTACK,
5089 Choice {
5090 move_id: Choices::FEINTATTACK,
5091 base_power: 60.0,
5092 category: MoveCategory::Physical,
5093 move_type: PokemonType::DARK,
5094 flags: Flags {
5095 contact: true,
5096 protect: true,
5097 ..Default::default()
5098 },
5099 ..Default::default()
5100 },
5101 );
5102 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
5103 moves.insert(
5104 Choices::FELLSTINGER,
5105 Choice {
5106 move_id: Choices::FELLSTINGER,
5107 base_power: 30.0,
5108 category: MoveCategory::Physical,
5109 move_type: PokemonType::BUG,
5110 flags: Flags {
5111 contact: true,
5112 protect: true,
5113 ..Default::default()
5114 },
5115 ..Default::default()
5116 },
5117 );
5118 } else {
5119 moves.insert(
5120 Choices::FELLSTINGER,
5121 Choice {
5122 move_id: Choices::FELLSTINGER,
5123 base_power: 50.0,
5124 category: MoveCategory::Physical,
5125 move_type: PokemonType::BUG,
5126 flags: Flags {
5127 contact: true,
5128 protect: true,
5129 ..Default::default()
5130 },
5131 ..Default::default()
5132 },
5133 );
5134 }
5135 moves.insert(
5136 Choices::FICKLEBEAM,
5137 Choice {
5138 move_id: Choices::FICKLEBEAM,
5139 base_power: 80.0,
5140 category: MoveCategory::Special,
5141 move_type: PokemonType::DRAGON,
5142 flags: Flags {
5143 protect: true,
5144 ..Default::default()
5145 },
5146 secondaries: Some(vec![Secondary {
5147 chance: 50.0,
5148 target: MoveTarget::User,
5149 effect: Effect::Boost(StatBoosts {
5150 attack: 0,
5151 defense: 0,
5152 special_attack: 1,
5153 special_defense: 0,
5154 speed: 0,
5155 accuracy: 0,
5156 }),
5157 }]),
5158 ..Default::default()
5159 },
5160 );
5161 moves.insert(
5162 Choices::FIERYDANCE,
5163 Choice {
5164 move_id: Choices::FIERYDANCE,
5165 base_power: 80.0,
5166 category: MoveCategory::Special,
5167 move_type: PokemonType::FIRE,
5168 flags: Flags {
5169 protect: true,
5170 ..Default::default()
5171 },
5172 secondaries: Some(vec![Secondary {
5173 chance: 50.0,
5174 target: MoveTarget::User,
5175 effect: Effect::Boost(StatBoosts {
5176 attack: 0,
5177 defense: 0,
5178 special_attack: 1,
5179 special_defense: 0,
5180 speed: 0,
5181 accuracy: 0,
5182 }),
5183 }]),
5184 ..Default::default()
5185 },
5186 );
5187 moves.insert(
5188 Choices::FIERYWRATH,
5189 Choice {
5190 move_id: Choices::FIERYWRATH,
5191 base_power: 90.0,
5192 category: MoveCategory::Special,
5193 move_type: PokemonType::DARK,
5194 flags: Flags {
5195 protect: true,
5196 ..Default::default()
5197 },
5198 secondaries: Some(vec![Secondary {
5199 chance: 20.0,
5200 target: MoveTarget::Opponent,
5201 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5202 }]),
5203 ..Default::default()
5204 },
5205 );
5206 moves.insert(
5207 Choices::FILLETAWAY,
5208 Choice {
5209 move_id: Choices::FILLETAWAY,
5210 target: MoveTarget::User,
5211 move_type: PokemonType::NORMAL,
5212 flags: Flags {
5213 ..Default::default()
5214 },
5215 ..Default::default()
5216 },
5217 );
5218 moves.insert(
5219 Choices::FINALGAMBIT,
5220 Choice {
5221 move_id: Choices::FINALGAMBIT,
5222 category: MoveCategory::Special,
5223 move_type: PokemonType::FIGHTING,
5224 flags: Flags {
5225 protect: true,
5226 ..Default::default()
5227 },
5228 ..Default::default()
5229 },
5230 );
5231 if cfg!(feature = "gen1") {
5232 moves.insert(
5233 Choices::FIREBLAST,
5234 Choice {
5235 move_id: Choices::FIREBLAST,
5236 accuracy: 85.0,
5237 base_power: 120.0,
5238 category: MoveCategory::Special,
5239 move_type: PokemonType::FIRE,
5240 flags: Flags {
5241 protect: true,
5242 ..Default::default()
5243 },
5244 secondaries: Some(vec![Secondary {
5245 chance: 30.0,
5246 target: MoveTarget::Opponent,
5247 effect: Effect::Status(PokemonStatus::BURN),
5248 }]),
5249 ..Default::default()
5250 },
5251 );
5252 }
5253 else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5254 moves.insert(
5255 Choices::FIREBLAST,
5256 Choice {
5257 move_id: Choices::FIREBLAST,
5258 accuracy: 85.0,
5259 base_power: 120.0,
5260 category: MoveCategory::Special,
5261 move_type: PokemonType::FIRE,
5262 flags: Flags {
5263 protect: true,
5264 ..Default::default()
5265 },
5266 secondaries: Some(vec![Secondary {
5267 chance: 10.0,
5268 target: MoveTarget::Opponent,
5269 effect: Effect::Status(PokemonStatus::BURN),
5270 }]),
5271 ..Default::default()
5272 },
5273 );
5274 } else {
5275 moves.insert(
5276 Choices::FIREBLAST,
5277 Choice {
5278 move_id: Choices::FIREBLAST,
5279 accuracy: 85.0,
5280 base_power: 110.0,
5281 category: MoveCategory::Special,
5282 move_type: PokemonType::FIRE,
5283 flags: Flags {
5284 protect: true,
5285 ..Default::default()
5286 },
5287 secondaries: Some(vec![Secondary {
5288 chance: 10.0,
5289 target: MoveTarget::Opponent,
5290 effect: Effect::Status(PokemonStatus::BURN),
5291 }]),
5292 ..Default::default()
5293 },
5294 );
5295 }
5296 moves.insert(
5297 Choices::FIREFANG,
5298 Choice {
5299 move_id: Choices::FIREFANG,
5300 accuracy: 95.0,
5301 base_power: 65.0,
5302 category: MoveCategory::Physical,
5303 move_type: PokemonType::FIRE,
5304 flags: Flags {
5305 bite: true,
5306 contact: true,
5307 protect: true,
5308 ..Default::default()
5309 },
5310 secondaries: Some(vec![
5311 Secondary {
5312 chance: 10.0,
5313 target: MoveTarget::Opponent,
5314 effect: Effect::Status(PokemonStatus::BURN),
5315 },
5316 Secondary {
5317 chance: 10.0,
5318 target: MoveTarget::Opponent,
5319 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5320 },
5321 ]),
5322 ..Default::default()
5323 },
5324 );
5325 moves.insert(
5326 Choices::FIRELASH,
5327 Choice {
5328 move_id: Choices::FIRELASH,
5329 base_power: 80.0,
5330 category: MoveCategory::Physical,
5331 move_type: PokemonType::FIRE,
5332 flags: Flags {
5333 contact: true,
5334 protect: true,
5335 ..Default::default()
5336 },
5337 secondaries: Some(vec![Secondary {
5338 chance: 100.0,
5339 target: MoveTarget::Opponent,
5340 effect: Effect::Boost(StatBoosts {
5341 attack: 0,
5342 defense: -1,
5343 special_attack: 0,
5344 special_defense: 0,
5345 speed: 0,
5346 accuracy: 0,
5347 }),
5348 }]),
5349 ..Default::default()
5350 },
5351 );
5352 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5353 moves.insert(
5354 Choices::FIREPLEDGE,
5355 Choice {
5356 move_id: Choices::FIREPLEDGE,
5357 base_power: 50.0,
5358 category: MoveCategory::Special,
5359 move_type: PokemonType::FIRE,
5360 flags: Flags {
5361 protect: true,
5362 ..Default::default()
5363 },
5364 ..Default::default()
5365 },
5366 );
5367 } else {
5368 moves.insert(
5369 Choices::FIREPLEDGE,
5370 Choice {
5371 move_id: Choices::FIREPLEDGE,
5372 base_power: 80.0,
5373 category: MoveCategory::Special,
5374 move_type: PokemonType::FIRE,
5375 flags: Flags {
5376 protect: true,
5377 ..Default::default()
5378 },
5379 ..Default::default()
5380 },
5381 );
5382 }
5383 moves.insert(
5384 Choices::FIREPUNCH,
5385 Choice {
5386 move_id: Choices::FIREPUNCH,
5387 base_power: 75.0,
5388 category: MoveCategory::Physical,
5389 move_type: PokemonType::FIRE,
5390 flags: Flags {
5391 contact: true,
5392 protect: true,
5393 punch: true,
5394 ..Default::default()
5395 },
5396 secondaries: Some(vec![Secondary {
5397 chance: 10.0,
5398 target: MoveTarget::Opponent,
5399 effect: Effect::Status(PokemonStatus::BURN),
5400 }]),
5401 ..Default::default()
5402 },
5403 );
5404 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
5405 moves.insert(
5406 Choices::FIRESPIN,
5407 Choice {
5408 move_id: Choices::FIRESPIN,
5409 accuracy: 70.0,
5410 base_power: 15.0,
5411 category: MoveCategory::Special,
5412 move_type: PokemonType::FIRE,
5413 flags: Flags {
5414 protect: true,
5415 ..Default::default()
5416 },
5417 volatile_status: Some(VolatileStatus {
5418 target: MoveTarget::Opponent,
5419 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
5420 }),
5421 ..Default::default()
5422 },
5423 );
5424 } else {
5425 moves.insert(
5426 Choices::FIRESPIN,
5427 Choice {
5428 move_id: Choices::FIRESPIN,
5429 accuracy: 85.0,
5430 base_power: 35.0,
5431 category: MoveCategory::Special,
5432 move_type: PokemonType::FIRE,
5433 flags: Flags {
5434 protect: true,
5435 ..Default::default()
5436 },
5437 volatile_status: Some(VolatileStatus {
5438 target: MoveTarget::Opponent,
5439 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
5440 }),
5441 ..Default::default()
5442 },
5443 );
5444 }
5445 moves.insert(
5446 Choices::FIRSTIMPRESSION,
5447 Choice {
5448 move_id: Choices::FIRSTIMPRESSION,
5449 base_power: 90.0,
5450 category: MoveCategory::Physical,
5451 priority: 2,
5452 move_type: PokemonType::BUG,
5453 flags: Flags {
5454 contact: true,
5455 protect: true,
5456 ..Default::default()
5457 },
5458 ..Default::default()
5459 },
5460 );
5461 moves.insert(
5462 Choices::FISHIOUSREND,
5463 Choice {
5464 move_id: Choices::FISHIOUSREND,
5465 base_power: 85.0,
5466 category: MoveCategory::Physical,
5467 move_type: PokemonType::WATER,
5468 flags: Flags {
5469 bite: true,
5470 contact: true,
5471 protect: true,
5472 ..Default::default()
5473 },
5474 ..Default::default()
5475 },
5476 );
5477 moves.insert(
5478 Choices::FISSURE,
5479 Choice {
5480 move_id: Choices::FISSURE,
5481 accuracy: 30.0,
5482 category: MoveCategory::Physical,
5483 move_type: PokemonType::GROUND,
5484 flags: Flags {
5485 protect: true,
5486 ..Default::default()
5487 },
5488 ..Default::default()
5489 },
5490 );
5491 moves.insert(
5492 Choices::FLAIL,
5493 Choice {
5494 move_id: Choices::FLAIL,
5495 category: MoveCategory::Physical,
5496 move_type: PokemonType::NORMAL,
5497 flags: Flags {
5498 contact: true,
5499 protect: true,
5500 ..Default::default()
5501 },
5502 ..Default::default()
5503 },
5504 );
5505 moves.insert(
5506 Choices::FLAMEBURST,
5507 Choice {
5508 move_id: Choices::FLAMEBURST,
5509 base_power: 70.0,
5510 category: MoveCategory::Special,
5511 move_type: PokemonType::FIRE,
5512 flags: Flags {
5513 protect: true,
5514 ..Default::default()
5515 },
5516 ..Default::default()
5517 },
5518 );
5519 moves.insert(
5520 Choices::FLAMECHARGE,
5521 Choice {
5522 move_id: Choices::FLAMECHARGE,
5523 base_power: 50.0,
5524 category: MoveCategory::Physical,
5525 move_type: PokemonType::FIRE,
5526 flags: Flags {
5527 contact: true,
5528 protect: true,
5529 ..Default::default()
5530 },
5531 secondaries: Some(vec![Secondary {
5532 chance: 100.0,
5533 target: MoveTarget::User,
5534 effect: Effect::Boost(StatBoosts {
5535 attack: 0,
5536 defense: 0,
5537 special_attack: 0,
5538 special_defense: 0,
5539 speed: 1,
5540 accuracy: 0,
5541 }),
5542 }]),
5543 ..Default::default()
5544 },
5545 );
5546 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
5547 moves.insert(
5548 Choices::FLAMETHROWER,
5549 Choice {
5550 move_id: Choices::FLAMETHROWER,
5551 base_power: 95.0,
5552 category: MoveCategory::Special,
5553 move_type: PokemonType::FIRE,
5554 flags: Flags {
5555 protect: true,
5556 ..Default::default()
5557 },
5558 secondaries: Some(vec![Secondary {
5559 chance: 10.0,
5560 target: MoveTarget::Opponent,
5561 effect: Effect::Status(PokemonStatus::BURN),
5562 }]),
5563 ..Default::default()
5564 },
5565 );
5566 } else {
5567 moves.insert(
5568 Choices::FLAMETHROWER,
5569 Choice {
5570 move_id: Choices::FLAMETHROWER,
5571 base_power: 90.0,
5572 category: MoveCategory::Special,
5573 move_type: PokemonType::FIRE,
5574 flags: Flags {
5575 protect: true,
5576 ..Default::default()
5577 },
5578 secondaries: Some(vec![Secondary {
5579 chance: 10.0,
5580 target: MoveTarget::Opponent,
5581 effect: Effect::Status(PokemonStatus::BURN),
5582 }]),
5583 ..Default::default()
5584 },
5585 );
5586 }
5587 moves.insert(
5588 Choices::FLAMEWHEEL,
5589 Choice {
5590 move_id: Choices::FLAMEWHEEL,
5591 base_power: 60.0,
5592 category: MoveCategory::Physical,
5593 move_type: PokemonType::FIRE,
5594 flags: Flags {
5595 contact: true,
5596 protect: true,
5597 ..Default::default()
5598 },
5599 secondaries: Some(vec![Secondary {
5600 chance: 10.0,
5601 target: MoveTarget::Opponent,
5602 effect: Effect::Status(PokemonStatus::BURN),
5603 }]),
5604 ..Default::default()
5605 },
5606 );
5607 moves.insert(
5608 Choices::FLAREBLITZ,
5609 Choice {
5610 move_id: Choices::FLAREBLITZ,
5611 base_power: 120.0,
5612 category: MoveCategory::Physical,
5613 move_type: PokemonType::FIRE,
5614 flags: Flags {
5615 contact: true,
5616 protect: true,
5617 ..Default::default()
5618 },
5619 secondaries: Some(vec![Secondary {
5620 chance: 10.0,
5621 target: MoveTarget::Opponent,
5622 effect: Effect::Status(PokemonStatus::BURN),
5623 }]),
5624 recoil: Some(0.33),
5625 ..Default::default()
5626 },
5627 );
5628 moves.insert(
5629 Choices::FLASH,
5630 Choice {
5631 move_id: Choices::FLASH,
5632 move_type: PokemonType::NORMAL,
5633 flags: Flags {
5634 protect: true,
5635 reflectable: true,
5636 ..Default::default()
5637 },
5638 boost: Some(Boost {
5639 target: MoveTarget::Opponent,
5640 boosts: StatBoosts {
5641 attack: 0,
5642 defense: 0,
5643 special_attack: 0,
5644 special_defense: 0,
5645 speed: 0,
5646 accuracy: -1,
5647 },
5648 }),
5649 ..Default::default()
5650 },
5651 );
5652 moves.insert(
5653 Choices::FLASHCANNON,
5654 Choice {
5655 move_id: Choices::FLASHCANNON,
5656 base_power: 80.0,
5657 category: MoveCategory::Special,
5658 move_type: PokemonType::STEEL,
5659 flags: Flags {
5660 protect: true,
5661 ..Default::default()
5662 },
5663 secondaries: Some(vec![Secondary {
5664 chance: 10.0,
5665 target: MoveTarget::Opponent,
5666 effect: Effect::Boost(StatBoosts {
5667 attack: 0,
5668 defense: 0,
5669 special_attack: 0,
5670 special_defense: -1,
5671 speed: 0,
5672 accuracy: 0,
5673 }),
5674 }]),
5675 ..Default::default()
5676 },
5677 );
5678 moves.insert(
5679 Choices::FLATTER,
5680 Choice {
5681 move_id: Choices::FLATTER,
5682 move_type: PokemonType::DARK,
5683 flags: Flags {
5684 protect: true,
5685 reflectable: true,
5686 ..Default::default()
5687 },
5688 boost: Some(Boost {
5689 target: MoveTarget::Opponent,
5690 boosts: StatBoosts {
5691 attack: 0,
5692 defense: 0,
5693 special_attack: 1,
5694 special_defense: 0,
5695 speed: 0,
5696 accuracy: 0,
5697 },
5698 }),
5699 volatile_status: Some(VolatileStatus {
5700 target: MoveTarget::Opponent,
5701 volatile_status: PokemonVolatileStatus::CONFUSION,
5702 }),
5703 ..Default::default()
5704 },
5705 );
5706 moves.insert(
5707 Choices::FLEURCANNON,
5708 Choice {
5709 move_id: Choices::FLEURCANNON,
5710 accuracy: 90.0,
5711 base_power: 130.0,
5712 category: MoveCategory::Special,
5713 move_type: PokemonType::FAIRY,
5714 flags: Flags {
5715 protect: true,
5716 ..Default::default()
5717 },
5718 boost: Some(Boost {
5719 target: MoveTarget::User,
5720 boosts: StatBoosts {
5721 attack: 0,
5722 defense: 0,
5723 special_attack: -2,
5724 special_defense: 0,
5725 speed: 0,
5726 accuracy: 0,
5727 },
5728 }),
5729 ..Default::default()
5730 },
5731 );
5732 moves.insert(
5733 Choices::FLING,
5734 Choice {
5735 move_id: Choices::FLING,
5736 category: MoveCategory::Physical,
5737 move_type: PokemonType::DARK,
5738 flags: Flags {
5739 protect: true,
5740 ..Default::default()
5741 },
5742 ..Default::default()
5743 },
5744 );
5745 moves.insert(
5746 Choices::FLIPTURN,
5747 Choice {
5748 move_id: Choices::FLIPTURN,
5749 base_power: 60.0,
5750 category: MoveCategory::Physical,
5751 move_type: PokemonType::WATER,
5752 flags: Flags {
5753 contact: true,
5754 protect: true,
5755 pivot: true,
5756 ..Default::default()
5757 },
5758 ..Default::default()
5759 },
5760 );
5761 moves.insert(
5762 Choices::FLOATYFALL,
5763 Choice {
5764 move_id: Choices::FLOATYFALL,
5765 accuracy: 95.0,
5766 base_power: 90.0,
5767 category: MoveCategory::Physical,
5768 move_type: PokemonType::FLYING,
5769 flags: Flags {
5770 contact: true,
5771 protect: true,
5772 ..Default::default()
5773 },
5774 secondaries: Some(vec![Secondary {
5775 chance: 30.0,
5776 target: MoveTarget::Opponent,
5777 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
5778 }]),
5779 ..Default::default()
5780 },
5781 );
5782 moves.insert(
5783 Choices::FLORALHEALING,
5784 Choice {
5785 move_id: Choices::FLORALHEALING,
5786 move_type: PokemonType::FAIRY,
5787 flags: Flags {
5788 heal: true,
5789 protect: true,
5790 reflectable: true,
5791 ..Default::default()
5792 },
5793 ..Default::default()
5794 },
5795 );
5796 moves.insert(
5797 Choices::FLOWERSHIELD,
5798 Choice {
5799 move_id: Choices::FLOWERSHIELD,
5800 move_type: PokemonType::FAIRY,
5801 flags: Flags {
5802 ..Default::default()
5803 },
5804 ..Default::default()
5805 },
5806 );
5807 moves.insert(
5808 Choices::FLOWERTRICK,
5809 Choice {
5810 move_id: Choices::FLOWERTRICK,
5811 base_power: 70.0,
5812 category: MoveCategory::Physical,
5813 move_type: PokemonType::GRASS,
5814 flags: Flags {
5815 protect: true,
5816 ..Default::default()
5817 },
5818 ..Default::default()
5819 },
5820 );
5821 moves.insert(
5822 Choices::FLY,
5823 Choice {
5824 move_id: Choices::FLY,
5825 accuracy: 95.0,
5826 base_power: 90.0,
5827 category: MoveCategory::Physical,
5828 move_type: PokemonType::FLYING,
5829 flags: Flags {
5830 charge: true,
5831 contact: true,
5832 protect: true,
5833 ..Default::default()
5834 },
5835 ..Default::default()
5836 },
5837 );
5838 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
5839 moves.insert(
5840 Choices::FLYINGPRESS,
5841 Choice {
5842 move_id: Choices::FLYINGPRESS,
5843 accuracy: 95.0,
5844 base_power: 80.0,
5845 category: MoveCategory::Physical,
5846 move_type: PokemonType::FIGHTING,
5847 flags: Flags {
5848 contact: true,
5849 protect: true,
5850 ..Default::default()
5851 },
5852 ..Default::default()
5853 },
5854 );
5855 } else {
5856 moves.insert(
5857 Choices::FLYINGPRESS,
5858 Choice {
5859 move_id: Choices::FLYINGPRESS,
5860 accuracy: 95.0,
5861 base_power: 100.0,
5862 category: MoveCategory::Physical,
5863 move_type: PokemonType::FIGHTING,
5864 flags: Flags {
5865 contact: true,
5866 protect: true,
5867 ..Default::default()
5868 },
5869 ..Default::default()
5870 },
5871 );
5872 }
5873 moves.insert(
5874 Choices::FOCUSBLAST,
5875 Choice {
5876 move_id: Choices::FOCUSBLAST,
5877 accuracy: 70.0,
5878 base_power: 120.0,
5879 category: MoveCategory::Special,
5880 move_type: PokemonType::FIGHTING,
5881 flags: Flags {
5882 bullet: true,
5883 protect: true,
5884 ..Default::default()
5885 },
5886 secondaries: Some(vec![Secondary {
5887 chance: 10.0,
5888 target: MoveTarget::Opponent,
5889 effect: Effect::Boost(StatBoosts {
5890 attack: 0,
5891 defense: 0,
5892 special_attack: 0,
5893 special_defense: -1,
5894 speed: 0,
5895 accuracy: 0,
5896 }),
5897 }]),
5898 ..Default::default()
5899 },
5900 );
5901 moves.insert(
5902 Choices::FOCUSENERGY,
5903 Choice {
5904 move_id: Choices::FOCUSENERGY,
5905 target: MoveTarget::User,
5906 move_type: PokemonType::NORMAL,
5907 flags: Flags {
5908 ..Default::default()
5909 },
5910 volatile_status: Some(VolatileStatus {
5911 target: MoveTarget::User,
5912 volatile_status: PokemonVolatileStatus::FOCUSENERGY,
5913 }),
5914 ..Default::default()
5915 },
5916 );
5917 moves.insert(
5918 Choices::FOCUSPUNCH,
5919 Choice {
5920 move_id: Choices::FOCUSPUNCH,
5921 base_power: 150.0,
5922 category: MoveCategory::Physical,
5923 priority: -3,
5924 move_type: PokemonType::FIGHTING,
5925 flags: Flags {
5926 contact: true,
5927 protect: true,
5928 punch: true,
5929 ..Default::default()
5930 },
5931 ..Default::default()
5932 },
5933 );
5934 moves.insert(
5935 Choices::FOLLOWME,
5936 Choice {
5937 move_id: Choices::FOLLOWME,
5938 priority: 2,
5939 target: MoveTarget::User,
5940 move_type: PokemonType::NORMAL,
5941 flags: Flags {
5942 ..Default::default()
5943 },
5944 volatile_status: Some(VolatileStatus {
5945 target: MoveTarget::User,
5946 volatile_status: PokemonVolatileStatus::FOLLOWME,
5947 }),
5948 ..Default::default()
5949 },
5950 );
5951 moves.insert(
5952 Choices::FORCEPALM,
5953 Choice {
5954 move_id: Choices::FORCEPALM,
5955 base_power: 60.0,
5956 category: MoveCategory::Physical,
5957 move_type: PokemonType::FIGHTING,
5958 flags: Flags {
5959 contact: true,
5960 protect: true,
5961 ..Default::default()
5962 },
5963 secondaries: Some(vec![Secondary {
5964 chance: 30.0,
5965 target: MoveTarget::Opponent,
5966 effect: Effect::Status(PokemonStatus::PARALYZE),
5967 }]),
5968 ..Default::default()
5969 },
5970 );
5971 moves.insert(
5972 Choices::FORESIGHT,
5973 Choice {
5974 move_id: Choices::FORESIGHT,
5975 move_type: PokemonType::NORMAL,
5976 flags: Flags {
5977 protect: true,
5978 reflectable: true,
5979 ..Default::default()
5980 },
5981 volatile_status: Some(VolatileStatus {
5982 target: MoveTarget::Opponent,
5983 volatile_status: PokemonVolatileStatus::FORESIGHT,
5984 }),
5985 ..Default::default()
5986 },
5987 );
5988 moves.insert(
5989 Choices::FORESTSCURSE,
5990 Choice {
5991 move_id: Choices::FORESTSCURSE,
5992 move_type: PokemonType::GRASS,
5993 flags: Flags {
5994 protect: true,
5995 reflectable: true,
5996 ..Default::default()
5997 },
5998 ..Default::default()
5999 },
6000 );
6001 moves.insert(
6002 Choices::FOULPLAY,
6003 Choice {
6004 move_id: Choices::FOULPLAY,
6005 base_power: 95.0,
6006 category: MoveCategory::Physical,
6007 move_type: PokemonType::DARK,
6008 flags: Flags {
6009 contact: true,
6010 protect: true,
6011 ..Default::default()
6012 },
6013 ..Default::default()
6014 },
6015 );
6016 moves.insert(
6017 Choices::FREEZEDRY,
6018 Choice {
6019 move_id: Choices::FREEZEDRY,
6020 base_power: 70.0,
6021 category: MoveCategory::Special,
6022 move_type: PokemonType::ICE,
6023 flags: Flags {
6024 protect: true,
6025 ..Default::default()
6026 },
6027 secondaries: Some(vec![Secondary {
6028 chance: 10.0,
6029 target: MoveTarget::Opponent,
6030 effect: Effect::Status(PokemonStatus::FREEZE),
6031 }]),
6032 ..Default::default()
6033 },
6034 );
6035 moves.insert(
6036 Choices::FREEZESHOCK,
6037 Choice {
6038 move_id: Choices::FREEZESHOCK,
6039 accuracy: 90.0,
6040 base_power: 140.0,
6041 category: MoveCategory::Physical,
6042 move_type: PokemonType::ICE,
6043 flags: Flags {
6044 charge: true,
6045 protect: true,
6046 ..Default::default()
6047 },
6048 secondaries: Some(vec![Secondary {
6049 chance: 30.0,
6050 target: MoveTarget::Opponent,
6051 effect: Effect::Status(PokemonStatus::PARALYZE),
6052 }]),
6053 ..Default::default()
6054 },
6055 );
6056 moves.insert(
6057 Choices::FREEZINGGLARE,
6058 Choice {
6059 move_id: Choices::FREEZINGGLARE,
6060 base_power: 90.0,
6061 category: MoveCategory::Special,
6062 move_type: PokemonType::PSYCHIC,
6063 flags: Flags {
6064 protect: true,
6065 ..Default::default()
6066 },
6067 secondaries: Some(vec![Secondary {
6068 chance: 10.0,
6069 target: MoveTarget::Opponent,
6070 effect: Effect::Status(PokemonStatus::FREEZE),
6071 }]),
6072 ..Default::default()
6073 },
6074 );
6075 moves.insert(
6076 Choices::FREEZYFROST,
6077 Choice {
6078 move_id: Choices::FREEZYFROST,
6079 accuracy: 90.0,
6080 base_power: 100.0,
6081 category: MoveCategory::Special,
6082 move_type: PokemonType::ICE,
6083 flags: Flags {
6084 protect: true,
6085 ..Default::default()
6086 },
6087 ..Default::default()
6088 },
6089 );
6090 moves.insert(
6091 Choices::FRENZYPLANT,
6092 Choice {
6093 move_id: Choices::FRENZYPLANT,
6094 accuracy: 90.0,
6095 base_power: 150.0,
6096 category: MoveCategory::Special,
6097 move_type: PokemonType::GRASS,
6098 flags: Flags {
6099 protect: true,
6100 recharge: true,
6101 ..Default::default()
6102 },
6103 ..Default::default()
6104 },
6105 );
6106 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6107 moves.insert(
6108 Choices::FROSTBREATH,
6109 Choice {
6110 move_id: Choices::FROSTBREATH,
6111 accuracy: 90.0,
6112 base_power: 40.0,
6113 category: MoveCategory::Special,
6114 move_type: PokemonType::ICE,
6115 flags: Flags {
6116 protect: true,
6117 ..Default::default()
6118 },
6119 ..Default::default()
6120 },
6121 );
6122 } else {
6123 moves.insert(
6124 Choices::FROSTBREATH,
6125 Choice {
6126 move_id: Choices::FROSTBREATH,
6127 accuracy: 90.0,
6128 base_power: 60.0,
6129 category: MoveCategory::Special,
6130 move_type: PokemonType::ICE,
6131 flags: Flags {
6132 protect: true,
6133 ..Default::default()
6134 },
6135 ..Default::default()
6136 },
6137 );
6138 }
6139 moves.insert(
6140 Choices::FRUSTRATION,
6141 Choice {
6142 move_id: Choices::FRUSTRATION,
6143 category: MoveCategory::Physical,
6144 move_type: PokemonType::NORMAL,
6145 flags: Flags {
6146 contact: true,
6147 protect: true,
6148 ..Default::default()
6149 },
6150 ..Default::default()
6151 },
6152 );
6153 moves.insert(
6154 Choices::FURYATTACK,
6155 Choice {
6156 move_id: Choices::FURYATTACK,
6157 accuracy: 85.0,
6158 base_power: 15.0,
6159 category: MoveCategory::Physical,
6160 move_type: PokemonType::NORMAL,
6161 flags: Flags {
6162 contact: true,
6163 protect: true,
6164 ..Default::default()
6165 },
6166 ..Default::default()
6167 },
6168 );
6169 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6170 moves.insert(
6171 Choices::FURYCUTTER,
6172 Choice {
6173 move_id: Choices::FURYCUTTER,
6174 accuracy: 95.0,
6175 base_power: 10.0,
6176 category: MoveCategory::Physical,
6177 move_type: PokemonType::BUG,
6178 flags: Flags {
6179 contact: true,
6180 protect: true,
6181 slicing: true,
6182 ..Default::default()
6183 },
6184 ..Default::default()
6185 },
6186 );
6187 } else if cfg!(feature = "gen5") {
6188 moves.insert(
6189 Choices::FURYCUTTER,
6190 Choice {
6191 move_id: Choices::FURYCUTTER,
6192 accuracy: 95.0,
6193 base_power: 20.0,
6194 category: MoveCategory::Physical,
6195 move_type: PokemonType::BUG,
6196 flags: Flags {
6197 contact: true,
6198 protect: true,
6199 ..Default::default()
6200 },
6201 ..Default::default()
6202 },
6203 );
6204 } else {
6205 moves.insert(
6206 Choices::FURYCUTTER,
6207 Choice {
6208 move_id: Choices::FURYCUTTER,
6209 accuracy: 95.0,
6210 base_power: 40.0,
6211 category: MoveCategory::Physical,
6212 move_type: PokemonType::BUG,
6213 flags: Flags {
6214 contact: true,
6215 protect: true,
6216 ..Default::default()
6217 },
6218 ..Default::default()
6219 },
6220 );
6221 }
6222 moves.insert(
6223 Choices::FURYSWIPES,
6224 Choice {
6225 move_id: Choices::FURYSWIPES,
6226 accuracy: 80.0,
6227 base_power: 18.0,
6228 category: MoveCategory::Physical,
6229 move_type: PokemonType::NORMAL,
6230 flags: Flags {
6231 contact: true,
6232 protect: true,
6233 ..Default::default()
6234 },
6235 ..Default::default()
6236 },
6237 );
6238 moves.insert(
6239 Choices::FUSIONBOLT,
6240 Choice {
6241 move_id: Choices::FUSIONBOLT,
6242 base_power: 100.0,
6243 category: MoveCategory::Physical,
6244 move_type: PokemonType::ELECTRIC,
6245 flags: Flags {
6246 protect: true,
6247 ..Default::default()
6248 },
6249 ..Default::default()
6250 },
6251 );
6252 moves.insert(
6253 Choices::FUSIONFLARE,
6254 Choice {
6255 move_id: Choices::FUSIONFLARE,
6256 base_power: 100.0,
6257 category: MoveCategory::Special,
6258 move_type: PokemonType::FIRE,
6259 flags: Flags {
6260 protect: true,
6261 ..Default::default()
6262 },
6263 ..Default::default()
6264 },
6265 );
6266 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6267 moves.insert(
6268 Choices::FUTURESIGHT,
6269 Choice {
6270 accuracy: 90.0,
6271 move_id: Choices::FUTURESIGHT,
6272 base_power: 80.0,
6273 category: MoveCategory::Special,
6274 move_type: PokemonType::PSYCHIC,
6275 flags: Flags {
6276 ..Default::default()
6277 },
6278 ..Default::default()
6279 },
6280 );
6281 } else if cfg!(feature = "gen5") {
6282 moves.insert(
6283 Choices::FUTURESIGHT,
6284 Choice {
6285 move_id: Choices::FUTURESIGHT,
6286 base_power: 100.0,
6287 category: MoveCategory::Special,
6288 move_type: PokemonType::PSYCHIC,
6289 flags: Flags {
6290 ..Default::default()
6291 },
6292 ..Default::default()
6293 },
6294 );
6295 } else {
6296 moves.insert(
6297 Choices::FUTURESIGHT,
6298 Choice {
6299 move_id: Choices::FUTURESIGHT,
6300 base_power: 120.0,
6301 category: MoveCategory::Special,
6302 move_type: PokemonType::PSYCHIC,
6303 flags: Flags {
6304 ..Default::default()
6305 },
6306 ..Default::default()
6307 },
6308 );
6309 }
6310 moves.insert(
6311 Choices::GASTROACID,
6312 Choice {
6313 move_id: Choices::GASTROACID,
6314 move_type: PokemonType::POISON,
6315 flags: Flags {
6316 protect: true,
6317 reflectable: true,
6318 ..Default::default()
6319 },
6320 volatile_status: Some(VolatileStatus {
6321 target: MoveTarget::Opponent,
6322 volatile_status: PokemonVolatileStatus::GASTROACID,
6323 }),
6324 ..Default::default()
6325 },
6326 );
6327 moves.insert(
6328 Choices::GEARGRIND,
6329 Choice {
6330 move_id: Choices::GEARGRIND,
6331 accuracy: 85.0,
6332 base_power: 50.0,
6333 category: MoveCategory::Physical,
6334 move_type: PokemonType::STEEL,
6335 flags: Flags {
6336 contact: true,
6337 protect: true,
6338 ..Default::default()
6339 },
6340 ..Default::default()
6341 },
6342 );
6343 moves.insert(
6344 Choices::GEARUP,
6345 Choice {
6346 move_id: Choices::GEARUP,
6347 target: MoveTarget::User,
6348 move_type: PokemonType::STEEL,
6349 flags: Flags {
6350 ..Default::default()
6351 },
6352 ..Default::default()
6353 },
6354 );
6355 moves.insert(
6356 Choices::GEOMANCY,
6357 Choice {
6358 move_id: Choices::GEOMANCY,
6359 target: MoveTarget::User,
6360 move_type: PokemonType::FAIRY,
6361 flags: Flags {
6362 charge: true,
6363 ..Default::default()
6364 },
6365 boost: Some(Boost {
6366 target: MoveTarget::User,
6367 boosts: StatBoosts {
6368 attack: 0,
6369 defense: 0,
6370 special_attack: 2,
6371 special_defense: 2,
6372 speed: 2,
6373 accuracy: 0,
6374 },
6375 }),
6376 ..Default::default()
6377 },
6378 );
6379 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6380 moves.insert(
6381 Choices::GIGADRAIN,
6382 Choice {
6383 move_id: Choices::GIGADRAIN,
6384 base_power: 60.0,
6385 category: MoveCategory::Special,
6386 move_type: PokemonType::GRASS,
6387 flags: Flags {
6388 heal: true,
6389 protect: true,
6390 ..Default::default()
6391 },
6392 drain: Some(0.5),
6393 ..Default::default()
6394 },
6395 );
6396 } else {
6397 moves.insert(
6398 Choices::GIGADRAIN,
6399 Choice {
6400 move_id: Choices::GIGADRAIN,
6401 base_power: 75.0,
6402 category: MoveCategory::Special,
6403 move_type: PokemonType::GRASS,
6404 flags: Flags {
6405 heal: true,
6406 protect: true,
6407 ..Default::default()
6408 },
6409 drain: Some(0.5),
6410 ..Default::default()
6411 },
6412 );
6413 }
6414 moves.insert(
6415 Choices::GIGAIMPACT,
6416 Choice {
6417 move_id: Choices::GIGAIMPACT,
6418 accuracy: 90.0,
6419 base_power: 150.0,
6420 category: MoveCategory::Physical,
6421 move_type: PokemonType::NORMAL,
6422 flags: Flags {
6423 contact: true,
6424 protect: true,
6425 recharge: true,
6426 ..Default::default()
6427 },
6428 ..Default::default()
6429 },
6430 );
6431 moves.insert(
6432 Choices::GIGATONHAMMER,
6433 Choice {
6434 move_id: Choices::GIGATONHAMMER,
6435 base_power: 160.0,
6436 category: MoveCategory::Physical,
6437 move_type: PokemonType::STEEL,
6438 flags: Flags {
6439 protect: true,
6440 ..Default::default()
6441 },
6442 ..Default::default()
6443 },
6444 );
6445
6446 if cfg!(feature = "gen9") {
6447 moves.insert(
6448 Choices::GLACIALLANCE,
6449 Choice {
6450 move_id: Choices::GLACIALLANCE,
6451 base_power: 120.0,
6452 category: MoveCategory::Physical,
6453 move_type: PokemonType::ICE,
6454 flags: Flags {
6455 protect: true,
6456 ..Default::default()
6457 },
6458 ..Default::default()
6459 },
6460 );
6461 } else {
6462 moves.insert(
6463 Choices::GLACIALLANCE,
6464 Choice {
6465 move_id: Choices::GLACIALLANCE,
6466 base_power: 130.0,
6467 category: MoveCategory::Physical,
6468 move_type: PokemonType::ICE,
6469 flags: Flags {
6470 protect: true,
6471 ..Default::default()
6472 },
6473 ..Default::default()
6474 },
6475 );
6476 }
6477 moves.insert(
6478 Choices::GLACIATE,
6479 Choice {
6480 move_id: Choices::GLACIATE,
6481 accuracy: 95.0,
6482 base_power: 65.0,
6483 category: MoveCategory::Special,
6484 move_type: PokemonType::ICE,
6485 flags: Flags {
6486 protect: true,
6487 ..Default::default()
6488 },
6489 secondaries: Some(vec![Secondary {
6490 chance: 100.0,
6491 target: MoveTarget::Opponent,
6492 effect: Effect::Boost(StatBoosts {
6493 attack: 0,
6494 defense: 0,
6495 special_attack: 0,
6496 special_defense: 0,
6497 speed: -1,
6498 accuracy: 0,
6499 }),
6500 }]),
6501 ..Default::default()
6502 },
6503 );
6504 moves.insert(
6505 Choices::GLAIVERUSH,
6506 Choice {
6507 move_id: Choices::GLAIVERUSH,
6508 base_power: 120.0,
6509 category: MoveCategory::Physical,
6510 move_type: PokemonType::DRAGON,
6511 flags: Flags {
6512 contact: true,
6513 protect: true,
6514 ..Default::default()
6515 },
6516 ..Default::default()
6517 },
6518 );
6519 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6520 moves.insert(
6521 Choices::GLARE,
6522 Choice {
6523 accuracy: 75.0,
6524 move_id: Choices::GLARE,
6525 status: Some(Status {
6526 target: MoveTarget::Opponent,
6527 status: PokemonStatus::PARALYZE,
6528 }),
6529 move_type: PokemonType::NORMAL,
6530 flags: Flags {
6531 protect: true,
6532 reflectable: true,
6533 ..Default::default()
6534 },
6535 ..Default::default()
6536 },
6537 );
6538 } else if cfg!(feature = "gen5") {
6539 moves.insert(
6540 Choices::GLARE,
6541 Choice {
6542 accuracy: 90.0,
6543 move_id: Choices::GLARE,
6544 status: Some(Status {
6545 target: MoveTarget::Opponent,
6546 status: PokemonStatus::PARALYZE,
6547 }),
6548 move_type: PokemonType::NORMAL,
6549 flags: Flags {
6550 protect: true,
6551 reflectable: true,
6552 ..Default::default()
6553 },
6554 ..Default::default()
6555 },
6556 );
6557 } else {
6558 moves.insert(
6559 Choices::GLARE,
6560 Choice {
6561 move_id: Choices::GLARE,
6562 status: Some(Status {
6563 target: MoveTarget::Opponent,
6564 status: PokemonStatus::PARALYZE,
6565 }),
6566 move_type: PokemonType::NORMAL,
6567 flags: Flags {
6568 protect: true,
6569 reflectable: true,
6570 ..Default::default()
6571 },
6572 ..Default::default()
6573 },
6574 );
6575 }
6576 moves.insert(
6577 Choices::GLITZYGLOW,
6578 Choice {
6579 move_id: Choices::GLITZYGLOW,
6580 accuracy: 95.0,
6581 base_power: 80.0,
6582 category: MoveCategory::Special,
6583 move_type: PokemonType::PSYCHIC,
6584 flags: Flags {
6585 protect: true,
6586 ..Default::default()
6587 },
6588 ..Default::default()
6589 },
6590 );
6591 moves.insert(
6592 Choices::GRASSKNOT,
6593 Choice {
6594 move_id: Choices::GRASSKNOT,
6595 category: MoveCategory::Special,
6596 move_type: PokemonType::GRASS,
6597 flags: Flags {
6598 contact: true,
6599 protect: true,
6600 ..Default::default()
6601 },
6602 ..Default::default()
6603 },
6604 );
6605 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6606 moves.insert(
6607 Choices::GRASSPLEDGE,
6608 Choice {
6609 move_id: Choices::GRASSPLEDGE,
6610 base_power: 50.0,
6611 category: MoveCategory::Special,
6612 move_type: PokemonType::GRASS,
6613 flags: Flags {
6614 protect: true,
6615 ..Default::default()
6616 },
6617 ..Default::default()
6618 },
6619 );
6620 } else {
6621 moves.insert(
6622 Choices::GRASSPLEDGE,
6623 Choice {
6624 move_id: Choices::GRASSPLEDGE,
6625 base_power: 80.0,
6626 category: MoveCategory::Special,
6627 move_type: PokemonType::GRASS,
6628 flags: Flags {
6629 protect: true,
6630 ..Default::default()
6631 },
6632 ..Default::default()
6633 },
6634 );
6635 }
6636 moves.insert(
6637 Choices::GRASSWHISTLE,
6638 Choice {
6639 move_id: Choices::GRASSWHISTLE,
6640 accuracy: 55.0,
6641 status: Some(Status {
6642 target: MoveTarget::Opponent,
6643 status: PokemonStatus::SLEEP,
6644 }),
6645 move_type: PokemonType::GRASS,
6646 flags: Flags {
6647 protect: true,
6648 reflectable: true,
6649 sound: true,
6650 ..Default::default()
6651 },
6652 ..Default::default()
6653 },
6654 );
6655
6656 if cfg!(feature = "gen9") {
6657 moves.insert(
6658 Choices::GRASSYGLIDE,
6659 Choice {
6660 move_id: Choices::GRASSYGLIDE,
6661 base_power: 55.0,
6662 category: MoveCategory::Physical,
6663 move_type: PokemonType::GRASS,
6664 flags: Flags {
6665 contact: true,
6666 protect: true,
6667 ..Default::default()
6668 },
6669 ..Default::default()
6670 },
6671 );
6672 } else {
6673 moves.insert(
6674 Choices::GRASSYGLIDE,
6675 Choice {
6676 move_id: Choices::GRASSYGLIDE,
6677 base_power: 70.0,
6678 category: MoveCategory::Physical,
6679 move_type: PokemonType::GRASS,
6680 flags: Flags {
6681 contact: true,
6682 protect: true,
6683 ..Default::default()
6684 },
6685 ..Default::default()
6686 },
6687 );
6688 }
6689 moves.insert(
6690 Choices::GRASSYTERRAIN,
6691 Choice {
6692 move_id: Choices::GRASSYTERRAIN,
6693 move_type: PokemonType::GRASS,
6694 flags: Flags {
6695 ..Default::default()
6696 },
6697 ..Default::default()
6698 },
6699 );
6700 moves.insert(
6701 Choices::GRAVAPPLE,
6702 Choice {
6703 move_id: Choices::GRAVAPPLE,
6704 base_power: 80.0,
6705 category: MoveCategory::Physical,
6706 move_type: PokemonType::GRASS,
6707 flags: Flags {
6708 protect: true,
6709 ..Default::default()
6710 },
6711 secondaries: Some(vec![Secondary {
6712 chance: 100.0,
6713 target: MoveTarget::Opponent,
6714 effect: Effect::Boost(StatBoosts {
6715 attack: 0,
6716 defense: -1,
6717 special_attack: 0,
6718 special_defense: 0,
6719 speed: 0,
6720 accuracy: 0,
6721 }),
6722 }]),
6723 ..Default::default()
6724 },
6725 );
6726 moves.insert(
6727 Choices::GRAVITY,
6728 Choice {
6729 move_id: Choices::GRAVITY,
6730 move_type: PokemonType::PSYCHIC,
6731 flags: Flags {
6732 ..Default::default()
6733 },
6734 ..Default::default()
6735 },
6736 );
6737 moves.insert(
6738 Choices::GROWL,
6739 Choice {
6740 move_id: Choices::GROWL,
6741 move_type: PokemonType::NORMAL,
6742 flags: Flags {
6743 protect: true,
6744 reflectable: true,
6745 sound: true,
6746 ..Default::default()
6747 },
6748 boost: Some(Boost {
6749 target: MoveTarget::Opponent,
6750 boosts: StatBoosts {
6751 attack: -1,
6752 defense: 0,
6753 special_attack: 0,
6754 special_defense: 0,
6755 speed: 0,
6756 accuracy: 0,
6757 },
6758 }),
6759 ..Default::default()
6760 },
6761 );
6762 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
6763 moves.insert(
6764 Choices::GROWTH,
6765 Choice {
6766 move_id: Choices::GROWTH,
6767 target: MoveTarget::User,
6768 move_type: PokemonType::NORMAL,
6769 flags: Flags {
6770 ..Default::default()
6771 },
6772 boost: Some(Boost {
6773 target: MoveTarget::User,
6774 boosts: StatBoosts {
6775 attack: 0,
6776 defense: 0,
6777 special_attack: 1,
6778 special_defense: 0,
6779 speed: 0,
6780 accuracy: 0,
6781 },
6782 }),
6783 ..Default::default()
6784 },
6785 );
6786 } else {
6787 moves.insert(
6788 Choices::GROWTH,
6789 Choice {
6790 move_id: Choices::GROWTH,
6791 target: MoveTarget::User,
6792 move_type: PokemonType::NORMAL,
6793 flags: Flags {
6794 ..Default::default()
6795 },
6796 boost: Some(Boost {
6797 target: MoveTarget::User,
6798 boosts: StatBoosts {
6799 attack: 1,
6800 defense: 0,
6801 special_attack: 1,
6802 special_defense: 0,
6803 speed: 0,
6804 accuracy: 0,
6805 },
6806 }),
6807 ..Default::default()
6808 },
6809 );
6810 }
6811 moves.insert(
6812 Choices::GRUDGE,
6813 Choice {
6814 move_id: Choices::GRUDGE,
6815 target: MoveTarget::User,
6816 move_type: PokemonType::GHOST,
6817 flags: Flags {
6818 ..Default::default()
6819 },
6820 volatile_status: Some(VolatileStatus {
6821 target: MoveTarget::User,
6822 volatile_status: PokemonVolatileStatus::GRUDGE,
6823 }),
6824 ..Default::default()
6825 },
6826 );
6827 moves.insert(
6828 Choices::GUARDSPLIT,
6829 Choice {
6830 move_id: Choices::GUARDSPLIT,
6831 move_type: PokemonType::PSYCHIC,
6832 flags: Flags {
6833 protect: true,
6834 ..Default::default()
6835 },
6836 ..Default::default()
6837 },
6838 );
6839 moves.insert(
6840 Choices::GUARDSWAP,
6841 Choice {
6842 move_id: Choices::GUARDSWAP,
6843 move_type: PokemonType::PSYCHIC,
6844 flags: Flags {
6845 protect: true,
6846 ..Default::default()
6847 },
6848 ..Default::default()
6849 },
6850 );
6851 moves.insert(
6852 Choices::GUILLOTINE,
6853 Choice {
6854 move_id: Choices::GUILLOTINE,
6855 accuracy: 30.0,
6856 category: MoveCategory::Physical,
6857 move_type: PokemonType::NORMAL,
6858 flags: Flags {
6859 contact: true,
6860 protect: true,
6861 ..Default::default()
6862 },
6863 ..Default::default()
6864 },
6865 );
6866 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
6867 moves.insert(
6868 Choices::GUNKSHOT,
6869 Choice {
6870 move_id: Choices::GUNKSHOT,
6871 accuracy: 70.0,
6872 base_power: 120.0,
6873 category: MoveCategory::Physical,
6874 move_type: PokemonType::POISON,
6875 flags: Flags {
6876 protect: true,
6877 ..Default::default()
6878 },
6879 secondaries: Some(vec![Secondary {
6880 chance: 30.0,
6881 target: MoveTarget::Opponent,
6882 effect: Effect::Status(PokemonStatus::POISON),
6883 }]),
6884 ..Default::default()
6885 },
6886 );
6887 } else {
6888 moves.insert(
6889 Choices::GUNKSHOT,
6890 Choice {
6891 move_id: Choices::GUNKSHOT,
6892 accuracy: 80.0,
6893 base_power: 120.0,
6894 category: MoveCategory::Physical,
6895 move_type: PokemonType::POISON,
6896 flags: Flags {
6897 protect: true,
6898 ..Default::default()
6899 },
6900 secondaries: Some(vec![Secondary {
6901 chance: 30.0,
6902 target: MoveTarget::Opponent,
6903 effect: Effect::Status(PokemonStatus::POISON),
6904 }]),
6905 ..Default::default()
6906 },
6907 );
6908 }
6909 if cfg!(feature = "gen1") {
6910 moves.insert(
6911 Choices::GUST,
6912 Choice {
6913 move_id: Choices::GUST,
6914 base_power: 40.0,
6915 category: MoveCategory::Special,
6916 move_type: PokemonType::NORMAL,
6917 flags: Flags {
6918 protect: true,
6919 wind: true,
6920 ..Default::default()
6921 },
6922 ..Default::default()
6923 },
6924 );
6925 } else {
6926 moves.insert(
6927 Choices::GUST,
6928 Choice {
6929 move_id: Choices::GUST,
6930 base_power: 40.0,
6931 category: MoveCategory::Special,
6932 move_type: PokemonType::FLYING,
6933 flags: Flags {
6934 protect: true,
6935 wind: true,
6936 ..Default::default()
6937 },
6938 ..Default::default()
6939 },
6940 );
6941 }
6942 moves.insert(
6943 Choices::GYROBALL,
6944 Choice {
6945 move_id: Choices::GYROBALL,
6946 category: MoveCategory::Physical,
6947 move_type: PokemonType::STEEL,
6948 flags: Flags {
6949 bullet: true,
6950 contact: true,
6951 protect: true,
6952 ..Default::default()
6953 },
6954 ..Default::default()
6955 },
6956 );
6957 moves.insert(
6958 Choices::HAIL,
6959 Choice {
6960 move_id: Choices::HAIL,
6961 move_type: PokemonType::ICE,
6962 flags: Flags {
6963 ..Default::default()
6964 },
6965 ..Default::default()
6966 },
6967 );
6968 moves.insert(
6969 Choices::HAMMERARM,
6970 Choice {
6971 move_id: Choices::HAMMERARM,
6972 accuracy: 90.0,
6973 base_power: 100.0,
6974 category: MoveCategory::Physical,
6975 move_type: PokemonType::FIGHTING,
6976 flags: Flags {
6977 contact: true,
6978 protect: true,
6979 punch: true,
6980 ..Default::default()
6981 },
6982 boost: Some(Boost {
6983 target: MoveTarget::User,
6984 boosts: StatBoosts {
6985 attack: 0,
6986 defense: 0,
6987 special_attack: 0,
6988 special_defense: 0,
6989 speed: -1,
6990 accuracy: 0,
6991 },
6992 }),
6993 ..Default::default()
6994 },
6995 );
6996 moves.insert(
6997 Choices::HAPPYHOUR,
6998 Choice {
6999 move_id: Choices::HAPPYHOUR,
7000 target: MoveTarget::User,
7001 move_type: PokemonType::NORMAL,
7002 flags: Flags {
7003 ..Default::default()
7004 },
7005 ..Default::default()
7006 },
7007 );
7008 moves.insert(
7009 Choices::HARDEN,
7010 Choice {
7011 move_id: Choices::HARDEN,
7012 target: MoveTarget::User,
7013 move_type: PokemonType::NORMAL,
7014 flags: Flags {
7015 ..Default::default()
7016 },
7017 boost: Some(Boost {
7018 target: MoveTarget::User,
7019 boosts: StatBoosts {
7020 attack: 0,
7021 defense: 1,
7022 special_attack: 0,
7023 special_defense: 0,
7024 speed: 0,
7025 accuracy: 0,
7026 },
7027 }),
7028 ..Default::default()
7029 },
7030 );
7031 moves.insert(
7032 Choices::HARDPRESS,
7033 Choice {
7034 move_id: Choices::HARDPRESS,
7035 category: MoveCategory::Physical,
7036 move_type: PokemonType::STEEL,
7037 flags: Flags {
7038 contact: true,
7039 protect: true,
7040 ..Default::default()
7041 },
7042 ..Default::default()
7043 },
7044 );
7045 moves.insert(
7046 Choices::HAZE,
7047 Choice {
7048 move_id: Choices::HAZE,
7049 move_type: PokemonType::ICE,
7050 flags: Flags {
7051 ..Default::default()
7052 },
7053 ..Default::default()
7054 },
7055 );
7056 moves.insert(
7057 Choices::HEADBUTT,
7058 Choice {
7059 move_id: Choices::HEADBUTT,
7060 base_power: 70.0,
7061 category: MoveCategory::Physical,
7062 move_type: PokemonType::NORMAL,
7063 flags: Flags {
7064 contact: true,
7065 protect: true,
7066 ..Default::default()
7067 },
7068 secondaries: Some(vec![Secondary {
7069 chance: 30.0,
7070 target: MoveTarget::Opponent,
7071 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
7072 }]),
7073 ..Default::default()
7074 },
7075 );
7076 moves.insert(
7077 Choices::HEADCHARGE,
7078 Choice {
7079 move_id: Choices::HEADCHARGE,
7080 base_power: 120.0,
7081 category: MoveCategory::Physical,
7082 move_type: PokemonType::NORMAL,
7083 flags: Flags {
7084 contact: true,
7085 protect: true,
7086 ..Default::default()
7087 },
7088 recoil: Some(0.25),
7089 ..Default::default()
7090 },
7091 );
7092 moves.insert(
7093 Choices::HEADLONGRUSH,
7094 Choice {
7095 move_id: Choices::HEADLONGRUSH,
7096 base_power: 120.0,
7097 category: MoveCategory::Physical,
7098 move_type: PokemonType::GROUND,
7099 flags: Flags {
7100 contact: true,
7101 protect: true,
7102 punch: true,
7103 ..Default::default()
7104 },
7105 boost: Some(Boost {
7106 target: MoveTarget::User,
7107 boosts: StatBoosts {
7108 attack: 0,
7109 defense: -1,
7110 special_attack: 0,
7111 special_defense: -1,
7112 speed: 0,
7113 accuracy: 0,
7114 },
7115 }),
7116 ..Default::default()
7117 },
7118 );
7119 moves.insert(
7120 Choices::HEADSMASH,
7121 Choice {
7122 move_id: Choices::HEADSMASH,
7123 accuracy: 80.0,
7124 base_power: 150.0,
7125 category: MoveCategory::Physical,
7126 move_type: PokemonType::ROCK,
7127 flags: Flags {
7128 contact: true,
7129 protect: true,
7130 ..Default::default()
7131 },
7132 recoil: Some(0.5),
7133 ..Default::default()
7134 },
7135 );
7136 moves.insert(
7137 Choices::HEALBELL,
7138 Choice {
7139 move_id: Choices::HEALBELL,
7140 target: MoveTarget::User,
7141 move_type: PokemonType::NORMAL,
7142 flags: Flags {
7143 sound: true,
7144 ..Default::default()
7145 },
7146 ..Default::default()
7147 },
7148 );
7149 moves.insert(
7150 Choices::HEALBLOCK,
7151 Choice {
7152 move_id: Choices::HEALBLOCK,
7153 move_type: PokemonType::PSYCHIC,
7154 flags: Flags {
7155 protect: true,
7156 reflectable: true,
7157 ..Default::default()
7158 },
7159 volatile_status: Some(VolatileStatus {
7160 target: MoveTarget::Opponent,
7161 volatile_status: PokemonVolatileStatus::HEALBLOCK,
7162 }),
7163 ..Default::default()
7164 },
7165 );
7166 moves.insert(
7167 Choices::HEALINGWISH,
7168 Choice {
7169 move_id: Choices::HEALINGWISH,
7170 target: MoveTarget::User,
7171 move_type: PokemonType::PSYCHIC,
7172 flags: Flags {
7173 heal: true,
7174 ..Default::default()
7175 },
7176 side_condition: Some(SideCondition {
7177 target: MoveTarget::User,
7178 condition: PokemonSideCondition::HealingWish,
7179 }),
7180 heal: Some(Heal {
7181 target: MoveTarget::User,
7182 amount: -1.0,
7183 }),
7184 ..Default::default()
7185 },
7186 );
7187 moves.insert(
7188 Choices::HEALORDER,
7189 Choice {
7190 move_id: Choices::HEALORDER,
7191 target: MoveTarget::User,
7192 move_type: PokemonType::BUG,
7193 flags: Flags {
7194 heal: true,
7195 ..Default::default()
7196 },
7197 heal: Some(Heal {
7198 target: MoveTarget::User,
7199 amount: 0.5,
7200 }),
7201 ..Default::default()
7202 },
7203 );
7204 moves.insert(
7205 Choices::HEALPULSE,
7206 Choice {
7207 move_id: Choices::HEALPULSE,
7208 move_type: PokemonType::PSYCHIC,
7209 flags: Flags {
7210 heal: true,
7211 protect: true,
7212 pulse: true,
7213 reflectable: true,
7214 ..Default::default()
7215 },
7216 ..Default::default()
7217 },
7218 );
7219 moves.insert(
7220 Choices::HEARTSTAMP,
7221 Choice {
7222 move_id: Choices::HEARTSTAMP,
7223 base_power: 60.0,
7224 category: MoveCategory::Physical,
7225 move_type: PokemonType::PSYCHIC,
7226 flags: Flags {
7227 contact: true,
7228 protect: true,
7229 ..Default::default()
7230 },
7231 secondaries: Some(vec![Secondary {
7232 chance: 30.0,
7233 target: MoveTarget::Opponent,
7234 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
7235 }]),
7236 ..Default::default()
7237 },
7238 );
7239 moves.insert(
7240 Choices::HEARTSWAP,
7241 Choice {
7242 move_id: Choices::HEARTSWAP,
7243 move_type: PokemonType::PSYCHIC,
7244 flags: Flags {
7245 protect: true,
7246 ..Default::default()
7247 },
7248 ..Default::default()
7249 },
7250 );
7251 moves.insert(
7252 Choices::HEATCRASH,
7253 Choice {
7254 move_id: Choices::HEATCRASH,
7255 category: MoveCategory::Physical,
7256 move_type: PokemonType::FIRE,
7257 flags: Flags {
7258 contact: true,
7259 protect: true,
7260 ..Default::default()
7261 },
7262 ..Default::default()
7263 },
7264 );
7265 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
7266 moves.insert(
7267 Choices::HEATWAVE,
7268 Choice {
7269 move_id: Choices::HEATWAVE,
7270 accuracy: 90.0,
7271 base_power: 100.0,
7272 category: MoveCategory::Special,
7273 move_type: PokemonType::FIRE,
7274 flags: Flags {
7275 protect: true,
7276 wind: true,
7277 ..Default::default()
7278 },
7279 secondaries: Some(vec![Secondary {
7280 chance: 10.0,
7281 target: MoveTarget::Opponent,
7282 effect: Effect::Status(PokemonStatus::BURN),
7283 }]),
7284 ..Default::default()
7285 },
7286 );
7287 } else {
7288 moves.insert(
7289 Choices::HEATWAVE,
7290 Choice {
7291 move_id: Choices::HEATWAVE,
7292 accuracy: 90.0,
7293 base_power: 95.0,
7294 category: MoveCategory::Special,
7295 move_type: PokemonType::FIRE,
7296 flags: Flags {
7297 protect: true,
7298 wind: true,
7299 ..Default::default()
7300 },
7301 secondaries: Some(vec![Secondary {
7302 chance: 10.0,
7303 target: MoveTarget::Opponent,
7304 effect: Effect::Status(PokemonStatus::BURN),
7305 }]),
7306 ..Default::default()
7307 },
7308 );
7309 }
7310 moves.insert(
7311 Choices::HEAVYSLAM,
7312 Choice {
7313 move_id: Choices::HEAVYSLAM,
7314 category: MoveCategory::Physical,
7315 move_type: PokemonType::STEEL,
7316 flags: Flags {
7317 contact: true,
7318 protect: true,
7319 ..Default::default()
7320 },
7321 ..Default::default()
7322 },
7323 );
7324 moves.insert(
7325 Choices::HELPINGHAND,
7326 Choice {
7327 move_id: Choices::HELPINGHAND,
7328 priority: 5,
7329 target: MoveTarget::User,
7330 move_type: PokemonType::NORMAL,
7331 flags: Flags {
7332 ..Default::default()
7333 },
7334 volatile_status: Some(VolatileStatus {
7335 target: MoveTarget::User,
7336 volatile_status: PokemonVolatileStatus::HELPINGHAND,
7337 }),
7338 ..Default::default()
7339 },
7340 );
7341 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
7342 moves.insert(
7343 Choices::HEX,
7344 Choice {
7345 move_id: Choices::HEX,
7346 base_power: 50.0,
7347 category: MoveCategory::Special,
7348 move_type: PokemonType::GHOST,
7349 flags: Flags {
7350 protect: true,
7351 ..Default::default()
7352 },
7353 ..Default::default()
7354 },
7355 );
7356 } else {
7357 moves.insert(
7358 Choices::HEX,
7359 Choice {
7360 move_id: Choices::HEX,
7361 base_power: 65.0,
7362 category: MoveCategory::Special,
7363 move_type: PokemonType::GHOST,
7364 flags: Flags {
7365 protect: true,
7366 ..Default::default()
7367 },
7368 ..Default::default()
7369 },
7370 );
7371 }
7372 moves.insert(
7373 Choices::HIDDENPOWER,
7374 Choice {
7375 move_id: Choices::HIDDENPOWER,
7376 base_power: 60.0,
7377 category: MoveCategory::Special,
7378 move_type: PokemonType::NORMAL,
7379 flags: Flags {
7380 protect: true,
7381 ..Default::default()
7382 },
7383 ..Default::default()
7384 },
7385 );
7386 moves.insert(
7387 Choices::HIDDENPOWERBUG60,
7388 Choice {
7389 move_id: Choices::HIDDENPOWERBUG60,
7390 base_power: 60.0,
7391 category: MoveCategory::Special,
7392 move_type: PokemonType::BUG,
7393 flags: Flags {
7394 protect: true,
7395 ..Default::default()
7396 },
7397 ..Default::default()
7398 },
7399 );
7400 moves.insert(
7401 Choices::HIDDENPOWERBUG70,
7402 Choice {
7403 move_id: Choices::HIDDENPOWERBUG70,
7404 base_power: 70.0,
7405 category: MoveCategory::Special,
7406 move_type: PokemonType::BUG,
7407 flags: Flags {
7408 protect: true,
7409 ..Default::default()
7410 },
7411 ..Default::default()
7412 },
7413 );
7414 moves.insert(
7415 Choices::HIDDENPOWERDARK60,
7416 Choice {
7417 move_id: Choices::HIDDENPOWERDARK60,
7418 base_power: 60.0,
7419 category: MoveCategory::Special,
7420 move_type: PokemonType::DARK,
7421 flags: Flags {
7422 protect: true,
7423 ..Default::default()
7424 },
7425 ..Default::default()
7426 },
7427 );
7428 moves.insert(
7429 Choices::HIDDENPOWERDARK70,
7430 Choice {
7431 move_id: Choices::HIDDENPOWERDARK70,
7432 base_power: 70.0,
7433 category: MoveCategory::Special,
7434 move_type: PokemonType::DARK,
7435 flags: Flags {
7436 protect: true,
7437 ..Default::default()
7438 },
7439 ..Default::default()
7440 },
7441 );
7442 moves.insert(
7443 Choices::HIDDENPOWERDRAGON60,
7444 Choice {
7445 move_id: Choices::HIDDENPOWERDRAGON60,
7446 base_power: 60.0,
7447 category: MoveCategory::Special,
7448 move_type: PokemonType::DRAGON,
7449 flags: Flags {
7450 protect: true,
7451 ..Default::default()
7452 },
7453 ..Default::default()
7454 },
7455 );
7456 moves.insert(
7457 Choices::HIDDENPOWERDRAGON70,
7458 Choice {
7459 move_id: Choices::HIDDENPOWERDRAGON70,
7460 base_power: 70.0,
7461 category: MoveCategory::Special,
7462 move_type: PokemonType::DRAGON,
7463 flags: Flags {
7464 protect: true,
7465 ..Default::default()
7466 },
7467 ..Default::default()
7468 },
7469 );
7470 moves.insert(
7471 Choices::HIDDENPOWERELECTRIC60,
7472 Choice {
7473 move_id: Choices::HIDDENPOWERELECTRIC60,
7474 base_power: 60.0,
7475 category: MoveCategory::Special,
7476 move_type: PokemonType::ELECTRIC,
7477 flags: Flags {
7478 protect: true,
7479 ..Default::default()
7480 },
7481 ..Default::default()
7482 },
7483 );
7484 moves.insert(
7485 Choices::HIDDENPOWERELECTRIC70,
7486 Choice {
7487 move_id: Choices::HIDDENPOWERELECTRIC70,
7488 base_power: 70.0,
7489 category: MoveCategory::Special,
7490 move_type: PokemonType::ELECTRIC,
7491 flags: Flags {
7492 protect: true,
7493 ..Default::default()
7494 },
7495 ..Default::default()
7496 },
7497 );
7498 moves.insert(
7499 Choices::HIDDENPOWERFIGHTING60,
7500 Choice {
7501 move_id: Choices::HIDDENPOWERFIGHTING60,
7502 base_power: 60.0,
7503 category: MoveCategory::Special,
7504 move_type: PokemonType::FIGHTING,
7505 flags: Flags {
7506 protect: true,
7507 ..Default::default()
7508 },
7509 ..Default::default()
7510 },
7511 );
7512 moves.insert(
7513 Choices::HIDDENPOWERFIGHTING70,
7514 Choice {
7515 move_id: Choices::HIDDENPOWERFIGHTING70,
7516 base_power: 70.0,
7517 category: MoveCategory::Special,
7518 move_type: PokemonType::FIGHTING,
7519 flags: Flags {
7520 protect: true,
7521 ..Default::default()
7522 },
7523 ..Default::default()
7524 },
7525 );
7526 moves.insert(
7527 Choices::HIDDENPOWERFIRE60,
7528 Choice {
7529 move_id: Choices::HIDDENPOWERFIRE60,
7530 base_power: 60.0,
7531 category: MoveCategory::Special,
7532 move_type: PokemonType::FIRE,
7533 flags: Flags {
7534 protect: true,
7535 ..Default::default()
7536 },
7537 ..Default::default()
7538 },
7539 );
7540 moves.insert(
7541 Choices::HIDDENPOWERFIRE70,
7542 Choice {
7543 move_id: Choices::HIDDENPOWERFIRE70,
7544 base_power: 70.0,
7545 category: MoveCategory::Special,
7546 move_type: PokemonType::FIRE,
7547 flags: Flags {
7548 protect: true,
7549 ..Default::default()
7550 },
7551 ..Default::default()
7552 },
7553 );
7554 moves.insert(
7555 Choices::HIDDENPOWERFLYING60,
7556 Choice {
7557 move_id: Choices::HIDDENPOWERFLYING60,
7558 base_power: 60.0,
7559 category: MoveCategory::Special,
7560 move_type: PokemonType::FLYING,
7561 flags: Flags {
7562 protect: true,
7563 ..Default::default()
7564 },
7565 ..Default::default()
7566 },
7567 );
7568 moves.insert(
7569 Choices::HIDDENPOWERFLYING70,
7570 Choice {
7571 move_id: Choices::HIDDENPOWERFLYING70,
7572 base_power: 70.0,
7573 category: MoveCategory::Special,
7574 move_type: PokemonType::FLYING,
7575 flags: Flags {
7576 protect: true,
7577 ..Default::default()
7578 },
7579 ..Default::default()
7580 },
7581 );
7582 moves.insert(
7583 Choices::HIDDENPOWERGHOST60,
7584 Choice {
7585 move_id: Choices::HIDDENPOWERGHOST60,
7586 base_power: 60.0,
7587 category: MoveCategory::Special,
7588 move_type: PokemonType::GHOST,
7589 flags: Flags {
7590 protect: true,
7591 ..Default::default()
7592 },
7593 ..Default::default()
7594 },
7595 );
7596 moves.insert(
7597 Choices::HIDDENPOWERGHOST70,
7598 Choice {
7599 move_id: Choices::HIDDENPOWERGHOST70,
7600 base_power: 70.0,
7601 category: MoveCategory::Special,
7602 move_type: PokemonType::GHOST,
7603 flags: Flags {
7604 protect: true,
7605 ..Default::default()
7606 },
7607 ..Default::default()
7608 },
7609 );
7610 moves.insert(
7611 Choices::HIDDENPOWERGRASS60,
7612 Choice {
7613 move_id: Choices::HIDDENPOWERGRASS60,
7614 base_power: 60.0,
7615 category: MoveCategory::Special,
7616 move_type: PokemonType::GRASS,
7617 flags: Flags {
7618 protect: true,
7619 ..Default::default()
7620 },
7621 ..Default::default()
7622 },
7623 );
7624 moves.insert(
7625 Choices::HIDDENPOWERGRASS70,
7626 Choice {
7627 move_id: Choices::HIDDENPOWERGRASS70,
7628 base_power: 70.0,
7629 category: MoveCategory::Special,
7630 move_type: PokemonType::GRASS,
7631 flags: Flags {
7632 protect: true,
7633 ..Default::default()
7634 },
7635 ..Default::default()
7636 },
7637 );
7638 moves.insert(
7639 Choices::HIDDENPOWERGROUND60,
7640 Choice {
7641 move_id: Choices::HIDDENPOWERGROUND60,
7642 base_power: 60.0,
7643 category: MoveCategory::Special,
7644 move_type: PokemonType::GROUND,
7645 flags: Flags {
7646 protect: true,
7647 ..Default::default()
7648 },
7649 ..Default::default()
7650 },
7651 );
7652 moves.insert(
7653 Choices::HIDDENPOWERGROUND70,
7654 Choice {
7655 move_id: Choices::HIDDENPOWERGROUND70,
7656 base_power: 70.0,
7657 category: MoveCategory::Special,
7658 move_type: PokemonType::GROUND,
7659 flags: Flags {
7660 protect: true,
7661 ..Default::default()
7662 },
7663 ..Default::default()
7664 },
7665 );
7666 moves.insert(
7667 Choices::HIDDENPOWERICE60,
7668 Choice {
7669 move_id: Choices::HIDDENPOWERICE60,
7670 base_power: 60.0,
7671 category: MoveCategory::Special,
7672 move_type: PokemonType::ICE,
7673 flags: Flags {
7674 protect: true,
7675 ..Default::default()
7676 },
7677 ..Default::default()
7678 },
7679 );
7680 moves.insert(
7681 Choices::HIDDENPOWERICE70,
7682 Choice {
7683 move_id: Choices::HIDDENPOWERICE70,
7684 base_power: 70.0,
7685 category: MoveCategory::Special,
7686 move_type: PokemonType::ICE,
7687 flags: Flags {
7688 protect: true,
7689 ..Default::default()
7690 },
7691 ..Default::default()
7692 },
7693 );
7694 moves.insert(
7695 Choices::HIDDENPOWERPOISON60,
7696 Choice {
7697 move_id: Choices::HIDDENPOWERPOISON60,
7698 base_power: 60.0,
7699 category: MoveCategory::Special,
7700 move_type: PokemonType::POISON,
7701 flags: Flags {
7702 protect: true,
7703 ..Default::default()
7704 },
7705 ..Default::default()
7706 },
7707 );
7708 moves.insert(
7709 Choices::HIDDENPOWERPOISON70,
7710 Choice {
7711 move_id: Choices::HIDDENPOWERPOISON70,
7712 base_power: 70.0,
7713 category: MoveCategory::Special,
7714 move_type: PokemonType::POISON,
7715 flags: Flags {
7716 protect: true,
7717 ..Default::default()
7718 },
7719 ..Default::default()
7720 },
7721 );
7722 moves.insert(
7723 Choices::HIDDENPOWERPSYCHIC60,
7724 Choice {
7725 move_id: Choices::HIDDENPOWERPSYCHIC60,
7726 base_power: 60.0,
7727 category: MoveCategory::Special,
7728 move_type: PokemonType::PSYCHIC,
7729 flags: Flags {
7730 protect: true,
7731 ..Default::default()
7732 },
7733 ..Default::default()
7734 },
7735 );
7736 moves.insert(
7737 Choices::HIDDENPOWERPSYCHIC70,
7738 Choice {
7739 move_id: Choices::HIDDENPOWERPSYCHIC70,
7740 base_power: 70.0,
7741 category: MoveCategory::Special,
7742 move_type: PokemonType::PSYCHIC,
7743 flags: Flags {
7744 protect: true,
7745 ..Default::default()
7746 },
7747 ..Default::default()
7748 },
7749 );
7750 moves.insert(
7751 Choices::HIDDENPOWERROCK60,
7752 Choice {
7753 move_id: Choices::HIDDENPOWERROCK60,
7754 base_power: 60.0,
7755 category: MoveCategory::Special,
7756 move_type: PokemonType::ROCK,
7757 flags: Flags {
7758 protect: true,
7759 ..Default::default()
7760 },
7761 ..Default::default()
7762 },
7763 );
7764 moves.insert(
7765 Choices::HIDDENPOWERROCK70,
7766 Choice {
7767 move_id: Choices::HIDDENPOWERROCK70,
7768 base_power: 70.0,
7769 category: MoveCategory::Special,
7770 move_type: PokemonType::ROCK,
7771 flags: Flags {
7772 protect: true,
7773 ..Default::default()
7774 },
7775 ..Default::default()
7776 },
7777 );
7778 moves.insert(
7779 Choices::HIDDENPOWERSTEEL60,
7780 Choice {
7781 move_id: Choices::HIDDENPOWERSTEEL60,
7782 base_power: 60.0,
7783 category: MoveCategory::Special,
7784 move_type: PokemonType::STEEL,
7785 flags: Flags {
7786 protect: true,
7787 ..Default::default()
7788 },
7789 ..Default::default()
7790 },
7791 );
7792 moves.insert(
7793 Choices::HIDDENPOWERSTEEL70,
7794 Choice {
7795 move_id: Choices::HIDDENPOWERSTEEL70,
7796 base_power: 70.0,
7797 category: MoveCategory::Special,
7798 move_type: PokemonType::STEEL,
7799 flags: Flags {
7800 protect: true,
7801 ..Default::default()
7802 },
7803 ..Default::default()
7804 },
7805 );
7806 moves.insert(
7807 Choices::HIDDENPOWERWATER60,
7808 Choice {
7809 move_id: Choices::HIDDENPOWERWATER60,
7810 base_power: 60.0,
7811 category: MoveCategory::Special,
7812 move_type: PokemonType::WATER,
7813 flags: Flags {
7814 protect: true,
7815 ..Default::default()
7816 },
7817 ..Default::default()
7818 },
7819 );
7820 moves.insert(
7821 Choices::HIDDENPOWERWATER70,
7822 Choice {
7823 move_id: Choices::HIDDENPOWERWATER70,
7824 base_power: 70.0,
7825 category: MoveCategory::Special,
7826 move_type: PokemonType::WATER,
7827 flags: Flags {
7828 protect: true,
7829 ..Default::default()
7830 },
7831 ..Default::default()
7832 },
7833 );
7834 moves.insert(
7835 Choices::HIGHHORSEPOWER,
7836 Choice {
7837 move_id: Choices::HIGHHORSEPOWER,
7838 accuracy: 95.0,
7839 base_power: 95.0,
7840 category: MoveCategory::Physical,
7841 move_type: PokemonType::GROUND,
7842 flags: Flags {
7843 contact: true,
7844 protect: true,
7845 ..Default::default()
7846 },
7847 ..Default::default()
7848 },
7849 );
7850 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
7851 moves.insert(
7852 Choices::HIGHJUMPKICK,
7853 Choice {
7854 move_id: Choices::HIGHJUMPKICK,
7855 accuracy: 90.0,
7856 base_power: 85.0,
7857 category: MoveCategory::Physical,
7858 move_type: PokemonType::FIGHTING,
7859 flags: Flags {
7860 contact: true,
7861 protect: true,
7862 ..Default::default()
7863 },
7864 crash: Some(0.5),
7865 ..Default::default()
7866 },
7867 );
7868 }
7869 else if cfg!(feature = "gen4") {
7870 moves.insert(
7871 Choices::HIGHJUMPKICK,
7872 Choice {
7873 move_id: Choices::HIGHJUMPKICK,
7874 accuracy: 90.0,
7875 base_power: 100.0,
7876 category: MoveCategory::Physical,
7877 move_type: PokemonType::FIGHTING,
7878 flags: Flags {
7879 contact: true,
7880 protect: true,
7881 ..Default::default()
7882 },
7883 crash: Some(0.5),
7884 ..Default::default()
7885 },
7886 );
7887 } else {
7888 moves.insert(
7889 Choices::HIGHJUMPKICK,
7890 Choice {
7891 move_id: Choices::HIGHJUMPKICK,
7892 accuracy: 90.0,
7893 base_power: 130.0,
7894 category: MoveCategory::Physical,
7895 move_type: PokemonType::FIGHTING,
7896 flags: Flags {
7897 contact: true,
7898 protect: true,
7899 ..Default::default()
7900 },
7901 crash: Some(0.5),
7902 ..Default::default()
7903 },
7904 );
7905 }
7906 moves.insert(
7907 Choices::HOLDBACK,
7908 Choice {
7909 move_id: Choices::HOLDBACK,
7910 base_power: 40.0,
7911 category: MoveCategory::Physical,
7912 move_type: PokemonType::NORMAL,
7913 flags: Flags {
7914 contact: true,
7915 protect: true,
7916 ..Default::default()
7917 },
7918 ..Default::default()
7919 },
7920 );
7921 moves.insert(
7922 Choices::HOLDHANDS,
7923 Choice {
7924 move_id: Choices::HOLDHANDS,
7925 target: MoveTarget::User,
7926 move_type: PokemonType::NORMAL,
7927 flags: Flags {
7928 ..Default::default()
7929 },
7930 ..Default::default()
7931 },
7932 );
7933 moves.insert(
7934 Choices::HONECLAWS,
7935 Choice {
7936 move_id: Choices::HONECLAWS,
7937 target: MoveTarget::User,
7938 move_type: PokemonType::DARK,
7939 flags: Flags {
7940 ..Default::default()
7941 },
7942 boost: Some(Boost {
7943 target: MoveTarget::User,
7944 boosts: StatBoosts {
7945 attack: 1,
7946 defense: 0,
7947 special_attack: 0,
7948 special_defense: 0,
7949 speed: 0,
7950 accuracy: 1,
7951 },
7952 }),
7953 ..Default::default()
7954 },
7955 );
7956 moves.insert(
7957 Choices::HORNATTACK,
7958 Choice {
7959 move_id: Choices::HORNATTACK,
7960 base_power: 65.0,
7961 category: MoveCategory::Physical,
7962 move_type: PokemonType::NORMAL,
7963 flags: Flags {
7964 contact: true,
7965 protect: true,
7966 ..Default::default()
7967 },
7968 ..Default::default()
7969 },
7970 );
7971 moves.insert(
7972 Choices::HORNDRILL,
7973 Choice {
7974 move_id: Choices::HORNDRILL,
7975 accuracy: 30.0,
7976 category: MoveCategory::Physical,
7977 move_type: PokemonType::NORMAL,
7978 flags: Flags {
7979 contact: true,
7980 protect: true,
7981 ..Default::default()
7982 },
7983 ..Default::default()
7984 },
7985 );
7986 moves.insert(
7987 Choices::HORNLEECH,
7988 Choice {
7989 move_id: Choices::HORNLEECH,
7990 base_power: 75.0,
7991 category: MoveCategory::Physical,
7992 move_type: PokemonType::GRASS,
7993 flags: Flags {
7994 contact: true,
7995 heal: true,
7996 protect: true,
7997 ..Default::default()
7998 },
7999 drain: Some(0.5),
8000 ..Default::default()
8001 },
8002 );
8003 moves.insert(
8004 Choices::HOWL,
8005 Choice {
8006 move_id: Choices::HOWL,
8007 target: MoveTarget::User,
8008 move_type: PokemonType::NORMAL,
8009 flags: Flags {
8010 sound: true,
8011 ..Default::default()
8012 },
8013 boost: Some(Boost {
8014 target: MoveTarget::User,
8015 boosts: StatBoosts {
8016 attack: 1,
8017 defense: 0,
8018 special_attack: 0,
8019 special_defense: 0,
8020 speed: 0,
8021 accuracy: 0,
8022 },
8023 }),
8024 ..Default::default()
8025 },
8026 );
8027 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8028 moves.insert(
8029 Choices::HURRICANE,
8030 Choice {
8031 move_id: Choices::HURRICANE,
8032 accuracy: 70.0,
8033 base_power: 120.0,
8034 category: MoveCategory::Special,
8035 move_type: PokemonType::FLYING,
8036 flags: Flags {
8037 protect: true,
8038 wind: true,
8039 ..Default::default()
8040 },
8041 secondaries: Some(vec![Secondary {
8042 chance: 30.0,
8043 target: MoveTarget::Opponent,
8044 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
8045 }]),
8046 ..Default::default()
8047 },
8048 );
8049 } else {
8050 moves.insert(
8051 Choices::HURRICANE,
8052 Choice {
8053 move_id: Choices::HURRICANE,
8054 accuracy: 70.0,
8055 base_power: 110.0,
8056 category: MoveCategory::Special,
8057 move_type: PokemonType::FLYING,
8058 flags: Flags {
8059 protect: true,
8060 wind: true,
8061 ..Default::default()
8062 },
8063 secondaries: Some(vec![Secondary {
8064 chance: 30.0,
8065 target: MoveTarget::Opponent,
8066 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
8067 }]),
8068 ..Default::default()
8069 },
8070 );
8071 }
8072 moves.insert(
8073 Choices::HYDROCANNON,
8074 Choice {
8075 move_id: Choices::HYDROCANNON,
8076 accuracy: 90.0,
8077 base_power: 150.0,
8078 category: MoveCategory::Special,
8079 move_type: PokemonType::WATER,
8080 flags: Flags {
8081 protect: true,
8082 recharge: true,
8083 ..Default::default()
8084 },
8085 ..Default::default()
8086 },
8087 );
8088 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8089 moves.insert(
8090 Choices::HYDROPUMP,
8091 Choice {
8092 move_id: Choices::HYDROPUMP,
8093 accuracy: 80.0,
8094 base_power: 120.0,
8095 category: MoveCategory::Special,
8096 move_type: PokemonType::WATER,
8097 flags: Flags {
8098 protect: true,
8099 ..Default::default()
8100 },
8101 ..Default::default()
8102 },
8103 );
8104 } else {
8105 moves.insert(
8106 Choices::HYDROPUMP,
8107 Choice {
8108 move_id: Choices::HYDROPUMP,
8109 accuracy: 80.0,
8110 base_power: 110.0,
8111 category: MoveCategory::Special,
8112 move_type: PokemonType::WATER,
8113 flags: Flags {
8114 protect: true,
8115 ..Default::default()
8116 },
8117 ..Default::default()
8118 },
8119 );
8120 }
8121 moves.insert(
8122 Choices::HYDROSTEAM,
8123 Choice {
8124 move_id: Choices::HYDROSTEAM,
8125 base_power: 80.0,
8126 category: MoveCategory::Special,
8127 move_type: PokemonType::WATER,
8128 flags: Flags {
8129 protect: true,
8130 ..Default::default()
8131 },
8132 ..Default::default()
8133 },
8134 );
8135 moves.insert(
8136 Choices::HYPERBEAM,
8137 Choice {
8138 move_id: Choices::HYPERBEAM,
8139 accuracy: 90.0,
8140 base_power: 150.0,
8141 category: MoveCategory::Special,
8142 move_type: PokemonType::NORMAL,
8143 flags: Flags {
8144 protect: true,
8145 recharge: true,
8146 ..Default::default()
8147 },
8148 ..Default::default()
8149 },
8150 );
8151 moves.insert(
8152 Choices::HYPERDRILL,
8153 Choice {
8154 move_id: Choices::HYPERDRILL,
8155 base_power: 100.0,
8156 category: MoveCategory::Physical,
8157 move_type: PokemonType::NORMAL,
8158 flags: Flags {
8159 contact: true,
8160 ..Default::default()
8161 },
8162 ..Default::default()
8163 },
8164 );
8165 moves.insert(
8166 Choices::HYPERFANG,
8167 Choice {
8168 move_id: Choices::HYPERFANG,
8169 accuracy: 90.0,
8170 base_power: 80.0,
8171 category: MoveCategory::Physical,
8172 move_type: PokemonType::NORMAL,
8173 flags: Flags {
8174 bite: true,
8175 contact: true,
8176 protect: true,
8177 ..Default::default()
8178 },
8179 secondaries: Some(vec![Secondary {
8180 chance: 10.0,
8181 target: MoveTarget::Opponent,
8182 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8183 }]),
8184 ..Default::default()
8185 },
8186 );
8187 moves.insert(
8188 Choices::HYPERSPACEFURY,
8189 Choice {
8190 move_id: Choices::HYPERSPACEFURY,
8191 base_power: 100.0,
8192 category: MoveCategory::Physical,
8193 move_type: PokemonType::DARK,
8194 flags: Flags {
8195 ..Default::default()
8196 },
8197 boost: Some(Boost {
8198 target: MoveTarget::User,
8199 boosts: StatBoosts {
8200 attack: 0,
8201 defense: -1,
8202 special_attack: 0,
8203 special_defense: 0,
8204 speed: 0,
8205 accuracy: 0,
8206 },
8207 }),
8208 ..Default::default()
8209 },
8210 );
8211 moves.insert(
8212 Choices::HYPERSPACEHOLE,
8213 Choice {
8214 move_id: Choices::HYPERSPACEHOLE,
8215 base_power: 80.0,
8216 category: MoveCategory::Special,
8217 move_type: PokemonType::PSYCHIC,
8218 flags: Flags {
8219 ..Default::default()
8220 },
8221 ..Default::default()
8222 },
8223 );
8224 moves.insert(
8225 Choices::HYPERVOICE,
8226 Choice {
8227 move_id: Choices::HYPERVOICE,
8228 base_power: 90.0,
8229 category: MoveCategory::Special,
8230 move_type: PokemonType::NORMAL,
8231 flags: Flags {
8232 protect: true,
8233 sound: true,
8234 ..Default::default()
8235 },
8236 ..Default::default()
8237 },
8238 );
8239 moves.insert(
8240 Choices::HYPNOSIS,
8241 Choice {
8242 move_id: Choices::HYPNOSIS,
8243 accuracy: 60.0,
8244 status: Some(Status {
8245 target: MoveTarget::Opponent,
8246 status: PokemonStatus::SLEEP,
8247 }),
8248 move_type: PokemonType::PSYCHIC,
8249 flags: Flags {
8250 protect: true,
8251 reflectable: true,
8252 ..Default::default()
8253 },
8254 ..Default::default()
8255 },
8256 );
8257 moves.insert(
8258 Choices::ICEBALL,
8259 Choice {
8260 move_id: Choices::ICEBALL,
8261 accuracy: 90.0,
8262 base_power: 30.0,
8263 category: MoveCategory::Physical,
8264 move_type: PokemonType::ICE,
8265 flags: Flags {
8266 bullet: true,
8267 contact: true,
8268 protect: true,
8269 ..Default::default()
8270 },
8271 ..Default::default()
8272 },
8273 );
8274 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8275 moves.insert(
8276 Choices::ICEBEAM,
8277 Choice {
8278 move_id: Choices::ICEBEAM,
8279 base_power: 95.0,
8280 category: MoveCategory::Special,
8281 move_type: PokemonType::ICE,
8282 flags: Flags {
8283 protect: true,
8284 ..Default::default()
8285 },
8286 secondaries: Some(vec![Secondary {
8287 chance: 10.0,
8288 target: MoveTarget::Opponent,
8289 effect: Effect::Status(PokemonStatus::FREEZE),
8290 }]),
8291 ..Default::default()
8292 },
8293 );
8294 } else {
8295 moves.insert(
8296 Choices::ICEBEAM,
8297 Choice {
8298 move_id: Choices::ICEBEAM,
8299 base_power: 90.0,
8300 category: MoveCategory::Special,
8301 move_type: PokemonType::ICE,
8302 flags: Flags {
8303 protect: true,
8304 ..Default::default()
8305 },
8306 secondaries: Some(vec![Secondary {
8307 chance: 10.0,
8308 target: MoveTarget::Opponent,
8309 effect: Effect::Status(PokemonStatus::FREEZE),
8310 }]),
8311 ..Default::default()
8312 },
8313 );
8314 }
8315 moves.insert(
8316 Choices::ICEBURN,
8317 Choice {
8318 move_id: Choices::ICEBURN,
8319 accuracy: 90.0,
8320 base_power: 140.0,
8321 category: MoveCategory::Special,
8322 move_type: PokemonType::ICE,
8323 flags: Flags {
8324 charge: true,
8325 protect: true,
8326 ..Default::default()
8327 },
8328 secondaries: Some(vec![Secondary {
8329 chance: 30.0,
8330 target: MoveTarget::Opponent,
8331 effect: Effect::Status(PokemonStatus::BURN),
8332 }]),
8333 ..Default::default()
8334 },
8335 );
8336 moves.insert(
8337 Choices::ICEFANG,
8338 Choice {
8339 move_id: Choices::ICEFANG,
8340 accuracy: 95.0,
8341 base_power: 65.0,
8342 category: MoveCategory::Physical,
8343 move_type: PokemonType::ICE,
8344 flags: Flags {
8345 bite: true,
8346 contact: true,
8347 protect: true,
8348 ..Default::default()
8349 },
8350 secondaries: Some(vec![
8351 Secondary {
8352 chance: 10.0,
8353 target: MoveTarget::Opponent,
8354 effect: Effect::Status(PokemonStatus::FREEZE),
8355 },
8356 Secondary {
8357 chance: 10.0,
8358 target: MoveTarget::Opponent,
8359 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8360 },
8361 ]),
8362 ..Default::default()
8363 },
8364 );
8365 moves.insert(
8366 Choices::ICEHAMMER,
8367 Choice {
8368 move_id: Choices::ICEHAMMER,
8369 accuracy: 90.0,
8370 base_power: 100.0,
8371 category: MoveCategory::Physical,
8372 move_type: PokemonType::ICE,
8373 flags: Flags {
8374 contact: true,
8375 protect: true,
8376 punch: true,
8377 ..Default::default()
8378 },
8379 boost: Some(Boost {
8380 target: MoveTarget::User,
8381 boosts: StatBoosts {
8382 attack: 0,
8383 defense: 0,
8384 special_attack: 0,
8385 special_defense: 0,
8386 speed: -1,
8387 accuracy: 0,
8388 },
8389 }),
8390 ..Default::default()
8391 },
8392 );
8393 moves.insert(
8394 Choices::ICEPUNCH,
8395 Choice {
8396 move_id: Choices::ICEPUNCH,
8397 base_power: 75.0,
8398 category: MoveCategory::Physical,
8399 move_type: PokemonType::ICE,
8400 flags: Flags {
8401 contact: true,
8402 protect: true,
8403 punch: true,
8404 ..Default::default()
8405 },
8406 secondaries: Some(vec![Secondary {
8407 chance: 10.0,
8408 target: MoveTarget::Opponent,
8409 effect: Effect::Status(PokemonStatus::FREEZE),
8410 }]),
8411 ..Default::default()
8412 },
8413 );
8414 moves.insert(
8415 Choices::ICESHARD,
8416 Choice {
8417 move_id: Choices::ICESHARD,
8418 base_power: 40.0,
8419 category: MoveCategory::Physical,
8420 priority: 1,
8421 move_type: PokemonType::ICE,
8422 flags: Flags {
8423 protect: true,
8424 ..Default::default()
8425 },
8426 ..Default::default()
8427 },
8428 );
8429 moves.insert(
8430 Choices::ICESPINNER,
8431 Choice {
8432 move_id: Choices::ICESPINNER,
8433 base_power: 80.0,
8434 category: MoveCategory::Physical,
8435 move_type: PokemonType::ICE,
8436 flags: Flags {
8437 contact: true,
8438 protect: true,
8439 ..Default::default()
8440 },
8441 ..Default::default()
8442 },
8443 );
8444 moves.insert(
8445 Choices::ICICLECRASH,
8446 Choice {
8447 move_id: Choices::ICICLECRASH,
8448 accuracy: 90.0,
8449 base_power: 85.0,
8450 category: MoveCategory::Physical,
8451 move_type: PokemonType::ICE,
8452 flags: Flags {
8453 protect: true,
8454 ..Default::default()
8455 },
8456 secondaries: Some(vec![Secondary {
8457 chance: 30.0,
8458 target: MoveTarget::Opponent,
8459 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8460 }]),
8461 ..Default::default()
8462 },
8463 );
8464 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
8465 moves.insert(
8466 Choices::ICICLESPEAR,
8467 Choice {
8468 move_id: Choices::ICICLESPEAR,
8469 base_power: 10.0,
8470 category: MoveCategory::Physical,
8471 move_type: PokemonType::ICE,
8472 flags: Flags {
8473 protect: true,
8474 ..Default::default()
8475 },
8476 ..Default::default()
8477 },
8478 );
8479 } else {
8480 moves.insert(
8481 Choices::ICICLESPEAR,
8482 Choice {
8483 move_id: Choices::ICICLESPEAR,
8484 base_power: 25.0,
8485 category: MoveCategory::Physical,
8486 move_type: PokemonType::ICE,
8487 flags: Flags {
8488 protect: true,
8489 ..Default::default()
8490 },
8491 ..Default::default()
8492 },
8493 );
8494 }
8495 moves.insert(
8496 Choices::ICYWIND,
8497 Choice {
8498 move_id: Choices::ICYWIND,
8499 accuracy: 95.0,
8500 base_power: 55.0,
8501 category: MoveCategory::Special,
8502 move_type: PokemonType::ICE,
8503 flags: Flags {
8504 protect: true,
8505 wind: true,
8506 ..Default::default()
8507 },
8508 secondaries: Some(vec![Secondary {
8509 chance: 100.0,
8510 target: MoveTarget::Opponent,
8511 effect: Effect::Boost(StatBoosts {
8512 attack: 0,
8513 defense: 0,
8514 special_attack: 0,
8515 special_defense: 0,
8516 speed: -1,
8517 accuracy: 0,
8518 }),
8519 }]),
8520 ..Default::default()
8521 },
8522 );
8523 moves.insert(
8524 Choices::IMPRISON,
8525 Choice {
8526 move_id: Choices::IMPRISON,
8527 target: MoveTarget::User,
8528 move_type: PokemonType::PSYCHIC,
8529 flags: Flags {
8530 ..Default::default()
8531 },
8532 volatile_status: Some(VolatileStatus {
8533 target: MoveTarget::User,
8534 volatile_status: PokemonVolatileStatus::IMPRISON,
8535 }),
8536 ..Default::default()
8537 },
8538 );
8539 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8540 moves.insert(
8541 Choices::INCINERATE,
8542 Choice {
8543 move_id: Choices::INCINERATE,
8544 base_power: 30.0,
8545 category: MoveCategory::Special,
8546 move_type: PokemonType::FIRE,
8547 flags: Flags {
8548 protect: true,
8549 ..Default::default()
8550 },
8551 ..Default::default()
8552 },
8553 );
8554 } else {
8555 moves.insert(
8556 Choices::INCINERATE,
8557 Choice {
8558 move_id: Choices::INCINERATE,
8559 base_power: 60.0,
8560 category: MoveCategory::Special,
8561 move_type: PokemonType::FIRE,
8562 flags: Flags {
8563 protect: true,
8564 ..Default::default()
8565 },
8566 ..Default::default()
8567 },
8568 );
8569 }
8570 moves.insert(
8571 Choices::INFERNALPARADE,
8572 Choice {
8573 move_id: Choices::INFERNALPARADE,
8574 base_power: 60.0,
8575 category: MoveCategory::Special,
8576 move_type: PokemonType::GHOST,
8577 flags: Flags {
8578 protect: true,
8579 ..Default::default()
8580 },
8581 secondaries: Some(vec![Secondary {
8582 chance: 30.0,
8583 target: MoveTarget::Opponent,
8584 effect: Effect::Status(PokemonStatus::BURN),
8585 }]),
8586 ..Default::default()
8587 },
8588 );
8589 moves.insert(
8590 Choices::INFERNO,
8591 Choice {
8592 move_id: Choices::INFERNO,
8593 accuracy: 50.0,
8594 base_power: 100.0,
8595 category: MoveCategory::Special,
8596 move_type: PokemonType::FIRE,
8597 flags: Flags {
8598 protect: true,
8599 ..Default::default()
8600 },
8601 secondaries: Some(vec![Secondary {
8602 chance: 100.0,
8603 target: MoveTarget::Opponent,
8604 effect: Effect::Status(PokemonStatus::BURN),
8605 }]),
8606 ..Default::default()
8607 },
8608 );
8609 moves.insert(
8610 Choices::INFESTATION,
8611 Choice {
8612 move_id: Choices::INFESTATION,
8613 base_power: 20.0,
8614 category: MoveCategory::Special,
8615 move_type: PokemonType::BUG,
8616 flags: Flags {
8617 contact: true,
8618 protect: true,
8619 ..Default::default()
8620 },
8621 volatile_status: Some(VolatileStatus {
8622 target: MoveTarget::Opponent,
8623 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
8624 }),
8625 ..Default::default()
8626 },
8627 );
8628 moves.insert(
8629 Choices::INGRAIN,
8630 Choice {
8631 move_id: Choices::INGRAIN,
8632 target: MoveTarget::User,
8633 move_type: PokemonType::GRASS,
8634 flags: Flags {
8635 ..Default::default()
8636 },
8637 volatile_status: Some(VolatileStatus {
8638 target: MoveTarget::User,
8639 volatile_status: PokemonVolatileStatus::INGRAIN,
8640 }),
8641 ..Default::default()
8642 },
8643 );
8644 moves.insert(
8645 Choices::INSTRUCT,
8646 Choice {
8647 move_id: Choices::INSTRUCT,
8648 move_type: PokemonType::PSYCHIC,
8649 flags: Flags {
8650 protect: true,
8651 ..Default::default()
8652 },
8653 ..Default::default()
8654 },
8655 );
8656 moves.insert(
8657 Choices::IONDELUGE,
8658 Choice {
8659 move_id: Choices::IONDELUGE,
8660 priority: 1,
8661 move_type: PokemonType::ELECTRIC,
8662 flags: Flags {
8663 ..Default::default()
8664 },
8665 ..Default::default()
8666 },
8667 );
8668 moves.insert(
8669 Choices::IRONDEFENSE,
8670 Choice {
8671 move_id: Choices::IRONDEFENSE,
8672 target: MoveTarget::User,
8673 move_type: PokemonType::STEEL,
8674 flags: Flags {
8675 ..Default::default()
8676 },
8677 boost: Some(Boost {
8678 target: MoveTarget::User,
8679 boosts: StatBoosts {
8680 attack: 0,
8681 defense: 2,
8682 special_attack: 0,
8683 special_defense: 0,
8684 speed: 0,
8685 accuracy: 0,
8686 },
8687 }),
8688 ..Default::default()
8689 },
8690 );
8691 moves.insert(
8692 Choices::IRONHEAD,
8693 Choice {
8694 move_id: Choices::IRONHEAD,
8695 base_power: 80.0,
8696 category: MoveCategory::Physical,
8697 move_type: PokemonType::STEEL,
8698 flags: Flags {
8699 contact: true,
8700 protect: true,
8701 ..Default::default()
8702 },
8703 secondaries: Some(vec![Secondary {
8704 chance: 30.0,
8705 target: MoveTarget::Opponent,
8706 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
8707 }]),
8708 ..Default::default()
8709 },
8710 );
8711 moves.insert(
8712 Choices::IRONTAIL,
8713 Choice {
8714 move_id: Choices::IRONTAIL,
8715 accuracy: 75.0,
8716 base_power: 100.0,
8717 category: MoveCategory::Physical,
8718 move_type: PokemonType::STEEL,
8719 flags: Flags {
8720 contact: true,
8721 protect: true,
8722 ..Default::default()
8723 },
8724 secondaries: Some(vec![Secondary {
8725 chance: 30.0,
8726 target: MoveTarget::Opponent,
8727 effect: Effect::Boost(StatBoosts {
8728 attack: 0,
8729 defense: -1,
8730 special_attack: 0,
8731 special_defense: 0,
8732 speed: 0,
8733 accuracy: 0,
8734 }),
8735 }]),
8736 ..Default::default()
8737 },
8738 );
8739 moves.insert(
8740 Choices::IVYCUDGEL,
8741 Choice {
8742 move_id: Choices::IVYCUDGEL,
8743 base_power: 100.0,
8744 category: MoveCategory::Physical,
8745 move_type: PokemonType::GRASS,
8746 flags: Flags {
8747 protect: true,
8748 ..Default::default()
8749 },
8750 ..Default::default()
8751 },
8752 );
8753 moves.insert(
8754 Choices::JAWLOCK,
8755 Choice {
8756 move_id: Choices::JAWLOCK,
8757 base_power: 80.0,
8758 category: MoveCategory::Physical,
8759 move_type: PokemonType::DARK,
8760 flags: Flags {
8761 bite: true,
8762 contact: true,
8763 protect: true,
8764 ..Default::default()
8765 },
8766 ..Default::default()
8767 },
8768 );
8769 moves.insert(
8770 Choices::JETPUNCH,
8771 Choice {
8772 move_id: Choices::JETPUNCH,
8773 base_power: 60.0,
8774 category: MoveCategory::Physical,
8775 priority: 1,
8776 move_type: PokemonType::WATER,
8777 flags: Flags {
8778 contact: true,
8779 protect: true,
8780 punch: true,
8781 ..Default::default()
8782 },
8783 ..Default::default()
8784 },
8785 );
8786 moves.insert(
8787 Choices::JUDGMENT,
8788 Choice {
8789 move_id: Choices::JUDGMENT,
8790 base_power: 100.0,
8791 category: MoveCategory::Special,
8792 move_type: PokemonType::NORMAL,
8793 flags: Flags {
8794 protect: true,
8795 ..Default::default()
8796 },
8797 ..Default::default()
8798 },
8799 );
8800 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
8801 moves.insert(
8802 Choices::JUMPKICK,
8803 Choice {
8804 move_id: Choices::JUMPKICK,
8805 accuracy: 95.0,
8806 base_power: 70.0,
8807 category: MoveCategory::Physical,
8808 move_type: PokemonType::FIGHTING,
8809 flags: Flags {
8810 contact: true,
8811 protect: true,
8812 ..Default::default()
8813 },
8814 crash: Some(0.5),
8815 ..Default::default()
8816 },
8817 );
8818 }
8819 else if cfg!(feature = "gen4") {
8820 moves.insert(
8821 Choices::JUMPKICK,
8822 Choice {
8823 move_id: Choices::JUMPKICK,
8824 accuracy: 95.0,
8825 base_power: 85.0,
8826 category: MoveCategory::Physical,
8827 move_type: PokemonType::FIGHTING,
8828 flags: Flags {
8829 contact: true,
8830 protect: true,
8831 ..Default::default()
8832 },
8833 crash: Some(0.5),
8834 ..Default::default()
8835 },
8836 );
8837 } else {
8838 moves.insert(
8839 Choices::JUMPKICK,
8840 Choice {
8841 move_id: Choices::JUMPKICK,
8842 accuracy: 95.0,
8843 base_power: 100.0,
8844 category: MoveCategory::Physical,
8845 move_type: PokemonType::FIGHTING,
8846 flags: Flags {
8847 contact: true,
8848 protect: true,
8849 ..Default::default()
8850 },
8851 crash: Some(0.5),
8852 ..Default::default()
8853 },
8854 );
8855 }
8856 moves.insert(
8857 Choices::JUNGLEHEALING,
8858 Choice {
8859 move_id: Choices::JUNGLEHEALING,
8860 target: MoveTarget::User,
8861 move_type: PokemonType::GRASS,
8862 flags: Flags {
8863 heal: true,
8864 ..Default::default()
8865 },
8866 heal: Some(Heal {
8867 target: MoveTarget::User,
8868 amount: 0.25,
8869 }),
8870 ..Default::default()
8871 },
8872 );
8873 if cfg!(feature = "gen1") {
8874 moves.insert(
8875 Choices::KARATECHOP,
8876 Choice {
8877 move_id: Choices::KARATECHOP,
8878 base_power: 50.0,
8879 category: MoveCategory::Physical,
8880 move_type: PokemonType::NORMAL,
8881 flags: Flags {
8882 contact: true,
8883 protect: true,
8884 ..Default::default()
8885 },
8886 ..Default::default()
8887 },
8888 );
8889 } else {
8890 moves.insert(
8891 Choices::KARATECHOP,
8892 Choice {
8893 move_id: Choices::KARATECHOP,
8894 base_power: 50.0,
8895 category: MoveCategory::Physical,
8896 move_type: PokemonType::FIGHTING,
8897 flags: Flags {
8898 contact: true,
8899 protect: true,
8900 ..Default::default()
8901 },
8902 ..Default::default()
8903 },
8904 );
8905 }
8906 moves.insert(
8907 Choices::KINESIS,
8908 Choice {
8909 move_id: Choices::KINESIS,
8910 accuracy: 80.0,
8911 move_type: PokemonType::PSYCHIC,
8912 flags: Flags {
8913 protect: true,
8914 reflectable: true,
8915 ..Default::default()
8916 },
8917 boost: Some(Boost {
8918 target: MoveTarget::Opponent,
8919 boosts: StatBoosts {
8920 attack: 0,
8921 defense: 0,
8922 special_attack: 0,
8923 special_defense: 0,
8924 speed: 0,
8925 accuracy: -1,
8926 },
8927 }),
8928 ..Default::default()
8929 },
8930 );
8931 moves.insert(
8932 Choices::KINGSSHIELD,
8933 Choice {
8934 move_id: Choices::KINGSSHIELD,
8935 priority: 4,
8936 target: MoveTarget::User,
8937 move_type: PokemonType::STEEL,
8938 flags: Flags {
8939 ..Default::default()
8940 },
8941 volatile_status: Some(VolatileStatus {
8942 target: MoveTarget::User,
8943 volatile_status: PokemonVolatileStatus::KINGSSHIELD,
8944 }),
8945 ..Default::default()
8946 },
8947 );
8948 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
8949 moves.insert(
8950 Choices::KNOCKOFF,
8951 Choice {
8952 move_id: Choices::KNOCKOFF,
8953 base_power: 20.0,
8954 category: MoveCategory::Physical,
8955 move_type: PokemonType::DARK,
8956 flags: Flags {
8957 contact: true,
8958 protect: true,
8959 ..Default::default()
8960 },
8961 ..Default::default()
8962 },
8963 );
8964 } else {
8965 moves.insert(
8966 Choices::KNOCKOFF,
8967 Choice {
8968 move_id: Choices::KNOCKOFF,
8969 base_power: 65.0,
8970 category: MoveCategory::Physical,
8971 move_type: PokemonType::DARK,
8972 flags: Flags {
8973 contact: true,
8974 protect: true,
8975 ..Default::default()
8976 },
8977 ..Default::default()
8978 },
8979 );
8980 }
8981 moves.insert(
8982 Choices::KOWTOWCLEAVE,
8983 Choice {
8984 move_id: Choices::KOWTOWCLEAVE,
8985 base_power: 85.0,
8986 category: MoveCategory::Physical,
8987 move_type: PokemonType::DARK,
8988 flags: Flags {
8989 contact: true,
8990 protect: true,
8991 slicing: true,
8992 ..Default::default()
8993 },
8994 ..Default::default()
8995 },
8996 );
8997 moves.insert(
8998 Choices::LANDSWRATH,
8999 Choice {
9000 move_id: Choices::LANDSWRATH,
9001 base_power: 90.0,
9002 category: MoveCategory::Physical,
9003 move_type: PokemonType::GROUND,
9004 flags: Flags {
9005 protect: true,
9006 ..Default::default()
9007 },
9008 ..Default::default()
9009 },
9010 );
9011 moves.insert(
9012 Choices::LASERFOCUS,
9013 Choice {
9014 move_id: Choices::LASERFOCUS,
9015 target: MoveTarget::User,
9016 move_type: PokemonType::NORMAL,
9017 flags: Flags {
9018 ..Default::default()
9019 },
9020 volatile_status: Some(VolatileStatus {
9021 target: MoveTarget::User,
9022 volatile_status: PokemonVolatileStatus::LASERFOCUS,
9023 }),
9024 ..Default::default()
9025 },
9026 );
9027 moves.insert(
9028 Choices::LASHOUT,
9029 Choice {
9030 move_id: Choices::LASHOUT,
9031 base_power: 75.0,
9032 category: MoveCategory::Physical,
9033 move_type: PokemonType::DARK,
9034 flags: Flags {
9035 contact: true,
9036 protect: true,
9037 ..Default::default()
9038 },
9039 ..Default::default()
9040 },
9041 );
9042 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
9043 moves.insert(
9044 Choices::LASTRESORT,
9045 Choice {
9046 move_id: Choices::LASTRESORT,
9047 base_power: 130.0,
9048 category: MoveCategory::Physical,
9049 move_type: PokemonType::NORMAL,
9050 flags: Flags {
9051 contact: true,
9052 protect: true,
9053 ..Default::default()
9054 },
9055 ..Default::default()
9056 },
9057 );
9058 } else {
9059 moves.insert(
9060 Choices::LASTRESORT,
9061 Choice {
9062 move_id: Choices::LASTRESORT,
9063 base_power: 140.0,
9064 category: MoveCategory::Physical,
9065 move_type: PokemonType::NORMAL,
9066 flags: Flags {
9067 contact: true,
9068 protect: true,
9069 ..Default::default()
9070 },
9071 ..Default::default()
9072 },
9073 );
9074 }
9075 moves.insert(
9076 Choices::LASTRESPECTS,
9077 Choice {
9078 move_id: Choices::LASTRESPECTS,
9079 base_power: 50.0,
9080 category: MoveCategory::Physical,
9081 move_type: PokemonType::GHOST,
9082 flags: Flags {
9083 protect: true,
9084 ..Default::default()
9085 },
9086 ..Default::default()
9087 },
9088 );
9089 moves.insert(
9090 Choices::LAVAPLUME,
9091 Choice {
9092 move_id: Choices::LAVAPLUME,
9093 base_power: 80.0,
9094 category: MoveCategory::Special,
9095 move_type: PokemonType::FIRE,
9096 flags: Flags {
9097 protect: true,
9098 ..Default::default()
9099 },
9100 secondaries: Some(vec![Secondary {
9101 chance: 30.0,
9102 target: MoveTarget::Opponent,
9103 effect: Effect::Status(PokemonStatus::BURN),
9104 }]),
9105 ..Default::default()
9106 },
9107 );
9108 moves.insert(
9109 Choices::LEAFAGE,
9110 Choice {
9111 move_id: Choices::LEAFAGE,
9112 base_power: 40.0,
9113 category: MoveCategory::Physical,
9114 move_type: PokemonType::GRASS,
9115 flags: Flags {
9116 protect: true,
9117 ..Default::default()
9118 },
9119 ..Default::default()
9120 },
9121 );
9122 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
9123 moves.insert(
9124 Choices::LEAFBLADE,
9125 Choice {
9126 move_id: Choices::LEAFBLADE,
9127 base_power: 70.0,
9128 category: MoveCategory::Physical,
9129 move_type: PokemonType::GRASS,
9130 flags: Flags {
9131 contact: true,
9132 protect: true,
9133 slicing: true,
9134 ..Default::default()
9135 },
9136 ..Default::default()
9137 },
9138 );
9139 } else {
9140 moves.insert(
9141 Choices::LEAFBLADE,
9142 Choice {
9143 move_id: Choices::LEAFBLADE,
9144 base_power: 90.0,
9145 category: MoveCategory::Physical,
9146 move_type: PokemonType::GRASS,
9147 flags: Flags {
9148 contact: true,
9149 protect: true,
9150 slicing: true,
9151 ..Default::default()
9152 },
9153 ..Default::default()
9154 },
9155 );
9156 }
9157 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9158 moves.insert(
9159 Choices::LEAFSTORM,
9160 Choice {
9161 move_id: Choices::LEAFSTORM,
9162 accuracy: 90.0,
9163 base_power: 140.0,
9164 category: MoveCategory::Special,
9165 move_type: PokemonType::GRASS,
9166 flags: Flags {
9167 protect: true,
9168 ..Default::default()
9169 },
9170 boost: Some(Boost {
9171 target: MoveTarget::User,
9172 boosts: StatBoosts {
9173 attack: 0,
9174 defense: 0,
9175 special_attack: -2,
9176 special_defense: 0,
9177 speed: 0,
9178 accuracy: 0,
9179 },
9180 }),
9181 ..Default::default()
9182 },
9183 );
9184 } else {
9185 moves.insert(
9186 Choices::LEAFSTORM,
9187 Choice {
9188 move_id: Choices::LEAFSTORM,
9189 accuracy: 90.0,
9190 base_power: 130.0,
9191 category: MoveCategory::Special,
9192 move_type: PokemonType::GRASS,
9193 flags: Flags {
9194 protect: true,
9195 ..Default::default()
9196 },
9197 boost: Some(Boost {
9198 target: MoveTarget::User,
9199 boosts: StatBoosts {
9200 attack: 0,
9201 defense: 0,
9202 special_attack: -2,
9203 special_defense: 0,
9204 speed: 0,
9205 accuracy: 0,
9206 },
9207 }),
9208 ..Default::default()
9209 },
9210 );
9211 }
9212 moves.insert(
9213 Choices::LEAFTORNADO,
9214 Choice {
9215 move_id: Choices::LEAFTORNADO,
9216 accuracy: 90.0,
9217 base_power: 65.0,
9218 category: MoveCategory::Special,
9219 move_type: PokemonType::GRASS,
9220 flags: Flags {
9221 protect: true,
9222 ..Default::default()
9223 },
9224 secondaries: Some(vec![Secondary {
9225 chance: 50.0,
9226 target: MoveTarget::Opponent,
9227 effect: Effect::Boost(StatBoosts {
9228 attack: 0,
9229 defense: 0,
9230 special_attack: 0,
9231 special_defense: 0,
9232 speed: 0,
9233 accuracy: -1,
9234 }),
9235 }]),
9236 ..Default::default()
9237 },
9238 );
9239 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
9240 moves.insert(
9241 Choices::LEECHLIFE,
9242 Choice {
9243 move_id: Choices::LEECHLIFE,
9244 base_power: 20.0,
9245 category: MoveCategory::Physical,
9246 move_type: PokemonType::BUG,
9247 flags: Flags {
9248 contact: true,
9249 heal: true,
9250 protect: true,
9251 ..Default::default()
9252 },
9253 drain: Some(0.5),
9254 ..Default::default()
9255 },
9256 );
9257 } else {
9258 moves.insert(
9259 Choices::LEECHLIFE,
9260 Choice {
9261 move_id: Choices::LEECHLIFE,
9262 base_power: 80.0,
9263 category: MoveCategory::Physical,
9264 move_type: PokemonType::BUG,
9265 flags: Flags {
9266 contact: true,
9267 heal: true,
9268 protect: true,
9269 ..Default::default()
9270 },
9271 drain: Some(0.5),
9272 ..Default::default()
9273 },
9274 );
9275 }
9276 moves.insert(
9277 Choices::LEECHSEED,
9278 Choice {
9279 move_id: Choices::LEECHSEED,
9280 accuracy: 90.0,
9281 move_type: PokemonType::GRASS,
9282 flags: Flags {
9283 powder: true,
9284 protect: true,
9285 reflectable: true,
9286 ..Default::default()
9287 },
9288 volatile_status: Some(VolatileStatus {
9289 target: MoveTarget::Opponent,
9290 volatile_status: PokemonVolatileStatus::LEECHSEED,
9291 }),
9292 ..Default::default()
9293 },
9294 );
9295 moves.insert(
9296 Choices::LEER,
9297 Choice {
9298 move_id: Choices::LEER,
9299 move_type: PokemonType::NORMAL,
9300 flags: Flags {
9301 protect: true,
9302 reflectable: true,
9303 ..Default::default()
9304 },
9305 boost: Some(Boost {
9306 target: MoveTarget::Opponent,
9307 boosts: StatBoosts {
9308 attack: 0,
9309 defense: -1,
9310 special_attack: 0,
9311 special_defense: 0,
9312 speed: 0,
9313 accuracy: 0,
9314 },
9315 }),
9316 ..Default::default()
9317 },
9318 );
9319 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9320 moves.insert(
9321 Choices::LICK,
9322 Choice {
9323 move_id: Choices::LICK,
9324 base_power: 20.0,
9325 category: MoveCategory::Physical,
9326 move_type: PokemonType::GHOST,
9327 flags: Flags {
9328 contact: true,
9329 protect: true,
9330 ..Default::default()
9331 },
9332 secondaries: Some(vec![Secondary {
9333 chance: 30.0,
9334 target: MoveTarget::Opponent,
9335 effect: Effect::Status(PokemonStatus::PARALYZE),
9336 }]),
9337 ..Default::default()
9338 },
9339 );
9340 } else {
9341 moves.insert(
9342 Choices::LICK,
9343 Choice {
9344 move_id: Choices::LICK,
9345 base_power: 30.0,
9346 category: MoveCategory::Physical,
9347 move_type: PokemonType::GHOST,
9348 flags: Flags {
9349 contact: true,
9350 protect: true,
9351 ..Default::default()
9352 },
9353 secondaries: Some(vec![Secondary {
9354 chance: 30.0,
9355 target: MoveTarget::Opponent,
9356 effect: Effect::Status(PokemonStatus::PARALYZE),
9357 }]),
9358 ..Default::default()
9359 },
9360 );
9361 }
9362 moves.insert(
9363 Choices::LIFEDEW,
9364 Choice {
9365 move_id: Choices::LIFEDEW,
9366 target: MoveTarget::User,
9367 move_type: PokemonType::WATER,
9368 flags: Flags {
9369 heal: true,
9370 ..Default::default()
9371 },
9372 heal: Some(Heal {
9373 target: MoveTarget::User,
9374 amount: 0.25,
9375 }),
9376 ..Default::default()
9377 },
9378 );
9379 moves.insert(
9380 Choices::LIGHTOFRUIN,
9381 Choice {
9382 move_id: Choices::LIGHTOFRUIN,
9383 accuracy: 90.0,
9384 base_power: 140.0,
9385 category: MoveCategory::Special,
9386 move_type: PokemonType::FAIRY,
9387 flags: Flags {
9388 protect: true,
9389 ..Default::default()
9390 },
9391 recoil: Some(0.5),
9392 ..Default::default()
9393 },
9394 );
9395 if cfg!(feature = "gen1") {
9396 moves.insert(
9397 Choices::LIGHTSCREEN,
9398 Choice {
9399 move_id: Choices::LIGHTSCREEN,
9400 target: MoveTarget::User,
9401 move_type: PokemonType::PSYCHIC,
9402 flags: Flags {
9403 ..Default::default()
9404 },
9405 volatile_status: Some(VolatileStatus {
9406 target: MoveTarget::User,
9407 volatile_status: PokemonVolatileStatus::LIGHTSCREEN,
9408 }),
9409 ..Default::default()
9410 },
9411 );
9412 } else {
9413 moves.insert(
9414 Choices::LIGHTSCREEN,
9415 Choice {
9416 move_id: Choices::LIGHTSCREEN,
9417 target: MoveTarget::User,
9418 move_type: PokemonType::PSYCHIC,
9419 flags: Flags {
9420 ..Default::default()
9421 },
9422 side_condition: Some(SideCondition {
9423 target: MoveTarget::User,
9424 condition: PokemonSideCondition::LightScreen,
9425 }),
9426 ..Default::default()
9427 },
9428 );
9429 }
9430 moves.insert(
9431 Choices::LIQUIDATION,
9432 Choice {
9433 move_id: Choices::LIQUIDATION,
9434 base_power: 85.0,
9435 category: MoveCategory::Physical,
9436 move_type: PokemonType::WATER,
9437 flags: Flags {
9438 contact: true,
9439 protect: true,
9440 ..Default::default()
9441 },
9442 secondaries: Some(vec![Secondary {
9443 chance: 20.0,
9444 target: MoveTarget::Opponent,
9445 effect: Effect::Boost(StatBoosts {
9446 attack: 0,
9447 defense: -1,
9448 special_attack: 0,
9449 special_defense: 0,
9450 speed: 0,
9451 accuracy: 0,
9452 }),
9453 }]),
9454 ..Default::default()
9455 },
9456 );
9457 moves.insert(
9458 Choices::LOCKON,
9459 Choice {
9460 move_id: Choices::LOCKON,
9461 move_type: PokemonType::NORMAL,
9462 flags: Flags {
9463 protect: true,
9464 ..Default::default()
9465 },
9466 ..Default::default()
9467 },
9468 );
9469 moves.insert(
9470 Choices::LOVELYKISS,
9471 Choice {
9472 move_id: Choices::LOVELYKISS,
9473 accuracy: 75.0,
9474 status: Some(Status {
9475 target: MoveTarget::Opponent,
9476 status: PokemonStatus::SLEEP,
9477 }),
9478 move_type: PokemonType::NORMAL,
9479 flags: Flags {
9480 protect: true,
9481 reflectable: true,
9482 ..Default::default()
9483 },
9484 ..Default::default()
9485 },
9486 );
9487 if cfg!(feature = "gen1") || cfg!(feature = "gen2") {
9488 moves.insert(
9489 Choices::LOWKICK,
9490 Choice {
9491 move_id: Choices::LOWKICK,
9492 category: MoveCategory::Physical,
9493 base_power: 50.0,
9494 accuracy: 90.0,
9495 move_type: PokemonType::FIGHTING,
9496 flags: Flags {
9497 contact: true,
9498 protect: true,
9499 ..Default::default()
9500 },
9501 secondaries: Some(vec![Secondary {
9502 chance: 30.0,
9503 target: MoveTarget::Opponent,
9504 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
9505 }]),
9506 ..Default::default()
9507 },
9508 );
9509 } else {
9510 moves.insert(
9511 Choices::LOWKICK,
9512 Choice {
9513 move_id: Choices::LOWKICK,
9514 category: MoveCategory::Physical,
9515 move_type: PokemonType::FIGHTING,
9516 flags: Flags {
9517 contact: true,
9518 protect: true,
9519 ..Default::default()
9520 },
9521 ..Default::default()
9522 },
9523 );
9524 }
9525 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
9526 moves.insert(
9527 Choices::LOWSWEEP,
9528 Choice {
9529 move_id: Choices::LOWSWEEP,
9530 base_power: 60.0,
9531 category: MoveCategory::Physical,
9532 move_type: PokemonType::FIGHTING,
9533 flags: Flags {
9534 contact: true,
9535 protect: true,
9536 ..Default::default()
9537 },
9538 secondaries: Some(vec![Secondary {
9539 chance: 100.0,
9540 target: MoveTarget::Opponent,
9541 effect: Effect::Boost(StatBoosts {
9542 attack: 0,
9543 defense: 0,
9544 special_attack: 0,
9545 special_defense: 0,
9546 speed: -1,
9547 accuracy: 0,
9548 }),
9549 }]),
9550 ..Default::default()
9551 },
9552 );
9553 } else {
9554 moves.insert(
9555 Choices::LOWSWEEP,
9556 Choice {
9557 move_id: Choices::LOWSWEEP,
9558 base_power: 65.0,
9559 category: MoveCategory::Physical,
9560 move_type: PokemonType::FIGHTING,
9561 flags: Flags {
9562 contact: true,
9563 protect: true,
9564 ..Default::default()
9565 },
9566 secondaries: Some(vec![Secondary {
9567 chance: 100.0,
9568 target: MoveTarget::Opponent,
9569 effect: Effect::Boost(StatBoosts {
9570 attack: 0,
9571 defense: 0,
9572 special_attack: 0,
9573 special_defense: 0,
9574 speed: -1,
9575 accuracy: 0,
9576 }),
9577 }]),
9578 ..Default::default()
9579 },
9580 );
9581 }
9582 moves.insert(
9583 Choices::LUCKYCHANT,
9584 Choice {
9585 move_id: Choices::LUCKYCHANT,
9586 target: MoveTarget::User,
9587 move_type: PokemonType::NORMAL,
9588 flags: Flags {
9589 ..Default::default()
9590 },
9591 side_condition: Some(SideCondition {
9592 target: MoveTarget::User,
9593 condition: PokemonSideCondition::LuckyChant,
9594 }),
9595 ..Default::default()
9596 },
9597 );
9598 moves.insert(
9599 Choices::LUMINACRASH,
9600 Choice {
9601 move_id: Choices::LUMINACRASH,
9602 base_power: 80.0,
9603 category: MoveCategory::Special,
9604 move_type: PokemonType::PSYCHIC,
9605 flags: Flags {
9606 protect: true,
9607 ..Default::default()
9608 },
9609 secondaries: Some(vec![Secondary {
9610 chance: 100.0,
9611 target: MoveTarget::Opponent,
9612 effect: Effect::Boost(StatBoosts {
9613 attack: 0,
9614 defense: 0,
9615 special_attack: 0,
9616 special_defense: -2,
9617 speed: 0,
9618 accuracy: 0,
9619 }),
9620 }]),
9621 ..Default::default()
9622 },
9623 );
9624 moves.insert(
9625 Choices::LUNARBLESSING,
9626 Choice {
9627 move_id: Choices::LUNARBLESSING,
9628 target: MoveTarget::User,
9629 move_type: PokemonType::PSYCHIC,
9630 flags: Flags {
9631 heal: true,
9632 ..Default::default()
9633 },
9634 heal: Some(Heal {
9635 target: MoveTarget::User,
9636 amount: 0.25,
9637 }),
9638 ..Default::default()
9639 },
9640 );
9641 moves.insert(
9642 Choices::LUNARDANCE,
9643 Choice {
9644 move_id: Choices::LUNARDANCE,
9645 target: MoveTarget::User,
9646 move_type: PokemonType::PSYCHIC,
9647 flags: Flags {
9648 heal: true,
9649 ..Default::default()
9650 },
9651 ..Default::default()
9652 },
9653 );
9654 moves.insert(
9655 Choices::LUNGE,
9656 Choice {
9657 move_id: Choices::LUNGE,
9658 base_power: 80.0,
9659 category: MoveCategory::Physical,
9660 move_type: PokemonType::BUG,
9661 flags: Flags {
9662 contact: true,
9663 protect: true,
9664 ..Default::default()
9665 },
9666 secondaries: Some(vec![Secondary {
9667 chance: 100.0,
9668 target: MoveTarget::Opponent,
9669 effect: Effect::Boost(StatBoosts {
9670 attack: -1,
9671 defense: 0,
9672 special_attack: 0,
9673 special_defense: 0,
9674 speed: 0,
9675 accuracy: 0,
9676 }),
9677 }]),
9678 ..Default::default()
9679 },
9680 );
9681 if cfg!(feature = "gen9") {
9682 moves.insert(
9683 Choices::LUSTERPURGE,
9684 Choice {
9685 move_id: Choices::LUSTERPURGE,
9686 base_power: 95.0,
9687 category: MoveCategory::Special,
9688 move_type: PokemonType::PSYCHIC,
9689 flags: Flags {
9690 protect: true,
9691 ..Default::default()
9692 },
9693 secondaries: Some(vec![Secondary {
9694 chance: 50.0,
9695 target: MoveTarget::Opponent,
9696 effect: Effect::Boost(StatBoosts {
9697 attack: 0,
9698 defense: 0,
9699 special_attack: 0,
9700 special_defense: -1,
9701 speed: 0,
9702 accuracy: 0,
9703 }),
9704 }]),
9705 ..Default::default()
9706 },
9707 );
9708 } else {
9709 moves.insert(
9710 Choices::LUSTERPURGE,
9711 Choice {
9712 move_id: Choices::LUSTERPURGE,
9713 base_power: 70.0,
9714 category: MoveCategory::Special,
9715 move_type: PokemonType::PSYCHIC,
9716 flags: Flags {
9717 protect: true,
9718 ..Default::default()
9719 },
9720 secondaries: Some(vec![Secondary {
9721 chance: 50.0,
9722 target: MoveTarget::Opponent,
9723 effect: Effect::Boost(StatBoosts {
9724 attack: 0,
9725 defense: 0,
9726 special_attack: 0,
9727 special_defense: -1,
9728 speed: 0,
9729 accuracy: 0,
9730 }),
9731 }]),
9732 ..Default::default()
9733 },
9734 );
9735 }
9736 moves.insert(
9737 Choices::MACHPUNCH,
9738 Choice {
9739 move_id: Choices::MACHPUNCH,
9740 base_power: 40.0,
9741 category: MoveCategory::Physical,
9742 priority: 1,
9743 move_type: PokemonType::FIGHTING,
9744 flags: Flags {
9745 contact: true,
9746 protect: true,
9747 punch: true,
9748 ..Default::default()
9749 },
9750 ..Default::default()
9751 },
9752 );
9753 moves.insert(
9754 Choices::MAGICALLEAF,
9755 Choice {
9756 move_id: Choices::MAGICALLEAF,
9757 base_power: 60.0,
9758 category: MoveCategory::Special,
9759 move_type: PokemonType::GRASS,
9760 flags: Flags {
9761 protect: true,
9762 ..Default::default()
9763 },
9764 ..Default::default()
9765 },
9766 );
9767 moves.insert(
9768 Choices::MAGICALTORQUE,
9769 Choice {
9770 move_id: Choices::MAGICALTORQUE,
9771 base_power: 100.0,
9772 category: MoveCategory::Physical,
9773 move_type: PokemonType::FAIRY,
9774 flags: Flags {
9775 protect: true,
9776 ..Default::default()
9777 },
9778 secondaries: Some(vec![Secondary {
9779 chance: 30.0,
9780 target: MoveTarget::Opponent,
9781 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
9782 }]),
9783 ..Default::default()
9784 },
9785 );
9786 moves.insert(
9787 Choices::MAGICCOAT,
9788 Choice {
9789 move_id: Choices::MAGICCOAT,
9790 priority: 4,
9791 target: MoveTarget::User,
9792 move_type: PokemonType::PSYCHIC,
9793 flags: Flags {
9794 ..Default::default()
9795 },
9796 volatile_status: Some(VolatileStatus {
9797 target: MoveTarget::User,
9798 volatile_status: PokemonVolatileStatus::MAGICCOAT,
9799 }),
9800 ..Default::default()
9801 },
9802 );
9803 moves.insert(
9804 Choices::MAGICPOWDER,
9805 Choice {
9806 move_id: Choices::MAGICPOWDER,
9807 move_type: PokemonType::PSYCHIC,
9808 flags: Flags {
9809 powder: true,
9810 protect: true,
9811 reflectable: true,
9812 ..Default::default()
9813 },
9814 ..Default::default()
9815 },
9816 );
9817 moves.insert(
9818 Choices::MAGICROOM,
9819 Choice {
9820 move_id: Choices::MAGICROOM,
9821 move_type: PokemonType::PSYCHIC,
9822 flags: Flags {
9823 ..Default::default()
9824 },
9825 ..Default::default()
9826 },
9827 );
9828 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
9829 moves.insert(
9830 Choices::MAGMASTORM,
9831 Choice {
9832 move_id: Choices::MAGMASTORM,
9833 accuracy: 70.0,
9834 base_power: 120.0,
9835 category: MoveCategory::Special,
9836 move_type: PokemonType::FIRE,
9837 flags: Flags {
9838 protect: true,
9839 ..Default::default()
9840 },
9841 volatile_status: Some(VolatileStatus {
9842 target: MoveTarget::Opponent,
9843 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9844 }),
9845 ..Default::default()
9846 },
9847 );
9848 } else if cfg!(feature = "gen5") {
9849 moves.insert(
9850 Choices::MAGMASTORM,
9851 Choice {
9852 move_id: Choices::MAGMASTORM,
9853 accuracy: 75.0,
9854 base_power: 120.0,
9855 category: MoveCategory::Special,
9856 move_type: PokemonType::FIRE,
9857 flags: Flags {
9858 protect: true,
9859 ..Default::default()
9860 },
9861 volatile_status: Some(VolatileStatus {
9862 target: MoveTarget::Opponent,
9863 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9864 }),
9865 ..Default::default()
9866 },
9867 );
9868 } else {
9869 moves.insert(
9870 Choices::MAGMASTORM,
9871 Choice {
9872 move_id: Choices::MAGMASTORM,
9873 accuracy: 75.0,
9874 base_power: 100.0,
9875 category: MoveCategory::Special,
9876 move_type: PokemonType::FIRE,
9877 flags: Flags {
9878 protect: true,
9879 ..Default::default()
9880 },
9881 volatile_status: Some(VolatileStatus {
9882 target: MoveTarget::Opponent,
9883 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
9884 }),
9885 ..Default::default()
9886 },
9887 );
9888 }
9889 moves.insert(
9890 Choices::MAGNETBOMB,
9891 Choice {
9892 move_id: Choices::MAGNETBOMB,
9893 base_power: 60.0,
9894 category: MoveCategory::Physical,
9895 move_type: PokemonType::STEEL,
9896 flags: Flags {
9897 bullet: true,
9898 protect: true,
9899 ..Default::default()
9900 },
9901 ..Default::default()
9902 },
9903 );
9904 moves.insert(
9905 Choices::MAGNETICFLUX,
9906 Choice {
9907 move_id: Choices::MAGNETICFLUX,
9908 target: MoveTarget::User,
9909 move_type: PokemonType::ELECTRIC,
9910 flags: Flags {
9911 ..Default::default()
9912 },
9913 ..Default::default()
9914 },
9915 );
9916 moves.insert(
9917 Choices::MAGNETRISE,
9918 Choice {
9919 move_id: Choices::MAGNETRISE,
9920 target: MoveTarget::User,
9921 move_type: PokemonType::ELECTRIC,
9922 flags: Flags {
9923 ..Default::default()
9924 },
9925 volatile_status: Some(VolatileStatus {
9926 target: MoveTarget::User,
9927 volatile_status: PokemonVolatileStatus::MAGNETRISE,
9928 }),
9929 ..Default::default()
9930 },
9931 );
9932 moves.insert(
9933 Choices::MAGNITUDE,
9934 Choice {
9935 move_id: Choices::MAGNITUDE,
9936 category: MoveCategory::Physical,
9937 move_type: PokemonType::GROUND,
9938 flags: Flags {
9939 protect: true,
9940 ..Default::default()
9941 },
9942 ..Default::default()
9943 },
9944 );
9945 moves.insert(
9946 Choices::MAKEITRAIN,
9947 Choice {
9948 move_id: Choices::MAKEITRAIN,
9949 base_power: 120.0,
9950 category: MoveCategory::Special,
9951 move_type: PokemonType::STEEL,
9952 flags: Flags {
9953 protect: true,
9954 ..Default::default()
9955 },
9956 boost: Some(Boost {
9957 target: MoveTarget::User,
9958 boosts: StatBoosts {
9959 attack: 0,
9960 defense: 0,
9961 special_attack: -1,
9962 special_defense: 0,
9963 speed: 0,
9964 accuracy: 0,
9965 },
9966 }),
9967 ..Default::default()
9968 },
9969 );
9970 moves.insert(
9971 Choices::MALIGNANTCHAIN,
9972 Choice {
9973 move_id: Choices::MALIGNANTCHAIN,
9974 base_power: 100.0,
9975 category: MoveCategory::Special,
9976 move_type: PokemonType::POISON,
9977 flags: Flags {
9978 protect: true,
9979 ..Default::default()
9980 },
9981 secondaries: Some(vec![Secondary {
9982 chance: 50.0,
9983 target: MoveTarget::Opponent,
9984 effect: Effect::Status(PokemonStatus::TOXIC),
9985 }]),
9986 ..Default::default()
9987 },
9988 );
9989 moves.insert(
9990 Choices::MATBLOCK,
9991 Choice {
9992 move_id: Choices::MATBLOCK,
9993 target: MoveTarget::User,
9994 move_type: PokemonType::FIGHTING,
9995 flags: Flags {
9996 ..Default::default()
9997 },
9998 side_condition: Some(SideCondition {
9999 target: MoveTarget::User,
10000 condition: PokemonSideCondition::MatBlock,
10001 }),
10002 ..Default::default()
10003 },
10004 );
10005 moves.insert(
10006 Choices::MATCHAGOTCHA,
10007 Choice {
10008 move_id: Choices::MATCHAGOTCHA,
10009 accuracy: 90.0,
10010 base_power: 80.0,
10011 category: MoveCategory::Special,
10012 move_type: PokemonType::GRASS,
10013 flags: Flags {
10014 protect: true,
10015 heal: true,
10016 ..Default::default()
10017 },
10018 secondaries: Some(vec![Secondary {
10019 chance: 20.0,
10020 target: MoveTarget::Opponent,
10021 effect: Effect::Status(PokemonStatus::BURN),
10022 }]),
10023 drain: Some(0.5),
10024 ..Default::default()
10025 },
10026 );
10027 moves.insert(
10028 Choices::MEANLOOK,
10029 Choice {
10030 move_id: Choices::MEANLOOK,
10031 move_type: PokemonType::NORMAL,
10032 flags: Flags {
10033 reflectable: true,
10034 ..Default::default()
10035 },
10036 ..Default::default()
10037 },
10038 );
10039 moves.insert(
10040 Choices::MEDITATE,
10041 Choice {
10042 move_id: Choices::MEDITATE,
10043 target: MoveTarget::User,
10044 move_type: PokemonType::PSYCHIC,
10045 flags: Flags {
10046 ..Default::default()
10047 },
10048 boost: Some(Boost {
10049 target: MoveTarget::User,
10050 boosts: StatBoosts {
10051 attack: 1,
10052 defense: 0,
10053 special_attack: 0,
10054 special_defense: 0,
10055 speed: 0,
10056 accuracy: 0,
10057 },
10058 }),
10059 ..Default::default()
10060 },
10061 );
10062 moves.insert(
10063 Choices::MEFIRST,
10064 Choice {
10065 move_id: Choices::MEFIRST,
10066 move_type: PokemonType::NORMAL,
10067 flags: Flags {
10068 protect: true,
10069 ..Default::default()
10070 },
10071 ..Default::default()
10072 },
10073 );
10074 moves.insert(
10075 Choices::MEGADRAIN,
10076 Choice {
10077 move_id: Choices::MEGADRAIN,
10078 base_power: 40.0,
10079 category: MoveCategory::Special,
10080 move_type: PokemonType::GRASS,
10081 flags: Flags {
10082 heal: true,
10083 protect: true,
10084 ..Default::default()
10085 },
10086 drain: Some(0.5),
10087 ..Default::default()
10088 },
10089 );
10090 moves.insert(
10091 Choices::MEGAHORN,
10092 Choice {
10093 move_id: Choices::MEGAHORN,
10094 accuracy: 85.0,
10095 base_power: 120.0,
10096 category: MoveCategory::Physical,
10097 move_type: PokemonType::BUG,
10098 flags: Flags {
10099 contact: true,
10100 protect: true,
10101 ..Default::default()
10102 },
10103 ..Default::default()
10104 },
10105 );
10106 moves.insert(
10107 Choices::MEGAKICK,
10108 Choice {
10109 move_id: Choices::MEGAKICK,
10110 accuracy: 75.0,
10111 base_power: 120.0,
10112 category: MoveCategory::Physical,
10113 move_type: PokemonType::NORMAL,
10114 flags: Flags {
10115 contact: true,
10116 protect: true,
10117 ..Default::default()
10118 },
10119 ..Default::default()
10120 },
10121 );
10122 moves.insert(
10123 Choices::MEGAPUNCH,
10124 Choice {
10125 move_id: Choices::MEGAPUNCH,
10126 accuracy: 85.0,
10127 base_power: 80.0,
10128 category: MoveCategory::Physical,
10129 move_type: PokemonType::NORMAL,
10130 flags: Flags {
10131 contact: true,
10132 protect: true,
10133 punch: true,
10134 ..Default::default()
10135 },
10136 ..Default::default()
10137 },
10138 );
10139 moves.insert(
10140 Choices::MEMENTO,
10141 Choice {
10142 move_id: Choices::MEMENTO,
10143 move_type: PokemonType::DARK,
10144 flags: Flags {
10145 protect: true,
10146 ..Default::default()
10147 },
10148 boost: Some(Boost {
10149 target: MoveTarget::Opponent,
10150 boosts: StatBoosts {
10151 attack: -2,
10152 defense: 0,
10153 special_attack: -2,
10154 special_defense: 0,
10155 speed: 0,
10156 accuracy: 0,
10157 },
10158 }),
10159 heal: Some(Heal {
10160 target: MoveTarget::User,
10161 amount: -1.0,
10162 }),
10163 ..Default::default()
10164 },
10165 );
10166 moves.insert(
10167 Choices::METALBURST,
10168 Choice {
10169 move_id: Choices::METALBURST,
10170 category: MoveCategory::Physical,
10171 move_type: PokemonType::STEEL,
10172 flags: Flags {
10173 protect: true,
10174 ..Default::default()
10175 },
10176 ..Default::default()
10177 },
10178 );
10179 moves.insert(
10180 Choices::METALCLAW,
10181 Choice {
10182 move_id: Choices::METALCLAW,
10183 accuracy: 95.0,
10184 base_power: 50.0,
10185 category: MoveCategory::Physical,
10186 move_type: PokemonType::STEEL,
10187 flags: Flags {
10188 contact: true,
10189 protect: true,
10190 ..Default::default()
10191 },
10192 secondaries: Some(vec![Secondary {
10193 chance: 10.0,
10194 target: MoveTarget::User,
10195 effect: Effect::Boost(StatBoosts {
10196 attack: 1,
10197 defense: 0,
10198 special_attack: 0,
10199 special_defense: 0,
10200 speed: 0,
10201 accuracy: 0,
10202 }),
10203 }]),
10204 ..Default::default()
10205 },
10206 );
10207 moves.insert(
10208 Choices::METALSOUND,
10209 Choice {
10210 move_id: Choices::METALSOUND,
10211 accuracy: 85.0,
10212 move_type: PokemonType::STEEL,
10213 flags: Flags {
10214 protect: true,
10215 reflectable: true,
10216 sound: true,
10217 ..Default::default()
10218 },
10219 boost: Some(Boost {
10220 target: MoveTarget::Opponent,
10221 boosts: StatBoosts {
10222 attack: 0,
10223 defense: 0,
10224 special_attack: 0,
10225 special_defense: -2,
10226 speed: 0,
10227 accuracy: 0,
10228 },
10229 }),
10230 ..Default::default()
10231 },
10232 );
10233 moves.insert(
10234 Choices::METEORASSAULT,
10235 Choice {
10236 move_id: Choices::METEORASSAULT,
10237 base_power: 150.0,
10238 category: MoveCategory::Physical,
10239 move_type: PokemonType::FIGHTING,
10240 flags: Flags {
10241 protect: true,
10242 recharge: true,
10243 ..Default::default()
10244 },
10245 ..Default::default()
10246 },
10247 );
10248 moves.insert(
10249 Choices::METEORBEAM,
10250 Choice {
10251 move_id: Choices::METEORBEAM,
10252 accuracy: 90.0,
10253 base_power: 120.0,
10254 category: MoveCategory::Special,
10255 move_type: PokemonType::ROCK,
10256 flags: Flags {
10257 charge: true,
10258 protect: true,
10259 ..Default::default()
10260 },
10261 ..Default::default()
10262 },
10263 );
10264 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
10265 moves.insert(
10266 Choices::METEORMASH,
10267 Choice {
10268 move_id: Choices::METEORMASH,
10269 accuracy: 85.0,
10270 base_power: 100.0,
10271 category: MoveCategory::Physical,
10272 move_type: PokemonType::STEEL,
10273 flags: Flags {
10274 contact: true,
10275 protect: true,
10276 punch: true,
10277 ..Default::default()
10278 },
10279 secondaries: Some(vec![Secondary {
10280 chance: 20.0,
10281 target: MoveTarget::User,
10282 effect: Effect::Boost(StatBoosts {
10283 attack: 1,
10284 defense: 0,
10285 special_attack: 0,
10286 special_defense: 0,
10287 speed: 0,
10288 accuracy: 0,
10289 }),
10290 }]),
10291 ..Default::default()
10292 },
10293 );
10294 } else {
10295 moves.insert(
10296 Choices::METEORMASH,
10297 Choice {
10298 move_id: Choices::METEORMASH,
10299 accuracy: 90.0,
10300 base_power: 90.0,
10301 category: MoveCategory::Physical,
10302 move_type: PokemonType::STEEL,
10303 flags: Flags {
10304 contact: true,
10305 protect: true,
10306 punch: true,
10307 ..Default::default()
10308 },
10309 secondaries: Some(vec![Secondary {
10310 chance: 20.0,
10311 target: MoveTarget::User,
10312 effect: Effect::Boost(StatBoosts {
10313 attack: 1,
10314 defense: 0,
10315 special_attack: 0,
10316 special_defense: 0,
10317 speed: 0,
10318 accuracy: 0,
10319 }),
10320 }]),
10321 ..Default::default()
10322 },
10323 );
10324 }
10325 moves.insert(
10326 Choices::METRONOME,
10327 Choice {
10328 move_id: Choices::METRONOME,
10329 target: MoveTarget::User,
10330 move_type: PokemonType::NORMAL,
10331 flags: Flags {
10332 ..Default::default()
10333 },
10334 ..Default::default()
10335 },
10336 );
10337 moves.insert(
10338 Choices::MIGHTYCLEAVE,
10339 Choice {
10340 move_id: Choices::MIGHTYCLEAVE,
10341 base_power: 95.0,
10342 category: MoveCategory::Physical,
10343 move_type: PokemonType::ROCK,
10344 flags: Flags {
10345 contact: true,
10346 slicing: true,
10347 ..Default::default()
10348 },
10349 ..Default::default()
10350 },
10351 );
10352 moves.insert(
10353 Choices::MILKDRINK,
10354 Choice {
10355 move_id: Choices::MILKDRINK,
10356 target: MoveTarget::User,
10357 move_type: PokemonType::NORMAL,
10358 flags: Flags {
10359 heal: true,
10360 ..Default::default()
10361 },
10362 heal: Some(Heal {
10363 target: MoveTarget::User,
10364 amount: 0.5,
10365 }),
10366 ..Default::default()
10367 },
10368 );
10369 moves.insert(
10370 Choices::MIMIC,
10371 Choice {
10372 move_id: Choices::MIMIC,
10373 move_type: PokemonType::NORMAL,
10374 flags: Flags {
10375 protect: true,
10376 ..Default::default()
10377 },
10378 ..Default::default()
10379 },
10380 );
10381 moves.insert(
10382 Choices::MINDBLOWN,
10383 Choice {
10384 move_id: Choices::MINDBLOWN,
10385 base_power: 150.0,
10386 category: MoveCategory::Special,
10387 move_type: PokemonType::FIRE,
10388 flags: Flags {
10389 protect: true,
10390 ..Default::default()
10391 },
10392 ..Default::default()
10393 },
10394 );
10395 moves.insert(
10396 Choices::MINDREADER,
10397 Choice {
10398 move_id: Choices::MINDREADER,
10399 move_type: PokemonType::NORMAL,
10400 flags: Flags {
10401 protect: true,
10402 ..Default::default()
10403 },
10404 ..Default::default()
10405 },
10406 );
10407 moves.insert(
10408 Choices::MINIMIZE,
10409 Choice {
10410 move_id: Choices::MINIMIZE,
10411 target: MoveTarget::User,
10412 move_type: PokemonType::NORMAL,
10413 flags: Flags {
10414 ..Default::default()
10415 },
10416 boost: Some(Boost {
10417 target: MoveTarget::User,
10418 boosts: StatBoosts {
10419 attack: 0,
10420 defense: 0,
10421 special_attack: 0,
10422 special_defense: 0,
10423 speed: 0,
10424 accuracy: 0,
10425 },
10426 }),
10427 volatile_status: Some(VolatileStatus {
10428 target: MoveTarget::User,
10429 volatile_status: PokemonVolatileStatus::MINIMIZE,
10430 }),
10431 ..Default::default()
10432 },
10433 );
10434 moves.insert(
10435 Choices::MIRACLEEYE,
10436 Choice {
10437 move_id: Choices::MIRACLEEYE,
10438 move_type: PokemonType::PSYCHIC,
10439 flags: Flags {
10440 protect: true,
10441 reflectable: true,
10442 ..Default::default()
10443 },
10444 volatile_status: Some(VolatileStatus {
10445 target: MoveTarget::Opponent,
10446 volatile_status: PokemonVolatileStatus::MIRACLEEYE,
10447 }),
10448 ..Default::default()
10449 },
10450 );
10451 moves.insert(
10452 Choices::MIRRORCOAT,
10453 Choice {
10454 move_id: Choices::MIRRORCOAT,
10455 category: MoveCategory::Special,
10456 priority: -5,
10457 move_type: PokemonType::PSYCHIC,
10458 flags: Flags {
10459 protect: true,
10460 ..Default::default()
10461 },
10462 ..Default::default()
10463 },
10464 );
10465 moves.insert(
10466 Choices::MIRRORMOVE,
10467 Choice {
10468 move_id: Choices::MIRRORMOVE,
10469 move_type: PokemonType::FLYING,
10470 flags: Flags {
10471 ..Default::default()
10472 },
10473 ..Default::default()
10474 },
10475 );
10476 moves.insert(
10477 Choices::MIRRORSHOT,
10478 Choice {
10479 move_id: Choices::MIRRORSHOT,
10480 accuracy: 85.0,
10481 base_power: 65.0,
10482 category: MoveCategory::Special,
10483 move_type: PokemonType::STEEL,
10484 flags: Flags {
10485 protect: true,
10486 ..Default::default()
10487 },
10488 secondaries: Some(vec![Secondary {
10489 chance: 30.0,
10490 target: MoveTarget::Opponent,
10491 effect: Effect::Boost(StatBoosts {
10492 attack: 0,
10493 defense: 0,
10494 special_attack: 0,
10495 special_defense: 0,
10496 speed: 0,
10497 accuracy: -1,
10498 }),
10499 }]),
10500 ..Default::default()
10501 },
10502 );
10503 moves.insert(
10504 Choices::MIST,
10505 Choice {
10506 move_id: Choices::MIST,
10507 target: MoveTarget::User,
10508 move_type: PokemonType::ICE,
10509 flags: Flags {
10510 ..Default::default()
10511 },
10512 side_condition: Some(SideCondition {
10513 target: MoveTarget::User,
10514 condition: PokemonSideCondition::Mist,
10515 }),
10516 ..Default::default()
10517 },
10518 );
10519 if cfg!(feature = "gen9") {
10520 moves.insert(
10521 Choices::MISTBALL,
10522 Choice {
10523 move_id: Choices::MISTBALL,
10524 base_power: 95.0,
10525 category: MoveCategory::Special,
10526 move_type: PokemonType::PSYCHIC,
10527 flags: Flags {
10528 bullet: true,
10529 protect: true,
10530 ..Default::default()
10531 },
10532 secondaries: Some(vec![Secondary {
10533 chance: 50.0,
10534 target: MoveTarget::Opponent,
10535 effect: Effect::Boost(StatBoosts {
10536 attack: 0,
10537 defense: 0,
10538 special_attack: -1,
10539 special_defense: 0,
10540 speed: 0,
10541 accuracy: 0,
10542 }),
10543 }]),
10544 ..Default::default()
10545 },
10546 );
10547 } else {
10548 moves.insert(
10549 Choices::MISTBALL,
10550 Choice {
10551 move_id: Choices::MISTBALL,
10552 base_power: 70.0,
10553 category: MoveCategory::Special,
10554 move_type: PokemonType::PSYCHIC,
10555 flags: Flags {
10556 bullet: true,
10557 protect: true,
10558 ..Default::default()
10559 },
10560 secondaries: Some(vec![Secondary {
10561 chance: 50.0,
10562 target: MoveTarget::Opponent,
10563 effect: Effect::Boost(StatBoosts {
10564 attack: 0,
10565 defense: 0,
10566 special_attack: -1,
10567 special_defense: 0,
10568 speed: 0,
10569 accuracy: 0,
10570 }),
10571 }]),
10572 ..Default::default()
10573 },
10574 );
10575 }
10576 moves.insert(
10577 Choices::MISTYEXPLOSION,
10578 Choice {
10579 move_id: Choices::MISTYEXPLOSION,
10580 base_power: 100.0,
10581 category: MoveCategory::Special,
10582 move_type: PokemonType::FAIRY,
10583 flags: Flags {
10584 protect: true,
10585 ..Default::default()
10586 },
10587 ..Default::default()
10588 },
10589 );
10590 moves.insert(
10591 Choices::MISTYTERRAIN,
10592 Choice {
10593 move_id: Choices::MISTYTERRAIN,
10594 move_type: PokemonType::FAIRY,
10595 flags: Flags {
10596 ..Default::default()
10597 },
10598 ..Default::default()
10599 },
10600 );
10601 moves.insert(
10602 Choices::MOONBLAST,
10603 Choice {
10604 move_id: Choices::MOONBLAST,
10605 base_power: 95.0,
10606 category: MoveCategory::Special,
10607 move_type: PokemonType::FAIRY,
10608 flags: Flags {
10609 protect: true,
10610 ..Default::default()
10611 },
10612 secondaries: Some(vec![Secondary {
10613 chance: 30.0,
10614 target: MoveTarget::Opponent,
10615 effect: Effect::Boost(StatBoosts {
10616 attack: 0,
10617 defense: 0,
10618 special_attack: -1,
10619 special_defense: 0,
10620 speed: 0,
10621 accuracy: 0,
10622 }),
10623 }]),
10624 ..Default::default()
10625 },
10626 );
10627 moves.insert(
10628 Choices::MOONGEISTBEAM,
10629 Choice {
10630 move_id: Choices::MOONGEISTBEAM,
10631 base_power: 100.0,
10632 category: MoveCategory::Special,
10633 move_type: PokemonType::GHOST,
10634 flags: Flags {
10635 protect: true,
10636 ..Default::default()
10637 },
10638 ..Default::default()
10639 },
10640 );
10641 moves.insert(
10642 Choices::MOONLIGHT,
10643 Choice {
10644 move_id: Choices::MOONLIGHT,
10645 target: MoveTarget::User,
10646 move_type: PokemonType::FAIRY,
10647 flags: Flags {
10648 heal: true,
10649 ..Default::default()
10650 },
10651 heal: Some(Heal {
10652 target: MoveTarget::User,
10653 amount: 0.5,
10654 }),
10655 ..Default::default()
10656 },
10657 );
10658 moves.insert(
10659 Choices::MORNINGSUN,
10660 Choice {
10661 move_id: Choices::MORNINGSUN,
10662 target: MoveTarget::User,
10663 move_type: PokemonType::NORMAL,
10664 flags: Flags {
10665 heal: true,
10666 ..Default::default()
10667 },
10668 heal: Some(Heal {
10669 target: MoveTarget::User,
10670 amount: 0.5,
10671 }),
10672 ..Default::default()
10673 },
10674 );
10675 moves.insert(
10676 Choices::MORTALSPIN,
10677 Choice {
10678 move_id: Choices::MORTALSPIN,
10679 base_power: 30.0,
10680 category: MoveCategory::Physical,
10681 move_type: PokemonType::POISON,
10682 flags: Flags {
10683 contact: true,
10684 protect: true,
10685 ..Default::default()
10686 },
10687 secondaries: Some(vec![Secondary {
10688 chance: 100.0,
10689 target: MoveTarget::Opponent,
10690 effect: Effect::Status(PokemonStatus::POISON),
10691 }]),
10692 ..Default::default()
10693 },
10694 );
10695 moves.insert(
10696 Choices::MOUNTAINGALE,
10697 Choice {
10698 move_id: Choices::MOUNTAINGALE,
10699 accuracy: 85.0,
10700 base_power: 100.0,
10701 category: MoveCategory::Physical,
10702 move_type: PokemonType::ICE,
10703 flags: Flags {
10704 protect: true,
10705 ..Default::default()
10706 },
10707 secondaries: Some(vec![Secondary {
10708 chance: 30.0,
10709 target: MoveTarget::Opponent,
10710 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
10711 }]),
10712 ..Default::default()
10713 },
10714 );
10715 moves.insert(
10716 Choices::MUDBOMB,
10717 Choice {
10718 move_id: Choices::MUDBOMB,
10719 accuracy: 85.0,
10720 base_power: 65.0,
10721 category: MoveCategory::Special,
10722 move_type: PokemonType::GROUND,
10723 flags: Flags {
10724 bullet: true,
10725 protect: true,
10726 ..Default::default()
10727 },
10728 secondaries: Some(vec![Secondary {
10729 chance: 30.0,
10730 target: MoveTarget::Opponent,
10731 effect: Effect::Boost(StatBoosts {
10732 attack: 0,
10733 defense: 0,
10734 special_attack: 0,
10735 special_defense: 0,
10736 speed: 0,
10737 accuracy: -1,
10738 }),
10739 }]),
10740 ..Default::default()
10741 },
10742 );
10743 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
10744 moves.insert(
10745 Choices::MUDDYWATER,
10746 Choice {
10747 move_id: Choices::MUDDYWATER,
10748 accuracy: 85.0,
10749 base_power: 95.0,
10750 category: MoveCategory::Special,
10751 move_type: PokemonType::WATER,
10752 flags: Flags {
10753 protect: true,
10754 ..Default::default()
10755 },
10756 secondaries: Some(vec![Secondary {
10757 chance: 30.0,
10758 target: MoveTarget::Opponent,
10759 effect: Effect::Boost(StatBoosts {
10760 attack: 0,
10761 defense: 0,
10762 special_attack: 0,
10763 special_defense: 0,
10764 speed: 0,
10765 accuracy: -1,
10766 }),
10767 }]),
10768 ..Default::default()
10769 },
10770 );
10771 } else {
10772 moves.insert(
10773 Choices::MUDDYWATER,
10774 Choice {
10775 move_id: Choices::MUDDYWATER,
10776 accuracy: 85.0,
10777 base_power: 90.0,
10778 category: MoveCategory::Special,
10779 move_type: PokemonType::WATER,
10780 flags: Flags {
10781 protect: true,
10782 ..Default::default()
10783 },
10784 secondaries: Some(vec![Secondary {
10785 chance: 30.0,
10786 target: MoveTarget::Opponent,
10787 effect: Effect::Boost(StatBoosts {
10788 attack: 0,
10789 defense: 0,
10790 special_attack: 0,
10791 special_defense: 0,
10792 speed: 0,
10793 accuracy: -1,
10794 }),
10795 }]),
10796 ..Default::default()
10797 },
10798 );
10799 }
10800 moves.insert(
10801 Choices::MUDSHOT,
10802 Choice {
10803 move_id: Choices::MUDSHOT,
10804 accuracy: 95.0,
10805 base_power: 55.0,
10806 category: MoveCategory::Special,
10807 move_type: PokemonType::GROUND,
10808 flags: Flags {
10809 protect: true,
10810 ..Default::default()
10811 },
10812 secondaries: Some(vec![Secondary {
10813 chance: 100.0,
10814 target: MoveTarget::Opponent,
10815 effect: Effect::Boost(StatBoosts {
10816 attack: 0,
10817 defense: 0,
10818 special_attack: 0,
10819 special_defense: 0,
10820 speed: -1,
10821 accuracy: 0,
10822 }),
10823 }]),
10824 ..Default::default()
10825 },
10826 );
10827 moves.insert(
10828 Choices::MUDSLAP,
10829 Choice {
10830 move_id: Choices::MUDSLAP,
10831 base_power: 20.0,
10832 category: MoveCategory::Special,
10833 move_type: PokemonType::GROUND,
10834 flags: Flags {
10835 protect: true,
10836 ..Default::default()
10837 },
10838 secondaries: Some(vec![Secondary {
10839 chance: 100.0,
10840 target: MoveTarget::Opponent,
10841 effect: Effect::Boost(StatBoosts {
10842 attack: 0,
10843 defense: 0,
10844 special_attack: 0,
10845 special_defense: 0,
10846 speed: 0,
10847 accuracy: -1,
10848 }),
10849 }]),
10850 ..Default::default()
10851 },
10852 );
10853 moves.insert(
10854 Choices::MUDSPORT,
10855 Choice {
10856 move_id: Choices::MUDSPORT,
10857 move_type: PokemonType::GROUND,
10858 flags: Flags {
10859 ..Default::default()
10860 },
10861 ..Default::default()
10862 },
10863 );
10864 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
10865 moves.insert(
10866 Choices::MULTIATTACK,
10867 Choice {
10868 move_id: Choices::MULTIATTACK,
10869 base_power: 120.0,
10870 category: MoveCategory::Physical,
10871 move_type: PokemonType::NORMAL,
10872 flags: Flags {
10873 contact: true,
10874 protect: true,
10875 ..Default::default()
10876 },
10877 ..Default::default()
10878 },
10879 );
10880 } else {
10881 moves.insert(
10882 Choices::MULTIATTACK,
10883 Choice {
10884 move_id: Choices::MULTIATTACK,
10885 base_power: 90.0,
10886 category: MoveCategory::Physical,
10887 move_type: PokemonType::NORMAL,
10888 flags: Flags {
10889 contact: true,
10890 protect: true,
10891 ..Default::default()
10892 },
10893 ..Default::default()
10894 },
10895 );
10896 }
10897 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
10898 moves.insert(
10899 Choices::MYSTICALFIRE,
10900 Choice {
10901 move_id: Choices::MYSTICALFIRE,
10902 base_power: 65.0,
10903 category: MoveCategory::Special,
10904 move_type: PokemonType::FIRE,
10905 flags: Flags {
10906 protect: true,
10907 ..Default::default()
10908 },
10909 secondaries: Some(vec![Secondary {
10910 chance: 100.0,
10911 target: MoveTarget::Opponent,
10912 effect: Effect::Boost(StatBoosts {
10913 attack: 0,
10914 defense: 0,
10915 special_attack: -1,
10916 special_defense: 0,
10917 speed: 0,
10918 accuracy: 0,
10919 }),
10920 }]),
10921 ..Default::default()
10922 },
10923 );
10924 } else {
10925 moves.insert(
10926 Choices::MYSTICALFIRE,
10927 Choice {
10928 move_id: Choices::MYSTICALFIRE,
10929 base_power: 75.0,
10930 category: MoveCategory::Special,
10931 move_type: PokemonType::FIRE,
10932 flags: Flags {
10933 protect: true,
10934 ..Default::default()
10935 },
10936 secondaries: Some(vec![Secondary {
10937 chance: 100.0,
10938 target: MoveTarget::Opponent,
10939 effect: Effect::Boost(StatBoosts {
10940 attack: 0,
10941 defense: 0,
10942 special_attack: -1,
10943 special_defense: 0,
10944 speed: 0,
10945 accuracy: 0,
10946 }),
10947 }]),
10948 ..Default::default()
10949 },
10950 );
10951 }
10952 moves.insert(
10953 Choices::MYSTICALPOWER,
10954 Choice {
10955 move_id: Choices::MYSTICALPOWER,
10956 accuracy: 90.0,
10957 base_power: 70.0,
10958 category: MoveCategory::Special,
10959 move_type: PokemonType::PSYCHIC,
10960 flags: Flags {
10961 protect: true,
10962 ..Default::default()
10963 },
10964 secondaries: Some(vec![Secondary {
10965 chance: 100.0,
10966 target: MoveTarget::User,
10967 effect: Effect::Boost(StatBoosts {
10968 attack: 0,
10969 defense: 0,
10970 special_attack: 1,
10971 special_defense: 0,
10972 speed: 0,
10973 accuracy: 0,
10974 }),
10975 }]),
10976 ..Default::default()
10977 },
10978 );
10979 moves.insert(
10980 Choices::NASTYPLOT,
10981 Choice {
10982 move_id: Choices::NASTYPLOT,
10983 target: MoveTarget::User,
10984 move_type: PokemonType::DARK,
10985 flags: Flags {
10986 ..Default::default()
10987 },
10988 boost: Some(Boost {
10989 target: MoveTarget::User,
10990 boosts: StatBoosts {
10991 attack: 0,
10992 defense: 0,
10993 special_attack: 2,
10994 special_defense: 0,
10995 speed: 0,
10996 accuracy: 0,
10997 },
10998 }),
10999 ..Default::default()
11000 },
11001 );
11002 moves.insert(
11003 Choices::NATURALGIFT,
11004 Choice {
11005 move_id: Choices::NATURALGIFT,
11006 category: MoveCategory::Physical,
11007 move_type: PokemonType::NORMAL,
11008 flags: Flags {
11009 protect: true,
11010 ..Default::default()
11011 },
11012 ..Default::default()
11013 },
11014 );
11015 moves.insert(
11016 Choices::NATUREPOWER,
11017 Choice {
11018 move_id: Choices::NATUREPOWER,
11019 move_type: PokemonType::NORMAL,
11020 flags: Flags {
11021 ..Default::default()
11022 },
11023 ..Default::default()
11024 },
11025 );
11026 moves.insert(
11027 Choices::NATURESMADNESS,
11028 Choice {
11029 move_id: Choices::NATURESMADNESS,
11030 accuracy: 90.0,
11031 category: MoveCategory::Special,
11032 move_type: PokemonType::FAIRY,
11033 flags: Flags {
11034 protect: true,
11035 ..Default::default()
11036 },
11037 ..Default::default()
11038 },
11039 );
11040 moves.insert(
11041 Choices::NEEDLEARM,
11042 Choice {
11043 move_id: Choices::NEEDLEARM,
11044 base_power: 60.0,
11045 category: MoveCategory::Physical,
11046 move_type: PokemonType::GRASS,
11047 flags: Flags {
11048 contact: true,
11049 protect: true,
11050 ..Default::default()
11051 },
11052 secondaries: Some(vec![Secondary {
11053 chance: 30.0,
11054 target: MoveTarget::Opponent,
11055 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
11056 }]),
11057 ..Default::default()
11058 },
11059 );
11060 moves.insert(
11061 Choices::NIGHTDAZE,
11062 Choice {
11063 move_id: Choices::NIGHTDAZE,
11064 accuracy: 95.0,
11065 base_power: 85.0,
11066 category: MoveCategory::Special,
11067 move_type: PokemonType::DARK,
11068 flags: Flags {
11069 protect: true,
11070 ..Default::default()
11071 },
11072 secondaries: Some(vec![Secondary {
11073 chance: 40.0,
11074 target: MoveTarget::Opponent,
11075 effect: Effect::Boost(StatBoosts {
11076 attack: 0,
11077 defense: 0,
11078 special_attack: 0,
11079 special_defense: 0,
11080 speed: 0,
11081 accuracy: -1,
11082 }),
11083 }]),
11084 ..Default::default()
11085 },
11086 );
11087 moves.insert(
11088 Choices::NIGHTMARE,
11089 Choice {
11090 move_id: Choices::NIGHTMARE,
11091 move_type: PokemonType::GHOST,
11092 flags: Flags {
11093 protect: true,
11094 ..Default::default()
11095 },
11096 volatile_status: Some(VolatileStatus {
11097 target: MoveTarget::Opponent,
11098 volatile_status: PokemonVolatileStatus::NIGHTMARE,
11099 }),
11100 ..Default::default()
11101 },
11102 );
11103 moves.insert(
11104 Choices::NIGHTSHADE,
11105 Choice {
11106 move_id: Choices::NIGHTSHADE,
11107 category: MoveCategory::Special,
11108 move_type: PokemonType::GHOST,
11109 flags: Flags {
11110 protect: true,
11111 ..Default::default()
11112 },
11113 ..Default::default()
11114 },
11115 );
11116 moves.insert(
11117 Choices::NIGHTSLASH,
11118 Choice {
11119 move_id: Choices::NIGHTSLASH,
11120 base_power: 70.0,
11121 category: MoveCategory::Physical,
11122 move_type: PokemonType::DARK,
11123 flags: Flags {
11124 contact: true,
11125 protect: true,
11126 slicing: true,
11127 ..Default::default()
11128 },
11129 ..Default::default()
11130 },
11131 );
11132 moves.insert(
11133 Choices::NOBLEROAR,
11134 Choice {
11135 move_id: Choices::NOBLEROAR,
11136 move_type: PokemonType::NORMAL,
11137 flags: Flags {
11138 protect: true,
11139 reflectable: true,
11140 sound: true,
11141 ..Default::default()
11142 },
11143 boost: Some(Boost {
11144 target: MoveTarget::Opponent,
11145 boosts: StatBoosts {
11146 attack: -1,
11147 defense: 0,
11148 special_attack: -1,
11149 special_defense: 0,
11150 speed: 0,
11151 accuracy: 0,
11152 },
11153 }),
11154 ..Default::default()
11155 },
11156 );
11157 moves.insert(
11158 Choices::NORETREAT,
11159 Choice {
11160 move_id: Choices::NORETREAT,
11161 target: MoveTarget::User,
11162 move_type: PokemonType::FIGHTING,
11163 flags: Flags {
11164 ..Default::default()
11165 },
11166 boost: Some(Boost {
11167 target: MoveTarget::User,
11168 boosts: StatBoosts {
11169 attack: 1,
11170 defense: 1,
11171 special_attack: 1,
11172 special_defense: 1,
11173 speed: 1,
11174 accuracy: 0,
11175 },
11176 }),
11177 volatile_status: Some(VolatileStatus {
11178 target: MoveTarget::User,
11179 volatile_status: PokemonVolatileStatus::NORETREAT,
11180 }),
11181 ..Default::default()
11182 },
11183 );
11184 moves.insert(
11185 Choices::NOTHING,
11186 Choice {
11187 move_id: Choices::NOTHING,
11188 target: MoveTarget::User,
11189 move_type: PokemonType::NORMAL,
11190 flags: Flags {
11191 ..Default::default()
11192 },
11193 ..Default::default()
11194 },
11195 );
11196 moves.insert(
11197 Choices::NOXIOUSTORQUE,
11198 Choice {
11199 move_id: Choices::NOXIOUSTORQUE,
11200 base_power: 100.0,
11201 category: MoveCategory::Physical,
11202 move_type: PokemonType::POISON,
11203 flags: Flags {
11204 protect: true,
11205 ..Default::default()
11206 },
11207 secondaries: Some(vec![Secondary {
11208 chance: 30.0,
11209 target: MoveTarget::Opponent,
11210 effect: Effect::Status(PokemonStatus::POISON),
11211 }]),
11212 ..Default::default()
11213 },
11214 );
11215 moves.insert(
11216 Choices::NUZZLE,
11217 Choice {
11218 move_id: Choices::NUZZLE,
11219 base_power: 20.0,
11220 category: MoveCategory::Physical,
11221 move_type: PokemonType::ELECTRIC,
11222 flags: Flags {
11223 contact: true,
11224 protect: true,
11225 ..Default::default()
11226 },
11227 secondaries: Some(vec![Secondary {
11228 chance: 100.0,
11229 target: MoveTarget::Opponent,
11230 effect: Effect::Status(PokemonStatus::PARALYZE),
11231 }]),
11232 ..Default::default()
11233 },
11234 );
11235 moves.insert(
11236 Choices::OBLIVIONWING,
11237 Choice {
11238 move_id: Choices::OBLIVIONWING,
11239 base_power: 80.0,
11240 category: MoveCategory::Special,
11241 move_type: PokemonType::FLYING,
11242 flags: Flags {
11243 heal: true,
11244 protect: true,
11245 ..Default::default()
11246 },
11247 drain: Some(0.75),
11248 ..Default::default()
11249 },
11250 );
11251 moves.insert(
11252 Choices::OBSTRUCT,
11253 Choice {
11254 move_id: Choices::OBSTRUCT,
11255 priority: 4,
11256 target: MoveTarget::User,
11257 move_type: PokemonType::DARK,
11258 flags: Flags {
11259 ..Default::default()
11260 },
11261 volatile_status: Some(VolatileStatus {
11262 target: MoveTarget::User,
11263 volatile_status: PokemonVolatileStatus::PROTECT,
11264 }),
11265 ..Default::default()
11266 },
11267 );
11268 moves.insert(
11269 Choices::OCTAZOOKA,
11270 Choice {
11271 move_id: Choices::OCTAZOOKA,
11272 accuracy: 85.0,
11273 base_power: 65.0,
11274 category: MoveCategory::Special,
11275 move_type: PokemonType::WATER,
11276 flags: Flags {
11277 bullet: true,
11278 protect: true,
11279 ..Default::default()
11280 },
11281 secondaries: Some(vec![Secondary {
11282 chance: 50.0,
11283 target: MoveTarget::Opponent,
11284 effect: Effect::Boost(StatBoosts {
11285 attack: 0,
11286 defense: 0,
11287 special_attack: 0,
11288 special_defense: 0,
11289 speed: 0,
11290 accuracy: -1,
11291 }),
11292 }]),
11293 ..Default::default()
11294 },
11295 );
11296 moves.insert(
11297 Choices::OCTOLOCK,
11298 Choice {
11299 move_id: Choices::OCTOLOCK,
11300 move_type: PokemonType::FIGHTING,
11301 flags: Flags {
11302 protect: true,
11303 ..Default::default()
11304 },
11305 volatile_status: Some(VolatileStatus {
11306 target: MoveTarget::Opponent,
11307 volatile_status: PokemonVolatileStatus::OCTOLOCK,
11308 }),
11309 ..Default::default()
11310 },
11311 );
11312 moves.insert(
11313 Choices::ODORSLEUTH,
11314 Choice {
11315 move_id: Choices::ODORSLEUTH,
11316 move_type: PokemonType::NORMAL,
11317 flags: Flags {
11318 protect: true,
11319 reflectable: true,
11320 ..Default::default()
11321 },
11322 volatile_status: Some(VolatileStatus {
11323 target: MoveTarget::Opponent,
11324 volatile_status: PokemonVolatileStatus::FORESIGHT,
11325 }),
11326 ..Default::default()
11327 },
11328 );
11329 moves.insert(
11330 Choices::OMINOUSWIND,
11331 Choice {
11332 move_id: Choices::OMINOUSWIND,
11333 base_power: 60.0,
11334 category: MoveCategory::Special,
11335 move_type: PokemonType::GHOST,
11336 flags: Flags {
11337 protect: true,
11338 ..Default::default()
11339 },
11340 secondaries: Some(vec![Secondary {
11341 chance: 10.0,
11342 target: MoveTarget::User,
11343 effect: Effect::Boost(StatBoosts {
11344 attack: 1,
11345 defense: 1,
11346 special_attack: 1,
11347 special_defense: 1,
11348 speed: 1,
11349 accuracy: 0,
11350 }),
11351 }]),
11352 ..Default::default()
11353 },
11354 );
11355 moves.insert(
11356 Choices::ORDERUP,
11357 Choice {
11358 move_id: Choices::ORDERUP,
11359 base_power: 80.0,
11360 category: MoveCategory::Physical,
11361 move_type: PokemonType::DRAGON,
11362 flags: Flags {
11363 protect: true,
11364 ..Default::default()
11365 },
11366 ..Default::default()
11367 },
11368 );
11369 moves.insert(
11370 Choices::ORIGINPULSE,
11371 Choice {
11372 move_id: Choices::ORIGINPULSE,
11373 accuracy: 85.0,
11374 base_power: 110.0,
11375 category: MoveCategory::Special,
11376 move_type: PokemonType::WATER,
11377 flags: Flags {
11378 protect: true,
11379 pulse: true,
11380 ..Default::default()
11381 },
11382 ..Default::default()
11383 },
11384 );
11385 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
11386 moves.insert(
11387 Choices::OUTRAGE,
11388 Choice {
11389 move_id: Choices::OUTRAGE,
11390 base_power: 90.0,
11391 category: MoveCategory::Physical,
11392 move_type: PokemonType::DRAGON,
11393 flags: Flags {
11394 contact: true,
11395 protect: true,
11396 ..Default::default()
11397 },
11398 volatile_status: Some(VolatileStatus {
11399 target: MoveTarget::User,
11400 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11401 }),
11402 ..Default::default()
11403 },
11404 );
11405 } else {
11406 moves.insert(
11407 Choices::OUTRAGE,
11408 Choice {
11409 move_id: Choices::OUTRAGE,
11410 base_power: 120.0,
11411 category: MoveCategory::Physical,
11412 move_type: PokemonType::DRAGON,
11413 flags: Flags {
11414 contact: true,
11415 protect: true,
11416 ..Default::default()
11417 },
11418 volatile_status: Some(VolatileStatus {
11419 target: MoveTarget::User,
11420 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11421 }),
11422 ..Default::default()
11423 },
11424 );
11425 }
11426 moves.insert(
11427 Choices::OVERDRIVE,
11428 Choice {
11429 move_id: Choices::OVERDRIVE,
11430 base_power: 80.0,
11431 category: MoveCategory::Special,
11432 move_type: PokemonType::ELECTRIC,
11433 flags: Flags {
11434 protect: true,
11435 sound: true,
11436 ..Default::default()
11437 },
11438 ..Default::default()
11439 },
11440 );
11441 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11442 moves.insert(
11443 Choices::OVERHEAT,
11444 Choice {
11445 move_id: Choices::OVERHEAT,
11446 accuracy: 90.0,
11447 base_power: 140.0,
11448 category: MoveCategory::Special,
11449 move_type: PokemonType::FIRE,
11450 flags: Flags {
11451 protect: true,
11452 ..Default::default()
11453 },
11454 boost: Some(Boost {
11455 target: MoveTarget::User,
11456 boosts: StatBoosts {
11457 attack: 0,
11458 defense: 0,
11459 special_attack: -2,
11460 special_defense: 0,
11461 speed: 0,
11462 accuracy: 0,
11463 },
11464 }),
11465 ..Default::default()
11466 },
11467 );
11468 } else {
11469 moves.insert(
11470 Choices::OVERHEAT,
11471 Choice {
11472 move_id: Choices::OVERHEAT,
11473 accuracy: 90.0,
11474 base_power: 130.0,
11475 category: MoveCategory::Special,
11476 move_type: PokemonType::FIRE,
11477 flags: Flags {
11478 protect: true,
11479 ..Default::default()
11480 },
11481 boost: Some(Boost {
11482 target: MoveTarget::User,
11483 boosts: StatBoosts {
11484 attack: 0,
11485 defense: 0,
11486 special_attack: -2,
11487 special_defense: 0,
11488 speed: 0,
11489 accuracy: 0,
11490 },
11491 }),
11492 ..Default::default()
11493 },
11494 );
11495 }
11496 moves.insert(
11497 Choices::PAINSPLIT,
11498 Choice {
11499 move_id: Choices::PAINSPLIT,
11500 move_type: PokemonType::NORMAL,
11501 flags: Flags {
11502 protect: true,
11503 ..Default::default()
11504 },
11505 ..Default::default()
11506 },
11507 );
11508 moves.insert(
11509 Choices::PALEOWAVE,
11510 Choice {
11511 move_id: Choices::PALEOWAVE,
11512 base_power: 85.0,
11513 category: MoveCategory::Special,
11514 move_type: PokemonType::ROCK,
11515 flags: Flags {
11516 protect: true,
11517 ..Default::default()
11518 },
11519 secondaries: Some(vec![Secondary {
11520 chance: 20.0,
11521 target: MoveTarget::Opponent,
11522 effect: Effect::Boost(StatBoosts {
11523 attack: -1,
11524 defense: 0,
11525 special_attack: 0,
11526 special_defense: 0,
11527 speed: 0,
11528 accuracy: 0,
11529 }),
11530 }]),
11531 ..Default::default()
11532 },
11533 );
11534 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
11535 moves.insert(
11536 Choices::PARABOLICCHARGE,
11537 Choice {
11538 move_id: Choices::PARABOLICCHARGE,
11539 base_power: 50.0,
11540 category: MoveCategory::Special,
11541 move_type: PokemonType::ELECTRIC,
11542 flags: Flags {
11543 heal: true,
11544 protect: true,
11545 ..Default::default()
11546 },
11547 drain: Some(0.5),
11548 ..Default::default()
11549 },
11550 );
11551 } else {
11552 moves.insert(
11553 Choices::PARABOLICCHARGE,
11554 Choice {
11555 move_id: Choices::PARABOLICCHARGE,
11556 base_power: 65.0,
11557 category: MoveCategory::Special,
11558 move_type: PokemonType::ELECTRIC,
11559 flags: Flags {
11560 heal: true,
11561 protect: true,
11562 ..Default::default()
11563 },
11564 drain: Some(0.5),
11565 ..Default::default()
11566 },
11567 );
11568 }
11569 moves.insert(
11570 Choices::PARTINGSHOT,
11571 Choice {
11572 move_id: Choices::PARTINGSHOT,
11573 move_type: PokemonType::DARK,
11574 flags: Flags {
11575 protect: true,
11576 reflectable: true,
11577 sound: true,
11578 pivot: true,
11579 ..Default::default()
11580 },
11581 boost: Some(Boost {
11582 target: MoveTarget::Opponent,
11583 boosts: StatBoosts {
11584 attack: -1,
11585 defense: 0,
11586 special_attack: -1,
11587 special_defense: 0,
11588 speed: 0,
11589 accuracy: 0,
11590 },
11591 }),
11592 ..Default::default()
11593 },
11594 );
11595 moves.insert(
11596 Choices::PAYBACK,
11597 Choice {
11598 move_id: Choices::PAYBACK,
11599 base_power: 50.0,
11600 category: MoveCategory::Physical,
11601 move_type: PokemonType::DARK,
11602 flags: Flags {
11603 contact: true,
11604 protect: true,
11605 ..Default::default()
11606 },
11607 ..Default::default()
11608 },
11609 );
11610 moves.insert(
11611 Choices::PAYDAY,
11612 Choice {
11613 move_id: Choices::PAYDAY,
11614 base_power: 40.0,
11615 category: MoveCategory::Physical,
11616 move_type: PokemonType::NORMAL,
11617 flags: Flags {
11618 protect: true,
11619 ..Default::default()
11620 },
11621 ..Default::default()
11622 },
11623 );
11624 moves.insert(
11625 Choices::PECK,
11626 Choice {
11627 move_id: Choices::PECK,
11628 base_power: 35.0,
11629 category: MoveCategory::Physical,
11630 move_type: PokemonType::FLYING,
11631 flags: Flags {
11632 contact: true,
11633 protect: true,
11634 ..Default::default()
11635 },
11636 ..Default::default()
11637 },
11638 );
11639 moves.insert(
11640 Choices::PERISHSONG,
11641 Choice {
11642 move_id: Choices::PERISHSONG,
11643 move_type: PokemonType::NORMAL,
11644 flags: Flags {
11645 sound: true,
11646 ..Default::default()
11647 },
11648 ..Default::default()
11649 },
11650 );
11651 moves.insert(
11652 Choices::PETALBLIZZARD,
11653 Choice {
11654 move_id: Choices::PETALBLIZZARD,
11655 base_power: 90.0,
11656 category: MoveCategory::Physical,
11657 move_type: PokemonType::GRASS,
11658 flags: Flags {
11659 protect: true,
11660 wind: true,
11661 ..Default::default()
11662 },
11663 ..Default::default()
11664 },
11665 );
11666 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
11667 moves.insert(
11668 Choices::PETALDANCE,
11669 Choice {
11670 move_id: Choices::PETALDANCE,
11671 base_power: 70.0,
11672 category: MoveCategory::Special,
11673 move_type: PokemonType::GRASS,
11674 flags: Flags {
11675 contact: true,
11676 protect: true,
11677 ..Default::default()
11678 },
11679 volatile_status: Some(VolatileStatus {
11680 target: MoveTarget::User,
11681 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11682 }),
11683 ..Default::default()
11684 },
11685 );
11686 }
11687 if cfg!(feature = "gen4") {
11688 moves.insert(
11689 Choices::PETALDANCE,
11690 Choice {
11691 move_id: Choices::PETALDANCE,
11692 base_power: 90.0,
11693 category: MoveCategory::Special,
11694 move_type: PokemonType::GRASS,
11695 flags: Flags {
11696 contact: true,
11697 protect: true,
11698 ..Default::default()
11699 },
11700 volatile_status: Some(VolatileStatus {
11701 target: MoveTarget::User,
11702 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11703 }),
11704 ..Default::default()
11705 },
11706 );
11707 } else {
11708 moves.insert(
11709 Choices::PETALDANCE,
11710 Choice {
11711 move_id: Choices::PETALDANCE,
11712 base_power: 120.0,
11713 category: MoveCategory::Special,
11714 move_type: PokemonType::GRASS,
11715 flags: Flags {
11716 contact: true,
11717 protect: true,
11718 ..Default::default()
11719 },
11720 volatile_status: Some(VolatileStatus {
11721 target: MoveTarget::User,
11722 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
11723 }),
11724 ..Default::default()
11725 },
11726 );
11727 }
11728 moves.insert(
11729 Choices::PHANTOMFORCE,
11730 Choice {
11731 move_id: Choices::PHANTOMFORCE,
11732 base_power: 90.0,
11733 category: MoveCategory::Physical,
11734 move_type: PokemonType::GHOST,
11735 flags: Flags {
11736 charge: true,
11737 contact: true,
11738 ..Default::default()
11739 },
11740 ..Default::default()
11741 },
11742 );
11743 moves.insert(
11744 Choices::PHOTONGEYSER,
11745 Choice {
11746 move_id: Choices::PHOTONGEYSER,
11747 base_power: 100.0,
11748 category: MoveCategory::Special,
11749 move_type: PokemonType::PSYCHIC,
11750 flags: Flags {
11751 protect: true,
11752 ..Default::default()
11753 },
11754 ..Default::default()
11755 },
11756 );
11757 moves.insert(
11758 Choices::PIKAPAPOW,
11759 Choice {
11760 move_id: Choices::PIKAPAPOW,
11761 category: MoveCategory::Special,
11762 move_type: PokemonType::ELECTRIC,
11763 flags: Flags {
11764 protect: true,
11765 ..Default::default()
11766 },
11767 ..Default::default()
11768 },
11769 );
11770 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11771 moves.insert(
11772 Choices::PINMISSILE,
11773 Choice {
11774 move_id: Choices::PINMISSILE,
11775 accuracy: 85.0,
11776 base_power: 14.0,
11777 category: MoveCategory::Physical,
11778 move_type: PokemonType::BUG,
11779 flags: Flags {
11780 protect: true,
11781 ..Default::default()
11782 },
11783 ..Default::default()
11784 },
11785 );
11786 } else {
11787 moves.insert(
11788 Choices::PINMISSILE,
11789 Choice {
11790 move_id: Choices::PINMISSILE,
11791 accuracy: 95.0,
11792 base_power: 25.0,
11793 category: MoveCategory::Physical,
11794 move_type: PokemonType::BUG,
11795 flags: Flags {
11796 protect: true,
11797 ..Default::default()
11798 },
11799 ..Default::default()
11800 },
11801 );
11802 }
11803 moves.insert(
11804 Choices::PLASMAFISTS,
11805 Choice {
11806 move_id: Choices::PLASMAFISTS,
11807 base_power: 100.0,
11808 category: MoveCategory::Physical,
11809 move_type: PokemonType::ELECTRIC,
11810 flags: Flags {
11811 contact: true,
11812 protect: true,
11813 punch: true,
11814 ..Default::default()
11815 },
11816 ..Default::default()
11817 },
11818 );
11819 moves.insert(
11820 Choices::PLAYNICE,
11821 Choice {
11822 move_id: Choices::PLAYNICE,
11823 move_type: PokemonType::NORMAL,
11824 flags: Flags {
11825 reflectable: true,
11826 ..Default::default()
11827 },
11828 boost: Some(Boost {
11829 target: MoveTarget::Opponent,
11830 boosts: StatBoosts {
11831 attack: -1,
11832 defense: 0,
11833 special_attack: 0,
11834 special_defense: 0,
11835 speed: 0,
11836 accuracy: 0,
11837 },
11838 }),
11839 ..Default::default()
11840 },
11841 );
11842 moves.insert(
11843 Choices::PLAYROUGH,
11844 Choice {
11845 move_id: Choices::PLAYROUGH,
11846 accuracy: 90.0,
11847 base_power: 90.0,
11848 category: MoveCategory::Physical,
11849 move_type: PokemonType::FAIRY,
11850 flags: Flags {
11851 contact: true,
11852 protect: true,
11853 ..Default::default()
11854 },
11855 secondaries: Some(vec![Secondary {
11856 chance: 10.0,
11857 target: MoveTarget::Opponent,
11858 effect: Effect::Boost(StatBoosts {
11859 attack: -1,
11860 defense: 0,
11861 special_attack: 0,
11862 special_defense: 0,
11863 speed: 0,
11864 accuracy: 0,
11865 }),
11866 }]),
11867 ..Default::default()
11868 },
11869 );
11870 moves.insert(
11871 Choices::PLUCK,
11872 Choice {
11873 move_id: Choices::PLUCK,
11874 base_power: 60.0,
11875 category: MoveCategory::Physical,
11876 move_type: PokemonType::FLYING,
11877 flags: Flags {
11878 contact: true,
11879 protect: true,
11880 ..Default::default()
11881 },
11882 ..Default::default()
11883 },
11884 );
11885 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
11886 moves.insert(
11887 Choices::POISONFANG,
11888 Choice {
11889 move_id: Choices::POISONFANG,
11890 base_power: 50.0,
11891 category: MoveCategory::Physical,
11892 move_type: PokemonType::POISON,
11893 flags: Flags {
11894 bite: true,
11895 contact: true,
11896 protect: true,
11897 ..Default::default()
11898 },
11899 secondaries: Some(vec![Secondary {
11900 chance: 30.0,
11901 target: MoveTarget::Opponent,
11902 effect: Effect::Status(PokemonStatus::TOXIC),
11903 }]),
11904 ..Default::default()
11905 },
11906 );
11907 } else {
11908 moves.insert(
11909 Choices::POISONFANG,
11910 Choice {
11911 move_id: Choices::POISONFANG,
11912 base_power: 50.0,
11913 category: MoveCategory::Physical,
11914 move_type: PokemonType::POISON,
11915 flags: Flags {
11916 bite: true,
11917 contact: true,
11918 protect: true,
11919 ..Default::default()
11920 },
11921 secondaries: Some(vec![Secondary {
11922 chance: 50.0,
11923 target: MoveTarget::Opponent,
11924 effect: Effect::Status(PokemonStatus::TOXIC),
11925 }]),
11926 ..Default::default()
11927 },
11928 );
11929 }
11930 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
11931 moves.insert(
11932 Choices::POISONGAS,
11933 Choice {
11934 move_id: Choices::POISONGAS,
11935 accuracy: 55.0,
11936 status: Some(Status {
11937 target: MoveTarget::Opponent,
11938 status: PokemonStatus::POISON,
11939 }),
11940 move_type: PokemonType::POISON,
11941 flags: Flags {
11942 protect: true,
11943 reflectable: true,
11944 ..Default::default()
11945 },
11946 ..Default::default()
11947 },
11948 );
11949 } else if cfg!(feature = "gen5") {
11950 moves.insert(
11951 Choices::POISONGAS,
11952 Choice {
11953 move_id: Choices::POISONGAS,
11954 accuracy: 80.0,
11955 status: Some(Status {
11956 target: MoveTarget::Opponent,
11957 status: PokemonStatus::POISON,
11958 }),
11959 move_type: PokemonType::POISON,
11960 flags: Flags {
11961 protect: true,
11962 reflectable: true,
11963 ..Default::default()
11964 },
11965 ..Default::default()
11966 },
11967 );
11968 } else {
11969 moves.insert(
11970 Choices::POISONGAS,
11971 Choice {
11972 move_id: Choices::POISONGAS,
11973 accuracy: 90.0,
11974 status: Some(Status {
11975 target: MoveTarget::Opponent,
11976 status: PokemonStatus::POISON,
11977 }),
11978 move_type: PokemonType::POISON,
11979 flags: Flags {
11980 protect: true,
11981 reflectable: true,
11982 ..Default::default()
11983 },
11984 ..Default::default()
11985 },
11986 );
11987 }
11988 moves.insert(
11989 Choices::POISONJAB,
11990 Choice {
11991 move_id: Choices::POISONJAB,
11992 base_power: 80.0,
11993 category: MoveCategory::Physical,
11994 move_type: PokemonType::POISON,
11995 flags: Flags {
11996 contact: true,
11997 protect: true,
11998 ..Default::default()
11999 },
12000 secondaries: Some(vec![Secondary {
12001 chance: 30.0,
12002 target: MoveTarget::Opponent,
12003 effect: Effect::Status(PokemonStatus::POISON),
12004 }]),
12005 ..Default::default()
12006 },
12007 );
12008 moves.insert(
12009 Choices::POISONPOWDER,
12010 Choice {
12011 move_id: Choices::POISONPOWDER,
12012 accuracy: 75.0,
12013 status: Some(Status {
12014 target: MoveTarget::Opponent,
12015 status: PokemonStatus::POISON,
12016 }),
12017 move_type: PokemonType::POISON,
12018 flags: Flags {
12019 powder: true,
12020 protect: true,
12021 reflectable: true,
12022 ..Default::default()
12023 },
12024 ..Default::default()
12025 },
12026 );
12027 if cfg!(feature = "gen1") {
12028 moves.insert(
12029 Choices::POISONSTING,
12030 Choice {
12031 move_id: Choices::POISONSTING,
12032 base_power: 15.0,
12033 category: MoveCategory::Physical,
12034 move_type: PokemonType::POISON,
12035 flags: Flags {
12036 protect: true,
12037 ..Default::default()
12038 },
12039 secondaries: Some(vec![Secondary {
12040 chance: 20.0,
12041 target: MoveTarget::Opponent,
12042 effect: Effect::Status(PokemonStatus::POISON),
12043 }]),
12044 ..Default::default()
12045 },
12046 );
12047 } else {
12048 moves.insert(
12049 Choices::POISONSTING,
12050 Choice {
12051 move_id: Choices::POISONSTING,
12052 base_power: 15.0,
12053 category: MoveCategory::Physical,
12054 move_type: PokemonType::POISON,
12055 flags: Flags {
12056 protect: true,
12057 ..Default::default()
12058 },
12059 secondaries: Some(vec![Secondary {
12060 chance: 30.0,
12061 target: MoveTarget::Opponent,
12062 effect: Effect::Status(PokemonStatus::POISON),
12063 }]),
12064 ..Default::default()
12065 },
12066 );
12067 }
12068 moves.insert(
12069 Choices::POISONTAIL,
12070 Choice {
12071 move_id: Choices::POISONTAIL,
12072 base_power: 50.0,
12073 category: MoveCategory::Physical,
12074 move_type: PokemonType::POISON,
12075 flags: Flags {
12076 contact: true,
12077 protect: true,
12078 ..Default::default()
12079 },
12080 secondaries: Some(vec![Secondary {
12081 chance: 10.0,
12082 target: MoveTarget::Opponent,
12083 effect: Effect::Status(PokemonStatus::POISON),
12084 }]),
12085 ..Default::default()
12086 },
12087 );
12088 moves.insert(
12089 Choices::POLLENPUFF,
12090 Choice {
12091 move_id: Choices::POLLENPUFF,
12092 base_power: 90.0,
12093 category: MoveCategory::Special,
12094 move_type: PokemonType::BUG,
12095 flags: Flags {
12096 bullet: true,
12097 protect: true,
12098 ..Default::default()
12099 },
12100 ..Default::default()
12101 },
12102 );
12103 moves.insert(
12104 Choices::POLTERGEIST,
12105 Choice {
12106 move_id: Choices::POLTERGEIST,
12107 accuracy: 90.0,
12108 base_power: 110.0,
12109 category: MoveCategory::Physical,
12110 move_type: PokemonType::GHOST,
12111 flags: Flags {
12112 protect: true,
12113 ..Default::default()
12114 },
12115 ..Default::default()
12116 },
12117 );
12118 moves.insert(
12119 Choices::POPULATIONBOMB,
12120 Choice {
12121 move_id: Choices::POPULATIONBOMB,
12122 accuracy: 90.0,
12123 base_power: 20.0,
12124 category: MoveCategory::Physical,
12125 move_type: PokemonType::NORMAL,
12126 flags: Flags {
12127 contact: true,
12128 protect: true,
12129 slicing: true,
12130 ..Default::default()
12131 },
12132 ..Default::default()
12133 },
12134 );
12135 moves.insert(
12136 Choices::POUNCE,
12137 Choice {
12138 move_id: Choices::POUNCE,
12139 base_power: 50.0,
12140 category: MoveCategory::Physical,
12141 move_type: PokemonType::BUG,
12142 flags: Flags {
12143 contact: true,
12144 protect: true,
12145 ..Default::default()
12146 },
12147 secondaries: Some(vec![Secondary {
12148 chance: 100.0,
12149 target: MoveTarget::Opponent,
12150 effect: Effect::Boost(StatBoosts {
12151 attack: 0,
12152 defense: 0,
12153 special_attack: 0,
12154 special_defense: 0,
12155 speed: -1,
12156 accuracy: 0,
12157 }),
12158 }]),
12159 ..Default::default()
12160 },
12161 );
12162 moves.insert(
12163 Choices::POUND,
12164 Choice {
12165 move_id: Choices::POUND,
12166 base_power: 40.0,
12167 category: MoveCategory::Physical,
12168 move_type: PokemonType::NORMAL,
12169 flags: Flags {
12170 contact: true,
12171 protect: true,
12172 ..Default::default()
12173 },
12174 ..Default::default()
12175 },
12176 );
12177 moves.insert(
12178 Choices::POWDER,
12179 Choice {
12180 move_id: Choices::POWDER,
12181 priority: 1,
12182 move_type: PokemonType::BUG,
12183 flags: Flags {
12184 powder: true,
12185 protect: true,
12186 reflectable: true,
12187 ..Default::default()
12188 },
12189 volatile_status: Some(VolatileStatus {
12190 target: MoveTarget::Opponent,
12191 volatile_status: PokemonVolatileStatus::POWDER,
12192 }),
12193 ..Default::default()
12194 },
12195 );
12196 moves.insert(
12197 Choices::POWDERSNOW,
12198 Choice {
12199 move_id: Choices::POWDERSNOW,
12200 base_power: 40.0,
12201 category: MoveCategory::Special,
12202 move_type: PokemonType::ICE,
12203 flags: Flags {
12204 protect: true,
12205 ..Default::default()
12206 },
12207 secondaries: Some(vec![Secondary {
12208 chance: 10.0,
12209 target: MoveTarget::Opponent,
12210 effect: Effect::Status(PokemonStatus::FREEZE),
12211 }]),
12212 ..Default::default()
12213 },
12214 );
12215 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12216 moves.insert(
12217 Choices::POWERGEM,
12218 Choice {
12219 move_id: Choices::POWERGEM,
12220 base_power: 70.0,
12221 category: MoveCategory::Special,
12222 move_type: PokemonType::ROCK,
12223 flags: Flags {
12224 protect: true,
12225 ..Default::default()
12226 },
12227 ..Default::default()
12228 },
12229 );
12230 } else {
12231 moves.insert(
12232 Choices::POWERGEM,
12233 Choice {
12234 move_id: Choices::POWERGEM,
12235 base_power: 80.0,
12236 category: MoveCategory::Special,
12237 move_type: PokemonType::ROCK,
12238 flags: Flags {
12239 protect: true,
12240 ..Default::default()
12241 },
12242 ..Default::default()
12243 },
12244 );
12245 }
12246 moves.insert(
12247 Choices::POWERSHIFT,
12248 Choice {
12249 move_id: Choices::POWERSHIFT,
12250 target: MoveTarget::User,
12251 move_type: PokemonType::NORMAL,
12252 flags: Flags {
12253 ..Default::default()
12254 },
12255 volatile_status: Some(VolatileStatus {
12256 target: MoveTarget::User,
12257 volatile_status: PokemonVolatileStatus::POWERSHIFT,
12258 }),
12259 ..Default::default()
12260 },
12261 );
12262 moves.insert(
12263 Choices::POWERSPLIT,
12264 Choice {
12265 move_id: Choices::POWERSPLIT,
12266 move_type: PokemonType::PSYCHIC,
12267 flags: Flags {
12268 protect: true,
12269 ..Default::default()
12270 },
12271 ..Default::default()
12272 },
12273 );
12274 moves.insert(
12275 Choices::POWERSWAP,
12276 Choice {
12277 move_id: Choices::POWERSWAP,
12278 move_type: PokemonType::PSYCHIC,
12279 flags: Flags {
12280 protect: true,
12281 ..Default::default()
12282 },
12283 ..Default::default()
12284 },
12285 );
12286 moves.insert(
12287 Choices::POWERTRICK,
12288 Choice {
12289 move_id: Choices::POWERTRICK,
12290 target: MoveTarget::User,
12291 move_type: PokemonType::PSYCHIC,
12292 flags: Flags {
12293 ..Default::default()
12294 },
12295 volatile_status: Some(VolatileStatus {
12296 target: MoveTarget::User,
12297 volatile_status: PokemonVolatileStatus::POWERTRICK,
12298 }),
12299 ..Default::default()
12300 },
12301 );
12302 moves.insert(
12303 Choices::POWERTRIP,
12304 Choice {
12305 move_id: Choices::POWERTRIP,
12306 base_power: 20.0,
12307 category: MoveCategory::Physical,
12308 move_type: PokemonType::DARK,
12309 flags: Flags {
12310 contact: true,
12311 protect: true,
12312 ..Default::default()
12313 },
12314 ..Default::default()
12315 },
12316 );
12317 moves.insert(
12318 Choices::POWERUPPUNCH,
12319 Choice {
12320 move_id: Choices::POWERUPPUNCH,
12321 base_power: 40.0,
12322 category: MoveCategory::Physical,
12323 move_type: PokemonType::FIGHTING,
12324 flags: Flags {
12325 contact: true,
12326 protect: true,
12327 punch: true,
12328 ..Default::default()
12329 },
12330 secondaries: Some(vec![Secondary {
12331 chance: 100.0,
12332 target: MoveTarget::User,
12333 effect: Effect::Boost(StatBoosts {
12334 attack: 1,
12335 defense: 0,
12336 special_attack: 0,
12337 special_defense: 0,
12338 speed: 0,
12339 accuracy: 0,
12340 }),
12341 }]),
12342 ..Default::default()
12343 },
12344 );
12345 moves.insert(
12346 Choices::POWERWHIP,
12347 Choice {
12348 move_id: Choices::POWERWHIP,
12349 accuracy: 85.0,
12350 base_power: 120.0,
12351 category: MoveCategory::Physical,
12352 move_type: PokemonType::GRASS,
12353 flags: Flags {
12354 contact: true,
12355 protect: true,
12356 ..Default::default()
12357 },
12358 ..Default::default()
12359 },
12360 );
12361 moves.insert(
12362 Choices::PRECIPICEBLADES,
12363 Choice {
12364 move_id: Choices::PRECIPICEBLADES,
12365 accuracy: 85.0,
12366 base_power: 120.0,
12367 category: MoveCategory::Physical,
12368 move_type: PokemonType::GROUND,
12369 flags: Flags {
12370 protect: true,
12371 ..Default::default()
12372 },
12373 ..Default::default()
12374 },
12375 );
12376 moves.insert(
12377 Choices::PRESENT,
12378 Choice {
12379 move_id: Choices::PRESENT,
12380 accuracy: 90.0,
12381 category: MoveCategory::Physical,
12382 move_type: PokemonType::NORMAL,
12383 flags: Flags {
12384 protect: true,
12385 ..Default::default()
12386 },
12387 ..Default::default()
12388 },
12389 );
12390 moves.insert(
12391 Choices::PRISMATICLASER,
12392 Choice {
12393 move_id: Choices::PRISMATICLASER,
12394 base_power: 160.0,
12395 category: MoveCategory::Special,
12396 move_type: PokemonType::PSYCHIC,
12397 flags: Flags {
12398 protect: true,
12399 recharge: true,
12400 ..Default::default()
12401 },
12402 ..Default::default()
12403 },
12404 );
12405 moves.insert(
12406 Choices::PROTECT,
12407 Choice {
12408 move_id: Choices::PROTECT,
12409 priority: 4,
12410 target: MoveTarget::User,
12411 move_type: PokemonType::NORMAL,
12412 flags: Flags {
12413 ..Default::default()
12414 },
12415 volatile_status: Some(VolatileStatus {
12416 target: MoveTarget::User,
12417 volatile_status: PokemonVolatileStatus::PROTECT,
12418 }),
12419 ..Default::default()
12420 },
12421 );
12422 moves.insert(
12423 Choices::PSYBEAM,
12424 Choice {
12425 move_id: Choices::PSYBEAM,
12426 base_power: 65.0,
12427 category: MoveCategory::Special,
12428 move_type: PokemonType::PSYCHIC,
12429 flags: Flags {
12430 protect: true,
12431 ..Default::default()
12432 },
12433 secondaries: Some(vec![Secondary {
12434 chance: 10.0,
12435 target: MoveTarget::Opponent,
12436 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
12437 }]),
12438 ..Default::default()
12439 },
12440 );
12441 moves.insert(
12442 Choices::PSYBLADE,
12443 Choice {
12444 move_id: Choices::PSYBLADE,
12445 base_power: 80.0,
12446 category: MoveCategory::Physical,
12447 move_type: PokemonType::PSYCHIC,
12448 flags: Flags {
12449 contact: true,
12450 protect: true,
12451 slicing: true,
12452 ..Default::default()
12453 },
12454 ..Default::default()
12455 },
12456 );
12457 if cfg!(feature = "gen1") {
12458 moves.insert(
12459 Choices::PSYCHIC,
12460 Choice {
12461 move_id: Choices::PSYCHIC,
12462 base_power: 90.0,
12463 category: MoveCategory::Special,
12464 move_type: PokemonType::PSYCHIC,
12465 flags: Flags {
12466 protect: true,
12467 ..Default::default()
12468 },
12469 secondaries: Some(vec![Secondary {
12470 chance: 33.2,
12471 target: MoveTarget::Opponent,
12472 effect: Effect::Boost(StatBoosts {
12473 attack: 0,
12474 defense: 0,
12475 special_attack: -1,
12476 special_defense: 0,
12477 speed: 0,
12478 accuracy: 0,
12479 }),
12480 }]),
12481 ..Default::default()
12482 },
12483 );
12484 } else {
12485 moves.insert(
12486 Choices::PSYCHIC,
12487 Choice {
12488 move_id: Choices::PSYCHIC,
12489 base_power: 90.0,
12490 category: MoveCategory::Special,
12491 move_type: PokemonType::PSYCHIC,
12492 flags: Flags {
12493 protect: true,
12494 ..Default::default()
12495 },
12496 secondaries: Some(vec![Secondary {
12497 chance: 10.0,
12498 target: MoveTarget::Opponent,
12499 effect: Effect::Boost(StatBoosts {
12500 attack: 0,
12501 defense: 0,
12502 special_attack: 0,
12503 special_defense: -1,
12504 speed: 0,
12505 accuracy: 0,
12506 }),
12507 }]),
12508 ..Default::default()
12509 },
12510 );
12511 }
12512 moves.insert(
12513 Choices::PSYCHICFANGS,
12514 Choice {
12515 move_id: Choices::PSYCHICFANGS,
12516 base_power: 85.0,
12517 category: MoveCategory::Physical,
12518 move_type: PokemonType::PSYCHIC,
12519 flags: Flags {
12520 bite: true,
12521 contact: true,
12522 protect: true,
12523 ..Default::default()
12524 },
12525 ..Default::default()
12526 },
12527 );
12528 moves.insert(
12529 Choices::PSYCHICNOISE,
12530 Choice {
12531 move_id: Choices::PSYCHICNOISE,
12532 base_power: 75.0,
12533 category: MoveCategory::Special,
12534 move_type: PokemonType::PSYCHIC,
12535 flags: Flags {
12536 protect: true,
12537 sound: true,
12538 ..Default::default()
12539 },
12540 volatile_status: Some(VolatileStatus {
12541 target: MoveTarget::Opponent,
12542 volatile_status: PokemonVolatileStatus::HEALBLOCK,
12543 }),
12544 ..Default::default()
12545 },
12546 );
12547 moves.insert(
12548 Choices::PSYCHICTERRAIN,
12549 Choice {
12550 move_id: Choices::PSYCHICTERRAIN,
12551 move_type: PokemonType::PSYCHIC,
12552 flags: Flags {
12553 ..Default::default()
12554 },
12555 ..Default::default()
12556 },
12557 );
12558 moves.insert(
12559 Choices::PSYCHOBOOST,
12560 Choice {
12561 move_id: Choices::PSYCHOBOOST,
12562 accuracy: 90.0,
12563 base_power: 140.0,
12564 category: MoveCategory::Special,
12565 move_type: PokemonType::PSYCHIC,
12566 flags: Flags {
12567 protect: true,
12568 ..Default::default()
12569 },
12570 boost: Some(Boost {
12571 target: MoveTarget::User,
12572 boosts: StatBoosts {
12573 attack: 0,
12574 defense: 0,
12575 special_attack: -2,
12576 special_defense: 0,
12577 speed: 0,
12578 accuracy: 0,
12579 },
12580 }),
12581 ..Default::default()
12582 },
12583 );
12584 moves.insert(
12585 Choices::PSYCHOCUT,
12586 Choice {
12587 move_id: Choices::PSYCHOCUT,
12588 base_power: 70.0,
12589 category: MoveCategory::Physical,
12590 move_type: PokemonType::PSYCHIC,
12591 flags: Flags {
12592 protect: true,
12593 slicing: true,
12594 ..Default::default()
12595 },
12596 ..Default::default()
12597 },
12598 );
12599 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12600 moves.insert(
12601 Choices::PSYCHOSHIFT,
12602 Choice {
12603 accuracy: 90.0,
12604 move_id: Choices::PSYCHOSHIFT,
12605 move_type: PokemonType::PSYCHIC,
12606 flags: Flags {
12607 protect: true,
12608 ..Default::default()
12609 },
12610 ..Default::default()
12611 },
12612 );
12613 } else {
12614 moves.insert(
12615 Choices::PSYCHOSHIFT,
12616 Choice {
12617 move_id: Choices::PSYCHOSHIFT,
12618 move_type: PokemonType::PSYCHIC,
12619 flags: Flags {
12620 protect: true,
12621 ..Default::default()
12622 },
12623 ..Default::default()
12624 },
12625 );
12626 }
12627 moves.insert(
12628 Choices::PSYCHUP,
12629 Choice {
12630 move_id: Choices::PSYCHUP,
12631 move_type: PokemonType::NORMAL,
12632 flags: Flags {
12633 ..Default::default()
12634 },
12635 ..Default::default()
12636 },
12637 );
12638 moves.insert(
12639 Choices::PSYSHIELDBASH,
12640 Choice {
12641 move_id: Choices::PSYSHIELDBASH,
12642 accuracy: 90.0,
12643 base_power: 70.0,
12644 category: MoveCategory::Physical,
12645 move_type: PokemonType::PSYCHIC,
12646 flags: Flags {
12647 contact: true,
12648 protect: true,
12649 ..Default::default()
12650 },
12651 secondaries: Some(vec![Secondary {
12652 chance: 100.0,
12653 target: MoveTarget::User,
12654 effect: Effect::Boost(StatBoosts {
12655 attack: 0,
12656 defense: 1,
12657 special_attack: 0,
12658 special_defense: 0,
12659 speed: 0,
12660 accuracy: 0,
12661 }),
12662 }]),
12663 ..Default::default()
12664 },
12665 );
12666 moves.insert(
12667 Choices::PSYSHOCK,
12668 Choice {
12669 move_id: Choices::PSYSHOCK,
12670 base_power: 80.0,
12671 category: MoveCategory::Special,
12672 move_type: PokemonType::PSYCHIC,
12673 flags: Flags {
12674 protect: true,
12675 ..Default::default()
12676 },
12677 ..Default::default()
12678 },
12679 );
12680 moves.insert(
12681 Choices::PSYSTRIKE,
12682 Choice {
12683 move_id: Choices::PSYSTRIKE,
12684 base_power: 100.0,
12685 category: MoveCategory::Special,
12686 move_type: PokemonType::PSYCHIC,
12687 flags: Flags {
12688 protect: true,
12689 ..Default::default()
12690 },
12691 ..Default::default()
12692 },
12693 );
12694 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
12695 moves.insert(
12696 Choices::PSYWAVE,
12697 Choice {
12698 accuracy: 90.0,
12699 move_id: Choices::PSYWAVE,
12700 category: MoveCategory::Special,
12701 move_type: PokemonType::PSYCHIC,
12702 flags: Flags {
12703 protect: true,
12704 ..Default::default()
12705 },
12706 ..Default::default()
12707 },
12708 );
12709 } else {
12710 moves.insert(
12711 Choices::PSYWAVE,
12712 Choice {
12713 move_id: Choices::PSYWAVE,
12714 category: MoveCategory::Special,
12715 move_type: PokemonType::PSYCHIC,
12716 flags: Flags {
12717 protect: true,
12718 ..Default::default()
12719 },
12720 ..Default::default()
12721 },
12722 );
12723 }
12724 moves.insert(
12725 Choices::PUNISHMENT,
12726 Choice {
12727 move_id: Choices::PUNISHMENT,
12728 category: MoveCategory::Physical,
12729 move_type: PokemonType::DARK,
12730 flags: Flags {
12731 contact: true,
12732 protect: true,
12733 ..Default::default()
12734 },
12735 ..Default::default()
12736 },
12737 );
12738 moves.insert(
12739 Choices::PURIFY,
12740 Choice {
12741 move_id: Choices::PURIFY,
12742 move_type: PokemonType::POISON,
12743 flags: Flags {
12744 heal: true,
12745 protect: true,
12746 reflectable: true,
12747 ..Default::default()
12748 },
12749 ..Default::default()
12750 },
12751 );
12752 moves.insert(
12753 Choices::PURSUIT,
12754 Choice {
12755 move_id: Choices::PURSUIT,
12756 base_power: 40.0,
12757 category: MoveCategory::Physical,
12758 move_type: PokemonType::DARK,
12759 flags: Flags {
12760 contact: true,
12761 protect: true,
12762 ..Default::default()
12763 },
12764 ..Default::default()
12765 },
12766 );
12767 moves.insert(
12768 Choices::PYROBALL,
12769 Choice {
12770 move_id: Choices::PYROBALL,
12771 accuracy: 90.0,
12772 base_power: 120.0,
12773 category: MoveCategory::Physical,
12774 move_type: PokemonType::FIRE,
12775 flags: Flags {
12776 bullet: true,
12777 protect: true,
12778 ..Default::default()
12779 },
12780 secondaries: Some(vec![Secondary {
12781 chance: 10.0,
12782 target: MoveTarget::Opponent,
12783 effect: Effect::Status(PokemonStatus::BURN),
12784 }]),
12785 ..Default::default()
12786 },
12787 );
12788 moves.insert(
12789 Choices::QUASH,
12790 Choice {
12791 move_id: Choices::QUASH,
12792 move_type: PokemonType::DARK,
12793 flags: Flags {
12794 protect: true,
12795 ..Default::default()
12796 },
12797 ..Default::default()
12798 },
12799 );
12800 moves.insert(
12801 Choices::QUICKATTACK,
12802 Choice {
12803 move_id: Choices::QUICKATTACK,
12804 base_power: 40.0,
12805 category: MoveCategory::Physical,
12806 priority: 1,
12807 move_type: PokemonType::NORMAL,
12808 flags: Flags {
12809 contact: true,
12810 protect: true,
12811 ..Default::default()
12812 },
12813 ..Default::default()
12814 },
12815 );
12816 moves.insert(
12817 Choices::QUICKGUARD,
12818 Choice {
12819 move_id: Choices::QUICKGUARD,
12820 priority: 3,
12821 target: MoveTarget::User,
12822 move_type: PokemonType::FIGHTING,
12823 flags: Flags {
12824 ..Default::default()
12825 },
12826 side_condition: Some(SideCondition {
12827 target: MoveTarget::User,
12828 condition: PokemonSideCondition::QuickGuard,
12829 }),
12830 ..Default::default()
12831 },
12832 );
12833 moves.insert(
12834 Choices::QUIVERDANCE,
12835 Choice {
12836 move_id: Choices::QUIVERDANCE,
12837 target: MoveTarget::User,
12838 move_type: PokemonType::BUG,
12839 flags: Flags {
12840 ..Default::default()
12841 },
12842 boost: Some(Boost {
12843 target: MoveTarget::User,
12844 boosts: StatBoosts {
12845 attack: 0,
12846 defense: 0,
12847 special_attack: 1,
12848 special_defense: 1,
12849 speed: 1,
12850 accuracy: 0,
12851 },
12852 }),
12853 ..Default::default()
12854 },
12855 );
12856 moves.insert(
12857 Choices::RAGE,
12858 Choice {
12859 move_id: Choices::RAGE,
12860 base_power: 20.0,
12861 category: MoveCategory::Physical,
12862 move_type: PokemonType::NORMAL,
12863 flags: Flags {
12864 contact: true,
12865 protect: true,
12866 ..Default::default()
12867 },
12868 ..Default::default()
12869 },
12870 );
12871 moves.insert(
12872 Choices::RAGEFIST,
12873 Choice {
12874 move_id: Choices::RAGEFIST,
12875 base_power: 50.0,
12876 category: MoveCategory::Physical,
12877 move_type: PokemonType::GHOST,
12878 flags: Flags {
12879 contact: true,
12880 protect: true,
12881 punch: true,
12882 ..Default::default()
12883 },
12884 ..Default::default()
12885 },
12886 );
12887 moves.insert(
12888 Choices::RAGEPOWDER,
12889 Choice {
12890 move_id: Choices::RAGEPOWDER,
12891 priority: 2,
12892 target: MoveTarget::User,
12893 move_type: PokemonType::BUG,
12894 flags: Flags {
12895 powder: true,
12896 ..Default::default()
12897 },
12898 volatile_status: Some(VolatileStatus {
12899 target: MoveTarget::User,
12900 volatile_status: PokemonVolatileStatus::RAGEPOWDER,
12901 }),
12902 ..Default::default()
12903 },
12904 );
12905 moves.insert(
12906 Choices::RAGINGBULL,
12907 Choice {
12908 move_id: Choices::RAGINGBULL,
12909 base_power: 90.0,
12910 category: MoveCategory::Physical,
12911 move_type: PokemonType::NORMAL,
12912 flags: Flags {
12913 contact: true,
12914 protect: true,
12915 ..Default::default()
12916 },
12917 ..Default::default()
12918 },
12919 );
12920 moves.insert(
12921 Choices::RAGINGFURY,
12922 Choice {
12923 move_id: Choices::RAGINGFURY,
12924 base_power: 120.0,
12925 category: MoveCategory::Physical,
12926 move_type: PokemonType::FIRE,
12927 flags: Flags {
12928 protect: true,
12929 ..Default::default()
12930 },
12931 volatile_status: Some(VolatileStatus {
12932 target: MoveTarget::User,
12933 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
12934 }),
12935 ..Default::default()
12936 },
12937 );
12938 moves.insert(
12939 Choices::RAINDANCE,
12940 Choice {
12941 move_id: Choices::RAINDANCE,
12942 move_type: PokemonType::WATER,
12943 flags: Flags {
12944 ..Default::default()
12945 },
12946 ..Default::default()
12947 },
12948 );
12949
12950 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
12951 moves.insert(
12952 Choices::RAPIDSPIN,
12953 Choice {
12954 move_id: Choices::RAPIDSPIN,
12955 base_power: 50.0,
12956 category: MoveCategory::Physical,
12957 move_type: PokemonType::NORMAL,
12958 flags: Flags {
12959 contact: true,
12960 protect: true,
12961 ..Default::default()
12962 },
12963 secondaries: Some(vec![Secondary {
12964 chance: 100.0,
12965 target: MoveTarget::User,
12966 effect: Effect::Boost(StatBoosts {
12967 attack: 0,
12968 defense: 0,
12969 special_attack: 0,
12970 special_defense: 0,
12971 speed: 1,
12972 accuracy: 0,
12973 }),
12974 }]),
12975 ..Default::default()
12976 },
12977 );
12978 } else {
12979 moves.insert(
12980 Choices::RAPIDSPIN,
12981 Choice {
12982 move_id: Choices::RAPIDSPIN,
12983 base_power: 20.0,
12984 category: MoveCategory::Physical,
12985 move_type: PokemonType::NORMAL,
12986 flags: Flags {
12987 contact: true,
12988 protect: true,
12989 ..Default::default()
12990 },
12991 secondaries: None,
12992 ..Default::default()
12993 },
12994 );
12995 }
12996 moves.insert(
12997 Choices::RAZORLEAF,
12998 Choice {
12999 move_id: Choices::RAZORLEAF,
13000 accuracy: 95.0,
13001 base_power: 55.0,
13002 category: MoveCategory::Physical,
13003 move_type: PokemonType::GRASS,
13004 flags: Flags {
13005 protect: true,
13006 slicing: true,
13007 ..Default::default()
13008 },
13009 ..Default::default()
13010 },
13011 );
13012 moves.insert(
13013 Choices::RAZORSHELL,
13014 Choice {
13015 move_id: Choices::RAZORSHELL,
13016 accuracy: 95.0,
13017 base_power: 75.0,
13018 category: MoveCategory::Physical,
13019 move_type: PokemonType::WATER,
13020 flags: Flags {
13021 contact: true,
13022 protect: true,
13023 slicing: true,
13024 ..Default::default()
13025 },
13026 secondaries: Some(vec![Secondary {
13027 chance: 50.0,
13028 target: MoveTarget::Opponent,
13029 effect: Effect::Boost(StatBoosts {
13030 attack: 0,
13031 defense: -1,
13032 special_attack: 0,
13033 special_defense: 0,
13034 speed: 0,
13035 accuracy: 0,
13036 }),
13037 }]),
13038 ..Default::default()
13039 },
13040 );
13041 moves.insert(
13042 Choices::RAZORWIND,
13043 Choice {
13044 move_id: Choices::RAZORWIND,
13045 base_power: 80.0,
13046 category: MoveCategory::Special,
13047 move_type: PokemonType::NORMAL,
13048 flags: Flags {
13049 charge: true,
13050 protect: true,
13051 ..Default::default()
13052 },
13053 ..Default::default()
13054 },
13055 );
13056 moves.insert(
13057 Choices::RECHARGE,
13058 Choice {
13059 move_id: Choices::RECHARGE,
13060 target: MoveTarget::User,
13061 move_type: PokemonType::NORMAL,
13062 flags: Flags {
13063 ..Default::default()
13064 },
13065 ..Default::default()
13066 },
13067 );
13068 moves.insert(
13069 Choices::RECOVER,
13070 Choice {
13071 move_id: Choices::RECOVER,
13072 target: MoveTarget::User,
13073 move_type: PokemonType::NORMAL,
13074 flags: Flags {
13075 heal: true,
13076 ..Default::default()
13077 },
13078 heal: Some(Heal {
13079 target: MoveTarget::User,
13080 amount: 0.5,
13081 }),
13082 ..Default::default()
13083 },
13084 );
13085 moves.insert(
13086 Choices::RECYCLE,
13087 Choice {
13088 move_id: Choices::RECYCLE,
13089 target: MoveTarget::User,
13090 move_type: PokemonType::NORMAL,
13091 flags: Flags {
13092 ..Default::default()
13093 },
13094 ..Default::default()
13095 },
13096 );
13097 if cfg!(feature = "gen1") {
13098 moves.insert(
13099 Choices::REFLECT,
13100 Choice {
13101 move_id: Choices::REFLECT,
13102 target: MoveTarget::User,
13103 move_type: PokemonType::PSYCHIC,
13104 flags: Flags {
13105 ..Default::default()
13106 },
13107 volatile_status: Some(VolatileStatus {
13108 target: MoveTarget::User,
13109 volatile_status: PokemonVolatileStatus::REFLECT,
13110 }),
13111 ..Default::default()
13112 },
13113 );
13114 } else {
13115 moves.insert(
13116 Choices::REFLECT,
13117 Choice {
13118 move_id: Choices::REFLECT,
13119 target: MoveTarget::User,
13120 move_type: PokemonType::PSYCHIC,
13121 flags: Flags {
13122 ..Default::default()
13123 },
13124 side_condition: Some(SideCondition {
13125 target: MoveTarget::User,
13126 condition: PokemonSideCondition::Reflect,
13127 }),
13128 ..Default::default()
13129 },
13130 );
13131 }
13132 moves.insert(
13133 Choices::REFLECTTYPE,
13134 Choice {
13135 move_id: Choices::REFLECTTYPE,
13136 move_type: PokemonType::NORMAL,
13137 flags: Flags {
13138 protect: true,
13139 ..Default::default()
13140 },
13141 ..Default::default()
13142 },
13143 );
13144 moves.insert(
13145 Choices::REFRESH,
13146 Choice {
13147 move_id: Choices::REFRESH,
13148 target: MoveTarget::User,
13149 move_type: PokemonType::NORMAL,
13150 flags: Flags {
13151 ..Default::default()
13152 },
13153 ..Default::default()
13154 },
13155 );
13156 moves.insert(
13157 Choices::RELICSONG,
13158 Choice {
13159 move_id: Choices::RELICSONG,
13160 base_power: 75.0,
13161 category: MoveCategory::Special,
13162 move_type: PokemonType::NORMAL,
13163 flags: Flags {
13164 protect: true,
13165 sound: true,
13166 ..Default::default()
13167 },
13168 secondaries: Some(vec![Secondary {
13169 chance: 10.0,
13170 target: MoveTarget::Opponent,
13171 effect: Effect::Status(PokemonStatus::SLEEP),
13172 }]),
13173 ..Default::default()
13174 },
13175 );
13176 moves.insert(
13177 Choices::REST,
13178 Choice {
13179 move_id: Choices::REST,
13180 status: None, target: MoveTarget::User,
13182 move_type: PokemonType::PSYCHIC,
13183 flags: Flags {
13184 heal: true,
13185 ..Default::default()
13186 },
13187 heal: None, ..Default::default()
13189 },
13190 );
13191 moves.insert(
13192 Choices::RETALIATE,
13193 Choice {
13194 move_id: Choices::RETALIATE,
13195 base_power: 70.0,
13196 category: MoveCategory::Physical,
13197 move_type: PokemonType::NORMAL,
13198 flags: Flags {
13199 contact: true,
13200 protect: true,
13201 ..Default::default()
13202 },
13203 ..Default::default()
13204 },
13205 );
13206 moves.insert(
13207 Choices::RETURN,
13208 Choice {
13209 move_id: Choices::RETURN,
13210 base_power: 102.0,
13211 category: MoveCategory::Physical,
13212 move_type: PokemonType::NORMAL,
13213 flags: Flags {
13214 contact: true,
13215 protect: true,
13216 ..Default::default()
13217 },
13218 ..Default::default()
13219 },
13220 );
13221 moves.insert(
13222 Choices::RETURN102,
13223 Choice {
13224 move_id: Choices::RETURN102,
13225 base_power: 102.0,
13226 category: MoveCategory::Physical,
13227 move_type: PokemonType::NORMAL,
13228 flags: Flags {
13229 contact: true,
13230 protect: true,
13231 ..Default::default()
13232 },
13233 ..Default::default()
13234 },
13235 );
13236 moves.insert(
13237 Choices::REVELATIONDANCE,
13238 Choice {
13239 move_id: Choices::REVELATIONDANCE,
13240 base_power: 90.0,
13241 category: MoveCategory::Special,
13242 move_type: PokemonType::NORMAL,
13243 flags: Flags {
13244 protect: true,
13245 ..Default::default()
13246 },
13247 ..Default::default()
13248 },
13249 );
13250 moves.insert(
13251 Choices::REVENGE,
13252 Choice {
13253 move_id: Choices::REVENGE,
13254 base_power: 60.0,
13255 category: MoveCategory::Physical,
13256 priority: -4,
13257 move_type: PokemonType::FIGHTING,
13258 flags: Flags {
13259 contact: true,
13260 protect: true,
13261 ..Default::default()
13262 },
13263 ..Default::default()
13264 },
13265 );
13266 moves.insert(
13267 Choices::REVERSAL,
13268 Choice {
13269 move_id: Choices::REVERSAL,
13270 category: MoveCategory::Physical,
13271 move_type: PokemonType::FIGHTING,
13272 flags: Flags {
13273 contact: true,
13274 protect: true,
13275 ..Default::default()
13276 },
13277 ..Default::default()
13278 },
13279 );
13280 moves.insert(
13281 Choices::REVIVALBLESSING,
13282 Choice {
13283 move_id: Choices::REVIVALBLESSING,
13284 target: MoveTarget::User,
13285 move_type: PokemonType::NORMAL,
13286 flags: Flags {
13287 heal: true,
13288 ..Default::default()
13289 },
13290 ..Default::default()
13291 },
13292 );
13293 moves.insert(
13294 Choices::RISINGVOLTAGE,
13295 Choice {
13296 move_id: Choices::RISINGVOLTAGE,
13297 base_power: 70.0,
13298 category: MoveCategory::Special,
13299 move_type: PokemonType::ELECTRIC,
13300 flags: Flags {
13301 protect: true,
13302 ..Default::default()
13303 },
13304 ..Default::default()
13305 },
13306 );
13307 moves.insert(
13308 Choices::ROAR,
13309 Choice {
13310 move_id: Choices::ROAR,
13311 priority: -6,
13312 move_type: PokemonType::NORMAL,
13313 flags: Flags {
13314 drag: true,
13315 reflectable: true,
13316 sound: true,
13317 ..Default::default()
13318 },
13319 ..Default::default()
13320 },
13321 );
13322 moves.insert(
13323 Choices::ROAROFTIME,
13324 Choice {
13325 move_id: Choices::ROAROFTIME,
13326 accuracy: 90.0,
13327 base_power: 150.0,
13328 category: MoveCategory::Special,
13329 move_type: PokemonType::DRAGON,
13330 flags: Flags {
13331 protect: true,
13332 recharge: true,
13333 ..Default::default()
13334 },
13335 ..Default::default()
13336 },
13337 );
13338 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13339 moves.insert(
13340 Choices::ROCKBLAST,
13341 Choice {
13342 move_id: Choices::ROCKBLAST,
13343 accuracy: 80.0,
13344 base_power: 25.0,
13345 category: MoveCategory::Physical,
13346 move_type: PokemonType::ROCK,
13347 flags: Flags {
13348 bullet: true,
13349 protect: true,
13350 ..Default::default()
13351 },
13352 ..Default::default()
13353 },
13354 );
13355 } else {
13356 moves.insert(
13357 Choices::ROCKBLAST,
13358 Choice {
13359 move_id: Choices::ROCKBLAST,
13360 accuracy: 90.0,
13361 base_power: 25.0,
13362 category: MoveCategory::Physical,
13363 move_type: PokemonType::ROCK,
13364 flags: Flags {
13365 bullet: true,
13366 protect: true,
13367 ..Default::default()
13368 },
13369 ..Default::default()
13370 },
13371 );
13372 }
13373 moves.insert(
13374 Choices::ROCKCLIMB,
13375 Choice {
13376 move_id: Choices::ROCKCLIMB,
13377 accuracy: 85.0,
13378 base_power: 90.0,
13379 category: MoveCategory::Physical,
13380 move_type: PokemonType::NORMAL,
13381 flags: Flags {
13382 contact: true,
13383 protect: true,
13384 ..Default::default()
13385 },
13386 secondaries: Some(vec![Secondary {
13387 chance: 20.0,
13388 target: MoveTarget::Opponent,
13389 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
13390 }]),
13391 ..Default::default()
13392 },
13393 );
13394 moves.insert(
13395 Choices::ROCKPOLISH,
13396 Choice {
13397 move_id: Choices::ROCKPOLISH,
13398 target: MoveTarget::User,
13399 move_type: PokemonType::ROCK,
13400 flags: Flags {
13401 ..Default::default()
13402 },
13403 boost: Some(Boost {
13404 target: MoveTarget::User,
13405 boosts: StatBoosts {
13406 attack: 0,
13407 defense: 0,
13408 special_attack: 0,
13409 special_defense: 0,
13410 speed: 2,
13411 accuracy: 0,
13412 },
13413 }),
13414 ..Default::default()
13415 },
13416 );
13417 if cfg!(feature = "gen1") {
13418 moves.insert(
13419 Choices::ROCKSLIDE,
13420 Choice {
13421 move_id: Choices::ROCKSLIDE,
13422 accuracy: 90.0,
13423 base_power: 75.0,
13424 category: MoveCategory::Physical,
13425 move_type: PokemonType::ROCK,
13426 flags: Flags {
13427 protect: true,
13428 ..Default::default()
13429 },
13430 ..Default::default()
13431 },
13432 );
13433 } else {
13434 moves.insert(
13435 Choices::ROCKSLIDE,
13436 Choice {
13437 move_id: Choices::ROCKSLIDE,
13438 accuracy: 90.0,
13439 base_power: 75.0,
13440 category: MoveCategory::Physical,
13441 move_type: PokemonType::ROCK,
13442 flags: Flags {
13443 protect: true,
13444 ..Default::default()
13445 },
13446 secondaries: Some(vec![Secondary {
13447 chance: 30.0,
13448 target: MoveTarget::Opponent,
13449 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
13450 }]),
13451 ..Default::default()
13452 },
13453 );
13454 }
13455 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
13456 moves.insert(
13457 Choices::ROCKSMASH,
13458 Choice {
13459 move_id: Choices::ROCKSMASH,
13460 base_power: 20.0,
13461 category: MoveCategory::Physical,
13462 move_type: PokemonType::FIGHTING,
13463 flags: Flags {
13464 contact: true,
13465 protect: true,
13466 ..Default::default()
13467 },
13468 secondaries: Some(vec![Secondary {
13469 chance: 50.0,
13470 target: MoveTarget::Opponent,
13471 effect: Effect::Boost(StatBoosts {
13472 attack: 0,
13473 defense: -1,
13474 special_attack: 0,
13475 special_defense: 0,
13476 speed: 0,
13477 accuracy: 0,
13478 }),
13479 }]),
13480 ..Default::default()
13481 },
13482 );
13483 } else {
13484 moves.insert(
13485 Choices::ROCKSMASH,
13486 Choice {
13487 move_id: Choices::ROCKSMASH,
13488 base_power: 40.0,
13489 category: MoveCategory::Physical,
13490 move_type: PokemonType::FIGHTING,
13491 flags: Flags {
13492 contact: true,
13493 protect: true,
13494 ..Default::default()
13495 },
13496 secondaries: Some(vec![Secondary {
13497 chance: 50.0,
13498 target: MoveTarget::Opponent,
13499 effect: Effect::Boost(StatBoosts {
13500 attack: 0,
13501 defense: -1,
13502 special_attack: 0,
13503 special_defense: 0,
13504 speed: 0,
13505 accuracy: 0,
13506 }),
13507 }]),
13508 ..Default::default()
13509 },
13510 );
13511 }
13512 if cfg!(feature = "gen1") {
13513 moves.insert(
13514 Choices::ROCKTHROW,
13515 Choice {
13516 move_id: Choices::ROCKTHROW,
13517 accuracy: 65.0,
13518 base_power: 50.0,
13519 category: MoveCategory::Physical,
13520 move_type: PokemonType::ROCK,
13521 flags: Flags {
13522 protect: true,
13523 ..Default::default()
13524 },
13525 ..Default::default()
13526 },
13527 );
13528 } else {
13529 moves.insert(
13530 Choices::ROCKTHROW,
13531 Choice {
13532 move_id: Choices::ROCKTHROW,
13533 accuracy: 90.0,
13534 base_power: 50.0,
13535 category: MoveCategory::Physical,
13536 move_type: PokemonType::ROCK,
13537 flags: Flags {
13538 protect: true,
13539 ..Default::default()
13540 },
13541 ..Default::default()
13542 },
13543 );
13544 }
13545 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
13546 moves.insert(
13547 Choices::ROCKTOMB,
13548 Choice {
13549 move_id: Choices::ROCKTOMB,
13550 accuracy: 80.0,
13551 base_power: 50.0,
13552 category: MoveCategory::Physical,
13553 move_type: PokemonType::ROCK,
13554 flags: Flags {
13555 protect: true,
13556 ..Default::default()
13557 },
13558 secondaries: Some(vec![Secondary {
13559 chance: 100.0,
13560 target: MoveTarget::Opponent,
13561 effect: Effect::Boost(StatBoosts {
13562 attack: 0,
13563 defense: 0,
13564 special_attack: 0,
13565 special_defense: 0,
13566 speed: -1,
13567 accuracy: 0,
13568 }),
13569 }]),
13570 ..Default::default()
13571 },
13572 );
13573 } else {
13574 moves.insert(
13575 Choices::ROCKTOMB,
13576 Choice {
13577 move_id: Choices::ROCKTOMB,
13578 accuracy: 95.0,
13579 base_power: 60.0,
13580 category: MoveCategory::Physical,
13581 move_type: PokemonType::ROCK,
13582 flags: Flags {
13583 protect: true,
13584 ..Default::default()
13585 },
13586 secondaries: Some(vec![Secondary {
13587 chance: 100.0,
13588 target: MoveTarget::Opponent,
13589 effect: Effect::Boost(StatBoosts {
13590 attack: 0,
13591 defense: 0,
13592 special_attack: 0,
13593 special_defense: 0,
13594 speed: -1,
13595 accuracy: 0,
13596 }),
13597 }]),
13598 ..Default::default()
13599 },
13600 );
13601 }
13602 moves.insert(
13603 Choices::ROCKWRECKER,
13604 Choice {
13605 move_id: Choices::ROCKWRECKER,
13606 accuracy: 90.0,
13607 base_power: 150.0,
13608 category: MoveCategory::Physical,
13609 move_type: PokemonType::ROCK,
13610 flags: Flags {
13611 bullet: true,
13612 protect: true,
13613 recharge: true,
13614 ..Default::default()
13615 },
13616 ..Default::default()
13617 },
13618 );
13619 moves.insert(
13620 Choices::ROLEPLAY,
13621 Choice {
13622 move_id: Choices::ROLEPLAY,
13623 move_type: PokemonType::PSYCHIC,
13624 flags: Flags {
13625 ..Default::default()
13626 },
13627 ..Default::default()
13628 },
13629 );
13630 moves.insert(
13631 Choices::ROLLINGKICK,
13632 Choice {
13633 move_id: Choices::ROLLINGKICK,
13634 accuracy: 85.0,
13635 base_power: 60.0,
13636 category: MoveCategory::Physical,
13637 move_type: PokemonType::FIGHTING,
13638 flags: Flags {
13639 contact: true,
13640 protect: true,
13641 ..Default::default()
13642 },
13643 secondaries: Some(vec![Secondary {
13644 chance: 30.0,
13645 target: MoveTarget::Opponent,
13646 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
13647 }]),
13648 ..Default::default()
13649 },
13650 );
13651 moves.insert(
13652 Choices::ROLLOUT,
13653 Choice {
13654 move_id: Choices::ROLLOUT,
13655 accuracy: 90.0,
13656 base_power: 30.0,
13657 category: MoveCategory::Physical,
13658 move_type: PokemonType::ROCK,
13659 flags: Flags {
13660 contact: true,
13661 protect: true,
13662 ..Default::default()
13663 },
13664 ..Default::default()
13665 },
13666 );
13667 moves.insert(
13668 Choices::ROOST,
13669 Choice {
13670 move_id: Choices::ROOST,
13671 target: MoveTarget::User,
13672 move_type: PokemonType::FLYING,
13673 flags: Flags {
13674 heal: true,
13675 ..Default::default()
13676 },
13677 volatile_status: Some(VolatileStatus {
13678 target: MoveTarget::User,
13679 volatile_status: PokemonVolatileStatus::ROOST,
13680 }),
13681 heal: Some(Heal {
13682 target: MoveTarget::User,
13683 amount: 0.5,
13684 }),
13685 ..Default::default()
13686 },
13687 );
13688 moves.insert(
13689 Choices::ROTOTILLER,
13690 Choice {
13691 move_id: Choices::ROTOTILLER,
13692 move_type: PokemonType::GROUND,
13693 flags: Flags {
13694 ..Default::default()
13695 },
13696 ..Default::default()
13697 },
13698 );
13699 moves.insert(
13700 Choices::ROUND,
13701 Choice {
13702 move_id: Choices::ROUND,
13703 base_power: 60.0,
13704 category: MoveCategory::Special,
13705 move_type: PokemonType::NORMAL,
13706 flags: Flags {
13707 protect: true,
13708 sound: true,
13709 ..Default::default()
13710 },
13711 ..Default::default()
13712 },
13713 );
13714 moves.insert(
13715 Choices::RUINATION,
13716 Choice {
13717 move_id: Choices::RUINATION,
13718 accuracy: 90.0,
13719 category: MoveCategory::Special,
13720 move_type: PokemonType::DARK,
13721 flags: Flags {
13722 protect: true,
13723 ..Default::default()
13724 },
13725 ..Default::default()
13726 },
13727 );
13728 moves.insert(
13729 Choices::SACREDFIRE,
13730 Choice {
13731 move_id: Choices::SACREDFIRE,
13732 accuracy: 95.0,
13733 base_power: 100.0,
13734 category: MoveCategory::Physical,
13735 move_type: PokemonType::FIRE,
13736 flags: Flags {
13737 protect: true,
13738 ..Default::default()
13739 },
13740 secondaries: Some(vec![Secondary {
13741 chance: 50.0,
13742 target: MoveTarget::Opponent,
13743 effect: Effect::Status(PokemonStatus::BURN),
13744 }]),
13745 ..Default::default()
13746 },
13747 );
13748 moves.insert(
13749 Choices::SACREDSWORD,
13750 Choice {
13751 move_id: Choices::SACREDSWORD,
13752 base_power: 90.0,
13753 category: MoveCategory::Physical,
13754 move_type: PokemonType::FIGHTING,
13755 flags: Flags {
13756 contact: true,
13757 protect: true,
13758 slicing: true,
13759 ..Default::default()
13760 },
13761 ..Default::default()
13762 },
13763 );
13764 moves.insert(
13765 Choices::SAFEGUARD,
13766 Choice {
13767 move_id: Choices::SAFEGUARD,
13768 target: MoveTarget::User,
13769 move_type: PokemonType::NORMAL,
13770 flags: Flags {
13771 ..Default::default()
13772 },
13773 side_condition: Some(SideCondition {
13774 target: MoveTarget::User,
13775 condition: PokemonSideCondition::Safeguard,
13776 }),
13777 ..Default::default()
13778 },
13779 );
13780 moves.insert(
13781 Choices::SALTCURE,
13782 Choice {
13783 move_id: Choices::SALTCURE,
13784 base_power: 40.0,
13785 category: MoveCategory::Physical,
13786 move_type: PokemonType::ROCK,
13787 flags: Flags {
13788 protect: true,
13789 ..Default::default()
13790 },
13791 volatile_status: Some(VolatileStatus {
13792 target: MoveTarget::Opponent,
13793 volatile_status: PokemonVolatileStatus::SALTCURE,
13794 }),
13795 ..Default::default()
13796 },
13797 );
13798 if cfg!(feature = "gen1") {
13799 moves.insert(
13800 Choices::SANDATTACK,
13801 Choice {
13802 move_id: Choices::SANDATTACK,
13803 move_type: PokemonType::NORMAL,
13804 flags: Flags {
13805 protect: true,
13806 reflectable: true,
13807 ..Default::default()
13808 },
13809 boost: Some(Boost {
13810 target: MoveTarget::Opponent,
13811 boosts: StatBoosts {
13812 attack: 0,
13813 defense: 0,
13814 special_attack: 0,
13815 special_defense: 0,
13816 speed: 0,
13817 accuracy: -1,
13818 },
13819 }),
13820 ..Default::default()
13821 },
13822 );
13823 } else {
13824 moves.insert(
13825 Choices::SANDATTACK,
13826 Choice {
13827 move_id: Choices::SANDATTACK,
13828 move_type: PokemonType::GROUND,
13829 flags: Flags {
13830 protect: true,
13831 reflectable: true,
13832 ..Default::default()
13833 },
13834 boost: Some(Boost {
13835 target: MoveTarget::Opponent,
13836 boosts: StatBoosts {
13837 attack: 0,
13838 defense: 0,
13839 special_attack: 0,
13840 special_defense: 0,
13841 speed: 0,
13842 accuracy: -1,
13843 },
13844 }),
13845 ..Default::default()
13846 },
13847 );
13848 }
13849 moves.insert(
13850 Choices::SANDSEARSTORM,
13851 Choice {
13852 move_id: Choices::SANDSEARSTORM,
13853 accuracy: 80.0,
13854 base_power: 100.0,
13855 category: MoveCategory::Special,
13856 move_type: PokemonType::GROUND,
13857 flags: Flags {
13858 protect: true,
13859 wind: true,
13860 ..Default::default()
13861 },
13862 secondaries: Some(vec![Secondary {
13863 chance: 20.0,
13864 target: MoveTarget::Opponent,
13865 effect: Effect::Status(PokemonStatus::BURN),
13866 }]),
13867 ..Default::default()
13868 },
13869 );
13870 moves.insert(
13871 Choices::SANDSTORM,
13872 Choice {
13873 move_id: Choices::SANDSTORM,
13874 move_type: PokemonType::ROCK,
13875 flags: Flags {
13876 wind: true,
13877 ..Default::default()
13878 },
13879 ..Default::default()
13880 },
13881 );
13882 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13883 moves.insert(
13884 Choices::SANDTOMB,
13885 Choice {
13886 move_id: Choices::SANDTOMB,
13887 accuracy: 70.0,
13888 base_power: 15.0,
13889 category: MoveCategory::Physical,
13890 move_type: PokemonType::GROUND,
13891 flags: Flags {
13892 protect: true,
13893 ..Default::default()
13894 },
13895 volatile_status: Some(VolatileStatus {
13896 target: MoveTarget::Opponent,
13897 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
13898 }),
13899 ..Default::default()
13900 },
13901 );
13902 } else {
13903 moves.insert(
13904 Choices::SANDTOMB,
13905 Choice {
13906 move_id: Choices::SANDTOMB,
13907 accuracy: 85.0,
13908 base_power: 35.0,
13909 category: MoveCategory::Physical,
13910 move_type: PokemonType::GROUND,
13911 flags: Flags {
13912 protect: true,
13913 ..Default::default()
13914 },
13915 volatile_status: Some(VolatileStatus {
13916 target: MoveTarget::Opponent,
13917 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
13918 }),
13919 ..Default::default()
13920 },
13921 );
13922 }
13923 moves.insert(
13924 Choices::SAPPYSEED,
13925 Choice {
13926 move_id: Choices::SAPPYSEED,
13927 accuracy: 90.0,
13928 base_power: 100.0,
13929 category: MoveCategory::Physical,
13930 move_type: PokemonType::GRASS,
13931 flags: Flags {
13932 protect: true,
13933 reflectable: true,
13934 ..Default::default()
13935 },
13936 ..Default::default()
13937 },
13938 );
13939 moves.insert(
13940 Choices::SCALD,
13941 Choice {
13942 move_id: Choices::SCALD,
13943 base_power: 80.0,
13944 category: MoveCategory::Special,
13945 move_type: PokemonType::WATER,
13946 flags: Flags {
13947 protect: true,
13948 ..Default::default()
13949 },
13950 secondaries: Some(vec![Secondary {
13951 chance: 30.0,
13952 target: MoveTarget::Opponent,
13953 effect: Effect::Status(PokemonStatus::BURN),
13954 }]),
13955 ..Default::default()
13956 },
13957 );
13958 moves.insert(
13959 Choices::SCALESHOT,
13960 Choice {
13961 move_id: Choices::SCALESHOT,
13962 accuracy: 90.0,
13963 base_power: 25.0,
13964 category: MoveCategory::Physical,
13965 move_type: PokemonType::DRAGON,
13966 flags: Flags {
13967 protect: true,
13968 ..Default::default()
13969 },
13970 boost: Some(Boost {
13971 target: MoveTarget::User,
13972 boosts: StatBoosts {
13973 attack: 0,
13974 defense: -1,
13975 special_attack: 0,
13976 special_defense: 0,
13977 speed: 1,
13978 accuracy: 0,
13979 },
13980 }),
13981 ..Default::default()
13982 },
13983 );
13984 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
13985 moves.insert(
13986 Choices::SCARYFACE,
13987 Choice {
13988 move_id: Choices::SCARYFACE,
13989 accuracy: 90.0,
13990 move_type: PokemonType::NORMAL,
13991 flags: Flags {
13992 protect: true,
13993 reflectable: true,
13994 ..Default::default()
13995 },
13996 boost: Some(Boost {
13997 target: MoveTarget::Opponent,
13998 boosts: StatBoosts {
13999 attack: 0,
14000 defense: 0,
14001 special_attack: 0,
14002 special_defense: 0,
14003 speed: -2,
14004 accuracy: 0,
14005 },
14006 }),
14007 ..Default::default()
14008 },
14009 );
14010 } else {
14011 moves.insert(
14012 Choices::SCARYFACE,
14013 Choice {
14014 move_id: Choices::SCARYFACE,
14015 move_type: PokemonType::NORMAL,
14016 flags: Flags {
14017 protect: true,
14018 reflectable: true,
14019 ..Default::default()
14020 },
14021 boost: Some(Boost {
14022 target: MoveTarget::Opponent,
14023 boosts: StatBoosts {
14024 attack: 0,
14025 defense: 0,
14026 special_attack: 0,
14027 special_defense: 0,
14028 speed: -2,
14029 accuracy: 0,
14030 },
14031 }),
14032 ..Default::default()
14033 },
14034 );
14035 }
14036 moves.insert(
14037 Choices::SCORCHINGSANDS,
14038 Choice {
14039 move_id: Choices::SCORCHINGSANDS,
14040 base_power: 70.0,
14041 category: MoveCategory::Special,
14042 move_type: PokemonType::GROUND,
14043 flags: Flags {
14044 protect: true,
14045 ..Default::default()
14046 },
14047 secondaries: Some(vec![Secondary {
14048 chance: 30.0,
14049 target: MoveTarget::Opponent,
14050 effect: Effect::Status(PokemonStatus::BURN),
14051 }]),
14052 ..Default::default()
14053 },
14054 );
14055 moves.insert(
14056 Choices::SCRATCH,
14057 Choice {
14058 move_id: Choices::SCRATCH,
14059 base_power: 40.0,
14060 category: MoveCategory::Physical,
14061 move_type: PokemonType::NORMAL,
14062 flags: Flags {
14063 contact: true,
14064 protect: true,
14065 ..Default::default()
14066 },
14067 ..Default::default()
14068 },
14069 );
14070 moves.insert(
14071 Choices::SCREECH,
14072 Choice {
14073 move_id: Choices::SCREECH,
14074 accuracy: 85.0,
14075 move_type: PokemonType::NORMAL,
14076 flags: Flags {
14077 protect: true,
14078 reflectable: true,
14079 sound: true,
14080 ..Default::default()
14081 },
14082 boost: Some(Boost {
14083 target: MoveTarget::Opponent,
14084 boosts: StatBoosts {
14085 attack: 0,
14086 defense: -2,
14087 special_attack: 0,
14088 special_defense: 0,
14089 speed: 0,
14090 accuracy: 0,
14091 },
14092 }),
14093 ..Default::default()
14094 },
14095 );
14096 moves.insert(
14097 Choices::SEARINGSHOT,
14098 Choice {
14099 move_id: Choices::SEARINGSHOT,
14100 base_power: 100.0,
14101 category: MoveCategory::Special,
14102 move_type: PokemonType::FIRE,
14103 flags: Flags {
14104 bullet: true,
14105 protect: true,
14106 ..Default::default()
14107 },
14108 secondaries: Some(vec![Secondary {
14109 chance: 30.0,
14110 target: MoveTarget::Opponent,
14111 effect: Effect::Status(PokemonStatus::BURN),
14112 }]),
14113 ..Default::default()
14114 },
14115 );
14116 moves.insert(
14117 Choices::SECRETPOWER,
14118 Choice {
14119 move_id: Choices::SECRETPOWER,
14120 base_power: 70.0,
14121 category: MoveCategory::Physical,
14122 move_type: PokemonType::NORMAL,
14123 flags: Flags {
14124 protect: true,
14125 ..Default::default()
14126 },
14127 secondaries: Some(vec![Secondary {
14128 chance: 30.0,
14129 target: MoveTarget::Opponent,
14130 effect: Effect::Status(PokemonStatus::PARALYZE),
14131 }]),
14132 ..Default::default()
14133 },
14134 );
14135 moves.insert(
14136 Choices::SECRETSWORD,
14137 Choice {
14138 move_id: Choices::SECRETSWORD,
14139 base_power: 85.0,
14140 category: MoveCategory::Special,
14141 move_type: PokemonType::FIGHTING,
14142 flags: Flags {
14143 protect: true,
14144 slicing: true,
14145 ..Default::default()
14146 },
14147 ..Default::default()
14148 },
14149 );
14150 moves.insert(
14151 Choices::SEEDBOMB,
14152 Choice {
14153 move_id: Choices::SEEDBOMB,
14154 base_power: 80.0,
14155 category: MoveCategory::Physical,
14156 move_type: PokemonType::GRASS,
14157 flags: Flags {
14158 bullet: true,
14159 protect: true,
14160 ..Default::default()
14161 },
14162 ..Default::default()
14163 },
14164 );
14165 moves.insert(
14166 Choices::SEEDFLARE,
14167 Choice {
14168 move_id: Choices::SEEDFLARE,
14169 accuracy: 85.0,
14170 base_power: 120.0,
14171 category: MoveCategory::Special,
14172 move_type: PokemonType::GRASS,
14173 flags: Flags {
14174 protect: true,
14175 ..Default::default()
14176 },
14177 secondaries: Some(vec![Secondary {
14178 chance: 40.0,
14179 target: MoveTarget::Opponent,
14180 effect: Effect::Boost(StatBoosts {
14181 attack: 0,
14182 defense: 0,
14183 special_attack: 0,
14184 special_defense: -2,
14185 speed: 0,
14186 accuracy: 0,
14187 }),
14188 }]),
14189 ..Default::default()
14190 },
14191 );
14192 moves.insert(
14193 Choices::SEISMICTOSS,
14194 Choice {
14195 move_id: Choices::SEISMICTOSS,
14196 category: MoveCategory::Physical,
14197 move_type: PokemonType::FIGHTING,
14198 flags: Flags {
14199 contact: true,
14200 protect: true,
14201 ..Default::default()
14202 },
14203 ..Default::default()
14204 },
14205 );
14206 if cfg!(feature = "gen1") {
14207 moves.insert(
14208 Choices::SELFDESTRUCT,
14209 Choice {
14210 move_id: Choices::SELFDESTRUCT,
14211 base_power: 130.0,
14212 category: MoveCategory::Physical,
14213 move_type: PokemonType::NORMAL,
14214 flags: Flags {
14215 protect: true,
14216 ..Default::default()
14217 },
14218 ..Default::default()
14219 },
14220 );
14221 } else {
14222 moves.insert(
14223 Choices::SELFDESTRUCT,
14224 Choice {
14225 move_id: Choices::SELFDESTRUCT,
14226 base_power: 200.0,
14227 category: MoveCategory::Physical,
14228 move_type: PokemonType::NORMAL,
14229 flags: Flags {
14230 protect: true,
14231 ..Default::default()
14232 },
14233 ..Default::default()
14234 },
14235 );
14236 }
14237 moves.insert(
14238 Choices::SHADOWBALL,
14239 Choice {
14240 move_id: Choices::SHADOWBALL,
14241 base_power: 80.0,
14242 category: MoveCategory::Special,
14243 move_type: PokemonType::GHOST,
14244 flags: Flags {
14245 bullet: true,
14246 protect: true,
14247 ..Default::default()
14248 },
14249 secondaries: Some(vec![Secondary {
14250 chance: 20.0,
14251 target: MoveTarget::Opponent,
14252 effect: Effect::Boost(StatBoosts {
14253 attack: 0,
14254 defense: 0,
14255 special_attack: 0,
14256 special_defense: -1,
14257 speed: 0,
14258 accuracy: 0,
14259 }),
14260 }]),
14261 ..Default::default()
14262 },
14263 );
14264 moves.insert(
14265 Choices::SHADOWBONE,
14266 Choice {
14267 move_id: Choices::SHADOWBONE,
14268 base_power: 85.0,
14269 category: MoveCategory::Physical,
14270 move_type: PokemonType::GHOST,
14271 flags: Flags {
14272 protect: true,
14273 ..Default::default()
14274 },
14275 secondaries: Some(vec![Secondary {
14276 chance: 20.0,
14277 target: MoveTarget::Opponent,
14278 effect: Effect::Boost(StatBoosts {
14279 attack: 0,
14280 defense: -1,
14281 special_attack: 0,
14282 special_defense: 0,
14283 speed: 0,
14284 accuracy: 0,
14285 }),
14286 }]),
14287 ..Default::default()
14288 },
14289 );
14290 moves.insert(
14291 Choices::SHADOWCLAW,
14292 Choice {
14293 move_id: Choices::SHADOWCLAW,
14294 base_power: 70.0,
14295 category: MoveCategory::Physical,
14296 move_type: PokemonType::GHOST,
14297 flags: Flags {
14298 contact: true,
14299 protect: true,
14300 ..Default::default()
14301 },
14302 ..Default::default()
14303 },
14304 );
14305 moves.insert(
14306 Choices::SHADOWFORCE,
14307 Choice {
14308 move_id: Choices::SHADOWFORCE,
14309 base_power: 120.0,
14310 category: MoveCategory::Physical,
14311 move_type: PokemonType::GHOST,
14312 flags: Flags {
14313 charge: true,
14314 contact: true,
14315 ..Default::default()
14316 },
14317 ..Default::default()
14318 },
14319 );
14320 moves.insert(
14321 Choices::SHADOWPUNCH,
14322 Choice {
14323 move_id: Choices::SHADOWPUNCH,
14324 base_power: 60.0,
14325 category: MoveCategory::Physical,
14326 move_type: PokemonType::GHOST,
14327 flags: Flags {
14328 contact: true,
14329 protect: true,
14330 punch: true,
14331 ..Default::default()
14332 },
14333 ..Default::default()
14334 },
14335 );
14336 moves.insert(
14337 Choices::SHADOWSNEAK,
14338 Choice {
14339 move_id: Choices::SHADOWSNEAK,
14340 base_power: 40.0,
14341 category: MoveCategory::Physical,
14342 priority: 1,
14343 move_type: PokemonType::GHOST,
14344 flags: Flags {
14345 contact: true,
14346 protect: true,
14347 ..Default::default()
14348 },
14349 ..Default::default()
14350 },
14351 );
14352 moves.insert(
14353 Choices::SHADOWSTRIKE,
14354 Choice {
14355 move_id: Choices::SHADOWSTRIKE,
14356 accuracy: 95.0,
14357 base_power: 80.0,
14358 category: MoveCategory::Physical,
14359 move_type: PokemonType::GHOST,
14360 flags: Flags {
14361 contact: true,
14362 protect: true,
14363 ..Default::default()
14364 },
14365 secondaries: Some(vec![Secondary {
14366 chance: 50.0,
14367 target: MoveTarget::Opponent,
14368 effect: Effect::Boost(StatBoosts {
14369 attack: 0,
14370 defense: -1,
14371 special_attack: 0,
14372 special_defense: 0,
14373 speed: 0,
14374 accuracy: 0,
14375 }),
14376 }]),
14377 ..Default::default()
14378 },
14379 );
14380 moves.insert(
14381 Choices::SHARPEN,
14382 Choice {
14383 move_id: Choices::SHARPEN,
14384 target: MoveTarget::User,
14385 move_type: PokemonType::NORMAL,
14386 flags: Flags {
14387 ..Default::default()
14388 },
14389 boost: Some(Boost {
14390 target: MoveTarget::User,
14391 boosts: StatBoosts {
14392 attack: 1,
14393 defense: 0,
14394 special_attack: 0,
14395 special_defense: 0,
14396 speed: 0,
14397 accuracy: 0,
14398 },
14399 }),
14400 ..Default::default()
14401 },
14402 );
14403 moves.insert(
14404 Choices::SHEDTAIL,
14405 Choice {
14406 move_id: Choices::SHEDTAIL,
14407 target: MoveTarget::User,
14408 move_type: PokemonType::NORMAL,
14409 flags: Flags {
14410 pivot: false, ..Default::default()
14412 },
14413 volatile_status: None, ..Default::default()
14415 },
14416 );
14417 moves.insert(
14418 Choices::SHEERCOLD,
14419 Choice {
14420 move_id: Choices::SHEERCOLD,
14421 accuracy: 30.0,
14422 category: MoveCategory::Special,
14423 move_type: PokemonType::ICE,
14424 flags: Flags {
14425 protect: true,
14426 ..Default::default()
14427 },
14428 ..Default::default()
14429 },
14430 );
14431 moves.insert(
14432 Choices::SHELLSIDEARM,
14433 Choice {
14434 move_id: Choices::SHELLSIDEARM,
14435 base_power: 90.0,
14436 category: MoveCategory::Special,
14437 move_type: PokemonType::POISON,
14438 flags: Flags {
14439 protect: true,
14440 ..Default::default()
14441 },
14442 secondaries: Some(vec![Secondary {
14443 chance: 20.0,
14444 target: MoveTarget::Opponent,
14445 effect: Effect::Status(PokemonStatus::POISON),
14446 }]),
14447 ..Default::default()
14448 },
14449 );
14450 moves.insert(
14451 Choices::SHELLSMASH,
14452 Choice {
14453 move_id: Choices::SHELLSMASH,
14454 target: MoveTarget::User,
14455 move_type: PokemonType::NORMAL,
14456 flags: Flags {
14457 ..Default::default()
14458 },
14459 boost: Some(Boost {
14460 target: MoveTarget::User,
14461 boosts: StatBoosts {
14462 attack: 2,
14463 defense: -1,
14464 special_attack: 2,
14465 special_defense: -1,
14466 speed: 2,
14467 accuracy: 0,
14468 },
14469 }),
14470 ..Default::default()
14471 },
14472 );
14473 moves.insert(
14474 Choices::SHELLTRAP,
14475 Choice {
14476 move_id: Choices::SHELLTRAP,
14477 base_power: 150.0,
14478 category: MoveCategory::Special,
14479 priority: -3,
14480 move_type: PokemonType::FIRE,
14481 flags: Flags {
14482 protect: true,
14483 ..Default::default()
14484 },
14485 ..Default::default()
14486 },
14487 );
14488 moves.insert(
14489 Choices::SHELTER,
14490 Choice {
14491 move_id: Choices::SHELTER,
14492 target: MoveTarget::User,
14493 move_type: PokemonType::STEEL,
14494 flags: Flags {
14495 ..Default::default()
14496 },
14497 boost: Some(Boost {
14498 target: MoveTarget::User,
14499 boosts: StatBoosts {
14500 attack: 0,
14501 defense: 2,
14502 special_attack: 0,
14503 special_defense: 0,
14504 speed: 0,
14505 accuracy: 0,
14506 },
14507 }),
14508 ..Default::default()
14509 },
14510 );
14511 moves.insert(
14512 Choices::SHIFTGEAR,
14513 Choice {
14514 move_id: Choices::SHIFTGEAR,
14515 target: MoveTarget::User,
14516 move_type: PokemonType::STEEL,
14517 flags: Flags {
14518 ..Default::default()
14519 },
14520 boost: Some(Boost {
14521 target: MoveTarget::User,
14522 boosts: StatBoosts {
14523 attack: 1,
14524 defense: 0,
14525 special_attack: 0,
14526 special_defense: 0,
14527 speed: 2,
14528 accuracy: 0,
14529 },
14530 }),
14531 ..Default::default()
14532 },
14533 );
14534 moves.insert(
14535 Choices::SHOCKWAVE,
14536 Choice {
14537 move_id: Choices::SHOCKWAVE,
14538 base_power: 60.0,
14539 category: MoveCategory::Special,
14540 move_type: PokemonType::ELECTRIC,
14541 flags: Flags {
14542 protect: true,
14543 ..Default::default()
14544 },
14545 ..Default::default()
14546 },
14547 );
14548 moves.insert(
14549 Choices::SHOREUP,
14550 Choice {
14551 move_id: Choices::SHOREUP,
14552 target: MoveTarget::User,
14553 move_type: PokemonType::GROUND,
14554 flags: Flags {
14555 heal: true,
14556 ..Default::default()
14557 },
14558 heal: Some(Heal {
14559 target: MoveTarget::User,
14560 amount: 0.5,
14561 }),
14562 ..Default::default()
14563 },
14564 );
14565 moves.insert(
14566 Choices::SIGNALBEAM,
14567 Choice {
14568 move_id: Choices::SIGNALBEAM,
14569 base_power: 75.0,
14570 category: MoveCategory::Special,
14571 move_type: PokemonType::BUG,
14572 flags: Flags {
14573 protect: true,
14574 ..Default::default()
14575 },
14576 secondaries: Some(vec![Secondary {
14577 chance: 10.0,
14578 target: MoveTarget::Opponent,
14579 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
14580 }]),
14581 ..Default::default()
14582 },
14583 );
14584 moves.insert(
14585 Choices::SILKTRAP,
14586 Choice {
14587 move_id: Choices::SILKTRAP,
14588 priority: 4,
14589 target: MoveTarget::User,
14590 move_type: PokemonType::BUG,
14591 flags: Flags {
14592 ..Default::default()
14593 },
14594 volatile_status: Some(VolatileStatus {
14595 target: MoveTarget::User,
14596 volatile_status: PokemonVolatileStatus::SILKTRAP,
14597 }),
14598 ..Default::default()
14599 },
14600 );
14601 moves.insert(
14602 Choices::SILVERWIND,
14603 Choice {
14604 move_id: Choices::SILVERWIND,
14605 base_power: 60.0,
14606 category: MoveCategory::Special,
14607 move_type: PokemonType::BUG,
14608 flags: Flags {
14609 protect: true,
14610 ..Default::default()
14611 },
14612 secondaries: Some(vec![Secondary {
14613 chance: 10.0,
14614 target: MoveTarget::User,
14615 effect: Effect::Boost(StatBoosts {
14616 attack: 1,
14617 defense: 1,
14618 special_attack: 1,
14619 special_defense: 1,
14620 speed: 1,
14621 accuracy: 0,
14622 }),
14623 }]),
14624 ..Default::default()
14625 },
14626 );
14627 moves.insert(
14628 Choices::SIMPLEBEAM,
14629 Choice {
14630 move_id: Choices::SIMPLEBEAM,
14631 move_type: PokemonType::NORMAL,
14632 flags: Flags {
14633 protect: true,
14634 reflectable: true,
14635 ..Default::default()
14636 },
14637 ..Default::default()
14638 },
14639 );
14640 moves.insert(
14641 Choices::SING,
14642 Choice {
14643 move_id: Choices::SING,
14644 accuracy: 55.0,
14645 status: Some(Status {
14646 target: MoveTarget::Opponent,
14647 status: PokemonStatus::SLEEP,
14648 }),
14649 move_type: PokemonType::NORMAL,
14650 flags: Flags {
14651 protect: true,
14652 reflectable: true,
14653 sound: true,
14654 ..Default::default()
14655 },
14656 ..Default::default()
14657 },
14658 );
14659 moves.insert(
14660 Choices::SIZZLYSLIDE,
14661 Choice {
14662 move_id: Choices::SIZZLYSLIDE,
14663 base_power: 60.0,
14664 category: MoveCategory::Physical,
14665 move_type: PokemonType::FIRE,
14666 flags: Flags {
14667 contact: true,
14668 protect: true,
14669 ..Default::default()
14670 },
14671 secondaries: Some(vec![Secondary {
14672 chance: 100.0,
14673 target: MoveTarget::Opponent,
14674 effect: Effect::Status(PokemonStatus::BURN),
14675 }]),
14676 ..Default::default()
14677 },
14678 );
14679 moves.insert(
14680 Choices::SKETCH,
14681 Choice {
14682 move_id: Choices::SKETCH,
14683 move_type: PokemonType::NORMAL,
14684 flags: Flags {
14685 ..Default::default()
14686 },
14687 ..Default::default()
14688 },
14689 );
14690 moves.insert(
14691 Choices::SKILLSWAP,
14692 Choice {
14693 move_id: Choices::SKILLSWAP,
14694 move_type: PokemonType::PSYCHIC,
14695 flags: Flags {
14696 protect: true,
14697 ..Default::default()
14698 },
14699 ..Default::default()
14700 },
14701 );
14702 moves.insert(
14703 Choices::SKITTERSMACK,
14704 Choice {
14705 move_id: Choices::SKITTERSMACK,
14706 accuracy: 90.0,
14707 base_power: 70.0,
14708 category: MoveCategory::Physical,
14709 move_type: PokemonType::BUG,
14710 flags: Flags {
14711 contact: true,
14712 protect: true,
14713 ..Default::default()
14714 },
14715 secondaries: Some(vec![Secondary {
14716 chance: 100.0,
14717 target: MoveTarget::Opponent,
14718 effect: Effect::Boost(StatBoosts {
14719 attack: 0,
14720 defense: 0,
14721 special_attack: -1,
14722 special_defense: 0,
14723 speed: 0,
14724 accuracy: 0,
14725 }),
14726 }]),
14727 ..Default::default()
14728 },
14729 );
14730 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
14731 moves.insert(
14732 Choices::SKULLBASH,
14733 Choice {
14734 move_id: Choices::SKULLBASH,
14735 base_power: 100.0,
14736 category: MoveCategory::Physical,
14737 move_type: PokemonType::NORMAL,
14738 flags: Flags {
14739 charge: true,
14740 contact: true,
14741 protect: true,
14742 ..Default::default()
14743 },
14744 ..Default::default()
14745 },
14746 );
14747 } else {
14748 moves.insert(
14749 Choices::SKULLBASH,
14750 Choice {
14751 move_id: Choices::SKULLBASH,
14752 base_power: 130.0,
14753 category: MoveCategory::Physical,
14754 move_type: PokemonType::NORMAL,
14755 flags: Flags {
14756 charge: true,
14757 contact: true,
14758 protect: true,
14759 ..Default::default()
14760 },
14761 ..Default::default()
14762 },
14763 );
14764 }
14765 moves.insert(
14766 Choices::SKYATTACK,
14767 Choice {
14768 move_id: Choices::SKYATTACK,
14769 accuracy: 90.0,
14770 base_power: 140.0,
14771 category: MoveCategory::Physical,
14772 move_type: PokemonType::FLYING,
14773 flags: Flags {
14774 charge: true,
14775 protect: true,
14776 ..Default::default()
14777 },
14778 secondaries: Some(vec![Secondary {
14779 chance: 30.0,
14780 target: MoveTarget::Opponent,
14781 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
14782 }]),
14783 ..Default::default()
14784 },
14785 );
14786 moves.insert(
14787 Choices::SKYDROP,
14788 Choice {
14789 move_id: Choices::SKYDROP,
14790 base_power: 60.0,
14791 category: MoveCategory::Physical,
14792 move_type: PokemonType::FLYING,
14793 flags: Flags {
14794 charge: true,
14795 contact: true,
14796 protect: true,
14797 ..Default::default()
14798 },
14799 ..Default::default()
14800 },
14801 );
14802 moves.insert(
14803 Choices::SKYUPPERCUT,
14804 Choice {
14805 move_id: Choices::SKYUPPERCUT,
14806 accuracy: 90.0,
14807 base_power: 85.0,
14808 category: MoveCategory::Physical,
14809 move_type: PokemonType::FIGHTING,
14810 flags: Flags {
14811 contact: true,
14812 protect: true,
14813 punch: true,
14814 ..Default::default()
14815 },
14816 ..Default::default()
14817 },
14818 );
14819 moves.insert(
14820 Choices::SLACKOFF,
14821 Choice {
14822 move_id: Choices::SLACKOFF,
14823 target: MoveTarget::User,
14824 move_type: PokemonType::NORMAL,
14825 flags: Flags {
14826 heal: true,
14827 ..Default::default()
14828 },
14829 heal: Some(Heal {
14830 target: MoveTarget::User,
14831 amount: 0.5,
14832 }),
14833 ..Default::default()
14834 },
14835 );
14836 moves.insert(
14837 Choices::SLAM,
14838 Choice {
14839 move_id: Choices::SLAM,
14840 accuracy: 75.0,
14841 base_power: 80.0,
14842 category: MoveCategory::Physical,
14843 move_type: PokemonType::NORMAL,
14844 flags: Flags {
14845 contact: true,
14846 protect: true,
14847 ..Default::default()
14848 },
14849 ..Default::default()
14850 },
14851 );
14852 moves.insert(
14853 Choices::SLASH,
14854 Choice {
14855 move_id: Choices::SLASH,
14856 base_power: 70.0,
14857 category: MoveCategory::Physical,
14858 move_type: PokemonType::NORMAL,
14859 flags: Flags {
14860 contact: true,
14861 protect: true,
14862 slicing: true,
14863 ..Default::default()
14864 },
14865 ..Default::default()
14866 },
14867 );
14868 moves.insert(
14869 Choices::SLEEPPOWDER,
14870 Choice {
14871 move_id: Choices::SLEEPPOWDER,
14872 accuracy: 75.0,
14873 status: Some(Status {
14874 target: MoveTarget::Opponent,
14875 status: PokemonStatus::SLEEP,
14876 }),
14877 move_type: PokemonType::GRASS,
14878 flags: Flags {
14879 powder: true,
14880 protect: true,
14881 reflectable: true,
14882 ..Default::default()
14883 },
14884 ..Default::default()
14885 },
14886 );
14887 moves.insert(
14888 Choices::SLEEPTALK,
14889 Choice {
14890 move_id: Choices::SLEEPTALK,
14891 target: MoveTarget::User,
14892 move_type: PokemonType::NORMAL,
14893 flags: Flags {
14894 ..Default::default()
14895 },
14896 ..Default::default()
14897 },
14898 );
14899 if cfg!(feature = "gen1") {
14900 moves.insert(
14901 Choices::SLUDGE,
14902 Choice {
14903 move_id: Choices::SLUDGE,
14904 base_power: 65.0,
14905 category: MoveCategory::Special,
14906 move_type: PokemonType::POISON,
14907 flags: Flags {
14908 protect: true,
14909 ..Default::default()
14910 },
14911 secondaries: Some(vec![Secondary {
14912 chance: 40.0,
14913 target: MoveTarget::Opponent,
14914 effect: Effect::Status(PokemonStatus::POISON),
14915 }]),
14916 ..Default::default()
14917 },
14918 );
14919 } else {
14920 moves.insert(
14921 Choices::SLUDGE,
14922 Choice {
14923 move_id: Choices::SLUDGE,
14924 base_power: 65.0,
14925 category: MoveCategory::Special,
14926 move_type: PokemonType::POISON,
14927 flags: Flags {
14928 protect: true,
14929 ..Default::default()
14930 },
14931 secondaries: Some(vec![Secondary {
14932 chance: 30.0,
14933 target: MoveTarget::Opponent,
14934 effect: Effect::Status(PokemonStatus::POISON),
14935 }]),
14936 ..Default::default()
14937 },
14938 );
14939 }
14940 moves.insert(
14941 Choices::SLUDGEBOMB,
14942 Choice {
14943 move_id: Choices::SLUDGEBOMB,
14944 base_power: 90.0,
14945 category: MoveCategory::Special,
14946 move_type: PokemonType::POISON,
14947 flags: Flags {
14948 bullet: true,
14949 protect: true,
14950 ..Default::default()
14951 },
14952 secondaries: Some(vec![Secondary {
14953 chance: 30.0,
14954 target: MoveTarget::Opponent,
14955 effect: Effect::Status(PokemonStatus::POISON),
14956 }]),
14957 ..Default::default()
14958 },
14959 );
14960 moves.insert(
14961 Choices::SLUDGEWAVE,
14962 Choice {
14963 move_id: Choices::SLUDGEWAVE,
14964 base_power: 95.0,
14965 category: MoveCategory::Special,
14966 move_type: PokemonType::POISON,
14967 flags: Flags {
14968 protect: true,
14969 ..Default::default()
14970 },
14971 secondaries: Some(vec![Secondary {
14972 chance: 10.0,
14973 target: MoveTarget::Opponent,
14974 effect: Effect::Status(PokemonStatus::POISON),
14975 }]),
14976 ..Default::default()
14977 },
14978 );
14979 moves.insert(
14980 Choices::SMACKDOWN,
14981 Choice {
14982 move_id: Choices::SMACKDOWN,
14983 base_power: 50.0,
14984 category: MoveCategory::Physical,
14985 move_type: PokemonType::ROCK,
14986 flags: Flags {
14987 protect: true,
14988 ..Default::default()
14989 },
14990 volatile_status: Some(VolatileStatus {
14991 target: MoveTarget::Opponent,
14992 volatile_status: PokemonVolatileStatus::SMACKDOWN,
14993 }),
14994 ..Default::default()
14995 },
14996 );
14997 moves.insert(
14998 Choices::SMARTSTRIKE,
14999 Choice {
15000 move_id: Choices::SMARTSTRIKE,
15001 base_power: 70.0,
15002 category: MoveCategory::Physical,
15003 move_type: PokemonType::STEEL,
15004 flags: Flags {
15005 contact: true,
15006 protect: true,
15007 ..Default::default()
15008 },
15009 ..Default::default()
15010 },
15011 );
15012 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15013 moves.insert(
15014 Choices::SMELLINGSALTS,
15015 Choice {
15016 move_id: Choices::SMELLINGSALTS,
15017 base_power: 60.0,
15018 category: MoveCategory::Physical,
15019 move_type: PokemonType::NORMAL,
15020 flags: Flags {
15021 contact: true,
15022 protect: true,
15023 ..Default::default()
15024 },
15025 ..Default::default()
15026 },
15027 );
15028 } else {
15029 moves.insert(
15030 Choices::SMELLINGSALTS,
15031 Choice {
15032 move_id: Choices::SMELLINGSALTS,
15033 base_power: 70.0,
15034 category: MoveCategory::Physical,
15035 move_type: PokemonType::NORMAL,
15036 flags: Flags {
15037 contact: true,
15038 protect: true,
15039 ..Default::default()
15040 },
15041 ..Default::default()
15042 },
15043 );
15044 }
15045 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15046 moves.insert(
15047 Choices::SMOG,
15048 Choice {
15049 move_id: Choices::SMOG,
15050 accuracy: 70.0,
15051 base_power: 20.0,
15052 category: MoveCategory::Special,
15053 move_type: PokemonType::POISON,
15054 flags: Flags {
15055 protect: true,
15056 ..Default::default()
15057 },
15058 secondaries: Some(vec![Secondary {
15059 chance: 40.0,
15060 target: MoveTarget::Opponent,
15061 effect: Effect::Status(PokemonStatus::POISON),
15062 }]),
15063 ..Default::default()
15064 },
15065 );
15066 } else {
15067 moves.insert(
15068 Choices::SMOG,
15069 Choice {
15070 move_id: Choices::SMOG,
15071 accuracy: 70.0,
15072 base_power: 30.0,
15073 category: MoveCategory::Special,
15074 move_type: PokemonType::POISON,
15075 flags: Flags {
15076 protect: true,
15077 ..Default::default()
15078 },
15079 secondaries: Some(vec![Secondary {
15080 chance: 40.0,
15081 target: MoveTarget::Opponent,
15082 effect: Effect::Status(PokemonStatus::POISON),
15083 }]),
15084 ..Default::default()
15085 },
15086 );
15087 }
15088 moves.insert(
15089 Choices::SMOKESCREEN,
15090 Choice {
15091 move_id: Choices::SMOKESCREEN,
15092 move_type: PokemonType::NORMAL,
15093 flags: Flags {
15094 protect: true,
15095 reflectable: true,
15096 ..Default::default()
15097 },
15098 boost: Some(Boost {
15099 target: MoveTarget::Opponent,
15100 boosts: StatBoosts {
15101 attack: 0,
15102 defense: 0,
15103 special_attack: 0,
15104 special_defense: 0,
15105 speed: 0,
15106 accuracy: -1,
15107 },
15108 }),
15109 ..Default::default()
15110 },
15111 );
15112 moves.insert(
15113 Choices::SNAPTRAP,
15114 Choice {
15115 move_id: Choices::SNAPTRAP,
15116 base_power: 35.0,
15117 category: MoveCategory::Physical,
15118 move_type: PokemonType::GRASS,
15119 flags: Flags {
15120 contact: true,
15121 protect: true,
15122 ..Default::default()
15123 },
15124 volatile_status: Some(VolatileStatus {
15125 target: MoveTarget::Opponent,
15126 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
15127 }),
15128 ..Default::default()
15129 },
15130 );
15131 moves.insert(
15132 Choices::SNARL,
15133 Choice {
15134 move_id: Choices::SNARL,
15135 accuracy: 95.0,
15136 base_power: 55.0,
15137 category: MoveCategory::Special,
15138 move_type: PokemonType::DARK,
15139 flags: Flags {
15140 protect: true,
15141 sound: true,
15142 ..Default::default()
15143 },
15144 secondaries: Some(vec![Secondary {
15145 chance: 100.0,
15146 target: MoveTarget::Opponent,
15147 effect: Effect::Boost(StatBoosts {
15148 attack: 0,
15149 defense: 0,
15150 special_attack: -1,
15151 special_defense: 0,
15152 speed: 0,
15153 accuracy: 0,
15154 }),
15155 }]),
15156 ..Default::default()
15157 },
15158 );
15159 moves.insert(
15160 Choices::SNATCH,
15161 Choice {
15162 move_id: Choices::SNATCH,
15163 priority: 4,
15164 target: MoveTarget::User,
15165 move_type: PokemonType::DARK,
15166 flags: Flags {
15167 ..Default::default()
15168 },
15169 volatile_status: Some(VolatileStatus {
15170 target: MoveTarget::User,
15171 volatile_status: PokemonVolatileStatus::SNATCH,
15172 }),
15173 ..Default::default()
15174 },
15175 );
15176 moves.insert(
15177 Choices::SNIPESHOT,
15178 Choice {
15179 move_id: Choices::SNIPESHOT,
15180 base_power: 80.0,
15181 category: MoveCategory::Special,
15182 move_type: PokemonType::WATER,
15183 flags: Flags {
15184 protect: true,
15185 ..Default::default()
15186 },
15187 ..Default::default()
15188 },
15189 );
15190 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15191 moves.insert(
15192 Choices::SNORE,
15193 Choice {
15194 move_id: Choices::SNORE,
15195 base_power: 40.0,
15196 category: MoveCategory::Special,
15197 move_type: PokemonType::NORMAL,
15198 flags: Flags {
15199 protect: true,
15200 sound: true,
15201 ..Default::default()
15202 },
15203 secondaries: Some(vec![Secondary {
15204 chance: 30.0,
15205 target: MoveTarget::Opponent,
15206 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15207 }]),
15208 ..Default::default()
15209 },
15210 );
15211 } else {
15212 moves.insert(
15213 Choices::SNORE,
15214 Choice {
15215 move_id: Choices::SNORE,
15216 base_power: 50.0,
15217 category: MoveCategory::Special,
15218 move_type: PokemonType::NORMAL,
15219 flags: Flags {
15220 protect: true,
15221 sound: true,
15222 ..Default::default()
15223 },
15224 secondaries: Some(vec![Secondary {
15225 chance: 30.0,
15226 target: MoveTarget::Opponent,
15227 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15228 }]),
15229 ..Default::default()
15230 },
15231 );
15232 }
15233 moves.insert(
15234 Choices::SNOWSCAPE,
15235 Choice {
15236 move_id: Choices::SNOWSCAPE,
15237 move_type: PokemonType::ICE,
15238 flags: Flags {
15239 ..Default::default()
15240 },
15241 ..Default::default()
15242 },
15243 );
15244 moves.insert(
15245 Choices::SOAK,
15246 Choice {
15247 move_id: Choices::SOAK,
15248 move_type: PokemonType::WATER,
15249 flags: Flags {
15250 protect: true,
15251 reflectable: true,
15252 ..Default::default()
15253 },
15254 ..Default::default()
15255 },
15256 );
15257 moves.insert(
15258 Choices::SOFTBOILED,
15259 Choice {
15260 move_id: Choices::SOFTBOILED,
15261 target: MoveTarget::User,
15262 move_type: PokemonType::NORMAL,
15263 flags: Flags {
15264 heal: true,
15265 ..Default::default()
15266 },
15267 heal: Some(Heal {
15268 target: MoveTarget::User,
15269 amount: 0.5,
15270 }),
15271 ..Default::default()
15272 },
15273 );
15274 moves.insert(
15275 Choices::SOLARBEAM,
15276 Choice {
15277 move_id: Choices::SOLARBEAM,
15278 base_power: 120.0,
15279 category: MoveCategory::Special,
15280 move_type: PokemonType::GRASS,
15281 flags: Flags {
15282 charge: true,
15283 protect: true,
15284 ..Default::default()
15285 },
15286 ..Default::default()
15287 },
15288 );
15289 moves.insert(
15290 Choices::SOLARBLADE,
15291 Choice {
15292 move_id: Choices::SOLARBLADE,
15293 base_power: 125.0,
15294 category: MoveCategory::Physical,
15295 move_type: PokemonType::GRASS,
15296 flags: Flags {
15297 charge: true,
15298 contact: true,
15299 protect: true,
15300 slicing: true,
15301 ..Default::default()
15302 },
15303 ..Default::default()
15304 },
15305 );
15306 moves.insert(
15307 Choices::SONICBOOM,
15308 Choice {
15309 move_id: Choices::SONICBOOM,
15310 accuracy: 90.0,
15311 category: MoveCategory::Special,
15312 move_type: PokemonType::NORMAL,
15313 flags: Flags {
15314 protect: true,
15315 ..Default::default()
15316 },
15317 ..Default::default()
15318 },
15319 );
15320 moves.insert(
15321 Choices::SPACIALREND,
15322 Choice {
15323 move_id: Choices::SPACIALREND,
15324 accuracy: 95.0,
15325 base_power: 100.0,
15326 category: MoveCategory::Special,
15327 move_type: PokemonType::DRAGON,
15328 flags: Flags {
15329 protect: true,
15330 ..Default::default()
15331 },
15332 ..Default::default()
15333 },
15334 );
15335 moves.insert(
15336 Choices::SPARK,
15337 Choice {
15338 move_id: Choices::SPARK,
15339 base_power: 65.0,
15340 category: MoveCategory::Physical,
15341 move_type: PokemonType::ELECTRIC,
15342 flags: Flags {
15343 contact: true,
15344 protect: true,
15345 ..Default::default()
15346 },
15347 secondaries: Some(vec![Secondary {
15348 chance: 30.0,
15349 target: MoveTarget::Opponent,
15350 effect: Effect::Status(PokemonStatus::PARALYZE),
15351 }]),
15352 ..Default::default()
15353 },
15354 );
15355 moves.insert(
15356 Choices::SPARKLINGARIA,
15357 Choice {
15358 move_id: Choices::SPARKLINGARIA,
15359 base_power: 90.0,
15360 category: MoveCategory::Special,
15361 move_type: PokemonType::WATER,
15362 flags: Flags {
15363 protect: true,
15364 sound: true,
15365 ..Default::default()
15366 },
15367 secondaries: Some(vec![Secondary {
15368 chance: 100.0,
15369 target: MoveTarget::Opponent,
15370 effect: Effect::VolatileStatus(PokemonVolatileStatus::SPARKLINGARIA),
15371 }]),
15372 ..Default::default()
15373 },
15374 );
15375 moves.insert(
15376 Choices::SPARKLYSWIRL,
15377 Choice {
15378 move_id: Choices::SPARKLYSWIRL,
15379 accuracy: 85.0,
15380 base_power: 120.0,
15381 category: MoveCategory::Special,
15382 move_type: PokemonType::FAIRY,
15383 flags: Flags {
15384 protect: true,
15385 ..Default::default()
15386 },
15387 ..Default::default()
15388 },
15389 );
15390 moves.insert(
15391 Choices::SPECTRALTHIEF,
15392 Choice {
15393 move_id: Choices::SPECTRALTHIEF,
15394 base_power: 90.0,
15395 category: MoveCategory::Physical,
15396 move_type: PokemonType::GHOST,
15397 flags: Flags {
15398 contact: true,
15399 protect: true,
15400 ..Default::default()
15401 },
15402 ..Default::default()
15403 },
15404 );
15405 moves.insert(
15406 Choices::SPEEDSWAP,
15407 Choice {
15408 move_id: Choices::SPEEDSWAP,
15409 move_type: PokemonType::PSYCHIC,
15410 flags: Flags {
15411 protect: true,
15412 ..Default::default()
15413 },
15414 ..Default::default()
15415 },
15416 );
15417 moves.insert(
15418 Choices::SPICYEXTRACT,
15419 Choice {
15420 move_id: Choices::SPICYEXTRACT,
15421 move_type: PokemonType::GRASS,
15422 flags: Flags {
15423 protect: true,
15424 reflectable: true,
15425 ..Default::default()
15426 },
15427 boost: Some(Boost {
15428 target: MoveTarget::Opponent,
15429 boosts: StatBoosts {
15430 attack: 2,
15431 defense: -2,
15432 special_attack: 0,
15433 special_defense: 0,
15434 speed: 0,
15435 accuracy: 0,
15436 },
15437 }),
15438 ..Default::default()
15439 },
15440 );
15441 moves.insert(
15442 Choices::SPIDERWEB,
15443 Choice {
15444 move_id: Choices::SPIDERWEB,
15445 move_type: PokemonType::BUG,
15446 flags: Flags {
15447 protect: true,
15448 reflectable: true,
15449 ..Default::default()
15450 },
15451 ..Default::default()
15452 },
15453 );
15454 moves.insert(
15455 Choices::SPIKECANNON,
15456 Choice {
15457 move_id: Choices::SPIKECANNON,
15458 base_power: 20.0,
15459 category: MoveCategory::Physical,
15460 move_type: PokemonType::NORMAL,
15461 flags: Flags {
15462 protect: true,
15463 ..Default::default()
15464 },
15465 ..Default::default()
15466 },
15467 );
15468 moves.insert(
15469 Choices::SPIKES,
15470 Choice {
15471 move_id: Choices::SPIKES,
15472 move_type: PokemonType::GROUND,
15473 flags: Flags {
15474 reflectable: true,
15475 ..Default::default()
15476 },
15477 side_condition: Some(SideCondition {
15478 target: MoveTarget::Opponent,
15479 condition: PokemonSideCondition::Spikes,
15480 }),
15481 ..Default::default()
15482 },
15483 );
15484 moves.insert(
15485 Choices::SPIKYSHIELD,
15486 Choice {
15487 move_id: Choices::SPIKYSHIELD,
15488 priority: 4,
15489 target: MoveTarget::User,
15490 move_type: PokemonType::GRASS,
15491 flags: Flags {
15492 ..Default::default()
15493 },
15494 volatile_status: Some(VolatileStatus {
15495 target: MoveTarget::User,
15496 volatile_status: PokemonVolatileStatus::SPIKYSHIELD,
15497 }),
15498 ..Default::default()
15499 },
15500 );
15501 moves.insert(
15502 Choices::SPINOUT,
15503 Choice {
15504 move_id: Choices::SPINOUT,
15505 base_power: 100.0,
15506 category: MoveCategory::Physical,
15507 move_type: PokemonType::STEEL,
15508 flags: Flags {
15509 contact: true,
15510 protect: true,
15511 ..Default::default()
15512 },
15513 boost: Some(Boost {
15514 target: MoveTarget::User,
15515 boosts: StatBoosts {
15516 attack: 0,
15517 defense: 0,
15518 special_attack: 0,
15519 special_defense: 0,
15520 speed: -2,
15521 accuracy: 0,
15522 },
15523 }),
15524 ..Default::default()
15525 },
15526 );
15527 moves.insert(
15528 Choices::SPIRITBREAK,
15529 Choice {
15530 move_id: Choices::SPIRITBREAK,
15531 base_power: 75.0,
15532 category: MoveCategory::Physical,
15533 move_type: PokemonType::FAIRY,
15534 flags: Flags {
15535 contact: true,
15536 protect: true,
15537 ..Default::default()
15538 },
15539 secondaries: Some(vec![Secondary {
15540 chance: 100.0,
15541 target: MoveTarget::Opponent,
15542 effect: Effect::Boost(StatBoosts {
15543 attack: 0,
15544 defense: 0,
15545 special_attack: -1,
15546 special_defense: 0,
15547 speed: 0,
15548 accuracy: 0,
15549 }),
15550 }]),
15551 ..Default::default()
15552 },
15553 );
15554 moves.insert(
15555 Choices::SPIRITSHACKLE,
15556 Choice {
15557 move_id: Choices::SPIRITSHACKLE,
15558 base_power: 80.0,
15559 category: MoveCategory::Physical,
15560 move_type: PokemonType::GHOST,
15561 flags: Flags {
15562 protect: true,
15563 ..Default::default()
15564 },
15565 ..Default::default()
15566 },
15567 );
15568 moves.insert(
15569 Choices::SPITE,
15570 Choice {
15571 move_id: Choices::SPITE,
15572 move_type: PokemonType::GHOST,
15573 flags: Flags {
15574 protect: true,
15575 reflectable: true,
15576 ..Default::default()
15577 },
15578 ..Default::default()
15579 },
15580 );
15581 moves.insert(
15582 Choices::SPITUP,
15583 Choice {
15584 move_id: Choices::SPITUP,
15585 category: MoveCategory::Special,
15586 move_type: PokemonType::NORMAL,
15587 flags: Flags {
15588 protect: true,
15589 ..Default::default()
15590 },
15591 ..Default::default()
15592 },
15593 );
15594 moves.insert(
15595 Choices::SPLASH,
15596 Choice {
15597 move_id: Choices::SPLASH,
15598 target: MoveTarget::User,
15599 move_type: PokemonType::NORMAL,
15600 flags: Flags {
15601 ..Default::default()
15602 },
15603 ..Default::default()
15604 },
15605 );
15606 moves.insert(
15607 Choices::SPLISHYSPLASH,
15608 Choice {
15609 move_id: Choices::SPLISHYSPLASH,
15610 base_power: 90.0,
15611 category: MoveCategory::Special,
15612 move_type: PokemonType::WATER,
15613 flags: Flags {
15614 protect: true,
15615 ..Default::default()
15616 },
15617 secondaries: Some(vec![Secondary {
15618 chance: 30.0,
15619 target: MoveTarget::Opponent,
15620 effect: Effect::Status(PokemonStatus::PARALYZE),
15621 }]),
15622 ..Default::default()
15623 },
15624 );
15625 moves.insert(
15626 Choices::SPORE,
15627 Choice {
15628 move_id: Choices::SPORE,
15629 status: Some(Status {
15630 target: MoveTarget::Opponent,
15631 status: PokemonStatus::SLEEP,
15632 }),
15633 move_type: PokemonType::GRASS,
15634 flags: Flags {
15635 powder: true,
15636 protect: true,
15637 reflectable: true,
15638 ..Default::default()
15639 },
15640 ..Default::default()
15641 },
15642 );
15643 moves.insert(
15644 Choices::SPOTLIGHT,
15645 Choice {
15646 move_id: Choices::SPOTLIGHT,
15647 priority: 3,
15648 move_type: PokemonType::NORMAL,
15649 flags: Flags {
15650 protect: true,
15651 reflectable: true,
15652 ..Default::default()
15653 },
15654 volatile_status: Some(VolatileStatus {
15655 target: MoveTarget::Opponent,
15656 volatile_status: PokemonVolatileStatus::SPOTLIGHT,
15657 }),
15658 ..Default::default()
15659 },
15660 );
15661 moves.insert(
15662 Choices::SPRINGTIDESTORM,
15663 Choice {
15664 move_id: Choices::SPRINGTIDESTORM,
15665 accuracy: 80.0,
15666 base_power: 100.0,
15667 category: MoveCategory::Special,
15668 move_type: PokemonType::FAIRY,
15669 flags: Flags {
15670 protect: true,
15671 wind: true,
15672 ..Default::default()
15673 },
15674 secondaries: Some(vec![Secondary {
15675 chance: 30.0,
15676 target: MoveTarget::Opponent,
15677 effect: Effect::Boost(StatBoosts {
15678 attack: -1,
15679 defense: 0,
15680 special_attack: 0,
15681 special_defense: 0,
15682 speed: 0,
15683 accuracy: 0,
15684 }),
15685 }]),
15686 ..Default::default()
15687 },
15688 );
15689 moves.insert(
15690 Choices::STEALTHROCK,
15691 Choice {
15692 move_id: Choices::STEALTHROCK,
15693 move_type: PokemonType::ROCK,
15694 flags: Flags {
15695 reflectable: true,
15696 ..Default::default()
15697 },
15698 side_condition: Some(SideCondition {
15699 target: MoveTarget::Opponent,
15700 condition: PokemonSideCondition::Stealthrock,
15701 }),
15702 ..Default::default()
15703 },
15704 );
15705 moves.insert(
15706 Choices::STEAMERUPTION,
15707 Choice {
15708 move_id: Choices::STEAMERUPTION,
15709 accuracy: 95.0,
15710 base_power: 110.0,
15711 category: MoveCategory::Special,
15712 move_type: PokemonType::WATER,
15713 flags: Flags {
15714 protect: true,
15715 ..Default::default()
15716 },
15717 secondaries: Some(vec![Secondary {
15718 chance: 30.0,
15719 target: MoveTarget::Opponent,
15720 effect: Effect::Status(PokemonStatus::BURN),
15721 }]),
15722 ..Default::default()
15723 },
15724 );
15725 moves.insert(
15726 Choices::STEAMROLLER,
15727 Choice {
15728 move_id: Choices::STEAMROLLER,
15729 base_power: 65.0,
15730 category: MoveCategory::Physical,
15731 move_type: PokemonType::BUG,
15732 flags: Flags {
15733 contact: true,
15734 protect: true,
15735 ..Default::default()
15736 },
15737 secondaries: Some(vec![Secondary {
15738 chance: 30.0,
15739 target: MoveTarget::Opponent,
15740 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15741 }]),
15742 ..Default::default()
15743 },
15744 );
15745 moves.insert(
15746 Choices::STEELBEAM,
15747 Choice {
15748 move_id: Choices::STEELBEAM,
15749 accuracy: 95.0,
15750 base_power: 140.0,
15751 category: MoveCategory::Special,
15752 move_type: PokemonType::STEEL,
15753 flags: Flags {
15754 protect: true,
15755 ..Default::default()
15756 },
15757 heal: Some(Heal {
15758 target: MoveTarget::User,
15759 amount: -0.5,
15760 }),
15761 ..Default::default()
15762 },
15763 );
15764 moves.insert(
15765 Choices::STEELROLLER,
15766 Choice {
15767 move_id: Choices::STEELROLLER,
15768 base_power: 130.0,
15769 category: MoveCategory::Physical,
15770 move_type: PokemonType::STEEL,
15771 flags: Flags {
15772 contact: true,
15773 protect: true,
15774 ..Default::default()
15775 },
15776 ..Default::default()
15777 },
15778 );
15779 moves.insert(
15780 Choices::STEELWING,
15781 Choice {
15782 move_id: Choices::STEELWING,
15783 accuracy: 90.0,
15784 base_power: 70.0,
15785 category: MoveCategory::Physical,
15786 move_type: PokemonType::STEEL,
15787 flags: Flags {
15788 contact: true,
15789 protect: true,
15790 ..Default::default()
15791 },
15792 secondaries: Some(vec![Secondary {
15793 chance: 10.0,
15794 target: MoveTarget::User,
15795 effect: Effect::Boost(StatBoosts {
15796 attack: 0,
15797 defense: 1,
15798 special_attack: 0,
15799 special_defense: 0,
15800 speed: 0,
15801 accuracy: 0,
15802 }),
15803 }]),
15804 ..Default::default()
15805 },
15806 );
15807 moves.insert(
15808 Choices::STICKYWEB,
15809 Choice {
15810 move_id: Choices::STICKYWEB,
15811 move_type: PokemonType::BUG,
15812 flags: Flags {
15813 reflectable: true,
15814 ..Default::default()
15815 },
15816 side_condition: Some(SideCondition {
15817 target: MoveTarget::Opponent,
15818 condition: PokemonSideCondition::StickyWeb,
15819 }),
15820 ..Default::default()
15821 },
15822 );
15823 moves.insert(
15824 Choices::STOCKPILE,
15825 Choice {
15826 move_id: Choices::STOCKPILE,
15827 target: MoveTarget::User,
15828 move_type: PokemonType::NORMAL,
15829 flags: Flags {
15830 ..Default::default()
15831 },
15832 volatile_status: Some(VolatileStatus {
15833 target: MoveTarget::User,
15834 volatile_status: PokemonVolatileStatus::STOCKPILE,
15835 }),
15836 ..Default::default()
15837 },
15838 );
15839 moves.insert(
15840 Choices::STOMP,
15841 Choice {
15842 move_id: Choices::STOMP,
15843 base_power: 65.0,
15844 category: MoveCategory::Physical,
15845 move_type: PokemonType::NORMAL,
15846 flags: Flags {
15847 contact: true,
15848 protect: true,
15849 ..Default::default()
15850 },
15851 secondaries: Some(vec![Secondary {
15852 chance: 30.0,
15853 target: MoveTarget::Opponent,
15854 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
15855 }]),
15856 ..Default::default()
15857 },
15858 );
15859 moves.insert(
15860 Choices::STOMPINGTANTRUM,
15861 Choice {
15862 move_id: Choices::STOMPINGTANTRUM,
15863 base_power: 75.0,
15864 category: MoveCategory::Physical,
15865 move_type: PokemonType::GROUND,
15866 flags: Flags {
15867 contact: true,
15868 protect: true,
15869 ..Default::default()
15870 },
15871 ..Default::default()
15872 },
15873 );
15874 moves.insert(
15875 Choices::STONEAXE,
15876 Choice {
15877 move_id: Choices::STONEAXE,
15878 accuracy: 90.0,
15879 base_power: 65.0,
15880 category: MoveCategory::Physical,
15881 move_type: PokemonType::ROCK,
15882 flags: Flags {
15883 contact: true,
15884 protect: true,
15885 slicing: true,
15886 ..Default::default()
15887 },
15888 side_condition: Some(SideCondition {
15889 target: MoveTarget::Opponent,
15890 condition: PokemonSideCondition::Stealthrock,
15891 }),
15892 ..Default::default()
15893 },
15894 );
15895 moves.insert(
15896 Choices::STONEEDGE,
15897 Choice {
15898 move_id: Choices::STONEEDGE,
15899 accuracy: 80.0,
15900 base_power: 100.0,
15901 category: MoveCategory::Physical,
15902 move_type: PokemonType::ROCK,
15903 flags: Flags {
15904 protect: true,
15905 ..Default::default()
15906 },
15907 ..Default::default()
15908 },
15909 );
15910 moves.insert(
15911 Choices::STOREDPOWER,
15912 Choice {
15913 move_id: Choices::STOREDPOWER,
15914 base_power: 20.0,
15915 category: MoveCategory::Special,
15916 move_type: PokemonType::PSYCHIC,
15917 flags: Flags {
15918 protect: true,
15919 ..Default::default()
15920 },
15921 ..Default::default()
15922 },
15923 );
15924 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
15925 moves.insert(
15926 Choices::STORMTHROW,
15927 Choice {
15928 move_id: Choices::STORMTHROW,
15929 base_power: 40.0,
15930 category: MoveCategory::Physical,
15931 move_type: PokemonType::FIGHTING,
15932 flags: Flags {
15933 contact: true,
15934 protect: true,
15935 ..Default::default()
15936 },
15937 ..Default::default()
15938 },
15939 );
15940 } else {
15941 moves.insert(
15942 Choices::STORMTHROW,
15943 Choice {
15944 move_id: Choices::STORMTHROW,
15945 base_power: 60.0,
15946 category: MoveCategory::Physical,
15947 move_type: PokemonType::FIGHTING,
15948 flags: Flags {
15949 contact: true,
15950 protect: true,
15951 ..Default::default()
15952 },
15953 ..Default::default()
15954 },
15955 );
15956 }
15957 moves.insert(
15958 Choices::STRANGESTEAM,
15959 Choice {
15960 move_id: Choices::STRANGESTEAM,
15961 accuracy: 95.0,
15962 base_power: 90.0,
15963 category: MoveCategory::Special,
15964 move_type: PokemonType::FAIRY,
15965 flags: Flags {
15966 protect: true,
15967 ..Default::default()
15968 },
15969 secondaries: Some(vec![Secondary {
15970 chance: 20.0,
15971 target: MoveTarget::Opponent,
15972 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
15973 }]),
15974 ..Default::default()
15975 },
15976 );
15977 moves.insert(
15978 Choices::STRENGTH,
15979 Choice {
15980 move_id: Choices::STRENGTH,
15981 base_power: 80.0,
15982 category: MoveCategory::Physical,
15983 move_type: PokemonType::NORMAL,
15984 flags: Flags {
15985 contact: true,
15986 protect: true,
15987 ..Default::default()
15988 },
15989 ..Default::default()
15990 },
15991 );
15992 moves.insert(
15993 Choices::STRENGTHSAP,
15994 Choice {
15995 move_id: Choices::STRENGTHSAP,
15996 move_type: PokemonType::GRASS,
15997 flags: Flags {
15998 heal: true,
15999 protect: true,
16000 reflectable: true,
16001 ..Default::default()
16002 },
16003 ..Default::default()
16004 },
16005 );
16006 moves.insert(
16007 Choices::STRINGSHOT,
16008 Choice {
16009 move_id: Choices::STRINGSHOT,
16010 accuracy: 95.0,
16011 move_type: PokemonType::BUG,
16012 flags: Flags {
16013 protect: true,
16014 reflectable: true,
16015 ..Default::default()
16016 },
16017 boost: Some(Boost {
16018 target: MoveTarget::Opponent,
16019 boosts: StatBoosts {
16020 attack: 0,
16021 defense: 0,
16022 special_attack: 0,
16023 special_defense: 0,
16024 speed: -2,
16025 accuracy: 0,
16026 },
16027 }),
16028 ..Default::default()
16029 },
16030 );
16031 moves.insert(
16032 Choices::STRUGGLE,
16033 Choice {
16034 move_id: Choices::STRUGGLE,
16035 base_power: 50.0,
16036 category: MoveCategory::Physical,
16037 move_type: PokemonType::NORMAL,
16038 flags: Flags {
16039 contact: true,
16040 protect: true,
16041 ..Default::default()
16042 },
16043 ..Default::default()
16044 },
16045 );
16046 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16047 moves.insert(
16048 Choices::STRUGGLEBUG,
16049 Choice {
16050 move_id: Choices::STRUGGLEBUG,
16051 base_power: 30.0,
16052 category: MoveCategory::Special,
16053 move_type: PokemonType::BUG,
16054 flags: Flags {
16055 protect: true,
16056 ..Default::default()
16057 },
16058 secondaries: Some(vec![Secondary {
16059 chance: 100.0,
16060 target: MoveTarget::Opponent,
16061 effect: Effect::Boost(StatBoosts {
16062 attack: 0,
16063 defense: 0,
16064 special_attack: -1,
16065 special_defense: 0,
16066 speed: 0,
16067 accuracy: 0,
16068 }),
16069 }]),
16070 ..Default::default()
16071 },
16072 );
16073 } else {
16074 moves.insert(
16075 Choices::STRUGGLEBUG,
16076 Choice {
16077 move_id: Choices::STRUGGLEBUG,
16078 base_power: 50.0,
16079 category: MoveCategory::Special,
16080 move_type: PokemonType::BUG,
16081 flags: Flags {
16082 protect: true,
16083 ..Default::default()
16084 },
16085 secondaries: Some(vec![Secondary {
16086 chance: 100.0,
16087 target: MoveTarget::Opponent,
16088 effect: Effect::Boost(StatBoosts {
16089 attack: 0,
16090 defense: 0,
16091 special_attack: -1,
16092 special_defense: 0,
16093 speed: 0,
16094 accuracy: 0,
16095 }),
16096 }]),
16097 ..Default::default()
16098 },
16099 );
16100 }
16101 moves.insert(
16102 Choices::STUFFCHEEKS,
16103 Choice {
16104 move_id: Choices::STUFFCHEEKS,
16105 target: MoveTarget::User,
16106 move_type: PokemonType::NORMAL,
16107 flags: Flags {
16108 ..Default::default()
16109 },
16110 ..Default::default()
16111 },
16112 );
16113 moves.insert(
16114 Choices::STUNSPORE,
16115 Choice {
16116 move_id: Choices::STUNSPORE,
16117 accuracy: 75.0,
16118 status: Some(Status {
16119 target: MoveTarget::Opponent,
16120 status: PokemonStatus::PARALYZE,
16121 }),
16122 move_type: PokemonType::GRASS,
16123 flags: Flags {
16124 powder: true,
16125 protect: true,
16126 reflectable: true,
16127 ..Default::default()
16128 },
16129 ..Default::default()
16130 },
16131 );
16132 moves.insert(
16133 Choices::SUBMISSION,
16134 Choice {
16135 move_id: Choices::SUBMISSION,
16136 accuracy: 80.0,
16137 base_power: 80.0,
16138 category: MoveCategory::Physical,
16139 move_type: PokemonType::FIGHTING,
16140 flags: Flags {
16141 contact: true,
16142 protect: true,
16143 ..Default::default()
16144 },
16145 recoil: Some(0.25),
16146 ..Default::default()
16147 },
16148 );
16149 moves.insert(
16150 Choices::SUBSTITUTE,
16151 Choice {
16152 move_id: Choices::SUBSTITUTE,
16153 target: MoveTarget::User,
16154 move_type: PokemonType::NORMAL,
16155 flags: Flags {
16156 ..Default::default()
16157 },
16158 volatile_status: Some(VolatileStatus {
16159 target: MoveTarget::User,
16160 volatile_status: PokemonVolatileStatus::SUBSTITUTE,
16161 }),
16162 ..Default::default()
16163 },
16164 );
16165 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
16166 moves.insert(
16167 Choices::SUCKERPUNCH,
16168 Choice {
16169 move_id: Choices::SUCKERPUNCH,
16170 base_power: 80.0,
16171 category: MoveCategory::Physical,
16172 priority: 1,
16173 move_type: PokemonType::DARK,
16174 flags: Flags {
16175 contact: true,
16176 protect: true,
16177 ..Default::default()
16178 },
16179 ..Default::default()
16180 },
16181 );
16182 } else {
16183 moves.insert(
16184 Choices::SUCKERPUNCH,
16185 Choice {
16186 move_id: Choices::SUCKERPUNCH,
16187 base_power: 70.0,
16188 category: MoveCategory::Physical,
16189 priority: 1,
16190 move_type: PokemonType::DARK,
16191 flags: Flags {
16192 contact: true,
16193 protect: true,
16194 ..Default::default()
16195 },
16196 ..Default::default()
16197 },
16198 );
16199 }
16200 moves.insert(
16201 Choices::SUNNYDAY,
16202 Choice {
16203 move_id: Choices::SUNNYDAY,
16204 move_type: PokemonType::FIRE,
16205 flags: Flags {
16206 ..Default::default()
16207 },
16208 ..Default::default()
16209 },
16210 );
16211 moves.insert(
16212 Choices::SUNSTEELSTRIKE,
16213 Choice {
16214 move_id: Choices::SUNSTEELSTRIKE,
16215 base_power: 100.0,
16216 category: MoveCategory::Physical,
16217 move_type: PokemonType::STEEL,
16218 flags: Flags {
16219 contact: true,
16220 protect: true,
16221 ..Default::default()
16222 },
16223 ..Default::default()
16224 },
16225 );
16226 moves.insert(
16227 Choices::SUPERCELLSLAM,
16228 Choice {
16229 accuracy: 95.0,
16230 move_id: Choices::SUPERCELLSLAM,
16231 base_power: 100.0,
16232 category: MoveCategory::Physical,
16233 move_type: PokemonType::ELECTRIC,
16234 flags: Flags {
16235 contact: true,
16236 protect: true,
16237 ..Default::default()
16238 },
16239 crash: Some(0.5),
16240 ..Default::default()
16241 },
16242 );
16243 moves.insert(
16244 Choices::SUPERFANG,
16245 Choice {
16246 move_id: Choices::SUPERFANG,
16247 accuracy: 90.0,
16248 category: MoveCategory::Physical,
16249 move_type: PokemonType::NORMAL,
16250 flags: Flags {
16251 contact: true,
16252 protect: true,
16253 ..Default::default()
16254 },
16255 ..Default::default()
16256 },
16257 );
16258 moves.insert(
16259 Choices::SUPERPOWER,
16260 Choice {
16261 move_id: Choices::SUPERPOWER,
16262 base_power: 120.0,
16263 category: MoveCategory::Physical,
16264 move_type: PokemonType::FIGHTING,
16265 flags: Flags {
16266 contact: true,
16267 protect: true,
16268 ..Default::default()
16269 },
16270 boost: Some(Boost {
16271 target: MoveTarget::User,
16272 boosts: StatBoosts {
16273 attack: -1,
16274 defense: -1,
16275 special_attack: 0,
16276 special_defense: 0,
16277 speed: 0,
16278 accuracy: 0,
16279 },
16280 }),
16281 ..Default::default()
16282 },
16283 );
16284 moves.insert(
16285 Choices::SUPERSONIC,
16286 Choice {
16287 move_id: Choices::SUPERSONIC,
16288 accuracy: 55.0,
16289 move_type: PokemonType::NORMAL,
16290 flags: Flags {
16291 protect: true,
16292 reflectable: true,
16293 sound: true,
16294 ..Default::default()
16295 },
16296 volatile_status: Some(VolatileStatus {
16297 target: MoveTarget::Opponent,
16298 volatile_status: PokemonVolatileStatus::CONFUSION,
16299 }),
16300 ..Default::default()
16301 },
16302 );
16303 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16304 moves.insert(
16305 Choices::SURF,
16306 Choice {
16307 move_id: Choices::SURF,
16308 base_power: 95.0,
16309 category: MoveCategory::Special,
16310 move_type: PokemonType::WATER,
16311 flags: Flags {
16312 protect: true,
16313 ..Default::default()
16314 },
16315 ..Default::default()
16316 },
16317 );
16318 } else {
16319 moves.insert(
16320 Choices::SURF,
16321 Choice {
16322 move_id: Choices::SURF,
16323 base_power: 90.0,
16324 category: MoveCategory::Special,
16325 move_type: PokemonType::WATER,
16326 flags: Flags {
16327 protect: true,
16328 ..Default::default()
16329 },
16330 ..Default::default()
16331 },
16332 );
16333 }
16334 moves.insert(
16335 Choices::SURGINGSTRIKES,
16336 Choice {
16337 move_id: Choices::SURGINGSTRIKES,
16338 base_power: 25.0,
16339 category: MoveCategory::Physical,
16340 move_type: PokemonType::WATER,
16341 flags: Flags {
16342 contact: true,
16343 protect: true,
16344 punch: true,
16345 ..Default::default()
16346 },
16347 ..Default::default()
16348 },
16349 );
16350
16351 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
16352 moves.insert(
16353 Choices::SWAGGER,
16354 Choice {
16355 move_id: Choices::SWAGGER,
16356 accuracy: 85.0,
16357 move_type: PokemonType::NORMAL,
16358 flags: Flags {
16359 protect: true,
16360 reflectable: true,
16361 ..Default::default()
16362 },
16363 boost: Some(Boost {
16364 target: MoveTarget::Opponent,
16365 boosts: StatBoosts {
16366 attack: 2,
16367 defense: 0,
16368 special_attack: 0,
16369 special_defense: 0,
16370 speed: 0,
16371 accuracy: 0,
16372 },
16373 }),
16374 volatile_status: Some(VolatileStatus {
16375 target: MoveTarget::Opponent,
16376 volatile_status: PokemonVolatileStatus::CONFUSION,
16377 }),
16378 ..Default::default()
16379 },
16380 );
16381 } else {
16382 moves.insert(
16383 Choices::SWAGGER,
16384 Choice {
16385 move_id: Choices::SWAGGER,
16386 accuracy: 90.0,
16387 move_type: PokemonType::NORMAL,
16388 flags: Flags {
16389 protect: true,
16390 reflectable: true,
16391 ..Default::default()
16392 },
16393 boost: Some(Boost {
16394 target: MoveTarget::Opponent,
16395 boosts: StatBoosts {
16396 attack: 2,
16397 defense: 0,
16398 special_attack: 0,
16399 special_defense: 0,
16400 speed: 0,
16401 accuracy: 0,
16402 },
16403 }),
16404 volatile_status: Some(VolatileStatus {
16405 target: MoveTarget::Opponent,
16406 volatile_status: PokemonVolatileStatus::CONFUSION,
16407 }),
16408 ..Default::default()
16409 },
16410 );
16411 }
16412 moves.insert(
16413 Choices::SWALLOW,
16414 Choice {
16415 move_id: Choices::SWALLOW,
16416 target: MoveTarget::User,
16417 move_type: PokemonType::NORMAL,
16418 flags: Flags {
16419 heal: true,
16420 ..Default::default()
16421 },
16422 ..Default::default()
16423 },
16424 );
16425 moves.insert(
16426 Choices::SWEETKISS,
16427 Choice {
16428 move_id: Choices::SWEETKISS,
16429 accuracy: 75.0,
16430 move_type: PokemonType::FAIRY,
16431 flags: Flags {
16432 protect: true,
16433 reflectable: true,
16434 ..Default::default()
16435 },
16436 volatile_status: Some(VolatileStatus {
16437 target: MoveTarget::Opponent,
16438 volatile_status: PokemonVolatileStatus::CONFUSION,
16439 }),
16440 ..Default::default()
16441 },
16442 );
16443 moves.insert(
16444 Choices::SWEETSCENT,
16445 Choice {
16446 move_id: Choices::SWEETSCENT,
16447 move_type: PokemonType::NORMAL,
16448 flags: Flags {
16449 protect: true,
16450 reflectable: true,
16451 ..Default::default()
16452 },
16453 boost: Some(Boost {
16454 target: MoveTarget::Opponent,
16455 boosts: StatBoosts {
16456 attack: 0,
16457 defense: 0,
16458 special_attack: 0,
16459 special_defense: 0,
16460 speed: 0,
16461 accuracy: 0,
16462 },
16463 }),
16464 ..Default::default()
16465 },
16466 );
16467 moves.insert(
16468 Choices::SWIFT,
16469 Choice {
16470 move_id: Choices::SWIFT,
16471 base_power: 60.0,
16472 category: MoveCategory::Special,
16473 move_type: PokemonType::NORMAL,
16474 flags: Flags {
16475 protect: true,
16476 ..Default::default()
16477 },
16478 ..Default::default()
16479 },
16480 );
16481 moves.insert(
16482 Choices::SWITCHEROO,
16483 Choice {
16484 move_id: Choices::SWITCHEROO,
16485 move_type: PokemonType::DARK,
16486 flags: Flags {
16487 protect: true,
16488 ..Default::default()
16489 },
16490 ..Default::default()
16491 },
16492 );
16493 moves.insert(
16494 Choices::SWORDSDANCE,
16495 Choice {
16496 move_id: Choices::SWORDSDANCE,
16497 target: MoveTarget::User,
16498 move_type: PokemonType::NORMAL,
16499 flags: Flags {
16500 ..Default::default()
16501 },
16502 boost: Some(Boost {
16503 target: MoveTarget::User,
16504 boosts: StatBoosts {
16505 attack: 2,
16506 defense: 0,
16507 special_attack: 0,
16508 special_defense: 0,
16509 speed: 0,
16510 accuracy: 0,
16511 },
16512 }),
16513 ..Default::default()
16514 },
16515 );
16516 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16517 moves.insert(
16518 Choices::SYNCHRONOISE,
16519 Choice {
16520 move_id: Choices::SYNCHRONOISE,
16521 base_power: 70.0,
16522 category: MoveCategory::Special,
16523 move_type: PokemonType::PSYCHIC,
16524 flags: Flags {
16525 protect: true,
16526 ..Default::default()
16527 },
16528 ..Default::default()
16529 },
16530 );
16531 } else {
16532 moves.insert(
16533 Choices::SYNCHRONOISE,
16534 Choice {
16535 move_id: Choices::SYNCHRONOISE,
16536 base_power: 120.0,
16537 category: MoveCategory::Special,
16538 move_type: PokemonType::PSYCHIC,
16539 flags: Flags {
16540 protect: true,
16541 ..Default::default()
16542 },
16543 ..Default::default()
16544 },
16545 );
16546 }
16547 moves.insert(
16548 Choices::SYNTHESIS,
16549 Choice {
16550 move_id: Choices::SYNTHESIS,
16551 target: MoveTarget::User,
16552 move_type: PokemonType::GRASS,
16553 flags: Flags {
16554 heal: true,
16555 ..Default::default()
16556 },
16557 heal: Some(Heal {
16558 target: MoveTarget::User,
16559 amount: 0.5,
16560 }),
16561 ..Default::default()
16562 },
16563 );
16564 moves.insert(
16565 Choices::SYRUPBOMB,
16566 Choice {
16567 move_id: Choices::SYRUPBOMB,
16568 accuracy: 85.0,
16569 base_power: 60.0,
16570 category: MoveCategory::Special,
16571 move_type: PokemonType::GRASS,
16572 flags: Flags {
16573 bullet: true,
16574 protect: true,
16575 ..Default::default()
16576 },
16577 secondaries: Some(vec![Secondary {
16578 chance: 100.0,
16579 target: MoveTarget::Opponent,
16580 effect: Effect::VolatileStatus(PokemonVolatileStatus::SYRUPBOMB),
16581 }]),
16582 ..Default::default()
16583 },
16584 );
16585 moves.insert(
16586 Choices::TACHYONCUTTER,
16587 Choice {
16588 move_id: Choices::TACHYONCUTTER,
16589 base_power: 50.0,
16590 category: MoveCategory::Special,
16591 move_type: PokemonType::STEEL,
16592 flags: Flags {
16593 protect: true,
16594 slicing: true,
16595 ..Default::default()
16596 },
16597 ..Default::default()
16598 },
16599 );
16600 moves.insert(
16601 Choices::TACKLE,
16602 Choice {
16603 move_id: Choices::TACKLE,
16604 base_power: 40.0,
16605 category: MoveCategory::Physical,
16606 move_type: PokemonType::NORMAL,
16607 flags: Flags {
16608 contact: true,
16609 protect: true,
16610 ..Default::default()
16611 },
16612 ..Default::default()
16613 },
16614 );
16615 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
16616 moves.insert(
16617 Choices::TAILGLOW,
16618 Choice {
16619 move_id: Choices::TAILGLOW,
16620 target: MoveTarget::User,
16621 move_type: PokemonType::BUG,
16622 flags: Flags {
16623 ..Default::default()
16624 },
16625 boost: Some(Boost {
16626 target: MoveTarget::User,
16627 boosts: StatBoosts {
16628 attack: 0,
16629 defense: 0,
16630 special_attack: 2,
16631 special_defense: 0,
16632 speed: 0,
16633 accuracy: 0,
16634 },
16635 }),
16636 ..Default::default()
16637 },
16638 );
16639 } else {
16640 moves.insert(
16641 Choices::TAILGLOW,
16642 Choice {
16643 move_id: Choices::TAILGLOW,
16644 target: MoveTarget::User,
16645 move_type: PokemonType::BUG,
16646 flags: Flags {
16647 ..Default::default()
16648 },
16649 boost: Some(Boost {
16650 target: MoveTarget::User,
16651 boosts: StatBoosts {
16652 attack: 0,
16653 defense: 0,
16654 special_attack: 3,
16655 special_defense: 0,
16656 speed: 0,
16657 accuracy: 0,
16658 },
16659 }),
16660 ..Default::default()
16661 },
16662 );
16663 }
16664 moves.insert(
16665 Choices::TAILSLAP,
16666 Choice {
16667 move_id: Choices::TAILSLAP,
16668 accuracy: 85.0,
16669 base_power: 25.0,
16670 category: MoveCategory::Physical,
16671 move_type: PokemonType::NORMAL,
16672 flags: Flags {
16673 contact: true,
16674 protect: true,
16675 ..Default::default()
16676 },
16677 ..Default::default()
16678 },
16679 );
16680 moves.insert(
16681 Choices::TAILWHIP,
16682 Choice {
16683 move_id: Choices::TAILWHIP,
16684 move_type: PokemonType::NORMAL,
16685 flags: Flags {
16686 protect: true,
16687 reflectable: true,
16688 ..Default::default()
16689 },
16690 boost: Some(Boost {
16691 target: MoveTarget::Opponent,
16692 boosts: StatBoosts {
16693 attack: 0,
16694 defense: -1,
16695 special_attack: 0,
16696 special_defense: 0,
16697 speed: 0,
16698 accuracy: 0,
16699 },
16700 }),
16701 ..Default::default()
16702 },
16703 );
16704 moves.insert(
16705 Choices::TAILWIND,
16706 Choice {
16707 move_id: Choices::TAILWIND,
16708 target: MoveTarget::User,
16709 move_type: PokemonType::FLYING,
16710 flags: Flags {
16711 wind: true,
16712 ..Default::default()
16713 },
16714 side_condition: Some(SideCondition {
16715 target: MoveTarget::User,
16716 condition: PokemonSideCondition::Tailwind,
16717 }),
16718 ..Default::default()
16719 },
16720 );
16721 moves.insert(
16722 Choices::TAKEDOWN,
16723 Choice {
16724 move_id: Choices::TAKEDOWN,
16725 accuracy: 85.0,
16726 base_power: 90.0,
16727 category: MoveCategory::Physical,
16728 move_type: PokemonType::NORMAL,
16729 flags: Flags {
16730 contact: true,
16731 protect: true,
16732 ..Default::default()
16733 },
16734 recoil: Some(0.33),
16735 ..Default::default()
16736 },
16737 );
16738 moves.insert(
16739 Choices::TAKEHEART,
16740 Choice {
16741 move_id: Choices::TAKEHEART,
16742 target: MoveTarget::User,
16743 move_type: PokemonType::PSYCHIC,
16744 flags: Flags {
16745 ..Default::default()
16746 },
16747 ..Default::default()
16748 },
16749 );
16750 moves.insert(
16751 Choices::TARSHOT,
16752 Choice {
16753 move_id: Choices::TARSHOT,
16754 move_type: PokemonType::ROCK,
16755 flags: Flags {
16756 protect: true,
16757 reflectable: true,
16758 ..Default::default()
16759 },
16760 boost: Some(Boost {
16761 target: MoveTarget::Opponent,
16762 boosts: StatBoosts {
16763 attack: 0,
16764 defense: 0,
16765 special_attack: 0,
16766 special_defense: 0,
16767 speed: -1,
16768 accuracy: 0,
16769 },
16770 }),
16771 volatile_status: Some(VolatileStatus {
16772 target: MoveTarget::Opponent,
16773 volatile_status: PokemonVolatileStatus::TARSHOT,
16774 }),
16775 ..Default::default()
16776 },
16777 );
16778 moves.insert(
16779 Choices::TAUNT,
16780 Choice {
16781 move_id: Choices::TAUNT,
16782 move_type: PokemonType::DARK,
16783 flags: Flags {
16784 protect: true,
16785 reflectable: true,
16786 ..Default::default()
16787 },
16788 volatile_status: Some(VolatileStatus {
16789 target: MoveTarget::Opponent,
16790 volatile_status: PokemonVolatileStatus::TAUNT,
16791 }),
16792 ..Default::default()
16793 },
16794 );
16795 moves.insert(
16796 Choices::TEARFULLOOK,
16797 Choice {
16798 move_id: Choices::TEARFULLOOK,
16799 move_type: PokemonType::NORMAL,
16800 flags: Flags {
16801 reflectable: true,
16802 ..Default::default()
16803 },
16804 boost: Some(Boost {
16805 target: MoveTarget::Opponent,
16806 boosts: StatBoosts {
16807 attack: -1,
16808 defense: 0,
16809 special_attack: -1,
16810 special_defense: 0,
16811 speed: 0,
16812 accuracy: 0,
16813 },
16814 }),
16815 ..Default::default()
16816 },
16817 );
16818 moves.insert(
16819 Choices::TEATIME,
16820 Choice {
16821 move_id: Choices::TEATIME,
16822 move_type: PokemonType::NORMAL,
16823 flags: Flags {
16824 ..Default::default()
16825 },
16826 ..Default::default()
16827 },
16828 );
16829 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16830 moves.insert(
16831 Choices::TECHNOBLAST,
16832 Choice {
16833 move_id: Choices::TECHNOBLAST,
16834 base_power: 85.0,
16835 category: MoveCategory::Special,
16836 move_type: PokemonType::NORMAL,
16837 flags: Flags {
16838 protect: true,
16839 ..Default::default()
16840 },
16841 ..Default::default()
16842 },
16843 );
16844 } else {
16845 moves.insert(
16846 Choices::TECHNOBLAST,
16847 Choice {
16848 move_id: Choices::TECHNOBLAST,
16849 base_power: 120.0,
16850 category: MoveCategory::Special,
16851 move_type: PokemonType::NORMAL,
16852 flags: Flags {
16853 protect: true,
16854 ..Default::default()
16855 },
16856 ..Default::default()
16857 },
16858 );
16859 }
16860 moves.insert(
16861 Choices::TEETERDANCE,
16862 Choice {
16863 move_id: Choices::TEETERDANCE,
16864 move_type: PokemonType::NORMAL,
16865 flags: Flags {
16866 protect: true,
16867 ..Default::default()
16868 },
16869 volatile_status: Some(VolatileStatus {
16870 target: MoveTarget::Opponent,
16871 volatile_status: PokemonVolatileStatus::CONFUSION,
16872 }),
16873 ..Default::default()
16874 },
16875 );
16876 moves.insert(
16877 Choices::TELEKINESIS,
16878 Choice {
16879 move_id: Choices::TELEKINESIS,
16880 move_type: PokemonType::PSYCHIC,
16881 flags: Flags {
16882 protect: true,
16883 reflectable: true,
16884 ..Default::default()
16885 },
16886 volatile_status: Some(VolatileStatus {
16887 target: MoveTarget::Opponent,
16888 volatile_status: PokemonVolatileStatus::TELEKINESIS,
16889 }),
16890 ..Default::default()
16891 },
16892 );
16893
16894 if cfg!(feature = "gen9") || cfg!(feature = "gen8") {
16895 moves.insert(
16896 Choices::TELEPORT,
16897 Choice {
16898 move_id: Choices::TELEPORT,
16899 priority: -6,
16900 target: MoveTarget::User,
16901 move_type: PokemonType::PSYCHIC,
16902 flags: Flags {
16903 pivot: true,
16904 ..Default::default()
16905 },
16906 ..Default::default()
16907 },
16908 );
16909 } else {
16910 moves.insert(
16911 Choices::TELEPORT,
16912 Choice {
16913 move_id: Choices::TELEPORT,
16914 priority: 0,
16915 target: MoveTarget::User,
16916 move_type: PokemonType::PSYCHIC,
16917 flags: Flags {
16918 ..Default::default()
16919 },
16920 ..Default::default()
16921 },
16922 );
16923 }
16924 moves.insert(
16925 Choices::TEMPERFLARE,
16926 Choice {
16927 move_id: Choices::TEMPERFLARE,
16928 base_power: 75.0,
16929 category: MoveCategory::Physical,
16930 move_type: PokemonType::FIRE,
16931 flags: Flags {
16932 contact: true,
16933 protect: true,
16934 ..Default::default()
16935 },
16936 ..Default::default()
16937 },
16938 );
16939 moves.insert(
16940 Choices::TERABLAST,
16941 Choice {
16942 move_id: Choices::TERABLAST,
16943 base_power: 80.0,
16944 category: MoveCategory::Special,
16945 move_type: PokemonType::NORMAL,
16946 flags: Flags {
16947 protect: true,
16948 ..Default::default()
16949 },
16950 ..Default::default()
16951 },
16952 );
16953 moves.insert(
16954 Choices::TERASTARSTORM,
16955 Choice {
16956 move_id: Choices::TERASTARSTORM,
16957 base_power: 120.0,
16958 category: MoveCategory::Special,
16959 move_type: PokemonType::NORMAL,
16960 flags: Flags {
16961 protect: true,
16962 ..Default::default()
16963 },
16964 ..Default::default()
16965 },
16966 );
16967 moves.insert(
16968 Choices::TERRAINPULSE,
16969 Choice {
16970 move_id: Choices::TERRAINPULSE,
16971 base_power: 50.0,
16972 category: MoveCategory::Special,
16973 move_type: PokemonType::NORMAL,
16974 flags: Flags {
16975 protect: true,
16976 pulse: true,
16977 ..Default::default()
16978 },
16979 ..Default::default()
16980 },
16981 );
16982 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
16983 moves.insert(
16984 Choices::THIEF,
16985 Choice {
16986 move_id: Choices::THIEF,
16987 base_power: 40.0,
16988 category: MoveCategory::Physical,
16989 move_type: PokemonType::DARK,
16990 flags: Flags {
16991 contact: true,
16992 protect: true,
16993 ..Default::default()
16994 },
16995 ..Default::default()
16996 },
16997 );
16998 } else {
16999 moves.insert(
17000 Choices::THIEF,
17001 Choice {
17002 move_id: Choices::THIEF,
17003 base_power: 60.0,
17004 category: MoveCategory::Physical,
17005 move_type: PokemonType::DARK,
17006 flags: Flags {
17007 contact: true,
17008 protect: true,
17009 ..Default::default()
17010 },
17011 ..Default::default()
17012 },
17013 );
17014 }
17015 moves.insert(
17016 Choices::THOUSANDARROWS,
17017 Choice {
17018 move_id: Choices::THOUSANDARROWS,
17019 base_power: 90.0,
17020 category: MoveCategory::Physical,
17021 move_type: PokemonType::GROUND,
17022 flags: Flags {
17023 protect: true,
17024 ..Default::default()
17025 },
17026 volatile_status: Some(VolatileStatus {
17027 target: MoveTarget::Opponent,
17028 volatile_status: PokemonVolatileStatus::SMACKDOWN,
17029 }),
17030 ..Default::default()
17031 },
17032 );
17033 moves.insert(
17034 Choices::THOUSANDWAVES,
17035 Choice {
17036 move_id: Choices::THOUSANDWAVES,
17037 base_power: 90.0,
17038 category: MoveCategory::Physical,
17039 move_type: PokemonType::GROUND,
17040 flags: Flags {
17041 protect: true,
17042 ..Default::default()
17043 },
17044 ..Default::default()
17045 },
17046 );
17047 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17048 moves.insert(
17049 Choices::THRASH,
17050 Choice {
17051 move_id: Choices::THRASH,
17052 base_power: 90.0,
17053 category: MoveCategory::Physical,
17054 move_type: PokemonType::NORMAL,
17055 flags: Flags {
17056 contact: true,
17057 protect: true,
17058 ..Default::default()
17059 },
17060 volatile_status: Some(VolatileStatus {
17061 target: MoveTarget::User,
17062 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
17063 }),
17064 ..Default::default()
17065 },
17066 );
17067 } else {
17068 moves.insert(
17069 Choices::THRASH,
17070 Choice {
17071 move_id: Choices::THRASH,
17072 base_power: 120.0,
17073 category: MoveCategory::Physical,
17074 move_type: PokemonType::NORMAL,
17075 flags: Flags {
17076 contact: true,
17077 protect: true,
17078 ..Default::default()
17079 },
17080 volatile_status: Some(VolatileStatus {
17081 target: MoveTarget::User,
17082 volatile_status: PokemonVolatileStatus::LOCKEDMOVE,
17083 }),
17084 ..Default::default()
17085 },
17086 );
17087 }
17088 moves.insert(
17089 Choices::THROATCHOP,
17090 Choice {
17091 move_id: Choices::THROATCHOP,
17092 base_power: 80.0,
17093 category: MoveCategory::Physical,
17094 move_type: PokemonType::DARK,
17095 flags: Flags {
17096 contact: true,
17097 protect: true,
17098 ..Default::default()
17099 },
17100 volatile_status: Some(VolatileStatus {
17101 target: MoveTarget::Opponent,
17102 volatile_status: PokemonVolatileStatus::THROATCHOP,
17103 }),
17104 ..Default::default()
17105 },
17106 );
17107 if cfg!(feature = "gen1") {
17108 moves.insert(
17109 Choices::THUNDER,
17110 Choice {
17111 move_id: Choices::THUNDER,
17112 accuracy: 70.0,
17113 base_power: 120.0,
17114 category: MoveCategory::Special,
17115 move_type: PokemonType::ELECTRIC,
17116 flags: Flags {
17117 protect: true,
17118 ..Default::default()
17119 },
17120 secondaries: Some(vec![Secondary {
17121 chance: 10.0,
17122 target: MoveTarget::Opponent,
17123 effect: Effect::Status(PokemonStatus::PARALYZE),
17124 }]),
17125 ..Default::default()
17126 },
17127 );
17128 } else if cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
17129 moves.insert(
17130 Choices::THUNDER,
17131 Choice {
17132 move_id: Choices::THUNDER,
17133 accuracy: 70.0,
17134 base_power: 120.0,
17135 category: MoveCategory::Special,
17136 move_type: PokemonType::ELECTRIC,
17137 flags: Flags {
17138 protect: true,
17139 ..Default::default()
17140 },
17141 secondaries: Some(vec![Secondary {
17142 chance: 30.0,
17143 target: MoveTarget::Opponent,
17144 effect: Effect::Status(PokemonStatus::PARALYZE),
17145 }]),
17146 ..Default::default()
17147 },
17148 );
17149 } else {
17150 moves.insert(
17151 Choices::THUNDER,
17152 Choice {
17153 move_id: Choices::THUNDER,
17154 accuracy: 70.0,
17155 base_power: 110.0,
17156 category: MoveCategory::Special,
17157 move_type: PokemonType::ELECTRIC,
17158 flags: Flags {
17159 protect: true,
17160 ..Default::default()
17161 },
17162 secondaries: Some(vec![Secondary {
17163 chance: 30.0,
17164 target: MoveTarget::Opponent,
17165 effect: Effect::Status(PokemonStatus::PARALYZE),
17166 }]),
17167 ..Default::default()
17168 },
17169 );
17170 }
17171 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
17172 moves.insert(
17173 Choices::THUNDERBOLT,
17174 Choice {
17175 move_id: Choices::THUNDERBOLT,
17176 base_power: 95.0,
17177 category: MoveCategory::Special,
17178 move_type: PokemonType::ELECTRIC,
17179 flags: Flags {
17180 protect: true,
17181 ..Default::default()
17182 },
17183 secondaries: Some(vec![Secondary {
17184 chance: 10.0,
17185 target: MoveTarget::Opponent,
17186 effect: Effect::Status(PokemonStatus::PARALYZE),
17187 }]),
17188 ..Default::default()
17189 },
17190 );
17191 } else {
17192 moves.insert(
17193 Choices::THUNDERBOLT,
17194 Choice {
17195 move_id: Choices::THUNDERBOLT,
17196 base_power: 90.0,
17197 category: MoveCategory::Special,
17198 move_type: PokemonType::ELECTRIC,
17199 flags: Flags {
17200 protect: true,
17201 ..Default::default()
17202 },
17203 secondaries: Some(vec![Secondary {
17204 chance: 10.0,
17205 target: MoveTarget::Opponent,
17206 effect: Effect::Status(PokemonStatus::PARALYZE),
17207 }]),
17208 ..Default::default()
17209 },
17210 );
17211 }
17212 moves.insert(
17213 Choices::THUNDERCAGE,
17214 Choice {
17215 move_id: Choices::THUNDERCAGE,
17216 accuracy: 90.0,
17217 base_power: 80.0,
17218 category: MoveCategory::Special,
17219 move_type: PokemonType::ELECTRIC,
17220 flags: Flags {
17221 protect: true,
17222 ..Default::default()
17223 },
17224 volatile_status: Some(VolatileStatus {
17225 target: MoveTarget::Opponent,
17226 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
17227 }),
17228 ..Default::default()
17229 },
17230 );
17231 moves.insert(
17232 Choices::THUNDERCLAP,
17233 Choice {
17234 move_id: Choices::THUNDERCLAP,
17235 base_power: 70.0,
17236 priority: 1,
17237 category: MoveCategory::Special,
17238 move_type: PokemonType::ELECTRIC,
17239 flags: Flags {
17240 protect: true,
17241 ..Default::default()
17242 },
17243 ..Default::default()
17244 },
17245 );
17246 moves.insert(
17247 Choices::THUNDERFANG,
17248 Choice {
17249 move_id: Choices::THUNDERFANG,
17250 accuracy: 95.0,
17251 base_power: 65.0,
17252 category: MoveCategory::Physical,
17253 move_type: PokemonType::ELECTRIC,
17254 flags: Flags {
17255 bite: true,
17256 contact: true,
17257 protect: true,
17258 ..Default::default()
17259 },
17260 secondaries: Some(vec![
17261 Secondary {
17262 chance: 10.0,
17263 target: MoveTarget::Opponent,
17264 effect: Effect::Status(PokemonStatus::PARALYZE),
17265 },
17266 Secondary {
17267 chance: 10.0,
17268 target: MoveTarget::Opponent,
17269 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17270 },
17271 ]),
17272 ..Default::default()
17273 },
17274 );
17275 moves.insert(
17276 Choices::THUNDEROUSKICK,
17277 Choice {
17278 move_id: Choices::THUNDEROUSKICK,
17279 base_power: 90.0,
17280 category: MoveCategory::Physical,
17281 move_type: PokemonType::FIGHTING,
17282 flags: Flags {
17283 contact: true,
17284 protect: true,
17285 ..Default::default()
17286 },
17287 secondaries: Some(vec![Secondary {
17288 chance: 100.0,
17289 target: MoveTarget::Opponent,
17290 effect: Effect::Boost(StatBoosts {
17291 attack: 0,
17292 defense: -1,
17293 special_attack: 0,
17294 special_defense: 0,
17295 speed: 0,
17296 accuracy: 0,
17297 }),
17298 }]),
17299 ..Default::default()
17300 },
17301 );
17302 moves.insert(
17303 Choices::THUNDERPUNCH,
17304 Choice {
17305 move_id: Choices::THUNDERPUNCH,
17306 base_power: 75.0,
17307 category: MoveCategory::Physical,
17308 move_type: PokemonType::ELECTRIC,
17309 flags: Flags {
17310 contact: true,
17311 protect: true,
17312 punch: true,
17313 ..Default::default()
17314 },
17315 secondaries: Some(vec![Secondary {
17316 chance: 10.0,
17317 target: MoveTarget::Opponent,
17318 effect: Effect::Status(PokemonStatus::PARALYZE),
17319 }]),
17320 ..Default::default()
17321 },
17322 );
17323 moves.insert(
17324 Choices::THUNDERSHOCK,
17325 Choice {
17326 move_id: Choices::THUNDERSHOCK,
17327 base_power: 40.0,
17328 category: MoveCategory::Special,
17329 move_type: PokemonType::ELECTRIC,
17330 flags: Flags {
17331 protect: true,
17332 ..Default::default()
17333 },
17334 secondaries: Some(vec![Secondary {
17335 chance: 10.0,
17336 target: MoveTarget::Opponent,
17337 effect: Effect::Status(PokemonStatus::PARALYZE),
17338 }]),
17339 ..Default::default()
17340 },
17341 );
17342 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
17343 moves.insert(
17344 Choices::THUNDERWAVE,
17345 Choice {
17346 move_id: Choices::THUNDERWAVE,
17347 accuracy: 100.0,
17348 status: Some(Status {
17349 target: MoveTarget::Opponent,
17350 status: PokemonStatus::PARALYZE,
17351 }),
17352 move_type: PokemonType::ELECTRIC,
17353 flags: Flags {
17354 protect: true,
17355 reflectable: true,
17356 ..Default::default()
17357 },
17358 ..Default::default()
17359 },
17360 );
17361 } else {
17362 moves.insert(
17363 Choices::THUNDERWAVE,
17364 Choice {
17365 move_id: Choices::THUNDERWAVE,
17366 accuracy: 90.0,
17367 status: Some(Status {
17368 target: MoveTarget::Opponent,
17369 status: PokemonStatus::PARALYZE,
17370 }),
17371 move_type: PokemonType::ELECTRIC,
17372 flags: Flags {
17373 protect: true,
17374 reflectable: true,
17375 ..Default::default()
17376 },
17377 ..Default::default()
17378 },
17379 );
17380 }
17381 moves.insert(
17382 Choices::TICKLE,
17383 Choice {
17384 move_id: Choices::TICKLE,
17385 move_type: PokemonType::NORMAL,
17386 flags: Flags {
17387 protect: true,
17388 reflectable: true,
17389 ..Default::default()
17390 },
17391 boost: Some(Boost {
17392 target: MoveTarget::Opponent,
17393 boosts: StatBoosts {
17394 attack: -1,
17395 defense: -1,
17396 special_attack: 0,
17397 special_defense: 0,
17398 speed: 0,
17399 accuracy: 0,
17400 },
17401 }),
17402 ..Default::default()
17403 },
17404 );
17405 moves.insert(
17406 Choices::TIDYUP,
17407 Choice {
17408 move_id: Choices::TIDYUP,
17409 target: MoveTarget::User,
17410 move_type: PokemonType::NORMAL,
17411 flags: Flags {
17412 ..Default::default()
17413 },
17414 boost: Some(Boost {
17415 target: MoveTarget::User,
17416 boosts: StatBoosts {
17417 attack: 1,
17418 defense: 0,
17419 special_attack: 0,
17420 special_defense: 0,
17421 speed: 1,
17422 accuracy: 0,
17423 },
17424 }),
17425 ..Default::default()
17426 },
17427 );
17428 moves.insert(
17429 Choices::TOPSYTURVY,
17430 Choice {
17431 move_id: Choices::TOPSYTURVY,
17432 move_type: PokemonType::DARK,
17433 flags: Flags {
17434 protect: true,
17435 reflectable: true,
17436 ..Default::default()
17437 },
17438 ..Default::default()
17439 },
17440 );
17441 moves.insert(
17442 Choices::TORCHSONG,
17443 Choice {
17444 move_id: Choices::TORCHSONG,
17445 base_power: 80.0,
17446 category: MoveCategory::Special,
17447 move_type: PokemonType::FIRE,
17448 flags: Flags {
17449 protect: true,
17450 sound: true,
17451 ..Default::default()
17452 },
17453 secondaries: Some(vec![Secondary {
17454 chance: 100.0,
17455 target: MoveTarget::User,
17456 effect: Effect::Boost(StatBoosts {
17457 attack: 0,
17458 defense: 0,
17459 special_attack: 1,
17460 special_defense: 0,
17461 speed: 0,
17462 accuracy: 0,
17463 }),
17464 }]),
17465 ..Default::default()
17466 },
17467 );
17468 moves.insert(
17469 Choices::TORMENT,
17470 Choice {
17471 move_id: Choices::TORMENT,
17472 move_type: PokemonType::DARK,
17473 flags: Flags {
17474 protect: true,
17475 reflectable: true,
17476 ..Default::default()
17477 },
17478 volatile_status: Some(VolatileStatus {
17479 target: MoveTarget::Opponent,
17480 volatile_status: PokemonVolatileStatus::TORMENT,
17481 }),
17482 ..Default::default()
17483 },
17484 );
17485 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17486 moves.insert(
17487 Choices::TOXIC,
17488 Choice {
17489 move_id: Choices::TOXIC,
17490 accuracy: 85.0,
17491 status: Some(Status {
17492 target: MoveTarget::Opponent,
17493 status: PokemonStatus::TOXIC,
17494 }),
17495 move_type: PokemonType::POISON,
17496 flags: Flags {
17497 protect: true,
17498 reflectable: true,
17499 ..Default::default()
17500 },
17501 ..Default::default()
17502 },
17503 );
17504 } else {
17505 moves.insert(
17506 Choices::TOXIC,
17507 Choice {
17508 move_id: Choices::TOXIC,
17509 accuracy: 90.0,
17510 status: Some(Status {
17511 target: MoveTarget::Opponent,
17512 status: PokemonStatus::TOXIC,
17513 }),
17514 move_type: PokemonType::POISON,
17515 flags: Flags {
17516 protect: true,
17517 reflectable: true,
17518 ..Default::default()
17519 },
17520 ..Default::default()
17521 },
17522 );
17523 }
17524 moves.insert(
17525 Choices::TOXICSPIKES,
17526 Choice {
17527 move_id: Choices::TOXICSPIKES,
17528 move_type: PokemonType::POISON,
17529 flags: Flags {
17530 reflectable: true,
17531 ..Default::default()
17532 },
17533 side_condition: Some(SideCondition {
17534 target: MoveTarget::Opponent,
17535 condition: PokemonSideCondition::ToxicSpikes,
17536 }),
17537 ..Default::default()
17538 },
17539 );
17540 moves.insert(
17541 Choices::TOXICTHREAD,
17542 Choice {
17543 move_id: Choices::TOXICTHREAD,
17544 status: Some(Status {
17545 target: MoveTarget::Opponent,
17546 status: PokemonStatus::POISON,
17547 }),
17548 move_type: PokemonType::POISON,
17549 flags: Flags {
17550 protect: true,
17551 reflectable: true,
17552 ..Default::default()
17553 },
17554 boost: Some(Boost {
17555 target: MoveTarget::Opponent,
17556 boosts: StatBoosts {
17557 attack: 0,
17558 defense: 0,
17559 special_attack: 0,
17560 special_defense: 0,
17561 speed: -1,
17562 accuracy: 0,
17563 },
17564 }),
17565 ..Default::default()
17566 },
17567 );
17568 moves.insert(
17569 Choices::TRAILBLAZE,
17570 Choice {
17571 move_id: Choices::TRAILBLAZE,
17572 base_power: 50.0,
17573 category: MoveCategory::Physical,
17574 move_type: PokemonType::GRASS,
17575 flags: Flags {
17576 contact: true,
17577 protect: true,
17578 ..Default::default()
17579 },
17580 secondaries: Some(vec![Secondary {
17581 chance: 100.0,
17582 target: MoveTarget::User,
17583 effect: Effect::Boost(StatBoosts {
17584 attack: 0,
17585 defense: 0,
17586 special_attack: 0,
17587 special_defense: 0,
17588 speed: 1,
17589 accuracy: 0,
17590 }),
17591 }]),
17592 ..Default::default()
17593 },
17594 );
17595 moves.insert(
17596 Choices::TRANSFORM,
17597 Choice {
17598 move_id: Choices::TRANSFORM,
17599 move_type: PokemonType::NORMAL,
17600 flags: Flags {
17601 ..Default::default()
17602 },
17603 ..Default::default()
17604 },
17605 );
17606 if cfg!(feature = "gen1") {
17607 moves.insert(
17608 Choices::TRIATTACK,
17609 Choice {
17610 move_id: Choices::TRIATTACK,
17611 base_power: 80.0,
17612 category: MoveCategory::Special,
17613 move_type: PokemonType::NORMAL,
17614 flags: Flags {
17615 protect: true,
17616 ..Default::default()
17617 },
17618 ..Default::default()
17619 },
17620 );
17621 } else {
17622 moves.insert(
17623 Choices::TRIATTACK,
17624 Choice {
17625 move_id: Choices::TRIATTACK,
17626 base_power: 80.0,
17627 category: MoveCategory::Special,
17628 move_type: PokemonType::NORMAL,
17629 flags: Flags {
17630 protect: true,
17631 ..Default::default()
17632 },
17633 secondaries: Some(
17636 vec![
17637 Secondary {
17638 chance: 6.67,
17639 target: MoveTarget::Opponent,
17640 effect: Effect::Status(PokemonStatus::PARALYZE),
17641 },
17642 Secondary {
17643 chance: 6.67,
17644 target: MoveTarget::Opponent,
17645 effect: Effect::Status(PokemonStatus::BURN),
17646 },
17647 Secondary {
17648 chance: 6.67,
17649 target: MoveTarget::Opponent,
17650 effect: Effect::Status(PokemonStatus::FREEZE),
17651 },
17652 ]
17653 ),
17654 ..Default::default()
17655 },
17656 );
17657 }
17658 moves.insert(
17659 Choices::TRICK,
17660 Choice {
17661 move_id: Choices::TRICK,
17662 move_type: PokemonType::PSYCHIC,
17663 flags: Flags {
17664 protect: true,
17665 ..Default::default()
17666 },
17667 ..Default::default()
17668 },
17669 );
17670 moves.insert(
17671 Choices::TRICKORTREAT,
17672 Choice {
17673 move_id: Choices::TRICKORTREAT,
17674 move_type: PokemonType::GHOST,
17675 flags: Flags {
17676 protect: true,
17677 reflectable: true,
17678 ..Default::default()
17679 },
17680 ..Default::default()
17681 },
17682 );
17683 moves.insert(
17684 Choices::TRICKROOM,
17685 Choice {
17686 move_id: Choices::TRICKROOM,
17687 priority: -7,
17688 move_type: PokemonType::PSYCHIC,
17689 flags: Flags {
17690 ..Default::default()
17691 },
17692 ..Default::default()
17693 },
17694 );
17695 moves.insert(
17696 Choices::TRIPLEARROWS,
17697 Choice {
17698 move_id: Choices::TRIPLEARROWS,
17699 base_power: 90.0,
17700 category: MoveCategory::Physical,
17701 move_type: PokemonType::FIGHTING,
17702 flags: Flags {
17703 protect: true,
17704 ..Default::default()
17705 },
17706 secondaries: Some(vec![
17707 Secondary {
17708 chance: 50.0,
17709 target: MoveTarget::Opponent,
17710 effect: Effect::Boost(StatBoosts {
17711 attack: 0,
17712 defense: -1,
17713 special_attack: 0,
17714 special_defense: 0,
17715 speed: 0,
17716 accuracy: 0,
17717 }),
17718 },
17719 Secondary {
17720 chance: 30.0,
17721 target: MoveTarget::Opponent,
17722 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17723 },
17724 ]),
17725 ..Default::default()
17726 },
17727 );
17728 moves.insert(
17729 Choices::TRIPLEAXEL,
17730 Choice {
17731 move_id: Choices::TRIPLEAXEL,
17732 accuracy: 90.0,
17733 base_power: 40.0,
17734 category: MoveCategory::Physical,
17735 move_type: PokemonType::ICE,
17736 flags: Flags {
17737 contact: true,
17738 protect: true,
17739 ..Default::default()
17740 },
17741 ..Default::default()
17742 },
17743 );
17744 moves.insert(
17745 Choices::TRIPLEDIVE,
17746 Choice {
17747 move_id: Choices::TRIPLEDIVE,
17748 accuracy: 95.0,
17749 base_power: 30.0,
17750 category: MoveCategory::Physical,
17751 move_type: PokemonType::WATER,
17752 flags: Flags {
17753 contact: true,
17754 protect: true,
17755 ..Default::default()
17756 },
17757 ..Default::default()
17758 },
17759 );
17760 moves.insert(
17761 Choices::TRIPLEKICK,
17762 Choice {
17763 move_id: Choices::TRIPLEKICK,
17764 accuracy: 90.0,
17765 base_power: 10.0,
17766 category: MoveCategory::Physical,
17767 move_type: PokemonType::FIGHTING,
17768 flags: Flags {
17769 contact: true,
17770 protect: true,
17771 ..Default::default()
17772 },
17773 ..Default::default()
17774 },
17775 );
17776 moves.insert(
17777 Choices::TROPKICK,
17778 Choice {
17779 move_id: Choices::TROPKICK,
17780 base_power: 70.0,
17781 category: MoveCategory::Physical,
17782 move_type: PokemonType::GRASS,
17783 flags: Flags {
17784 contact: true,
17785 protect: true,
17786 ..Default::default()
17787 },
17788 secondaries: Some(vec![Secondary {
17789 chance: 100.0,
17790 target: MoveTarget::Opponent,
17791 effect: Effect::Boost(StatBoosts {
17792 attack: -1,
17793 defense: 0,
17794 special_attack: 0,
17795 special_defense: 0,
17796 speed: 0,
17797 accuracy: 0,
17798 }),
17799 }]),
17800 ..Default::default()
17801 },
17802 );
17803 moves.insert(
17804 Choices::TRUMPCARD,
17805 Choice {
17806 move_id: Choices::TRUMPCARD,
17807 category: MoveCategory::Special,
17808 move_type: PokemonType::NORMAL,
17809 flags: Flags {
17810 contact: true,
17811 protect: true,
17812 ..Default::default()
17813 },
17814 ..Default::default()
17815 },
17816 );
17817 moves.insert(
17818 Choices::TWINBEAM,
17819 Choice {
17820 move_id: Choices::TWINBEAM,
17821 base_power: 40.0,
17822 category: MoveCategory::Special,
17823 move_type: PokemonType::PSYCHIC,
17824 flags: Flags {
17825 protect: true,
17826 ..Default::default()
17827 },
17828 ..Default::default()
17829 },
17830 );
17831 moves.insert(
17832 Choices::TWINEEDLE,
17833 Choice {
17834 move_id: Choices::TWINEEDLE,
17835 base_power: 25.0,
17836 category: MoveCategory::Physical,
17837 move_type: PokemonType::BUG,
17838 flags: Flags {
17839 protect: true,
17840 ..Default::default()
17841 },
17842 secondaries: Some(vec![Secondary {
17843 chance: 20.0,
17844 target: MoveTarget::Opponent,
17845 effect: Effect::Status(PokemonStatus::POISON),
17846 }]),
17847 ..Default::default()
17848 },
17849 );
17850 moves.insert(
17851 Choices::TWISTER,
17852 Choice {
17853 move_id: Choices::TWISTER,
17854 base_power: 40.0,
17855 category: MoveCategory::Special,
17856 move_type: PokemonType::DRAGON,
17857 flags: Flags {
17858 protect: true,
17859 wind: true,
17860 ..Default::default()
17861 },
17862 secondaries: Some(vec![Secondary {
17863 chance: 20.0,
17864 target: MoveTarget::Opponent,
17865 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17866 }]),
17867 ..Default::default()
17868 },
17869 );
17870 moves.insert(
17871 Choices::UPPERHAND,
17872 Choice {
17873 move_id: Choices::UPPERHAND,
17874 base_power: 65.0,
17875 priority: 3,
17876 category: MoveCategory::Physical,
17877 move_type: PokemonType::FIGHTING,
17878 flags: Flags {
17879 contact: true,
17880 protect: true,
17881 ..Default::default()
17882 },
17883 secondaries: Some(vec![Secondary {
17884 chance: 100.0,
17885 target: MoveTarget::Opponent,
17886 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
17887 }]),
17888 ..Default::default()
17889 },
17890 );
17891 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
17892 moves.insert(
17893 Choices::UPROAR,
17894 Choice {
17895 move_id: Choices::UPROAR,
17896 base_power: 50.0,
17897 category: MoveCategory::Special,
17898 move_type: PokemonType::NORMAL,
17899 flags: Flags {
17900 protect: true,
17901 sound: true,
17902 ..Default::default()
17903 },
17904 ..Default::default()
17905 },
17906 );
17907 } else {
17908 moves.insert(
17909 Choices::UPROAR,
17910 Choice {
17911 move_id: Choices::UPROAR,
17912 base_power: 90.0,
17913 category: MoveCategory::Special,
17914 move_type: PokemonType::NORMAL,
17915 flags: Flags {
17916 protect: true,
17917 sound: true,
17918 ..Default::default()
17919 },
17920 ..Default::default()
17921 },
17922 );
17923 }
17924 moves.insert(
17925 Choices::UTURN,
17926 Choice {
17927 move_id: Choices::UTURN,
17928 base_power: 70.0,
17929 category: MoveCategory::Physical,
17930 move_type: PokemonType::BUG,
17931 flags: Flags {
17932 contact: true,
17933 protect: true,
17934 pivot: true,
17935 ..Default::default()
17936 },
17937 ..Default::default()
17938 },
17939 );
17940 moves.insert(
17941 Choices::VACUUMWAVE,
17942 Choice {
17943 move_id: Choices::VACUUMWAVE,
17944 base_power: 40.0,
17945 category: MoveCategory::Special,
17946 priority: 1,
17947 move_type: PokemonType::FIGHTING,
17948 flags: Flags {
17949 protect: true,
17950 ..Default::default()
17951 },
17952 ..Default::default()
17953 },
17954 );
17955 moves.insert(
17956 Choices::VCREATE,
17957 Choice {
17958 move_id: Choices::VCREATE,
17959 accuracy: 95.0,
17960 base_power: 180.0,
17961 category: MoveCategory::Physical,
17962 move_type: PokemonType::FIRE,
17963 flags: Flags {
17964 contact: true,
17965 protect: true,
17966 ..Default::default()
17967 },
17968 boost: Some(Boost {
17969 target: MoveTarget::User,
17970 boosts: StatBoosts {
17971 attack: 0,
17972 defense: -1,
17973 special_attack: 0,
17974 special_defense: -1,
17975 speed: -1,
17976 accuracy: 0,
17977 },
17978 }),
17979 ..Default::default()
17980 },
17981 );
17982 moves.insert(
17983 Choices::VEEVEEVOLLEY,
17984 Choice {
17985 move_id: Choices::VEEVEEVOLLEY,
17986 category: MoveCategory::Physical,
17987 move_type: PokemonType::NORMAL,
17988 flags: Flags {
17989 contact: true,
17990 protect: true,
17991 ..Default::default()
17992 },
17993 ..Default::default()
17994 },
17995 );
17996 moves.insert(
17997 Choices::VENOMDRENCH,
17998 Choice {
17999 move_id: Choices::VENOMDRENCH,
18000 move_type: PokemonType::POISON,
18001 flags: Flags {
18002 protect: true,
18003 reflectable: true,
18004 ..Default::default()
18005 },
18006 ..Default::default()
18007 },
18008 );
18009 moves.insert(
18010 Choices::VENOSHOCK,
18011 Choice {
18012 move_id: Choices::VENOSHOCK,
18013 base_power: 65.0,
18014 category: MoveCategory::Special,
18015 move_type: PokemonType::POISON,
18016 flags: Flags {
18017 protect: true,
18018 ..Default::default()
18019 },
18020 ..Default::default()
18021 },
18022 );
18023 moves.insert(
18024 Choices::VICTORYDANCE,
18025 Choice {
18026 move_id: Choices::VICTORYDANCE,
18027 target: MoveTarget::User,
18028 move_type: PokemonType::FIGHTING,
18029 flags: Flags {
18030 ..Default::default()
18031 },
18032 boost: Some(Boost {
18033 target: MoveTarget::User,
18034 boosts: StatBoosts {
18035 attack: 1,
18036 defense: 1,
18037 special_attack: 0,
18038 special_defense: 0,
18039 speed: 1,
18040 accuracy: 0,
18041 },
18042 }),
18043 ..Default::default()
18044 },
18045 );
18046 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18047 moves.insert(
18048 Choices::VINEWHIP,
18049 Choice {
18050 move_id: Choices::VINEWHIP,
18051 base_power: 35.0,
18052 category: MoveCategory::Physical,
18053 move_type: PokemonType::GRASS,
18054 flags: Flags {
18055 contact: true,
18056 protect: true,
18057 ..Default::default()
18058 },
18059 ..Default::default()
18060 },
18061 );
18062 } else {
18063 moves.insert(
18064 Choices::VINEWHIP,
18065 Choice {
18066 move_id: Choices::VINEWHIP,
18067 base_power: 45.0,
18068 category: MoveCategory::Physical,
18069 move_type: PokemonType::GRASS,
18070 flags: Flags {
18071 contact: true,
18072 protect: true,
18073 ..Default::default()
18074 },
18075 ..Default::default()
18076 },
18077 );
18078 }
18079 moves.insert(
18080 Choices::VISEGRIP,
18081 Choice {
18082 move_id: Choices::VISEGRIP,
18083 base_power: 55.0,
18084 category: MoveCategory::Physical,
18085 move_type: PokemonType::NORMAL,
18086 flags: Flags {
18087 contact: true,
18088 protect: true,
18089 ..Default::default()
18090 },
18091 ..Default::default()
18092 },
18093 );
18094 moves.insert(
18095 Choices::VITALTHROW,
18096 Choice {
18097 move_id: Choices::VITALTHROW,
18098 base_power: 70.0,
18099 category: MoveCategory::Physical,
18100 priority: -1,
18101 move_type: PokemonType::FIGHTING,
18102 flags: Flags {
18103 contact: true,
18104 protect: true,
18105 ..Default::default()
18106 },
18107 ..Default::default()
18108 },
18109 );
18110 moves.insert(
18111 Choices::VOLTSWITCH,
18112 Choice {
18113 move_id: Choices::VOLTSWITCH,
18114 base_power: 70.0,
18115 category: MoveCategory::Special,
18116 move_type: PokemonType::ELECTRIC,
18117 flags: Flags {
18118 protect: true,
18119 pivot: true,
18120 ..Default::default()
18121 },
18122 ..Default::default()
18123 },
18124 );
18125 moves.insert(
18126 Choices::VOLTTACKLE,
18127 Choice {
18128 move_id: Choices::VOLTTACKLE,
18129 base_power: 120.0,
18130 category: MoveCategory::Physical,
18131 move_type: PokemonType::ELECTRIC,
18132 flags: Flags {
18133 contact: true,
18134 protect: true,
18135 ..Default::default()
18136 },
18137 secondaries: Some(vec![Secondary {
18138 chance: 10.0,
18139 target: MoveTarget::Opponent,
18140 effect: Effect::Status(PokemonStatus::PARALYZE),
18141 }]),
18142 recoil: Some(0.33),
18143 ..Default::default()
18144 },
18145 );
18146 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18147 moves.insert(
18148 Choices::WAKEUPSLAP,
18149 Choice {
18150 move_id: Choices::WAKEUPSLAP,
18151 base_power: 60.0,
18152 category: MoveCategory::Physical,
18153 move_type: PokemonType::FIGHTING,
18154 flags: Flags {
18155 contact: true,
18156 protect: true,
18157 ..Default::default()
18158 },
18159 ..Default::default()
18160 },
18161 );
18162 } else {
18163 moves.insert(
18164 Choices::WAKEUPSLAP,
18165 Choice {
18166 move_id: Choices::WAKEUPSLAP,
18167 base_power: 70.0,
18168 category: MoveCategory::Physical,
18169 move_type: PokemonType::FIGHTING,
18170 flags: Flags {
18171 contact: true,
18172 protect: true,
18173 ..Default::default()
18174 },
18175 ..Default::default()
18176 },
18177 );
18178 }
18179 moves.insert(
18180 Choices::WATERFALL,
18181 Choice {
18182 move_id: Choices::WATERFALL,
18183 base_power: 80.0,
18184 category: MoveCategory::Physical,
18185 move_type: PokemonType::WATER,
18186 flags: Flags {
18187 contact: true,
18188 protect: true,
18189 ..Default::default()
18190 },
18191 secondaries: Some(vec![Secondary {
18192 chance: 20.0,
18193 target: MoveTarget::Opponent,
18194 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18195 }]),
18196 ..Default::default()
18197 },
18198 );
18199 moves.insert(
18200 Choices::WATERGUN,
18201 Choice {
18202 move_id: Choices::WATERGUN,
18203 base_power: 40.0,
18204 category: MoveCategory::Special,
18205 move_type: PokemonType::WATER,
18206 flags: Flags {
18207 protect: true,
18208 ..Default::default()
18209 },
18210 ..Default::default()
18211 },
18212 );
18213 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18214 moves.insert(
18215 Choices::WATERPLEDGE,
18216 Choice {
18217 move_id: Choices::WATERPLEDGE,
18218 base_power: 50.0,
18219 category: MoveCategory::Special,
18220 move_type: PokemonType::WATER,
18221 flags: Flags {
18222 protect: true,
18223 ..Default::default()
18224 },
18225 ..Default::default()
18226 },
18227 );
18228 } else {
18229 moves.insert(
18230 Choices::WATERPLEDGE,
18231 Choice {
18232 move_id: Choices::WATERPLEDGE,
18233 base_power: 80.0,
18234 category: MoveCategory::Special,
18235 move_type: PokemonType::WATER,
18236 flags: Flags {
18237 protect: true,
18238 ..Default::default()
18239 },
18240 ..Default::default()
18241 },
18242 );
18243 }
18244 moves.insert(
18245 Choices::WATERPULSE,
18246 Choice {
18247 move_id: Choices::WATERPULSE,
18248 base_power: 60.0,
18249 category: MoveCategory::Special,
18250 move_type: PokemonType::WATER,
18251 flags: Flags {
18252 protect: true,
18253 pulse: true,
18254 ..Default::default()
18255 },
18256 secondaries: Some(vec![Secondary {
18257 chance: 20.0,
18258 target: MoveTarget::Opponent,
18259 effect: Effect::VolatileStatus(PokemonVolatileStatus::CONFUSION),
18260 }]),
18261 ..Default::default()
18262 },
18263 );
18264
18265 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") || cfg!(feature = "gen6") {
18266 moves.insert(
18267 Choices::WATERSHURIKEN,
18268 Choice {
18269 move_id: Choices::WATERSHURIKEN,
18270 base_power: 15.0,
18271 category: MoveCategory::Physical,
18272 priority: 1,
18273 move_type: PokemonType::WATER,
18274 flags: Flags {
18275 protect: true,
18276 ..Default::default()
18277 },
18278 ..Default::default()
18279 },
18280 );
18281 } else {
18282 moves.insert(
18283 Choices::WATERSHURIKEN,
18284 Choice {
18285 move_id: Choices::WATERSHURIKEN,
18286 base_power: 15.0,
18287 category: MoveCategory::Special,
18288 priority: 1,
18289 move_type: PokemonType::WATER,
18290 flags: Flags {
18291 protect: true,
18292 ..Default::default()
18293 },
18294 ..Default::default()
18295 },
18296 );
18297 }
18298
18299 moves.insert(
18300 Choices::WATERSPORT,
18301 Choice {
18302 move_id: Choices::WATERSPORT,
18303 move_type: PokemonType::WATER,
18304 flags: Flags {
18305 ..Default::default()
18306 },
18307 ..Default::default()
18308 },
18309 );
18310 moves.insert(
18311 Choices::WATERSPOUT,
18312 Choice {
18313 move_id: Choices::WATERSPOUT,
18314 base_power: 150.0,
18315 category: MoveCategory::Special,
18316 move_type: PokemonType::WATER,
18317 flags: Flags {
18318 protect: true,
18319 ..Default::default()
18320 },
18321 ..Default::default()
18322 },
18323 );
18324 moves.insert(
18325 Choices::WAVECRASH,
18326 Choice {
18327 move_id: Choices::WAVECRASH,
18328 base_power: 120.0,
18329 category: MoveCategory::Physical,
18330 move_type: PokemonType::WATER,
18331 flags: Flags {
18332 contact: true,
18333 protect: true,
18334 ..Default::default()
18335 },
18336 recoil: Some(0.33),
18337 ..Default::default()
18338 },
18339 );
18340 moves.insert(
18341 Choices::WEATHERBALL,
18342 Choice {
18343 move_id: Choices::WEATHERBALL,
18344 base_power: 50.0,
18345 category: MoveCategory::Special,
18346 move_type: PokemonType::NORMAL,
18347 flags: Flags {
18348 bullet: true,
18349 protect: true,
18350 ..Default::default()
18351 },
18352 ..Default::default()
18353 },
18354 );
18355 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
18356 moves.insert(
18357 Choices::WHIRLPOOL,
18358 Choice {
18359 move_id: Choices::WHIRLPOOL,
18360 accuracy: 70.0,
18361 base_power: 15.0,
18362 category: MoveCategory::Special,
18363 move_type: PokemonType::WATER,
18364 flags: Flags {
18365 protect: true,
18366 ..Default::default()
18367 },
18368 volatile_status: Some(VolatileStatus {
18369 target: MoveTarget::Opponent,
18370 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18371 }),
18372 ..Default::default()
18373 },
18374 );
18375 } else {
18376 moves.insert(
18377 Choices::WHIRLPOOL,
18378 Choice {
18379 move_id: Choices::WHIRLPOOL,
18380 accuracy: 85.0,
18381 base_power: 35.0,
18382 category: MoveCategory::Special,
18383 move_type: PokemonType::WATER,
18384 flags: Flags {
18385 protect: true,
18386 ..Default::default()
18387 },
18388 volatile_status: Some(VolatileStatus {
18389 target: MoveTarget::Opponent,
18390 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18391 }),
18392 ..Default::default()
18393 },
18394 );
18395 }
18396 moves.insert(
18397 Choices::WHIRLWIND,
18398 Choice {
18399 move_id: Choices::WHIRLWIND,
18400 priority: -6,
18401 move_type: PokemonType::NORMAL,
18402 flags: Flags {
18403 drag: true,
18404 reflectable: true,
18405 wind: true,
18406 ..Default::default()
18407 },
18408 ..Default::default()
18409 },
18410 );
18411
18412 if cfg!(feature = "gen9") {
18413 moves.insert(
18414 Choices::WICKEDBLOW,
18415 Choice {
18416 move_id: Choices::WICKEDBLOW,
18417 base_power: 75.0,
18418 category: MoveCategory::Physical,
18419 move_type: PokemonType::DARK,
18420 flags: Flags {
18421 contact: true,
18422 protect: true,
18423 punch: true,
18424 ..Default::default()
18425 },
18426 ..Default::default()
18427 },
18428 );
18429 } else {
18430 moves.insert(
18431 Choices::WICKEDBLOW,
18432 Choice {
18433 move_id: Choices::WICKEDBLOW,
18434 base_power: 80.0,
18435 category: MoveCategory::Physical,
18436 move_type: PokemonType::DARK,
18437 flags: Flags {
18438 contact: true,
18439 protect: true,
18440 punch: true,
18441 ..Default::default()
18442 },
18443 ..Default::default()
18444 },
18445 );
18446 }
18447
18448 moves.insert(
18449 Choices::WICKEDTORQUE,
18450 Choice {
18451 move_id: Choices::WICKEDTORQUE,
18452 base_power: 80.0,
18453 category: MoveCategory::Physical,
18454 move_type: PokemonType::DARK,
18455 flags: Flags {
18456 protect: true,
18457 ..Default::default()
18458 },
18459 secondaries: Some(vec![Secondary {
18460 chance: 10.0,
18461 target: MoveTarget::Opponent,
18462 effect: Effect::Status(PokemonStatus::SLEEP),
18463 }]),
18464 ..Default::default()
18465 },
18466 );
18467 moves.insert(
18468 Choices::WIDEGUARD,
18469 Choice {
18470 move_id: Choices::WIDEGUARD,
18471 priority: 3,
18472 target: MoveTarget::User,
18473 move_type: PokemonType::ROCK,
18474 flags: Flags {
18475 ..Default::default()
18476 },
18477 side_condition: Some(SideCondition {
18478 target: MoveTarget::User,
18479 condition: PokemonSideCondition::WideGuard,
18480 }),
18481 ..Default::default()
18482 },
18483 );
18484 moves.insert(
18485 Choices::WILDBOLTSTORM,
18486 Choice {
18487 move_id: Choices::WILDBOLTSTORM,
18488 accuracy: 80.0,
18489 base_power: 100.0,
18490 category: MoveCategory::Special,
18491 move_type: PokemonType::ELECTRIC,
18492 flags: Flags {
18493 protect: true,
18494 wind: true,
18495 ..Default::default()
18496 },
18497 secondaries: Some(vec![Secondary {
18498 chance: 20.0,
18499 target: MoveTarget::Opponent,
18500 effect: Effect::Status(PokemonStatus::PARALYZE),
18501 }]),
18502 ..Default::default()
18503 },
18504 );
18505 moves.insert(
18506 Choices::WILDCHARGE,
18507 Choice {
18508 move_id: Choices::WILDCHARGE,
18509 base_power: 90.0,
18510 category: MoveCategory::Physical,
18511 move_type: PokemonType::ELECTRIC,
18512 flags: Flags {
18513 contact: true,
18514 protect: true,
18515 ..Default::default()
18516 },
18517 recoil: Some(0.25),
18518 ..Default::default()
18519 },
18520 );
18521 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") || cfg!(feature = "gen5") {
18522 moves.insert(
18523 Choices::WILLOWISP,
18524 Choice {
18525 move_id: Choices::WILLOWISP,
18526 accuracy: 75.0,
18527 status: Some(Status {
18528 target: MoveTarget::Opponent,
18529 status: PokemonStatus::BURN,
18530 }),
18531 move_type: PokemonType::FIRE,
18532 flags: Flags {
18533 protect: true,
18534 reflectable: true,
18535 ..Default::default()
18536 },
18537 ..Default::default()
18538 },
18539 );
18540 } else {
18541 moves.insert(
18542 Choices::WILLOWISP,
18543 Choice {
18544 move_id: Choices::WILLOWISP,
18545 accuracy: 85.0,
18546 status: Some(Status {
18547 target: MoveTarget::Opponent,
18548 status: PokemonStatus::BURN,
18549 }),
18550 move_type: PokemonType::FIRE,
18551 flags: Flags {
18552 protect: true,
18553 reflectable: true,
18554 ..Default::default()
18555 },
18556 ..Default::default()
18557 },
18558 );
18559 }
18560 if cfg!(feature = "gen1") {
18561 moves.insert(
18562 Choices::WINGATTACK,
18563 Choice {
18564 move_id: Choices::WINGATTACK,
18565 base_power: 35.0,
18566 category: MoveCategory::Physical,
18567 move_type: PokemonType::FLYING,
18568 flags: Flags {
18569 contact: true,
18570 protect: true,
18571 ..Default::default()
18572 },
18573 ..Default::default()
18574 },
18575 );
18576 } else {
18577 moves.insert(
18578 Choices::WINGATTACK,
18579 Choice {
18580 move_id: Choices::WINGATTACK,
18581 base_power: 60.0,
18582 category: MoveCategory::Physical,
18583 move_type: PokemonType::FLYING,
18584 flags: Flags {
18585 contact: true,
18586 protect: true,
18587 ..Default::default()
18588 },
18589 ..Default::default()
18590 },
18591 );
18592 }
18593 moves.insert(
18594 Choices::WISH,
18595 Choice {
18596 move_id: Choices::WISH,
18597 target: MoveTarget::User,
18598 move_type: PokemonType::NORMAL,
18599 flags: Flags {
18600 heal: true,
18601 ..Default::default()
18602 },
18603 ..Default::default()
18604 },
18605 );
18606 moves.insert(
18607 Choices::WITHDRAW,
18608 Choice {
18609 move_id: Choices::WITHDRAW,
18610 target: MoveTarget::User,
18611 move_type: PokemonType::WATER,
18612 flags: Flags {
18613 ..Default::default()
18614 },
18615 boost: Some(Boost {
18616 target: MoveTarget::User,
18617 boosts: StatBoosts {
18618 attack: 0,
18619 defense: 1,
18620 special_attack: 0,
18621 special_defense: 0,
18622 speed: 0,
18623 accuracy: 0,
18624 },
18625 }),
18626 ..Default::default()
18627 },
18628 );
18629 moves.insert(
18630 Choices::WONDERROOM,
18631 Choice {
18632 move_id: Choices::WONDERROOM,
18633 move_type: PokemonType::PSYCHIC,
18634 flags: Flags {
18635 ..Default::default()
18636 },
18637 ..Default::default()
18638 },
18639 );
18640 moves.insert(
18641 Choices::WOODHAMMER,
18642 Choice {
18643 move_id: Choices::WOODHAMMER,
18644 base_power: 120.0,
18645 category: MoveCategory::Physical,
18646 move_type: PokemonType::GRASS,
18647 flags: Flags {
18648 contact: true,
18649 protect: true,
18650 ..Default::default()
18651 },
18652 recoil: Some(0.33),
18653 ..Default::default()
18654 },
18655 );
18656 moves.insert(
18657 Choices::WORKUP,
18658 Choice {
18659 move_id: Choices::WORKUP,
18660 target: MoveTarget::User,
18661 move_type: PokemonType::NORMAL,
18662 flags: Flags {
18663 ..Default::default()
18664 },
18665 boost: Some(Boost {
18666 target: MoveTarget::User,
18667 boosts: StatBoosts {
18668 attack: 1,
18669 defense: 0,
18670 special_attack: 1,
18671 special_defense: 0,
18672 speed: 0,
18673 accuracy: 0,
18674 },
18675 }),
18676 ..Default::default()
18677 },
18678 );
18679 moves.insert(
18680 Choices::WORRYSEED,
18681 Choice {
18682 move_id: Choices::WORRYSEED,
18683 move_type: PokemonType::GRASS,
18684 flags: Flags {
18685 protect: true,
18686 reflectable: true,
18687 ..Default::default()
18688 },
18689 ..Default::default()
18690 },
18691 );
18692 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") || cfg!(feature = "gen4") {
18693 moves.insert(
18694 Choices::WRAP,
18695 Choice {
18696 move_id: Choices::WRAP,
18697 accuracy: 85.0,
18698 base_power: 15.0,
18699 category: MoveCategory::Physical,
18700 move_type: PokemonType::NORMAL,
18701 flags: Flags {
18702 contact: true,
18703 protect: true,
18704 ..Default::default()
18705 },
18706 volatile_status: Some(VolatileStatus {
18707 target: MoveTarget::Opponent,
18708 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18709 }),
18710 ..Default::default()
18711 },
18712 );
18713 } else {
18714 moves.insert(
18715 Choices::WRAP,
18716 Choice {
18717 move_id: Choices::WRAP,
18718 accuracy: 90.0,
18719 base_power: 15.0,
18720 category: MoveCategory::Physical,
18721 move_type: PokemonType::NORMAL,
18722 flags: Flags {
18723 contact: true,
18724 protect: true,
18725 ..Default::default()
18726 },
18727 volatile_status: Some(VolatileStatus {
18728 target: MoveTarget::Opponent,
18729 volatile_status: PokemonVolatileStatus::PARTIALLYTRAPPED,
18730 }),
18731 ..Default::default()
18732 },
18733 );
18734 }
18735 moves.insert(
18736 Choices::WRINGOUT,
18737 Choice {
18738 move_id: Choices::WRINGOUT,
18739 category: MoveCategory::Special,
18740 move_type: PokemonType::NORMAL,
18741 flags: Flags {
18742 contact: true,
18743 protect: true,
18744 ..Default::default()
18745 },
18746 ..Default::default()
18747 },
18748 );
18749 moves.insert(
18750 Choices::XSCISSOR,
18751 Choice {
18752 move_id: Choices::XSCISSOR,
18753 base_power: 80.0,
18754 category: MoveCategory::Physical,
18755 move_type: PokemonType::BUG,
18756 flags: Flags {
18757 contact: true,
18758 protect: true,
18759 slicing: true,
18760 ..Default::default()
18761 },
18762 ..Default::default()
18763 },
18764 );
18765 moves.insert(
18766 Choices::YAWN,
18767 Choice {
18768 move_id: Choices::YAWN,
18769 move_type: PokemonType::NORMAL,
18770 flags: Flags {
18771 protect: true,
18772 reflectable: true,
18773 ..Default::default()
18774 },
18775 volatile_status: Some(VolatileStatus {
18776 target: MoveTarget::Opponent,
18777 volatile_status: PokemonVolatileStatus::YAWN,
18778 }),
18779 ..Default::default()
18780 },
18781 );
18782 if cfg!(feature = "gen1") || cfg!(feature = "gen2") || cfg!(feature = "gen3") {
18783 moves.insert(
18784 Choices::ZAPCANNON,
18785 Choice {
18786 move_id: Choices::ZAPCANNON,
18787 accuracy: 50.0,
18788 base_power: 100.0,
18789 category: MoveCategory::Special,
18790 move_type: PokemonType::ELECTRIC,
18791 flags: Flags {
18792 bullet: true,
18793 protect: true,
18794 ..Default::default()
18795 },
18796 secondaries: Some(vec![Secondary {
18797 chance: 100.0,
18798 target: MoveTarget::Opponent,
18799 effect: Effect::Status(PokemonStatus::PARALYZE),
18800 }]),
18801 ..Default::default()
18802 },
18803 );
18804 } else {
18805 moves.insert(
18806 Choices::ZAPCANNON,
18807 Choice {
18808 move_id: Choices::ZAPCANNON,
18809 accuracy: 50.0,
18810 base_power: 120.0,
18811 category: MoveCategory::Special,
18812 move_type: PokemonType::ELECTRIC,
18813 flags: Flags {
18814 bullet: true,
18815 protect: true,
18816 ..Default::default()
18817 },
18818 secondaries: Some(vec![Secondary {
18819 chance: 100.0,
18820 target: MoveTarget::Opponent,
18821 effect: Effect::Status(PokemonStatus::PARALYZE),
18822 }]),
18823 ..Default::default()
18824 },
18825 );
18826 }
18827 moves.insert(
18828 Choices::ZENHEADBUTT,
18829 Choice {
18830 move_id: Choices::ZENHEADBUTT,
18831 accuracy: 90.0,
18832 base_power: 80.0,
18833 category: MoveCategory::Physical,
18834 move_type: PokemonType::PSYCHIC,
18835 flags: Flags {
18836 contact: true,
18837 protect: true,
18838 ..Default::default()
18839 },
18840 secondaries: Some(vec![Secondary {
18841 chance: 20.0,
18842 target: MoveTarget::Opponent,
18843 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18844 }]),
18845 ..Default::default()
18846 },
18847 );
18848 moves.insert(
18849 Choices::ZINGZAP,
18850 Choice {
18851 move_id: Choices::ZINGZAP,
18852 base_power: 80.0,
18853 category: MoveCategory::Physical,
18854 move_type: PokemonType::ELECTRIC,
18855 flags: Flags {
18856 contact: true,
18857 protect: true,
18858 ..Default::default()
18859 },
18860 secondaries: Some(vec![Secondary {
18861 chance: 30.0,
18862 target: MoveTarget::Opponent,
18863 effect: Effect::VolatileStatus(PokemonVolatileStatus::FLINCH),
18864 }]),
18865 ..Default::default()
18866 },
18867 );
18868 moves.insert(
18869 Choices::ZIPPYZAP,
18870 Choice {
18871 move_id: Choices::ZIPPYZAP,
18872 base_power: 80.0,
18873 category: MoveCategory::Physical,
18874 priority: 2,
18875 move_type: PokemonType::ELECTRIC,
18876 flags: Flags {
18877 contact: true,
18878 protect: true,
18879 ..Default::default()
18880 },
18881 secondaries: Some(vec![Secondary {
18882 chance: 100.0,
18883 target: MoveTarget::User,
18884 effect: Effect::Boost(StatBoosts {
18885 attack: 0,
18886 defense: 0,
18887 special_attack: 0,
18888 special_defense: 0,
18889 speed: 0,
18890 accuracy: 0,
18891 }),
18892 }]),
18893 ..Default::default()
18894 },
18895 );
18896
18897 #[cfg(any(feature = "gen1", feature = "gen2", feature = "gen3"))]
18898 undo_physical_special_split(&mut moves);
18899
18900 moves
18901 };
18902}
18903
18904#[derive(Debug, PartialEq, Clone, Copy)]
18905pub enum MoveCategory {
18906 Physical,
18907 Special,
18908 Status,
18909 Switch,
18910}
18911
18912#[derive(PartialEq, Debug, Clone)]
18913pub enum MoveTarget {
18914 User,
18915 Opponent,
18916}
18917
18918#[derive(Debug, Clone)]
18919pub struct VolatileStatus {
18920 pub target: MoveTarget,
18921 pub volatile_status: PokemonVolatileStatus,
18922}
18923
18924#[derive(Debug, Clone)]
18925pub struct SideCondition {
18926 pub target: MoveTarget,
18927 pub condition: PokemonSideCondition,
18928}
18929
18930#[derive(Debug, Clone)]
18931pub struct Boost {
18932 pub target: MoveTarget,
18933 pub boosts: StatBoosts,
18934}
18935
18936#[derive(Debug, Clone)]
18937pub struct Heal {
18938 pub target: MoveTarget,
18939 pub amount: f32,
18940}
18941
18942#[derive(Debug, Clone)]
18943pub struct Status {
18944 pub target: MoveTarget,
18945 pub status: PokemonStatus,
18946}
18947
18948#[derive(Debug, Clone, PartialEq)]
18949pub struct StatBoosts {
18950 pub attack: i8,
18951 pub defense: i8,
18952 pub special_attack: i8,
18953 pub special_defense: i8,
18954 pub speed: i8,
18955 pub accuracy: i8,
18956}
18957
18958impl Default for StatBoosts {
18959 fn default() -> StatBoosts {
18960 StatBoosts {
18961 attack: 0,
18962 defense: 0,
18963 special_attack: 0,
18964 special_defense: 0,
18965 speed: 0,
18966 accuracy: 0,
18967 }
18968 }
18969}
18970
18971impl StatBoosts {
18972 pub fn get_as_pokemon_boostable(&self) -> [(PokemonBoostableStat, i8); 6] {
18973 [
18974 (PokemonBoostableStat::Attack, self.attack),
18975 (PokemonBoostableStat::Defense, self.defense),
18976 (PokemonBoostableStat::SpecialAttack, self.special_attack),
18977 (PokemonBoostableStat::SpecialDefense, self.special_defense),
18978 (PokemonBoostableStat::Speed, self.speed),
18979 (PokemonBoostableStat::Accuracy, self.accuracy),
18980 ]
18981 }
18982}
18983
18984#[derive(Debug)]
18985pub struct Myself {
18986 pub volatile_status: Option<VolatileStatus>,
18987 pub boosts: StatBoosts,
18988}
18989
18990#[derive(Debug, Clone)]
18991pub struct Flags {
18992 pub bite: bool,
18993 pub bullet: bool,
18994 pub charge: bool,
18995 pub contact: bool,
18996 pub drag: bool,
18997 pub heal: bool,
18998 pub powder: bool,
18999 pub protect: bool,
19000 pub pulse: bool,
19001 pub punch: bool,
19002 pub recharge: bool,
19003 pub reflectable: bool,
19004 pub slicing: bool,
19005 pub sound: bool,
19006 pub pivot: bool,
19007 pub wind: bool,
19008}
19009
19010impl Default for Flags {
19011 fn default() -> Flags {
19012 Flags {
19013 bite: false,
19014 bullet: false,
19015 charge: false,
19016 contact: false,
19017 drag: false,
19018 heal: false,
19019 powder: false,
19020 protect: false,
19021 pulse: false,
19022 punch: false,
19023 recharge: false,
19024 reflectable: false,
19025 slicing: false,
19026 sound: false,
19027 pivot: false,
19028 wind: false,
19029 }
19030 }
19031}
19032
19033impl Flags {
19034 pub fn clear_all(&mut self) {
19035 self.bite = false;
19036 self.bullet = false;
19037 self.charge = false;
19038 self.contact = false;
19039 self.drag = false;
19040 self.heal = false;
19041 self.powder = false;
19042 self.protect = false;
19043 self.pulse = false;
19044 self.punch = false;
19045 self.recharge = false;
19046 self.reflectable = false;
19047 self.slicing = false;
19048 self.sound = false;
19049 self.pivot = false;
19050 self.wind = false;
19051 }
19052}
19053
19054#[derive(Debug, Clone)]
19055pub struct Secondary {
19056 pub chance: f32,
19057 pub target: MoveTarget,
19058 pub effect: Effect,
19059}
19060
19061#[derive(Debug, Clone, PartialEq)]
19062pub enum Effect {
19063 VolatileStatus(PokemonVolatileStatus),
19064 Boost(StatBoosts),
19065 Status(PokemonStatus),
19066 Heal(f32),
19067 RemoveItem,
19068}
19069
19070#[derive(PartialEq)]
19071pub enum MultiHitMove {
19072 None,
19073 DoubleHit,
19074 TripleHit,
19075 TwoToFiveHits,
19076 PopulationBomb,
19077 TripleAxel,
19078}
19079
19080#[derive(PartialEq)]
19081pub enum MultiAccuracyMove {
19082 None,
19083 TripleHit,
19084 TenHits,
19085}
19086
19087define_enum_with_from_str! {
19088 #[repr(u16)]
19089 #[derive(Eq, PartialEq, Debug, Hash, Copy, Clone)]
19090 Choices {
19091 NONE,
19092 ABSORB,
19093 ACCELEROCK,
19094 ACID,
19095 ACIDARMOR,
19096 ACIDSPRAY,
19097 ACROBATICS,
19098 ACUPRESSURE,
19099 AERIALACE,
19100 AEROBLAST,
19101 AFTERYOU,
19102 AGILITY,
19103 AIRCUTTER,
19104 AIRSLASH,
19105 ALLURINGVOICE,
19106 ALLYSWITCH,
19107 AMNESIA,
19108 ANCHORSHOT,
19109 ANCIENTPOWER,
19110 APPLEACID,
19111 AQUACUTTER,
19112 AQUAJET,
19113 AQUARING,
19114 AQUASTEP,
19115 AQUATAIL,
19116 ARMORCANNON,
19117 ARMTHRUST,
19118 AROMATHERAPY,
19119 AROMATICMIST,
19120 ASSIST,
19121 ASSURANCE,
19122 ASTONISH,
19123 ASTRALBARRAGE,
19124 ATTACKORDER,
19125 ATTRACT,
19126 AURASPHERE,
19127 AURAWHEEL,
19128 AURORABEAM,
19129 AURORAVEIL,
19130 AUTOTOMIZE,
19131 AVALANCHE,
19132 AXEKICK,
19133 BABYDOLLEYES,
19134 BADDYBAD,
19135 BANEFULBUNKER,
19136 BARBBARRAGE,
19137 BARRAGE,
19138 BARRIER,
19139 BATONPASS,
19140 BEAKBLAST,
19141 BEATUP,
19142 BEHEMOTHBASH,
19143 BEHEMOTHBLADE,
19144 BELCH,
19145 BELLYDRUM,
19146 BESTOW,
19147 BIDE,
19148 BIND,
19149 BITE,
19150 BITTERBLADE,
19151 BITTERMALICE,
19152 BLASTBURN,
19153 BLAZEKICK,
19154 BLAZINGTORQUE,
19155 BLEAKWINDSTORM,
19156 BLIZZARD,
19157 BLOCK,
19158 BLOODMOON,
19159 BLUEFLARE,
19160 BODYPRESS,
19161 BODYSLAM,
19162 BOLTBEAK,
19163 BOLTSTRIKE,
19164 BONECLUB,
19165 BONEMERANG,
19166 BONERUSH,
19167 BOOMBURST,
19168 BOUNCE,
19169 BOUNCYBUBBLE,
19170 BRANCHPOKE,
19171 BRAVEBIRD,
19172 BREAKINGSWIPE,
19173 BRICKBREAK,
19174 BRINE,
19175 BRUTALSWING,
19176 BUBBLE,
19177 BUBBLEBEAM,
19178 BUGBITE,
19179 BUGBUZZ,
19180 BULKUP,
19181 BULLDOZE,
19182 BULLETPUNCH,
19183 BULLETSEED,
19184 BURNINGBULWARK,
19185 BURNINGJEALOUSY,
19186 BURNUP,
19187 BUZZYBUZZ,
19188 CALMMIND,
19189 CAMOUFLAGE,
19190 CAPTIVATE,
19191 CEASELESSEDGE,
19192 CELEBRATE,
19193 CHARGE,
19194 CHARGEBEAM,
19195 CHARM,
19196 CHATTER,
19197 CHILLINGWATER,
19198 CHILLYRECEPTION,
19199 CHIPAWAY,
19200 CHLOROBLAST,
19201 CIRCLETHROW,
19202 CLAMP,
19203 CLANGINGSCALES,
19204 CLANGOROUSSOUL,
19205 CLEARSMOG,
19206 CLOSECOMBAT,
19207 COACHING,
19208 COIL,
19209 COLLISIONCOURSE,
19210 COMBATTORQUE,
19211 COMETPUNCH,
19212 COMEUPPANCE,
19213 CONFIDE,
19214 CONFUSERAY,
19215 CONFUSION,
19216 CONSTRICT,
19217 CONVERSION,
19218 CONVERSION2,
19219 COPYCAT,
19220 COREENFORCER,
19221 CORROSIVEGAS,
19222 COSMICPOWER,
19223 COTTONGUARD,
19224 COTTONSPORE,
19225 COUNTER,
19226 COURTCHANGE,
19227 COVET,
19228 CRABHAMMER,
19229 CRAFTYSHIELD,
19230 CROSSCHOP,
19231 CROSSPOISON,
19232 CRUNCH,
19233 CRUSHCLAW,
19234 CRUSHGRIP,
19235 CURSE,
19236 CUT,
19237 DARKESTLARIAT,
19238 DARKPULSE,
19239 DARKVOID,
19240 DAZZLINGGLEAM,
19241 DECORATE,
19242 DEFENDORDER,
19243 DEFENSECURL,
19244 DEFOG,
19245 DESTINYBOND,
19246 DETECT,
19247 DIAMONDSTORM,
19248 DIG,
19249 DIRECLAW,
19250 DISABLE,
19251 DISARMINGVOICE,
19252 DISCHARGE,
19253 DIVE,
19254 DIZZYPUNCH,
19255 DOODLE,
19256 DOOMDESIRE,
19257 DOUBLEEDGE,
19258 DOUBLEHIT,
19259 DOUBLEIRONBASH,
19260 DOUBLEKICK,
19261 DOUBLESHOCK,
19262 DOUBLESLAP,
19263 DOUBLETEAM,
19264 DRACOMETEOR,
19265 DRAGONASCENT,
19266 DRAGONBREATH,
19267 DRAGONCHEER,
19268 DRAGONCLAW,
19269 DRAGONDANCE,
19270 DRAGONDARTS,
19271 DRAGONENERGY,
19272 DRAGONHAMMER,
19273 DRAGONPULSE,
19274 DRAGONRAGE,
19275 DRAGONRUSH,
19276 DRAGONTAIL,
19277 DRAININGKISS,
19278 DRAINPUNCH,
19279 DREAMEATER,
19280 DRILLPECK,
19281 DRILLRUN,
19282 DRUMBEATING,
19283 DUALCHOP,
19284 DUALWINGBEAT,
19285 DYNAMAXCANNON,
19286 DYNAMICPUNCH,
19287 EARTHPOWER,
19288 EARTHQUAKE,
19289 ECHOEDVOICE,
19290 EERIEIMPULSE,
19291 EERIESPELL,
19292 EGGBOMB,
19293 ELECTRICTERRAIN,
19294 ELECTRIFY,
19295 ELECTROBALL,
19296 ELECTRODRIFT,
19297 ELECTROSHOT,
19298 ELECTROWEB,
19299 EMBARGO,
19300 EMBER,
19301 ENCORE,
19302 ENDEAVOR,
19303 ENDURE,
19304 ENERGYBALL,
19305 ENTRAINMENT,
19306 ERUPTION,
19307 ESPERWING,
19308 ETERNABEAM,
19309 EXPANDINGFORCE,
19310 EXPLOSION,
19311 EXTRASENSORY,
19312 EXTREMESPEED,
19313 FACADE,
19314 FAIRYLOCK,
19315 FAIRYWIND,
19316 FAKEOUT,
19317 FAKETEARS,
19318 FALSESURRENDER,
19319 FALSESWIPE,
19320 FEATHERDANCE,
19321 FEINT,
19322 FEINTATTACK,
19323 FELLSTINGER,
19324 FICKLEBEAM,
19325 FIERYDANCE,
19326 FIERYWRATH,
19327 FILLETAWAY,
19328 FINALGAMBIT,
19329 FIREBLAST,
19330 FIREFANG,
19331 FIRELASH,
19332 FIREPLEDGE,
19333 FIREPUNCH,
19334 FIRESPIN,
19335 FIRSTIMPRESSION,
19336 FISHIOUSREND,
19337 FISSURE,
19338 FLAIL,
19339 FLAMEBURST,
19340 FLAMECHARGE,
19341 FLAMETHROWER,
19342 FLAMEWHEEL,
19343 FLAREBLITZ,
19344 FLASH,
19345 FLASHCANNON,
19346 FLATTER,
19347 FLEURCANNON,
19348 FLING,
19349 FLIPTURN,
19350 FLOATYFALL,
19351 FLORALHEALING,
19352 FLOWERSHIELD,
19353 FLOWERTRICK,
19354 FLY,
19355 FLYINGPRESS,
19356 FOCUSBLAST,
19357 FOCUSENERGY,
19358 FOCUSPUNCH,
19359 FOLLOWME,
19360 FORCEPALM,
19361 FORESIGHT,
19362 FORESTSCURSE,
19363 FOULPLAY,
19364 FREEZEDRY,
19365 FREEZESHOCK,
19366 FREEZINGGLARE,
19367 FREEZYFROST,
19368 FRENZYPLANT,
19369 FROSTBREATH,
19370 FRUSTRATION,
19371 FURYATTACK,
19372 FURYCUTTER,
19373 FURYSWIPES,
19374 FUSIONBOLT,
19375 FUSIONFLARE,
19376 FUTURESIGHT,
19377 GASTROACID,
19378 GEARGRIND,
19379 GEARUP,
19380 GEOMANCY,
19381 GIGADRAIN,
19382 GIGAIMPACT,
19383 GIGATONHAMMER,
19384 GLACIALLANCE,
19385 GLACIATE,
19386 GLAIVERUSH,
19387 GLARE,
19388 GLITZYGLOW,
19389 GRASSKNOT,
19390 GRASSPLEDGE,
19391 GRASSWHISTLE,
19392 GRASSYGLIDE,
19393 GRASSYTERRAIN,
19394 GRAVAPPLE,
19395 GRAVITY,
19396 GROWL,
19397 GROWTH,
19398 GRUDGE,
19399 GUARDSPLIT,
19400 GUARDSWAP,
19401 GUILLOTINE,
19402 GUNKSHOT,
19403 GUST,
19404 GYROBALL,
19405 HAIL,
19406 HAMMERARM,
19407 HAPPYHOUR,
19408 HARDEN,
19409 HARDPRESS,
19410 HAZE,
19411 HEADBUTT,
19412 HEADCHARGE,
19413 HEADLONGRUSH,
19414 HEADSMASH,
19415 HEALBELL,
19416 HEALBLOCK,
19417 HEALINGWISH,
19418 HEALORDER,
19419 HEALPULSE,
19420 HEARTSTAMP,
19421 HEARTSWAP,
19422 HEATCRASH,
19423 HEATWAVE,
19424 HEAVYSLAM,
19425 HELPINGHAND,
19426 HEX,
19427 HIDDENPOWER,
19428 HIDDENPOWERBUG60,
19429 HIDDENPOWERBUG70,
19430 HIDDENPOWERDARK60,
19431 HIDDENPOWERDARK70,
19432 HIDDENPOWERDRAGON60,
19433 HIDDENPOWERDRAGON70,
19434 HIDDENPOWERELECTRIC60,
19435 HIDDENPOWERELECTRIC70,
19436 HIDDENPOWERFIGHTING60,
19437 HIDDENPOWERFIGHTING70,
19438 HIDDENPOWERFIRE60,
19439 HIDDENPOWERFIRE70,
19440 HIDDENPOWERFLYING60,
19441 HIDDENPOWERFLYING70,
19442 HIDDENPOWERGHOST60,
19443 HIDDENPOWERGHOST70,
19444 HIDDENPOWERGRASS60,
19445 HIDDENPOWERGRASS70,
19446 HIDDENPOWERGROUND60,
19447 HIDDENPOWERGROUND70,
19448 HIDDENPOWERICE60,
19449 HIDDENPOWERICE70,
19450 HIDDENPOWERPOISON60,
19451 HIDDENPOWERPOISON70,
19452 HIDDENPOWERPSYCHIC60,
19453 HIDDENPOWERPSYCHIC70,
19454 HIDDENPOWERROCK60,
19455 HIDDENPOWERROCK70,
19456 HIDDENPOWERSTEEL60,
19457 HIDDENPOWERSTEEL70,
19458 HIDDENPOWERWATER60,
19459 HIDDENPOWERWATER70,
19460 HIGHHORSEPOWER,
19461 HIGHJUMPKICK,
19462 HOLDBACK,
19463 HOLDHANDS,
19464 HONECLAWS,
19465 HORNATTACK,
19466 HORNDRILL,
19467 HORNLEECH,
19468 HOWL,
19469 HURRICANE,
19470 HYDROCANNON,
19471 HYDROPUMP,
19472 HYDROSTEAM,
19473 HYPERBEAM,
19474 HYPERDRILL,
19475 HYPERFANG,
19476 HYPERSPACEFURY,
19477 HYPERSPACEHOLE,
19478 HYPERVOICE,
19479 HYPNOSIS,
19480 ICEBALL,
19481 ICEBEAM,
19482 ICEBURN,
19483 ICEFANG,
19484 ICEHAMMER,
19485 ICEPUNCH,
19486 ICESHARD,
19487 ICESPINNER,
19488 ICICLECRASH,
19489 ICICLESPEAR,
19490 ICYWIND,
19491 IMPRISON,
19492 INCINERATE,
19493 INFERNALPARADE,
19494 INFERNO,
19495 INFESTATION,
19496 INGRAIN,
19497 INSTRUCT,
19498 IONDELUGE,
19499 IRONDEFENSE,
19500 IRONHEAD,
19501 IRONTAIL,
19502 IVYCUDGEL,
19503 JAWLOCK,
19504 JETPUNCH,
19505 JUDGMENT,
19506 JUMPKICK,
19507 JUNGLEHEALING,
19508 KARATECHOP,
19509 KINESIS,
19510 KINGSSHIELD,
19511 KNOCKOFF,
19512 KOWTOWCLEAVE,
19513 LANDSWRATH,
19514 LASERFOCUS,
19515 LASHOUT,
19516 LASTRESORT,
19517 LASTRESPECTS,
19518 LAVAPLUME,
19519 LEAFAGE,
19520 LEAFBLADE,
19521 LEAFSTORM,
19522 LEAFTORNADO,
19523 LEECHLIFE,
19524 LEECHSEED,
19525 LEER,
19526 LICK,
19527 LIFEDEW,
19528 LIGHTOFRUIN,
19529 LIGHTSCREEN,
19530 LIQUIDATION,
19531 LOCKON,
19532 LOVELYKISS,
19533 LOWKICK,
19534 LOWSWEEP,
19535 LUCKYCHANT,
19536 LUMINACRASH,
19537 LUNARBLESSING,
19538 LUNARDANCE,
19539 LUNGE,
19540 LUSTERPURGE,
19541 MACHPUNCH,
19542 MAGICALLEAF,
19543 MAGICALTORQUE,
19544 MAGICCOAT,
19545 MAGICPOWDER,
19546 MAGICROOM,
19547 MAGMASTORM,
19548 MAGNETBOMB,
19549 MAGNETICFLUX,
19550 MAGNETRISE,
19551 MAGNITUDE,
19552 MAKEITRAIN,
19553 MALIGNANTCHAIN,
19554 MATBLOCK,
19555 MATCHAGOTCHA,
19556 MEANLOOK,
19557 MEDITATE,
19558 MEFIRST,
19559 MEGADRAIN,
19560 MEGAHORN,
19561 MEGAKICK,
19562 MEGAPUNCH,
19563 MEMENTO,
19564 METALBURST,
19565 METALCLAW,
19566 METALSOUND,
19567 METEORASSAULT,
19568 METEORBEAM,
19569 METEORMASH,
19570 METRONOME,
19571 MIGHTYCLEAVE,
19572 MILKDRINK,
19573 MIMIC,
19574 MINDBLOWN,
19575 MINDREADER,
19576 MINIMIZE,
19577 MIRACLEEYE,
19578 MIRRORCOAT,
19579 MIRRORMOVE,
19580 MIRRORSHOT,
19581 MIST,
19582 MISTBALL,
19583 MISTYEXPLOSION,
19584 MISTYTERRAIN,
19585 MOONBLAST,
19586 MOONGEISTBEAM,
19587 MOONLIGHT,
19588 MORNINGSUN,
19589 MORTALSPIN,
19590 MOUNTAINGALE,
19591 MUDBOMB,
19592 MUDDYWATER,
19593 MUDSHOT,
19594 MUDSLAP,
19595 MUDSPORT,
19596 MULTIATTACK,
19597 MYSTICALFIRE,
19598 MYSTICALPOWER,
19599 NASTYPLOT,
19600 NATURALGIFT,
19601 NATUREPOWER,
19602 NATURESMADNESS,
19603 NEEDLEARM,
19604 NIGHTDAZE,
19605 NIGHTMARE,
19606 NIGHTSHADE,
19607 NIGHTSLASH,
19608 NOBLEROAR,
19609 NORETREAT,
19610 NOTHING,
19611 NOXIOUSTORQUE,
19612 NUZZLE,
19613 OBLIVIONWING,
19614 OBSTRUCT,
19615 OCTAZOOKA,
19616 OCTOLOCK,
19617 ODORSLEUTH,
19618 OMINOUSWIND,
19619 ORDERUP,
19620 ORIGINPULSE,
19621 OUTRAGE,
19622 OVERDRIVE,
19623 OVERHEAT,
19624 PAINSPLIT,
19625 PALEOWAVE,
19626 PARABOLICCHARGE,
19627 PARTINGSHOT,
19628 PAYBACK,
19629 PAYDAY,
19630 PECK,
19631 PERISHSONG,
19632 PETALBLIZZARD,
19633 PETALDANCE,
19634 PHANTOMFORCE,
19635 PHOTONGEYSER,
19636 PIKAPAPOW,
19637 PINMISSILE,
19638 PLASMAFISTS,
19639 PLAYNICE,
19640 PLAYROUGH,
19641 PLUCK,
19642 POISONFANG,
19643 POISONGAS,
19644 POISONJAB,
19645 POISONPOWDER,
19646 POISONSTING,
19647 POISONTAIL,
19648 POLLENPUFF,
19649 POLTERGEIST,
19650 POPULATIONBOMB,
19651 POUNCE,
19652 POUND,
19653 POWDER,
19654 POWDERSNOW,
19655 POWERGEM,
19656 POWERSHIFT,
19657 POWERSPLIT,
19658 POWERSWAP,
19659 POWERTRICK,
19660 POWERTRIP,
19661 POWERUPPUNCH,
19662 POWERWHIP,
19663 PRECIPICEBLADES,
19664 PRESENT,
19665 PRISMATICLASER,
19666 PROTECT,
19667 PSYBEAM,
19668 PSYBLADE,
19669 PSYCHIC,
19670 PSYCHICFANGS,
19671 PSYCHICNOISE,
19672 PSYCHICTERRAIN,
19673 PSYCHOBOOST,
19674 PSYCHOCUT,
19675 PSYCHOSHIFT,
19676 PSYCHUP,
19677 PSYSHIELDBASH,
19678 PSYSHOCK,
19679 PSYSTRIKE,
19680 PSYWAVE,
19681 PUNISHMENT,
19682 PURIFY,
19683 PURSUIT,
19684 PYROBALL,
19685 QUASH,
19686 QUICKATTACK,
19687 QUICKGUARD,
19688 QUIVERDANCE,
19689 RAGE,
19690 RAGEFIST,
19691 RAGEPOWDER,
19692 RAGINGBULL,
19693 RAGINGFURY,
19694 RAINDANCE,
19695 RAPIDSPIN,
19696 RAZORLEAF,
19697 RAZORSHELL,
19698 RAZORWIND,
19699 RECHARGE,
19700 RECOVER,
19701 RECYCLE,
19702 REFLECT,
19703 REFLECTTYPE,
19704 REFRESH,
19705 RELICSONG,
19706 REST,
19707 RETALIATE,
19708 RETURN,
19709 RETURN102,
19710 REVELATIONDANCE,
19711 REVENGE,
19712 REVERSAL,
19713 REVIVALBLESSING,
19714 RISINGVOLTAGE,
19715 ROAR,
19716 ROAROFTIME,
19717 ROCKBLAST,
19718 ROCKCLIMB,
19719 ROCKPOLISH,
19720 ROCKSLIDE,
19721 ROCKSMASH,
19722 ROCKTHROW,
19723 ROCKTOMB,
19724 ROCKWRECKER,
19725 ROLEPLAY,
19726 ROLLINGKICK,
19727 ROLLOUT,
19728 ROOST,
19729 ROTOTILLER,
19730 ROUND,
19731 RUINATION,
19732 SACREDFIRE,
19733 SACREDSWORD,
19734 SAFEGUARD,
19735 SALTCURE,
19736 SANDATTACK,
19737 SANDSEARSTORM,
19738 SANDSTORM,
19739 SANDTOMB,
19740 SAPPYSEED,
19741 SCALD,
19742 SCALESHOT,
19743 SCARYFACE,
19744 SCORCHINGSANDS,
19745 SCRATCH,
19746 SCREECH,
19747 SEARINGSHOT,
19748 SECRETPOWER,
19749 SECRETSWORD,
19750 SEEDBOMB,
19751 SEEDFLARE,
19752 SEISMICTOSS,
19753 SELFDESTRUCT,
19754 SHADOWBALL,
19755 SHADOWBONE,
19756 SHADOWCLAW,
19757 SHADOWFORCE,
19758 SHADOWPUNCH,
19759 SHADOWSNEAK,
19760 SHADOWSTRIKE,
19761 SHARPEN,
19762 SHEDTAIL,
19763 SHEERCOLD,
19764 SHELLSIDEARM,
19765 SHELLSMASH,
19766 SHELLTRAP,
19767 SHELTER,
19768 SHIFTGEAR,
19769 SHOCKWAVE,
19770 SHOREUP,
19771 SIGNALBEAM,
19772 SILKTRAP,
19773 SILVERWIND,
19774 SIMPLEBEAM,
19775 SING,
19776 SIZZLYSLIDE,
19777 SKETCH,
19778 SKILLSWAP,
19779 SKITTERSMACK,
19780 SKULLBASH,
19781 SKYATTACK,
19782 SKYDROP,
19783 SKYUPPERCUT,
19784 SLACKOFF,
19785 SLAM,
19786 SLASH,
19787 SLEEPPOWDER,
19788 SLEEPTALK,
19789 SLUDGE,
19790 SLUDGEBOMB,
19791 SLUDGEWAVE,
19792 SMACKDOWN,
19793 SMARTSTRIKE,
19794 SMELLINGSALTS,
19795 SMOG,
19796 SMOKESCREEN,
19797 SNAPTRAP,
19798 SNARL,
19799 SNATCH,
19800 SNIPESHOT,
19801 SNORE,
19802 SNOWSCAPE,
19803 SOAK,
19804 SOFTBOILED,
19805 SOLARBEAM,
19806 SOLARBLADE,
19807 SONICBOOM,
19808 SPACIALREND,
19809 SPARK,
19810 SPARKLINGARIA,
19811 SPARKLYSWIRL,
19812 SPECTRALTHIEF,
19813 SPEEDSWAP,
19814 SPICYEXTRACT,
19815 SPIDERWEB,
19816 SPIKECANNON,
19817 SPIKES,
19818 SPIKYSHIELD,
19819 SPINOUT,
19820 SPIRITBREAK,
19821 SPIRITSHACKLE,
19822 SPITE,
19823 SPITUP,
19824 SPLASH,
19825 SPLISHYSPLASH,
19826 SPORE,
19827 SPOTLIGHT,
19828 SPRINGTIDESTORM,
19829 STEALTHROCK,
19830 STEAMERUPTION,
19831 STEAMROLLER,
19832 STEELBEAM,
19833 STEELROLLER,
19834 STEELWING,
19835 STICKYWEB,
19836 STOCKPILE,
19837 STOMP,
19838 STOMPINGTANTRUM,
19839 STONEAXE,
19840 STONEEDGE,
19841 STOREDPOWER,
19842 STORMTHROW,
19843 STRANGESTEAM,
19844 STRENGTH,
19845 STRENGTHSAP,
19846 STRINGSHOT,
19847 STRUGGLE,
19848 STRUGGLEBUG,
19849 STUFFCHEEKS,
19850 STUNSPORE,
19851 SUBMISSION,
19852 SUBSTITUTE,
19853 SUCKERPUNCH,
19854 SUNNYDAY,
19855 SUNSTEELSTRIKE,
19856 SUPERCELLSLAM,
19857 SUPERFANG,
19858 SUPERPOWER,
19859 SUPERSONIC,
19860 SURF,
19861 SURGINGSTRIKES,
19862 SWAGGER,
19863 SWALLOW,
19864 SWEETKISS,
19865 SWEETSCENT,
19866 SWIFT,
19867 SWITCHEROO,
19868 SWORDSDANCE,
19869 SYNCHRONOISE,
19870 SYNTHESIS,
19871 SYRUPBOMB,
19872 TACHYONCUTTER,
19873 TACKLE,
19874 TAILGLOW,
19875 TAILSLAP,
19876 TAILWHIP,
19877 TAILWIND,
19878 TAKEDOWN,
19879 TAKEHEART,
19880 TARSHOT,
19881 TAUNT,
19882 TEARFULLOOK,
19883 TEATIME,
19884 TECHNOBLAST,
19885 TEETERDANCE,
19886 TELEKINESIS,
19887 TELEPORT,
19888 TEMPERFLARE,
19889 TERABLAST,
19890 TERASTARSTORM,
19891 TERRAINPULSE,
19892 THIEF,
19893 THOUSANDARROWS,
19894 THOUSANDWAVES,
19895 THRASH,
19896 THROATCHOP,
19897 THUNDER,
19898 THUNDERBOLT,
19899 THUNDERCAGE,
19900 THUNDERCLAP,
19901 THUNDERFANG,
19902 THUNDEROUSKICK,
19903 THUNDERPUNCH,
19904 THUNDERSHOCK,
19905 THUNDERWAVE,
19906 TICKLE,
19907 TIDYUP,
19908 TOPSYTURVY,
19909 TORCHSONG,
19910 TORMENT,
19911 TOXIC,
19912 TOXICSPIKES,
19913 TOXICTHREAD,
19914 TRAILBLAZE,
19915 TRANSFORM,
19916 TRIATTACK,
19917 TRICK,
19918 TRICKORTREAT,
19919 TRICKROOM,
19920 TRIPLEARROWS,
19921 TRIPLEAXEL,
19922 TRIPLEDIVE,
19923 TRIPLEKICK,
19924 TROPKICK,
19925 TRUMPCARD,
19926 TWINBEAM,
19927 TWINEEDLE,
19928 TWISTER,
19929 UPPERHAND,
19930 UPROAR,
19931 UTURN,
19932 VACUUMWAVE,
19933 VCREATE,
19934 VEEVEEVOLLEY,
19935 VENOMDRENCH,
19936 VENOSHOCK,
19937 VICTORYDANCE,
19938 VINEWHIP,
19939 VISEGRIP,
19940 VITALTHROW,
19941 VOLTSWITCH,
19942 VOLTTACKLE,
19943 WAKEUPSLAP,
19944 WATERFALL,
19945 WATERGUN,
19946 WATERPLEDGE,
19947 WATERPULSE,
19948 WATERSHURIKEN,
19949 WATERSPORT,
19950 WATERSPOUT,
19951 WAVECRASH,
19952 WEATHERBALL,
19953 WHIRLPOOL,
19954 WHIRLWIND,
19955 WICKEDBLOW,
19956 WICKEDTORQUE,
19957 WIDEGUARD,
19958 WILDBOLTSTORM,
19959 WILDCHARGE,
19960 WILLOWISP,
19961 WINGATTACK,
19962 WISH,
19963 WITHDRAW,
19964 WONDERROOM,
19965 WOODHAMMER,
19966 WORKUP,
19967 WORRYSEED,
19968 WRAP,
19969 WRINGOUT,
19970 XSCISSOR,
19971 YAWN,
19972 ZAPCANNON,
19973 ZENHEADBUTT,
19974 ZINGZAP,
19975 ZIPPYZAP,
19976 },
19977 default = NONE
19978}
19979
19980impl Choices {
19981 pub fn is_hiddenpower(&self) -> bool {
19982 match self {
19983 Choices::HIDDENPOWER
19984 | Choices::HIDDENPOWERBUG60
19985 | Choices::HIDDENPOWERBUG70
19986 | Choices::HIDDENPOWERDARK60
19987 | Choices::HIDDENPOWERDARK70
19988 | Choices::HIDDENPOWERDRAGON60
19989 | Choices::HIDDENPOWERDRAGON70
19990 | Choices::HIDDENPOWERELECTRIC60
19991 | Choices::HIDDENPOWERELECTRIC70
19992 | Choices::HIDDENPOWERFIGHTING60
19993 | Choices::HIDDENPOWERFIGHTING70
19994 | Choices::HIDDENPOWERFIRE60
19995 | Choices::HIDDENPOWERFIRE70
19996 | Choices::HIDDENPOWERFLYING60
19997 | Choices::HIDDENPOWERFLYING70
19998 | Choices::HIDDENPOWERGHOST60
19999 | Choices::HIDDENPOWERGHOST70
20000 | Choices::HIDDENPOWERGRASS60
20001 | Choices::HIDDENPOWERGRASS70
20002 | Choices::HIDDENPOWERGROUND60
20003 | Choices::HIDDENPOWERGROUND70
20004 | Choices::HIDDENPOWERICE60
20005 | Choices::HIDDENPOWERICE70
20006 | Choices::HIDDENPOWERPOISON60
20007 | Choices::HIDDENPOWERPOISON70
20008 | Choices::HIDDENPOWERPSYCHIC60
20009 | Choices::HIDDENPOWERPSYCHIC70
20010 | Choices::HIDDENPOWERROCK60
20011 | Choices::HIDDENPOWERROCK70
20012 | Choices::HIDDENPOWERSTEEL60
20013 | Choices::HIDDENPOWERSTEEL70
20014 | Choices::HIDDENPOWERWATER60
20015 | Choices::HIDDENPOWERWATER70 => true,
20016 _ => false,
20017 }
20018 }
20019 pub fn increased_crit_ratio(&self) -> bool {
20020 match self {
20021 Choices::AEROBLAST
20022 | Choices::AIRCUTTER
20023 | Choices::AQUACUTTER
20024 | Choices::ATTACKORDER
20025 | Choices::BLAZEKICK
20026 | Choices::CRABHAMMER
20027 | Choices::CROSSCHOP
20028 | Choices::CROSSPOISON
20029 | Choices::DIRECLAW
20030 | Choices::DRILLRUN
20031 | Choices::ESPERWING
20032 | Choices::IVYCUDGEL
20033 | Choices::KARATECHOP
20034 | Choices::LEAFBLADE
20035 | Choices::NIGHTSLASH
20036 | Choices::POISONTAIL
20037 | Choices::PSYCHOCUT
20038 | Choices::RAZORLEAF
20039 | Choices::RAZORWIND
20040 | Choices::SHADOWCLAW
20041 | Choices::SKYATTACK
20042 | Choices::SLASH
20043 | Choices::SNIPESHOT
20044 | Choices::SPACIALREND
20045 | Choices::STONEEDGE
20046 | Choices::TRIPLEARROWS => true,
20047 _ => false,
20048 }
20049 }
20050 pub fn guaranteed_crit(&self) -> bool {
20051 match self {
20052 Choices::WICKEDBLOW
20053 | Choices::SURGINGSTRIKES
20054 | Choices::FLOWERTRICK
20055 | Choices::STORMTHROW
20056 | Choices::FROSTBREATH => true,
20057 _ => false,
20058 }
20059 }
20060}
20061
20062#[derive(Clone)]
20063pub struct Choice {
20064 pub move_id: Choices, pub move_index: PokemonMoveIndex,
20067 pub switch_id: PokemonIndex,
20068 pub move_type: PokemonType,
20069 pub accuracy: f32,
20070 pub category: MoveCategory,
20071 pub base_power: f32,
20072 pub boost: Option<Boost>,
20073 pub priority: i8,
20074 pub flags: Flags,
20075 pub drain: Option<f32>,
20076 pub recoil: Option<f32>,
20077 pub crash: Option<f32>,
20078 pub heal: Option<Heal>,
20079 pub status: Option<Status>,
20080 pub volatile_status: Option<VolatileStatus>,
20081 pub side_condition: Option<SideCondition>,
20082 pub secondaries: Option<Vec<Secondary>>,
20083
20084 pub target: MoveTarget,
20085
20086 pub first_move: bool,
20087 pub sleep_talk_move: bool,
20088}
20089
20090impl fmt::Debug for Choice {
20091 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20092 write!(f, "Choice: {:?}", self.move_id)
20093 }
20094}
20095
20096impl Choice {
20097 pub fn multi_accuracy(&self) -> MultiAccuracyMove {
20098 match self.move_id {
20099 Choices::TRIPLEAXEL => MultiAccuracyMove::TripleHit,
20100 Choices::TRIPLEKICK => MultiAccuracyMove::TripleHit,
20101 Choices::POPULATIONBOMB => MultiAccuracyMove::TenHits,
20102 _ => MultiAccuracyMove::None,
20103 }
20104 }
20105 pub fn multi_hit(&self) -> MultiHitMove {
20106 match self.move_id {
20107 Choices::ARMTHRUST => MultiHitMove::TwoToFiveHits,
20108 Choices::BARRAGE => MultiHitMove::TwoToFiveHits,
20109 Choices::BONEMERANG => MultiHitMove::DoubleHit,
20110 Choices::BONERUSH => MultiHitMove::TwoToFiveHits,
20111 Choices::BULLETSEED => MultiHitMove::TwoToFiveHits,
20112 Choices::COMETPUNCH => MultiHitMove::TwoToFiveHits,
20113 Choices::DOUBLEHIT => MultiHitMove::DoubleHit,
20114 Choices::DOUBLEIRONBASH => MultiHitMove::DoubleHit,
20115 Choices::DOUBLEKICK => MultiHitMove::DoubleHit,
20116 Choices::DOUBLESLAP => MultiHitMove::TwoToFiveHits,
20117 Choices::DRAGONDARTS => MultiHitMove::DoubleHit,
20118 Choices::DUALCHOP => MultiHitMove::DoubleHit,
20119 Choices::DUALWINGBEAT => MultiHitMove::DoubleHit,
20120 Choices::FURYATTACK => MultiHitMove::TwoToFiveHits,
20121 Choices::FURYSWIPES => MultiHitMove::TwoToFiveHits,
20122 Choices::GEARGRIND => MultiHitMove::DoubleHit,
20123 Choices::ICICLESPEAR => MultiHitMove::TwoToFiveHits,
20124 Choices::PINMISSILE => MultiHitMove::TwoToFiveHits,
20125 Choices::ROCKBLAST => MultiHitMove::TwoToFiveHits,
20126 Choices::SCALESHOT => MultiHitMove::TwoToFiveHits,
20127 Choices::SPIKECANNON => MultiHitMove::TwoToFiveHits,
20128 Choices::SURGINGSTRIKES => MultiHitMove::TripleHit,
20129 Choices::TACHYONCUTTER => MultiHitMove::DoubleHit,
20130 Choices::TAILSLAP => MultiHitMove::TwoToFiveHits,
20131 Choices::TRIPLEDIVE => MultiHitMove::TripleHit,
20132 Choices::TWINBEAM => MultiHitMove::DoubleHit,
20133 Choices::TWINEEDLE => MultiHitMove::DoubleHit,
20134 Choices::WATERSHURIKEN => MultiHitMove::TwoToFiveHits,
20135
20136 Choices::POPULATIONBOMB => MultiHitMove::PopulationBomb,
20139 Choices::TRIPLEAXEL => MultiHitMove::TripleAxel,
20140 _ => MultiHitMove::None,
20141 }
20142 }
20143 pub fn targets_special_defense(&self) -> bool {
20144 self.category == MoveCategory::Special
20145 && !(self.move_id == Choices::PSYSHOCK
20146 || self.move_id == Choices::SECRETSWORD
20147 || self.move_id == Choices::PSYSTRIKE)
20148 }
20149 pub fn add_or_create_secondaries(&mut self, secondary: Secondary) {
20150 if let Some(secondaries) = &mut self.secondaries {
20151 secondaries.push(secondary);
20152 } else {
20153 self.secondaries = Some(vec![secondary]);
20154 }
20155 }
20156 pub fn remove_effects_for_protect(&mut self) {
20157 self.base_power = 0.0;
20160 self.category = MoveCategory::Status;
20161 self.accuracy = 100.0;
20162 self.flags.drag = false;
20163 self.flags.pivot = false;
20164 self.heal = None;
20165 self.drain = None;
20166 self.recoil = None;
20167 self.boost = None;
20168 self.status = None;
20169 self.volatile_status = None;
20170 self.side_condition = None;
20171 self.secondaries = None;
20172 }
20173 pub fn remove_all_effects(&mut self) {
20174 self.category = MoveCategory::Status;
20175 self.flags.clear_all();
20176 self.base_power = 0.0;
20177 self.accuracy = 100.0;
20178 self.heal = None;
20179 self.drain = None;
20180 self.recoil = None;
20181 self.crash = None;
20182 self.heal = None;
20183 self.boost = None;
20184 self.status = None;
20185 self.volatile_status = None;
20186 self.side_condition = None;
20187 self.secondaries = None;
20188 }
20189}
20190
20191impl Default for Choice {
20192 fn default() -> Choice {
20193 Choice {
20194 move_id: Choices::NONE,
20195 move_index: PokemonMoveIndex::M0,
20196 switch_id: PokemonIndex::P0,
20197 move_type: PokemonType::NORMAL,
20198 accuracy: 100.0,
20199 category: MoveCategory::Status,
20200 base_power: 0.0,
20201 boost: None,
20202 priority: 0,
20203 flags: Flags {
20204 ..Default::default()
20205 },
20206 drain: None,
20207 recoil: None,
20208 crash: None,
20209 heal: None,
20210 status: None,
20211 volatile_status: None,
20212 side_condition: None,
20213 secondaries: None,
20214 target: MoveTarget::Opponent,
20215 first_move: true,
20216 sleep_talk_move: false,
20217 }
20218 }
20219}
20220
20221pub fn undo_physical_special_split(moves: &mut HashMap<Choices, Choice>) {
20222 for (_, choice) in moves.iter_mut() {
20223 if choice.category == MoveCategory::Status {
20224 continue;
20225 }
20226 match choice.move_type {
20227 PokemonType::NORMAL
20228 | PokemonType::FIGHTING
20229 | PokemonType::POISON
20230 | PokemonType::GROUND
20231 | PokemonType::FLYING
20232 | PokemonType::BUG
20233 | PokemonType::ROCK
20234 | PokemonType::GHOST
20235 | PokemonType::STEEL => {
20236 choice.category = MoveCategory::Physical;
20237 }
20238 _ => {
20239 choice.category = MoveCategory::Special;
20240 }
20241 }
20242 }
20243}