forked from pret/pokefirered
-
Notifications
You must be signed in to change notification settings - Fork 0
/
battle_ai_scripts.s
3259 lines (2736 loc) · 88.2 KB
/
battle_ai_scripts.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#include "constants/battle.h"
#include "constants/battle_ai.h"
#include "constants/abilities.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/battle_move_effects.h"
#include "constants/hold_effects.h"
#include "constants/pokemon.h"
.include "asm/macros/battle_ai_script.inc"
.section script_data, "aw", %progbits
@ The FRLG scripts are improved subtly by Emerald in a few places
@ To make adding these improvements easier they are commented and tagged with "Improvement in Emerald"
@ Emerald also adds a few entirely new AI commands (mostly to expand Double Battle AI), which are not included
.align 2
gBattleAI_ScriptsTable:: @ 81D9BF4
.4byte AI_CheckBadMove
.4byte AI_CheckViability
.4byte AI_TryToFaint
.4byte AI_SetupFirstTurn
.4byte AI_Risky
.4byte AI_PreferStrongestMove
.4byte AI_PreferBatonPass
.4byte AI_DoubleBattle
.4byte AI_HPAware
.4byte AI_Unknown
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Ret
.4byte AI_Roaming
.4byte AI_Safari
.4byte AI_FirstBattle
AI_CheckBadMove:: @ 81D9C74
@ if_move MOVE_FISSURE, AI_CBM_CheckIfNegatesType @ Improvement in Emerald
@ if_move MOVE_HORN_DRILL, AI_CBM_CheckIfNegatesType
get_how_powerful_move_is
if_equal MOVE_POWER_DISCOURAGED, AI_CheckBadMove_CheckSoundproof
AI_CBM_CheckIfNegatesType::
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_VOLT_ABSORB, CheckIfVoltAbsorbCancelsElectric
if_equal ABILITY_WATER_ABSORB, CheckIfWaterAbsorbCancelsWater
if_equal ABILITY_FLASH_FIRE, CheckIfFlashFireCancelsFire
if_equal ABILITY_WONDER_GUARD, CheckIfWonderGuardCancelsMove
if_equal ABILITY_LEVITATE, CheckIfLevitateCancelsGroundMove
goto AI_CheckBadMove_CheckSoundproof
CheckIfVoltAbsorbCancelsElectric:: @ 81D9CA6
get_curr_move_type
if_equal_ TYPE_ELECTRIC, Score_Minus12
goto AI_CheckBadMove_CheckSoundproof
CheckIfWaterAbsorbCancelsWater:: @ 81D9CB3
get_curr_move_type
if_equal_ TYPE_WATER, Score_Minus12
goto AI_CheckBadMove_CheckSoundproof
CheckIfFlashFireCancelsFire:: @ 81D9CC0
get_curr_move_type
if_equal_ TYPE_FIRE, Score_Minus12
goto AI_CheckBadMove_CheckSoundproof
CheckIfWonderGuardCancelsMove:: @ 81D9CCD
if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CheckBadMove_CheckSoundproof
goto Score_Minus10
CheckIfLevitateCancelsGroundMove:: @ 81D9CD8
get_curr_move_type
if_equal_ TYPE_GROUND, Score_Minus10
AI_CheckBadMove_CheckSoundproof:: @ 81D9CE0
get_ability AI_TARGET
if_not_equal ABILITY_SOUNDPROOF, AI_CheckBadMove_CheckEffect
if_move MOVE_GROWL, Score_Minus10
if_move MOVE_ROAR, Score_Minus10
if_move MOVE_SING, Score_Minus10
if_move MOVE_SUPERSONIC, Score_Minus10
if_move MOVE_SCREECH, Score_Minus10
if_move MOVE_SNORE, Score_Minus10
if_move MOVE_UPROAR, Score_Minus10
if_move MOVE_METAL_SOUND, Score_Minus10
if_move MOVE_GRASS_WHISTLE, Score_Minus10
AI_CheckBadMove_CheckEffect:: @ 81D9D27
if_effect EFFECT_SLEEP, AI_CBM_Sleep
if_effect EFFECT_EXPLOSION, AI_CBM_Explosion
if_effect EFFECT_DREAM_EATER, AI_CBM_DreamEater
if_effect EFFECT_ATTACK_UP, AI_CBM_AttackUp
if_effect EFFECT_DEFENSE_UP, AI_CBM_DefenseUp
if_effect EFFECT_SPEED_UP, AI_CBM_SpeedUp
if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CBM_SpAtkUp
if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CBM_SpDefUp
if_effect EFFECT_ACCURACY_UP, AI_CBM_AccUp
if_effect EFFECT_EVASION_UP, AI_CBM_EvasionUp
if_effect EFFECT_ATTACK_DOWN, AI_CBM_AttackDown
if_effect EFFECT_DEFENSE_DOWN, AI_CBM_DefenseDown
if_effect EFFECT_SPEED_DOWN, AI_CBM_SpeedDown
if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CBM_SpAtkDown
if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CBM_SpDefDown
if_effect EFFECT_ACCURACY_DOWN, AI_CBM_AccDown
if_effect EFFECT_EVASION_DOWN, AI_CBM_EvasionDown
if_effect EFFECT_HAZE, AI_CBM_Haze
if_effect EFFECT_BIDE, AI_CBM_HighRiskForDamage
if_effect EFFECT_ROAR, AI_CBM_Roar
if_effect EFFECT_TOXIC, AI_CBM_Poison
if_effect EFFECT_LIGHT_SCREEN, AI_CBM_LightScreen
if_effect EFFECT_OHKO, AI_CBM_OneHitKO
if_effect EFFECT_RAZOR_WIND, AI_CBM_HighRiskForDamage
if_effect EFFECT_SUPER_FANG, AI_CBM_HighRiskForDamage
if_effect EFFECT_MIST, AI_CBM_Mist
if_effect EFFECT_FOCUS_ENERGY, AI_CBM_FocusEnergy
if_effect EFFECT_CONFUSE, AI_CBM_Confuse
if_effect EFFECT_ATTACK_UP_2, AI_CBM_AttackUp
if_effect EFFECT_DEFENSE_UP_2, AI_CBM_DefenseUp
if_effect EFFECT_SPEED_UP_2, AI_CBM_SpeedUp
if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CBM_SpAtkUp
if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CBM_SpDefUp
if_effect EFFECT_ACCURACY_UP_2, AI_CBM_AccUp
if_effect EFFECT_EVASION_UP_2, AI_CBM_EvasionUp
if_effect EFFECT_ATTACK_DOWN_2, AI_CBM_AttackDown
if_effect EFFECT_DEFENSE_DOWN_2, AI_CBM_DefenseDown
if_effect EFFECT_SPEED_DOWN_2, AI_CBM_SpeedDown
if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CBM_SpAtkDown
if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CBM_SpDefDown
if_effect EFFECT_ACCURACY_DOWN_2, AI_CBM_AccDown
if_effect EFFECT_EVASION_DOWN_2, AI_CBM_EvasionDown
if_effect EFFECT_REFLECT, AI_CBM_Reflect
if_effect EFFECT_POISON, AI_CBM_Poison
if_effect EFFECT_PARALYZE, AI_CBM_Paralyze
if_effect EFFECT_SUBSTITUTE, AI_CBM_Substitute
if_effect EFFECT_RECHARGE, AI_CBM_HighRiskForDamage
if_effect EFFECT_LEECH_SEED, AI_CBM_LeechSeed
if_effect EFFECT_DISABLE, AI_CBM_Disable
if_effect EFFECT_LEVEL_DAMAGE, AI_CBM_HighRiskForDamage
if_effect EFFECT_PSYWAVE, AI_CBM_HighRiskForDamage
if_effect EFFECT_COUNTER, AI_CBM_HighRiskForDamage
if_effect EFFECT_ENCORE, AI_CBM_Encore
if_effect EFFECT_SNORE, AI_CBM_DamageDuringSleep
if_effect EFFECT_SLEEP_TALK, AI_CBM_DamageDuringSleep
if_effect EFFECT_FLAIL, AI_CBM_HighRiskForDamage
if_effect EFFECT_MEAN_LOOK, AI_CBM_CantEscape
if_effect EFFECT_NIGHTMARE, AI_CBM_Nightmare
if_effect EFFECT_MINIMIZE, AI_CBM_EvasionUp
if_effect EFFECT_CURSE, AI_CBM_Curse
if_effect EFFECT_SPIKES, AI_CBM_Spikes
if_effect EFFECT_FORESIGHT, AI_CBM_Foresight
if_effect EFFECT_PERISH_SONG, AI_CBM_PerishSong
if_effect EFFECT_SANDSTORM, AI_CBM_Sandstorm
if_effect EFFECT_SWAGGER, AI_CBM_Confuse
if_effect EFFECT_ATTRACT, AI_CBM_Attract
if_effect EFFECT_RETURN, AI_CBM_HighRiskForDamage
if_effect EFFECT_PRESENT, AI_CBM_HighRiskForDamage
if_effect EFFECT_FRUSTRATION, AI_CBM_HighRiskForDamage
if_effect EFFECT_SAFEGUARD, AI_CBM_Safeguard
if_effect EFFECT_MAGNITUDE, AI_CBM_Magnitude
if_effect EFFECT_BATON_PASS, AI_CBM_BatonPass
if_effect EFFECT_SONICBOOM, AI_CBM_HighRiskForDamage
if_effect EFFECT_RAIN_DANCE, AI_CBM_RainDance
if_effect EFFECT_SUNNY_DAY, AI_CBM_SunnyDay
if_effect EFFECT_BELLY_DRUM, AI_CBM_BellyDrum
if_effect EFFECT_PSYCH_UP, AI_CBM_Haze
if_effect EFFECT_MIRROR_COAT, AI_CBM_HighRiskForDamage
if_effect EFFECT_SKULL_BASH, AI_CBM_HighRiskForDamage
if_effect EFFECT_FUTURE_SIGHT, AI_CBM_FutureSight
if_effect EFFECT_TELEPORT, Score_Minus10
if_effect EFFECT_DEFENSE_CURL, AI_CBM_DefenseUp
if_effect EFFECT_FAKE_OUT, AI_CBM_FakeOut
if_effect EFFECT_STOCKPILE, AI_CBM_Stockpile
if_effect EFFECT_SPIT_UP, AI_CBM_SpitUpAndSwallow
if_effect EFFECT_SWALLOW, AI_CBM_SpitUpAndSwallow
if_effect EFFECT_HAIL, AI_CBM_Hail
if_effect EFFECT_TORMENT, AI_CBM_Torment
if_effect EFFECT_FLATTER, AI_CBM_Confuse
if_effect EFFECT_WILL_O_WISP, AI_CBM_WillOWisp
if_effect EFFECT_MEMENTO, AI_CBM_Memento
if_effect EFFECT_FOCUS_PUNCH, AI_CBM_HighRiskForDamage
if_effect EFFECT_HELPING_HAND, AI_CBM_HelpingHand
if_effect EFFECT_TRICK, AI_CBM_TrickAndKnockOff
if_effect EFFECT_INGRAIN, AI_CBM_Ingrain
if_effect EFFECT_SUPERPOWER, AI_CBM_HighRiskForDamage
if_effect EFFECT_RECYCLE, AI_CBM_Recycle
if_effect EFFECT_KNOCK_OFF, AI_CBM_TrickAndKnockOff
if_effect EFFECT_ENDEAVOR, AI_CBM_HighRiskForDamage
if_effect EFFECT_IMPRISON, AI_CBM_Imprison
if_effect EFFECT_REFRESH, AI_CBM_Refresh
if_effect EFFECT_LOW_KICK, AI_CBM_HighRiskForDamage
if_effect EFFECT_MUD_SPORT, AI_CBM_MudSport
if_effect EFFECT_TICKLE, AI_CBM_Tickle
if_effect EFFECT_COSMIC_POWER, AI_CBM_CosmicPower
if_effect EFFECT_BULK_UP, AI_CBM_BulkUp
if_effect EFFECT_WATER_SPORT, AI_CBM_WaterSport
if_effect EFFECT_CALM_MIND, AI_CBM_CalmMind
if_effect EFFECT_DRAGON_DANCE, AI_CBM_DragonDance
end
AI_CBM_Sleep:: @ 81D9FB6
get_ability AI_TARGET
if_equal ABILITY_INSOMNIA, Score_Minus10
if_equal ABILITY_VITAL_SPIRIT, Score_Minus10
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
AI_CBM_Explosion:: @ 81D9FCF
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_DAMP, Score_Minus10
count_alive_pokemon AI_USER
if_not_equal 0, AI_CBM_Explosion_End
count_alive_pokemon AI_TARGET
if_not_equal 0, Score_Minus10
goto Score_Minus1
AI_CBM_Explosion_End:: @ 81D9FF2
end
AI_CBM_Nightmare:: @ 81D9FF3
if_status2 AI_TARGET, STATUS2_NIGHTMARE, Score_Minus10
if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
end
AI_CBM_DreamEater:: @ 81DA008
if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
end
AI_CBM_BellyDrum:: @ 81DA019
if_hp_less_than AI_USER, 51, Score_Minus10
AI_CBM_AttackUp:: @ 81DA020
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
end
AI_CBM_DefenseUp:: @ 81DA029
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
end
AI_CBM_SpeedUp:: @ 81DA032
if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus10
end
AI_CBM_SpAtkUp:: @ 81DA03B
if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
end
AI_CBM_SpDefUp:: @ 81DA044
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus10
end
AI_CBM_AccUp:: @ 81DA04D
if_stat_level_equal AI_USER, STAT_ACC, 12, Score_Minus10
end
AI_CBM_EvasionUp:: @ 81DA056
if_stat_level_equal AI_USER, STAT_EVASION, 12, Score_Minus10
end
AI_CBM_AttackDown:: @ 81DA05F
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_HYPER_CUTTER, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_DefenseDown:: @ 81DA074
if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_SpeedDown:: @ 81DA081
if_stat_level_equal AI_TARGET, STAT_SPEED, 0, Score_Minus10
@ get_ability AI_TARGET @ Improvement in Emerald
@ if_equal ABILITY_SPEED_BOOST, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_SpAtkDown:: @ 81DA08E
if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_SpDefDown:: @ 81DA09B
if_stat_level_equal AI_TARGET, STAT_SPDEF, 0, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_AccDown:: @ 81DA0A8
if_stat_level_equal AI_TARGET, STAT_ACC, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_KEEN_EYE, Score_Minus10
goto CheckIfAbilityBlocksStatChange
AI_CBM_EvasionDown:: @ 81DA0BD
if_stat_level_equal AI_TARGET, STAT_EVASION, 0, Score_Minus10
CheckIfAbilityBlocksStatChange:: @ 81DA0C5
get_ability AI_TARGET
if_equal ABILITY_CLEAR_BODY, Score_Minus10
if_equal ABILITY_WHITE_SMOKE, Score_Minus10
end
AI_CBM_Haze:: @ 81DA0D4
if_stat_level_less_than AI_USER, STAT_ATK, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_DEF, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_SPEED, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_SPATK, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_SPDEF, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_ACC, 6, AI_CBM_Haze_End
if_stat_level_less_than AI_USER, STAT_EVASION, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_ATK, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_DEF, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_SPEED, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_SPATK, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_ACC, 6, AI_CBM_Haze_End
if_stat_level_more_than AI_TARGET, STAT_EVASION, 6, AI_CBM_Haze_End
goto Score_Minus10
AI_CBM_Haze_End:: @ 81DA149
end
AI_CBM_Roar:: @ 81DA14A
count_alive_pokemon AI_TARGET
if_equal 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_SUCTION_CUPS, Score_Minus10
end
AI_CBM_Poison:: @ 81DA15B
get_target_type1
if_equal TYPE_STEEL, Score_Minus10
if_equal TYPE_POISON, Score_Minus10
get_target_type2
if_equal TYPE_STEEL, Score_Minus10
if_equal TYPE_POISON, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_IMMUNITY, Score_Minus10
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
AI_CBM_LightScreen:: @ 81DA18A
if_side_affecting AI_USER, SIDE_STATUS_LIGHTSCREEN, Score_Minus8
end
AI_CBM_OneHitKO:: @ 81DA195
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_STURDY, Score_Minus10
if_level_cond 1, Score_Minus10
end
AI_CBM_Magnitude:: @ 81DA1AA
get_ability AI_TARGET
if_equal ABILITY_LEVITATE, Score_Minus10
AI_CBM_HighRiskForDamage:: @ 81DA1B2
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_not_equal ABILITY_WONDER_GUARD, AI_CBM_HighRiskForDamage_End
if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CBM_HighRiskForDamage_End
goto Score_Minus10
AI_CBM_HighRiskForDamage_End:: @ 81DA1CB
end
AI_CBM_Mist:: @ 81DA1CC
if_side_affecting AI_USER, SIDE_STATUS_MIST, Score_Minus8
end
AI_CBM_FocusEnergy:: @ 81DA1D7
if_status2 AI_USER, STATUS2_FOCUS_ENERGY, Score_Minus10
end
AI_CBM_Confuse:: @ 81DA1E2
if_status2 AI_TARGET, STATUS2_CONFUSION, Score_Minus5
get_ability AI_TARGET
if_equal ABILITY_OWN_TEMPO, Score_Minus10
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
AI_CBM_Reflect:: @ 81DA1F5
if_side_affecting AI_USER, SIDE_STATUS_REFLECT, Score_Minus8
end
AI_CBM_Paralyze:: @ 81DA200
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_LIMBER, Score_Minus10
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
AI_CBM_Substitute:: @ 81DA219
if_status2 AI_USER, STATUS2_SUBSTITUTE, Score_Minus8
if_hp_less_than AI_USER, 26, Score_Minus10
end
AI_CBM_LeechSeed:: @ 81DA22B
if_status3 AI_TARGET, STATUS3_LEECHSEED, Score_Minus10
get_target_type1
if_equal TYPE_GRASS, Score_Minus10
get_target_type2
if_equal TYPE_GRASS, Score_Minus10
end
AI_CBM_Disable:: @ 81DA246
if_any_move_disabled AI_TARGET, Score_Minus8
end
AI_CBM_Encore:: @ 81DA24E
if_any_move_encored AI_TARGET, Score_Minus8
end
AI_CBM_DamageDuringSleep:: @ 81DA256
if_not_status AI_USER, STATUS1_SLEEP, Score_Minus8
end
AI_CBM_CantEscape:: @ 81DA261
if_status2 AI_TARGET, STATUS2_ESCAPE_PREVENTION, Score_Minus10
end
AI_CBM_Curse:: @ 81DA26C
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
AI_CBM_Spikes:: @ 81DA27D
if_side_affecting AI_TARGET, SIDE_STATUS_SPIKES, Score_Minus10
end
AI_CBM_Foresight:: @ 81DA288
if_status2 AI_TARGET, STATUS2_FORESIGHT, Score_Minus10
end
AI_CBM_PerishSong:: @ 81DA293
if_status3 AI_TARGET, STATUS3_PERISH_SONG, Score_Minus10
end
AI_CBM_Sandstorm:: @ 81DA29E
get_weather
if_equal AI_WEATHER_SANDSTORM, Score_Minus8
end
AI_CBM_Attract:: @ 81DA2A6
if_status2 AI_TARGET, STATUS2_INFATUATION, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_OBLIVIOUS, Score_Minus10
get_gender AI_USER
if_equal MON_MALE, AI_CBM_Attract_CheckIfTargetIsFemale
if_equal MON_FEMALE, AI_CBM_Attract_CheckIfTargetIsMale
goto Score_Minus10
AI_CBM_Attract_CheckIfTargetIsFemale:: @ 81DA2CB
get_gender AI_TARGET
if_equal MON_FEMALE, AI_CBM_Attract_End
goto Score_Minus10
AI_CBM_Attract_CheckIfTargetIsMale:: @ 81DA2D8
get_gender AI_TARGET
if_equal MON_MALE, AI_CBM_Attract_End
goto Score_Minus10
AI_CBM_Attract_End:: @ 81DA2E5
end
AI_CBM_Safeguard:: @ 81DA2E6
if_side_affecting AI_USER, SIDE_STATUS_SAFEGUARD, Score_Minus8
end
AI_CBM_Memento:: @ 81DA2F1
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus8
AI_CBM_BatonPass:: @ 81DA301
count_alive_pokemon AI_USER
if_equal 0, Score_Minus10
end
AI_CBM_RainDance:: @ 81DA30A
get_weather
if_equal AI_WEATHER_RAIN, Score_Minus8
end
AI_CBM_SunnyDay:: @ 81DA312
get_weather
if_equal AI_WEATHER_SUN, Score_Minus8
end
AI_CBM_FutureSight:: @ 81DA31A
if_side_affecting AI_TARGET, SIDE_STATUS_FUTUREATTACK, Score_Minus10
@ if_side_affecting AI_USER, SIDE_STATUS_FUTUREATTACK, Score_Minus12 @ Improvement in Emerald
end
AI_CBM_FakeOut:: @ 81DA325
is_first_turn_for AI_USER
if_equal 0, Score_Minus10
end
AI_CBM_Stockpile:: @ 81DA32E
get_stockpile_count AI_USER
if_equal 3, Score_Minus10
end
AI_CBM_SpitUpAndSwallow:: @ 81DA337
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_stockpile_count AI_USER
if_equal 0, Score_Minus10
end
AI_CBM_Hail:: @ 81DA346
get_weather
if_equal AI_WEATHER_HAIL, Score_Minus8
end
AI_CBM_Torment:: @ 81DA34E
if_status2 AI_TARGET, STATUS2_TORMENT, Score_Minus10
end
AI_CBM_WillOWisp:: @ 81DA359
get_ability AI_TARGET
if_equal ABILITY_WATER_VEIL, Score_Minus10
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0_5, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0_25, Score_Minus10
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
AI_CBM_HelpingHand:: @ 81DA37E
if_not_double_battle Score_Minus10
end
AI_CBM_TrickAndKnockOff:: @ 81DA386
get_ability AI_TARGET
if_equal ABILITY_STICKY_HOLD, Score_Minus10
end
AI_CBM_Ingrain:: @ 81DA38F
if_status3 AI_USER, STATUS3_ROOTED, Score_Minus10
end
AI_CBM_Recycle:: @ 81DA39A
get_used_held_item AI_USER
if_equal ITEM_NONE, Score_Minus10
end
AI_CBM_Imprison:: @ 81DA3A3
if_status3 AI_USER, STATUS3_IMPRISONED_OTHERS, Score_Minus10
end
AI_CBM_Refresh:: @ 81DA3AE
if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, Score_Minus10
end
AI_CBM_MudSport:: @ 81DA3B9
if_status3 AI_USER, STATUS3_MUDSPORT, Score_Minus10
end
AI_CBM_Tickle:: @ 81DA3C4
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus8
end
AI_CBM_CosmicPower:: @ 81DA3D5
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
AI_CBM_BulkUp:: @ 81DA3E6
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
AI_CBM_WaterSport:: @ 81DA3F7
if_status3 AI_USER, STATUS3_WATERSPORT, Score_Minus10
end
AI_CBM_CalmMind:: @ 81DA402
if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
AI_CBM_DragonDance:: @ 81DA413
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus8
end
Score_Minus1:: @ 81DA424
score -1
end
Score_Minus2:: @ 81DA427
score -2
end
Score_Minus3:: @ 81DA42A
score -3
end
Score_Minus5:: @ 81DA42D
score -5
end
Score_Minus8:: @ 81DA430
score -8
end
Score_Minus10:: @ 81DA433
score -10
end
Score_Minus12:: @ 81DA436
score -12
end
Score_Plus1::
score +1
end
Score_Plus2::
score +2
end
Score_Plus3::
score +3
end
Score_Plus5::
score +5
end
@ Improvement in Emerald
@Score_Plus10::
@ score +10
@ end
AI_CheckViability:: @ 81DA445
if_effect EFFECT_SLEEP, AI_CV_Sleep
if_effect EFFECT_ABSORB, AI_CV_Absorb
if_effect EFFECT_EXPLOSION, AI_CV_SelfKO
if_effect EFFECT_DREAM_EATER, AI_CV_DreamEater
if_effect EFFECT_MIRROR_MOVE, AI_CV_MirrorMove
if_effect EFFECT_ATTACK_UP, AI_CV_AttackUp
if_effect EFFECT_DEFENSE_UP, AI_CV_DefenseUp
if_effect EFFECT_SPEED_UP, AI_CV_SpeedUp
if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CV_SpAtkUp
if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CV_SpDefUp
if_effect EFFECT_ACCURACY_UP, AI_CV_AccuracyUp
if_effect EFFECT_EVASION_UP, AI_CV_EvasionUp
if_effect EFFECT_ALWAYS_HIT, AI_CV_AlwaysHit
if_effect EFFECT_ATTACK_DOWN, AI_CV_AttackDown
if_effect EFFECT_DEFENSE_DOWN, AI_CV_DefenseDown
if_effect EFFECT_SPEED_DOWN, AI_CV_SpeedDown
if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CV_SpAtkDown
if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CV_SpDefDown
if_effect EFFECT_ACCURACY_DOWN, AI_CV_AccuracyDown
if_effect EFFECT_EVASION_DOWN, AI_CV_EvasionDown
if_effect EFFECT_HAZE, AI_CV_Haze
if_effect EFFECT_BIDE, AI_CV_Bide
if_effect EFFECT_ROAR, AI_CV_Roar
if_effect EFFECT_CONVERSION, AI_CV_Conversion
if_effect EFFECT_RESTORE_HP, AI_CV_Heal
if_effect EFFECT_TOXIC, AI_CV_Toxic
if_effect EFFECT_LIGHT_SCREEN, AI_CV_LightScreen
if_effect EFFECT_REST, AI_CV_Rest
if_effect EFFECT_OHKO, AI_CV_OneHitKO
if_effect EFFECT_RAZOR_WIND, AI_CV_ChargeUpMove
if_effect EFFECT_SUPER_FANG, AI_CV_SuperFang
if_effect EFFECT_TRAP, AI_CV_Trap
if_effect EFFECT_HIGH_CRITICAL, AI_CV_HighCrit
if_effect EFFECT_CONFUSE, AI_CV_Confuse
if_effect EFFECT_ATTACK_UP_2, AI_CV_AttackUp
if_effect EFFECT_DEFENSE_UP_2, AI_CV_DefenseUp
if_effect EFFECT_SPEED_UP_2, AI_CV_SpeedUp
if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CV_SpAtkUp
if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CV_SpDefUp
if_effect EFFECT_ACCURACY_UP_2, AI_CV_AccuracyUp
if_effect EFFECT_EVASION_UP_2, AI_CV_EvasionUp
if_effect EFFECT_ATTACK_DOWN_2, AI_CV_AttackDown
if_effect EFFECT_DEFENSE_DOWN_2, AI_CV_DefenseDown
if_effect EFFECT_SPEED_DOWN_2, AI_CV_SpeedDown
if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CV_SpAtkDown
if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CV_SpDefDown
if_effect EFFECT_ACCURACY_DOWN_2, AI_CV_AccuracyDown
if_effect EFFECT_EVASION_DOWN_2, AI_CV_EvasionDown
if_effect EFFECT_REFLECT, AI_CV_Reflect
if_effect EFFECT_POISON, AI_CV_Poison
if_effect EFFECT_PARALYZE, AI_CV_Paralyze
@ if_effect EFFECT_SWAGGER, AI_CV_Swagger @ Improvement in Emerald
if_effect EFFECT_SPEED_DOWN_HIT, AI_CV_SpeedDownFromChance
if_effect EFFECT_SKY_ATTACK, AI_CV_ChargeUpMove
if_effect EFFECT_VITAL_THROW, AI_CV_VitalThrow
if_effect EFFECT_SUBSTITUTE, AI_CV_Substitute
if_effect EFFECT_RECHARGE, AI_CV_Recharge
if_effect EFFECT_LEECH_SEED, AI_CV_Toxic
if_effect EFFECT_DISABLE, AI_CV_Disable
if_effect EFFECT_COUNTER, AI_CV_Counter
if_effect EFFECT_ENCORE, AI_CV_Encore
if_effect EFFECT_PAIN_SPLIT, AI_CV_PainSplit
if_effect EFFECT_SNORE, AI_CV_Snore
if_effect EFFECT_LOCK_ON, AI_CV_LockOn
if_effect EFFECT_SLEEP_TALK, AI_CV_SleepTalk
if_effect EFFECT_DESTINY_BOND, AI_CV_DestinyBond
if_effect EFFECT_FLAIL, AI_CV_Flail
if_effect EFFECT_HEAL_BELL, AI_CV_HealBell
if_effect EFFECT_THIEF, AI_CV_Thief
if_effect EFFECT_MEAN_LOOK, AI_CV_Trap
if_effect EFFECT_MINIMIZE, AI_CV_EvasionUp
if_effect EFFECT_CURSE, AI_CV_Curse
if_effect EFFECT_PROTECT, AI_CV_Protect
if_effect EFFECT_FORESIGHT, AI_CV_Foresight
if_effect EFFECT_ENDURE, AI_CV_Endure
if_effect EFFECT_BATON_PASS, AI_CV_BatonPass
if_effect EFFECT_PURSUIT, AI_CV_Pursuit
if_effect EFFECT_MORNING_SUN, AI_CV_HealWeather
if_effect EFFECT_SYNTHESIS, AI_CV_HealWeather
if_effect EFFECT_MOONLIGHT, AI_CV_HealWeather
if_effect EFFECT_RAIN_DANCE, AI_CV_RainDance
if_effect EFFECT_SUNNY_DAY, AI_CV_SunnyDay
if_effect EFFECT_BELLY_DRUM, AI_CV_BellyDrum
if_effect EFFECT_PSYCH_UP, AI_CV_PsychUp
if_effect EFFECT_MIRROR_COAT, AI_CV_MirrorCoat
if_effect EFFECT_SKULL_BASH, AI_CV_ChargeUpMove
if_effect EFFECT_SOLARBEAM, AI_CV_ChargeUpMove
if_effect EFFECT_SEMI_INVULNERABLE, AI_CV_SemiInvulnerable
if_effect EFFECT_SOFTBOILED, AI_CV_Heal
if_effect EFFECT_FAKE_OUT, AI_CV_FakeOut
if_effect EFFECT_SPIT_UP, AI_CV_SpitUp
if_effect EFFECT_SWALLOW, AI_CV_Heal
if_effect EFFECT_HAIL, AI_CV_Hail
if_effect EFFECT_FLATTER, AI_CV_Flatter
if_effect EFFECT_MEMENTO, AI_CV_SelfKO
if_effect EFFECT_FACADE, AI_CV_Facade
if_effect EFFECT_FOCUS_PUNCH, AI_CV_FocusPunch
if_effect EFFECT_SMELLINGSALT, AI_CV_SmellingSalt
if_effect EFFECT_TRICK, AI_CV_Trick
if_effect EFFECT_ROLE_PLAY, AI_CV_ChangeSelfAbility
if_effect EFFECT_SUPERPOWER, AI_CV_Superpower
if_effect EFFECT_MAGIC_COAT, AI_CV_MagicCoat
if_effect EFFECT_RECYCLE, AI_CV_Recycle
if_effect EFFECT_REVENGE, AI_CV_Revenge
if_effect EFFECT_BRICK_BREAK, AI_CV_BrickBreak
if_effect EFFECT_KNOCK_OFF, AI_CV_KnockOff
if_effect EFFECT_ENDEAVOR, AI_CV_Endeavor
if_effect EFFECT_ERUPTION, AI_CV_Eruption
if_effect EFFECT_SKILL_SWAP, AI_CV_ChangeSelfAbility
if_effect EFFECT_IMPRISON, AI_CV_Imprison
if_effect EFFECT_REFRESH, AI_CV_Refresh
if_effect EFFECT_SNATCH, AI_CV_Snatch
if_effect EFFECT_BLAZE_KICK, AI_CV_HighCrit
if_effect EFFECT_MUD_SPORT, AI_CV_MudSport
if_effect EFFECT_OVERHEAT, AI_CV_Overheat
if_effect EFFECT_TICKLE, AI_CV_DefenseDown
if_effect EFFECT_COSMIC_POWER, AI_CV_SpDefUp
if_effect EFFECT_BULK_UP, AI_CV_DefenseUp
if_effect EFFECT_POISON_TAIL, AI_CV_HighCrit
if_effect EFFECT_WATER_SPORT, AI_CV_WaterSport
if_effect EFFECT_CALM_MIND, AI_CV_SpDefUp
if_effect EFFECT_DRAGON_DANCE, AI_CV_DragonDance
end
AI_CV_Sleep:: @ 81DA71C
if_has_move_with_effect AI_TARGET, EFFECT_DREAM_EATER, AI_CV_SleepEncourageSlpDamage
if_has_move_with_effect AI_TARGET, EFFECT_NIGHTMARE, AI_CV_SleepEncourageSlpDamage
goto AI_CV_Sleep_End
AI_CV_SleepEncourageSlpDamage:: @ 81DA72F
if_random_less_than 128, AI_CV_Sleep_End
score +1
AI_CV_Sleep_End:: @ 81DA737
end
AI_CV_Absorb:: @ 81DA738
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_AbsorbEncourageMaybe
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_AbsorbEncourageMaybe
goto AI_CV_Absorb_End
AI_CV_AbsorbEncourageMaybe:: @ 81DA749
if_random_less_than 50, AI_CV_Absorb_End
score -3
AI_CV_Absorb_End:: @ 81DA751
end
AI_CV_SelfKO:: @ 81DA752
if_stat_level_less_than AI_TARGET, STAT_EVASION, 7, AI_CV_SelfKO_Encourage1
score -1
if_stat_level_less_than AI_TARGET, STAT_EVASION, 10, AI_CV_SelfKO_Encourage1
if_random_less_than 128, AI_CV_SelfKO_Encourage1
score -1
AI_CV_SelfKO_Encourage1:: @ 81DA76C
if_hp_less_than AI_USER, 80, AI_CV_SelfKO_Encourage2
if_target_faster AI_CV_SelfKO_Encourage2
if_random_less_than 50, AI_CV_SelfKO_End
goto Score_Minus3
AI_CV_SelfKO_Encourage2:: @ 81DA784
if_hp_more_than AI_USER, 50, AI_CV_SelfKO_Encourage4
if_random_less_than 128, AI_CV_SelfKO_Encourage3
score +1
AI_CV_SelfKO_Encourage3:: @ 81DA793
if_hp_more_than AI_USER, 30, AI_CV_SelfKO_End
if_random_less_than 50, AI_CV_SelfKO_End
score +1
goto AI_CV_SelfKO_End
AI_CV_SelfKO_Encourage4:: @ 81DA7A7
if_random_less_than 50, AI_CV_SelfKO_End
score -1
AI_CV_SelfKO_End:: @ 81DA7AF
end
AI_CV_DreamEater:: @ 81DA7B0
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_DreamEater_ScoreDown1
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_DreamEater_ScoreDown1
goto AI_CV_DreamEater_End
AI_CV_DreamEater_ScoreDown1:: @ 81DA7C1
score -1
AI_CV_DreamEater_End:: @ 81DA7C3
end
AI_CV_MirrorMove:: @ 81DA7C4
if_target_faster AI_CV_MirrorMove2
get_last_used_move AI_TARGET
if_not_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove2
if_random_less_than 128, AI_CV_MirrorMove_End
score +2
goto AI_CV_MirrorMove_End
AI_CV_MirrorMove2:: @ 81DA7E2
get_last_used_move AI_TARGET
if_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove_End
if_random_less_than 80, AI_CV_MirrorMove_End
score -1
AI_CV_MirrorMove_End:: @ 81DA7F5
end
.space 2
AI_CV_MirrorMove_EncouragedMovesToMirror:: @ 81DA7F8
.align 1
.2byte MOVE_SLEEP_POWDER
.2byte MOVE_LOVELY_KISS
.2byte MOVE_SPORE
.2byte MOVE_HYPNOSIS
.2byte MOVE_SING
.2byte MOVE_GRASS_WHISTLE
.2byte MOVE_SHADOW_PUNCH
.2byte MOVE_SAND_ATTACK
.2byte MOVE_SMOKESCREEN
.2byte MOVE_TOXIC
.2byte MOVE_GUILLOTINE
.2byte MOVE_HORN_DRILL
.2byte MOVE_FISSURE
.2byte MOVE_SHEER_COLD
.2byte MOVE_CROSS_CHOP
.2byte MOVE_AEROBLAST
.2byte MOVE_CONFUSE_RAY
.2byte MOVE_SWEET_KISS
.2byte MOVE_SCREECH
.2byte MOVE_COTTON_SPORE
.2byte MOVE_SCARY_FACE
.2byte MOVE_FAKE_TEARS
.2byte MOVE_METAL_SOUND
.2byte MOVE_THUNDER_WAVE
.2byte MOVE_GLARE
.2byte MOVE_POISON_POWDER
.2byte MOVE_SHADOW_BALL
.2byte MOVE_DYNAMIC_PUNCH
.2byte MOVE_HYPER_BEAM
.2byte MOVE_EXTREME_SPEED
.2byte MOVE_THIEF
.2byte MOVE_COVET
.2byte MOVE_ATTRACT
.2byte MOVE_SWAGGER
.2byte MOVE_TORMENT
.2byte MOVE_FLATTER
.2byte MOVE_TRICK
.2byte MOVE_SUPERPOWER
.2byte MOVE_SKILL_SWAP
.2byte -1
AI_CV_AttackUp:: @ 81DA848
if_stat_level_less_than AI_USER, STAT_ATK, 9, AI_CV_AttackUp2
if_random_less_than 100, AI_CV_AttackUp3
score -1
goto AI_CV_AttackUp3
AI_CV_AttackUp2:: @ 81DA85D
if_hp_not_equal AI_USER, 100, AI_CV_AttackUp3
if_random_less_than 128, AI_CV_AttackUp3
score +2
AI_CV_AttackUp3:: @ 81DA86C
if_hp_more_than AI_USER, 70, AI_CV_AttackUp_End
if_hp_less_than AI_USER, 40, AI_CV_AttackUp_ScoreDown2
if_random_less_than 40, AI_CV_AttackUp_End
AI_CV_AttackUp_ScoreDown2:: @ 81DA880
score -2
AI_CV_AttackUp_End:: @ 81DA882
end
AI_CV_DefenseUp:: @ 81DA883
if_stat_level_less_than AI_USER, STAT_DEF, 9, AI_CV_DefenseUp2
if_random_less_than 100, AI_CV_DefenseUp3
score -1
goto AI_CV_DefenseUp3
AI_CV_DefenseUp2:: @ 81DA898
if_hp_not_equal AI_USER, 100, AI_CV_DefenseUp3
if_random_less_than 128, AI_CV_DefenseUp3
score +2
AI_CV_DefenseUp3:: @ 81DA8A7
if_hp_less_than AI_USER, 70, AI_CV_DefenseUp4
if_random_less_than 200, AI_CV_DefenseUp_End
AI_CV_DefenseUp4:: @ 81DA8B4
if_hp_less_than AI_USER, 40, AI_CV_DefenseUp_ScoreDown2
get_last_used_move AI_TARGET
get_move_power_from_result
if_equal 0, AI_CV_DefenseUp5
get_last_used_move AI_TARGET
get_move_type_from_result
if_not_in_bytes AI_CV_DefenseUp_PhysicalTypes, AI_CV_DefenseUp_ScoreDown2
if_random_less_than 60, AI_CV_DefenseUp_End
AI_CV_DefenseUp5:: @ 81DA8D6
if_random_less_than 60, AI_CV_DefenseUp_End
AI_CV_DefenseUp_ScoreDown2:: @ 81DA8DC
score -2
AI_CV_DefenseUp_End:: @ 81DA8DE
end
AI_CV_DefenseUp_PhysicalTypes:: @ 81DA8DF
.byte TYPE_NORMAL
.byte TYPE_FIGHTING
.byte TYPE_POISON
.byte TYPE_GROUND
.byte TYPE_FLYING
.byte TYPE_ROCK
.byte TYPE_BUG
.byte TYPE_GHOST
.byte TYPE_STEEL
.byte -1
AI_CV_SpeedUp:: @ 81DA8E9
if_target_faster AI_CV_SpeedUp2
score -3
goto AI_CV_SpeedUp_End
AI_CV_SpeedUp2:: @ 81DA8F6
if_random_less_than 70, AI_CV_SpeedUp_End
score +3
AI_CV_SpeedUp_End:: @ 81DA8FE
end
AI_CV_SpAtkUp:: @ 81DA8FF
if_stat_level_less_than AI_USER, STAT_SPATK, 9, AI_CV_SpAtkUp2
if_random_less_than 100, AI_CV_SpAtkUp3
score -1
goto AI_CV_SpAtkUp3
AI_CV_SpAtkUp2:: @ 81DA914
if_hp_not_equal AI_USER, 100, AI_CV_SpAtkUp3
if_random_less_than 128, AI_CV_SpAtkUp3
score +2
AI_CV_SpAtkUp3:: @ 81DA923
if_hp_more_than AI_USER, 70, AI_CV_SpAtkUp_End
if_hp_less_than AI_USER, 40, AI_CV_SpAtkUp_ScoreDown2
if_random_less_than 70, AI_CV_SpAtkUp_End