Addressed review changes (minus encapsulation)

This commit is contained in:
Eduardo Quezada 2024-12-04 11:31:28 -03:00
parent 3b9ea629a7
commit e4f8b4ccf0
17 changed files with 292 additions and 363 deletions

View File

@ -356,7 +356,7 @@
.byte 0x3a
.endm
.macro absorb battler:req
.macro absorbhealthbarupdate battler:req
.byte 0x3b
.byte \battler
.endm
@ -832,7 +832,7 @@
.byte 0x94
.endm
.macro unused_95
.macro copybidedmg
.byte 0x95
.endm

View File

@ -3017,7 +3017,7 @@ BattleScript_EffectAbsorbLiquidOoze::
goto BattleScript_EffectAbsorb
BattleScript_EffectAbsorb::
absorb BS_ATTACKER
absorbhealthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
printfromtable gAbsorbDrainStringIds
waitmessage B_WAIT_TIME_LONG
@ -6081,7 +6081,7 @@ BattleScript_BideAttack::
accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE
typecalc
clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
unused_95
copybidedmg
adjustdamage
setbyte sB_ANIM_TURN, 1
attackanimation

View File

@ -1211,7 +1211,7 @@ static inline bool32 IsSpreadMove(u32 moveTarget)
static inline bool32 IsDoubleSpreadMove(void)
{
return gBattleStruct->numSpreadTargets > 1
return gBattleStruct->numSpreadTargets > 1
&& !(gHitMarker & (HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_UNABLE_TO_USE_MOVE))
&& IsSpreadMove(GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove));
}

View File

@ -74,8 +74,7 @@
#define B_TXT_DEF_TEAM1 0x3A // Your/The opposing
#define B_TXT_DEF_TEAM2 0x3B // your/the opposing
#define B_TXT_DEF_PARTNER_NAME 0x3C
// #define B_TXT_SELECTION_NAME 0x3C - removed
// #define B_TXT_SELECTION_NAME2 0x3D no Illusion check - removed
// #define B_UNUSED_0x3D 0x3D
#define B_TXT_ATK_NAME_WITH_PREFIX2 0x3E //lowercase
#define B_TXT_DEF_NAME_WITH_PREFIX2 0x3F //lowercase
#define B_TXT_EFF_NAME_WITH_PREFIX2 0x40 //lowercase

View File

@ -6,7 +6,7 @@
// still has them in the ROM. This is because the developers forgot
// to define NDEBUG before release, however this has been changed as
// Ruby's actual debug build does not use the AGBPrint features.
// #define NDEBUG
#define NDEBUG
// To enable printf debugging, comment out "#define NDEBUG". This allows
// the various AGBPrint functions to be used. (See include/gba/isagbprint.h).

View File

@ -222,14 +222,14 @@
#define VARIOUS_SWAP_STATS 130
// Cmd_manipulatedamage
#define DMG_CHANGE_SIGN 1
#define DMG_RECOIL_FROM_MISS 2
#define DMG_DOUBLED 3
#define DMG_1_8_TARGET_HP 4
#define DMG_FULL_ATTACKER_HP 5
#define DMG_CURR_ATTACKER_HP 6
#define DMG_BIG_ROOT 7
#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick
#define DMG_CHANGE_SIGN 1
#define DMG_RECOIL_FROM_MISS 2
#define DMG_DOUBLED 3
#define DMG_1_8_TARGET_HP 4
#define DMG_FULL_ATTACKER_HP 5
#define DMG_CURR_ATTACKER_HP 6
#define DMG_BIG_ROOT 7
#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick
// Cmd_jumpifcantswitch
#define SWITCH_IGNORE_ESCAPE_PREVENTION (1 << 7)

View File

@ -531,205 +531,204 @@
#define STRINGID_LASERFOCUS 529
#define STRINGID_GEMACTIVATES 530
#define STRINGID_BERRYDMGREDUCES 531
#define STRINGID_TARGETATEITEM 532
#define STRINGID_AIRBALLOONFLOAT 533
#define STRINGID_AIRBALLOONPOP 534
#define STRINGID_INCINERATEBURN 535
#define STRINGID_BUGBITE 536
#define STRINGID_ILLUSIONWOREOFF 537
#define STRINGID_ATTACKERCUREDTARGETSTATUS 538
#define STRINGID_ATTACKERLOSTFIRETYPE 539
#define STRINGID_HEALERCURE 540
#define STRINGID_SCRIPTINGABILITYSTATRAISE 541
#define STRINGID_RECEIVERABILITYTAKEOVER 542
#define STRINGID_PKNMABSORBINGPOWER 543
#define STRINGID_NOONEWILLBEABLETORUNAWAY 544
#define STRINGID_DESTINYKNOTACTIVATES 545
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 546
#define STRINGID_CLEARAMULETWONTLOWERSTATS 547
#define STRINGID_FERVENTWISHREACHED 548
#define STRINGID_AIRLOCKACTIVATES 549
#define STRINGID_PRESSUREENTERS 550
#define STRINGID_DARKAURAENTERS 551
#define STRINGID_FAIRYAURAENTERS 552
#define STRINGID_AURABREAKENTERS 553
#define STRINGID_COMATOSEENTERS 554
#define STRINGID_SCREENCLEANERENTERS 555
#define STRINGID_FETCHEDPOKEBALL 556
#define STRINGID_BATTLERABILITYRAISEDSTAT 557
#define STRINGID_ASANDSTORMKICKEDUP 558
#define STRINGID_PKMNSWILLPERISHIN3TURNS 559
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 560
#define STRINGID_AURAFLAREDTOLIFE 561
#define STRINGID_ASONEENTERS 562
#define STRINGID_CURIOUSMEDICINEENTERS 563
#define STRINGID_CANACTFASTERTHANKSTO 564
#define STRINGID_MICLEBERRYACTIVATES 565
#define STRINGID_PKMNSHOOKOFFTHETAUNT 566
#define STRINGID_PKMNGOTOVERITSINFATUATION 567
#define STRINGID_ITEMCANNOTBEREMOVED 568
#define STRINGID_STICKYBARBTRANSFER 569
#define STRINGID_PKMNBURNHEALED 570
#define STRINGID_REDCARDACTIVATE 571
#define STRINGID_EJECTBUTTONACTIVATE 572
#define STRINGID_ATKGOTOVERINFATUATION 573
#define STRINGID_TORMENTEDNOMORE 574
#define STRINGID_HEALBLOCKEDNOMORE 575
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 576
#define STRINGID_ATTACKERBECAMEASHSPECIES 577
#define STRINGID_EXTREMELYHARSHSUNLIGHT 578
#define STRINGID_EXTREMESUNLIGHTFADED 579
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 580
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 581
#define STRINGID_HEAVYRAIN 582
#define STRINGID_HEAVYRAINLIFTED 583
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 584
#define STRINGID_NORELIEFROMHEAVYRAIN 585
#define STRINGID_MYSTERIOUSAIRCURRENT 586
#define STRINGID_STRONGWINDSDISSIPATED 587
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 588
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 589
#define STRINGID_STUFFCHEEKSCANTSELECT 590
#define STRINGID_PKMNREVERTEDTOPRIMAL 591
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 592
#define STRINGID_BUTHOOPACANTUSEIT 593
#define STRINGID_BROKETHROUGHPROTECTION 594
#define STRINGID_ABILITYALLOWSONLYMOVE 595
#define STRINGID_SWAPPEDABILITIES 596
#define STRINGID_PASTELVEILPROTECTED 597
#define STRINGID_PASTELVEILENTERS 598
#define STRINGID_BATTLERTYPECHANGEDTO 599
#define STRINGID_BOTHCANNOLONGERESCAPE 600
#define STRINGID_CANTESCAPEDUETOUSEDMOVE 601
#define STRINGID_PKMNBECAMEWEAKERTOFIRE 602
#define STRINGID_ABOUTTOUSEPOLTERGEIST 603
#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 604
#define STRINGID_NEUTRALIZINGGASENTERS 605
#define STRINGID_NEUTRALIZINGGASOVER 606
#define STRINGID_TARGETTOOHEAVY 607
#define STRINGID_PKMNTOOKTARGETHIGH 608
#define STRINGID_PKMNINSNAPTRAP 609
#define STRINGID_METEORBEAMCHARGING 610
#define STRINGID_HEATUPBEAK 611
#define STRINGID_COURTCHANGE 612
#define STRINGID_PLAYERLOSTTOENEMYTRAINER 613
#define STRINGID_PLAYERPAIDPRIZEMONEY 614
#define STRINGID_ZPOWERSURROUNDS 615
#define STRINGID_ZMOVEUNLEASHED 616
#define STRINGID_ZMOVERESETSSTATS 617
#define STRINGID_ZMOVEALLSTATSUP 618
#define STRINGID_ZMOVEZBOOSTCRIT 619
#define STRINGID_ZMOVERESTOREHP 620
#define STRINGID_ZMOVESTATUP 621
#define STRINGID_ZMOVEHPTRAP 622
#define STRINGID_ATTACKEREXPELLEDTHEPOISON 623
#define STRINGID_ATTACKERSHOOKITSELFAWAKE 624
#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 625
#define STRINGID_ATTACKERHEALEDITSBURN 626
#define STRINGID_ATTACKERMELTEDTHEICE 627
#define STRINGID_TARGETTOUGHEDITOUT 628
#define STRINGID_ATTACKERLOSTELECTRICTYPE 629
#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 630
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 631
#define STRINGID_SUNLIGHTACTIVATEDABILITY 632
#define STRINGID_STATWASHEIGHTENED 633
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 634
#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 635
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 636
#define STRINGID_PKMNSABILITYPREVENTSABILITY 637
#define STRINGID_PREPARESHELLTRAP 638
#define STRINGID_SHELLTRAPDIDNTWORK 639
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 640
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 641
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 642
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 643
#define STRINGID_COULDNTFULLYPROTECT 644
#define STRINGID_STOCKPILEDEFFECTWOREOFF 645
#define STRINGID_PKMNREVIVEDREADYTOFIGHT 646
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 647
#define STRINGID_ITEMCUREDSPECIESSTATUS 648
#define STRINGID_ITEMRESTOREDSPECIESPP 649
#define STRINGID_THUNDERCAGETRAPPED 650
#define STRINGID_PKMNHURTBYFROSTBITE 651
#define STRINGID_PKMNGOTFROSTBITE 652
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 653
#define STRINGID_ATTACKERHEALEDITSFROSTBITE 654
#define STRINGID_PKMNFROSTBITEHEALED 655
#define STRINGID_PKMNFROSTBITEHEALED2 656
#define STRINGID_PKMNFROSTBITEHEALEDBY 657
#define STRINGID_MIRRORHERBCOPIED 658
#define STRINGID_STARTEDSNOW 659
#define STRINGID_SNOWCONTINUES 660
#define STRINGID_SNOWSTOPPED 661
#define STRINGID_SNOWWARNINGSNOW 662
#define STRINGID_PKMNITEMMELTED 663
#define STRINGID_ULTRABURSTREACTING 664
#define STRINGID_ULTRABURSTCOMPLETED 665
#define STRINGID_TEAMGAINEDEXP 666
#define STRINGID_CURRENTMOVECANTSELECT 667
#define STRINGID_TARGETISBEINGSALTCURED 668
#define STRINGID_TARGETISHURTBYSALTCURE 669
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 670
#define STRINGID_SHARPSTEELFLOATS 671
#define STRINGID_SHARPSTEELDMG 672
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 673
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 674
#define STRINGID_TEAMTRAPPEDWITHVINES 675
#define STRINGID_PKMNHURTBYVINES 676
#define STRINGID_TEAMCAUGHTINVORTEX 677
#define STRINGID_PKMNHURTBYVORTEX 678
#define STRINGID_TEAMSURROUNDEDBYFIRE 679
#define STRINGID_PKMNBURNINGUP 680
#define STRINGID_TEAMSURROUNDEDBYROCKS 681
#define STRINGID_PKMNHURTBYROCKSTHROWN 682
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 683
#define STRINGID_ZEROTOHEROTRANSFORMATION 684
#define STRINGID_THETWOMOVESBECOMEONE 685
#define STRINGID_ARAINBOWAPPEAREDONSIDE 686
#define STRINGID_THERAINBOWDISAPPEARED 687
#define STRINGID_WAITINGFORPARTNERSMOVE 688
#define STRINGID_SEAOFFIREENVELOPEDSIDE 689
#define STRINGID_HURTBYTHESEAOFFIRE 690
#define STRINGID_THESEAOFFIREDISAPPEARED 691
#define STRINGID_SWAMPENVELOPEDSIDE 692
#define STRINGID_THESWAMPDISAPPEARED 693
#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 694
#define STRINGID_HOSPITALITYRESTORATION 695
#define STRINGID_ELECTROSHOTCHARGING 696
#define STRINGID_ITEMWASUSEDUP 697
#define STRINGID_ATTACKERLOSTITSTYPE 698
#define STRINGID_SHEDITSTAIL 699
#define STRINGID_CLOAKEDINAHARSHLIGHT 700
#define STRINGID_SUPERSWEETAROMAWAFTS 701
#define STRINGID_DIMENSIONSWERETWISTED 702
#define STRINGID_BIZARREARENACREATED 703
#define STRINGID_BIZARREAREACREATED 704
#define STRINGID_TIDYINGUPCOMPLETE 705
#define STRINGID_PKMNTERASTALLIZEDINTO 706
#define STRINGID_BOOSTERENERGYACTIVATES 707
#define STRINGID_FOGCREPTUP 708
#define STRINGID_FOGISDEEP 709
#define STRINGID_FOGLIFTED 710
#define STRINGID_PKMNMADESHELLGLEAM 711
#define STRINGID_FICKLEBEAMDOUBLED 712
#define STRINGID_COMMANDERACTIVATES 713
#define STRINGID_POKEFLUTECATCHY 714
#define STRINGID_POKEFLUTE 715
#define STRINGID_MONHEARINGFLUTEAWOKE 716
#define STRINGID_SUNLIGHTISHARSH 717
#define STRINGID_ITISHAILING 718
#define STRINGID_ITISSNOWING 719
#define STRINGID_ISCOVEREDWITHGRASS 720
#define STRINGID_MISTSWIRLSAROUND 721
#define STRINGID_ELECTRICCURRENTISRUNNING 722
#define STRINGID_SEEMSWEIRD 723
#define STRINGID_WAGGLINGAFINGER 724
#define STRINGID_AIRBALLOONFLOAT 532
#define STRINGID_AIRBALLOONPOP 533
#define STRINGID_INCINERATEBURN 534
#define STRINGID_BUGBITE 535
#define STRINGID_ILLUSIONWOREOFF 536
#define STRINGID_ATTACKERCUREDTARGETSTATUS 537
#define STRINGID_ATTACKERLOSTFIRETYPE 538
#define STRINGID_HEALERCURE 539
#define STRINGID_SCRIPTINGABILITYSTATRAISE 540
#define STRINGID_RECEIVERABILITYTAKEOVER 541
#define STRINGID_PKNMABSORBINGPOWER 542
#define STRINGID_NOONEWILLBEABLETORUNAWAY 543
#define STRINGID_DESTINYKNOTACTIVATES 544
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 545
#define STRINGID_CLEARAMULETWONTLOWERSTATS 546
#define STRINGID_FERVENTWISHREACHED 547
#define STRINGID_AIRLOCKACTIVATES 548
#define STRINGID_PRESSUREENTERS 549
#define STRINGID_DARKAURAENTERS 550
#define STRINGID_FAIRYAURAENTERS 551
#define STRINGID_AURABREAKENTERS 552
#define STRINGID_COMATOSEENTERS 553
#define STRINGID_SCREENCLEANERENTERS 554
#define STRINGID_FETCHEDPOKEBALL 555
#define STRINGID_BATTLERABILITYRAISEDSTAT 556
#define STRINGID_ASANDSTORMKICKEDUP 557
#define STRINGID_PKMNSWILLPERISHIN3TURNS 558
#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 559
#define STRINGID_AURAFLAREDTOLIFE 560
#define STRINGID_ASONEENTERS 561
#define STRINGID_CURIOUSMEDICINEENTERS 562
#define STRINGID_CANACTFASTERTHANKSTO 563
#define STRINGID_MICLEBERRYACTIVATES 564
#define STRINGID_PKMNSHOOKOFFTHETAUNT 565
#define STRINGID_PKMNGOTOVERITSINFATUATION 566
#define STRINGID_ITEMCANNOTBEREMOVED 567
#define STRINGID_STICKYBARBTRANSFER 568
#define STRINGID_PKMNBURNHEALED 569
#define STRINGID_REDCARDACTIVATE 570
#define STRINGID_EJECTBUTTONACTIVATE 571
#define STRINGID_ATKGOTOVERINFATUATION 572
#define STRINGID_TORMENTEDNOMORE 573
#define STRINGID_HEALBLOCKEDNOMORE 574
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 575
#define STRINGID_ATTACKERBECAMEASHSPECIES 576
#define STRINGID_EXTREMELYHARSHSUNLIGHT 577
#define STRINGID_EXTREMESUNLIGHTFADED 578
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 579
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 580
#define STRINGID_HEAVYRAIN 581
#define STRINGID_HEAVYRAINLIFTED 582
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 583
#define STRINGID_NORELIEFROMHEAVYRAIN 584
#define STRINGID_MYSTERIOUSAIRCURRENT 585
#define STRINGID_STRONGWINDSDISSIPATED 586
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 587
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 588
#define STRINGID_STUFFCHEEKSCANTSELECT 589
#define STRINGID_PKMNREVERTEDTOPRIMAL 590
#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 591
#define STRINGID_BUTHOOPACANTUSEIT 592
#define STRINGID_BROKETHROUGHPROTECTION 593
#define STRINGID_ABILITYALLOWSONLYMOVE 594
#define STRINGID_SWAPPEDABILITIES 595
#define STRINGID_PASTELVEILPROTECTED 596
#define STRINGID_PASTELVEILENTERS 597
#define STRINGID_BATTLERTYPECHANGEDTO 598
#define STRINGID_BOTHCANNOLONGERESCAPE 599
#define STRINGID_CANTESCAPEDUETOUSEDMOVE 600
#define STRINGID_PKMNBECAMEWEAKERTOFIRE 601
#define STRINGID_ABOUTTOUSEPOLTERGEIST 602
#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 603
#define STRINGID_NEUTRALIZINGGASENTERS 604
#define STRINGID_NEUTRALIZINGGASOVER 605
#define STRINGID_TARGETTOOHEAVY 606
#define STRINGID_PKMNTOOKTARGETHIGH 607
#define STRINGID_PKMNINSNAPTRAP 608
#define STRINGID_METEORBEAMCHARGING 609
#define STRINGID_HEATUPBEAK 610
#define STRINGID_COURTCHANGE 611
#define STRINGID_PLAYERLOSTTOENEMYTRAINER 612
#define STRINGID_PLAYERPAIDPRIZEMONEY 613
#define STRINGID_ZPOWERSURROUNDS 614
#define STRINGID_ZMOVEUNLEASHED 615
#define STRINGID_ZMOVERESETSSTATS 616
#define STRINGID_ZMOVEALLSTATSUP 617
#define STRINGID_ZMOVEZBOOSTCRIT 618
#define STRINGID_ZMOVERESTOREHP 619
#define STRINGID_ZMOVESTATUP 620
#define STRINGID_ZMOVEHPTRAP 621
#define STRINGID_ATTACKEREXPELLEDTHEPOISON 622
#define STRINGID_ATTACKERSHOOKITSELFAWAKE 623
#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 624
#define STRINGID_ATTACKERHEALEDITSBURN 625
#define STRINGID_ATTACKERMELTEDTHEICE 626
#define STRINGID_TARGETTOUGHEDITOUT 627
#define STRINGID_ATTACKERLOSTELECTRICTYPE 628
#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 629
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 630
#define STRINGID_SUNLIGHTACTIVATEDABILITY 631
#define STRINGID_STATWASHEIGHTENED 632
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 633
#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 634
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 635
#define STRINGID_PKMNSABILITYPREVENTSABILITY 636
#define STRINGID_PREPARESHELLTRAP 637
#define STRINGID_SHELLTRAPDIDNTWORK 638
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 639
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 640
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 641
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 642
#define STRINGID_COULDNTFULLYPROTECT 643
#define STRINGID_STOCKPILEDEFFECTWOREOFF 644
#define STRINGID_PKMNREVIVEDREADYTOFIGHT 645
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 646
#define STRINGID_ITEMCUREDSPECIESSTATUS 647
#define STRINGID_ITEMRESTOREDSPECIESPP 648
#define STRINGID_THUNDERCAGETRAPPED 649
#define STRINGID_PKMNHURTBYFROSTBITE 650
#define STRINGID_PKMNGOTFROSTBITE 651
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 652
#define STRINGID_ATTACKERHEALEDITSFROSTBITE 653
#define STRINGID_PKMNFROSTBITEHEALED 654
#define STRINGID_PKMNFROSTBITEHEALED2 655
#define STRINGID_PKMNFROSTBITEHEALEDBY 656
#define STRINGID_MIRRORHERBCOPIED 657
#define STRINGID_STARTEDSNOW 658
#define STRINGID_SNOWCONTINUES 659
#define STRINGID_SNOWSTOPPED 660
#define STRINGID_SNOWWARNINGSNOW 661
#define STRINGID_PKMNITEMMELTED 662
#define STRINGID_ULTRABURSTREACTING 663
#define STRINGID_ULTRABURSTCOMPLETED 664
#define STRINGID_TEAMGAINEDEXP 665
#define STRINGID_CURRENTMOVECANTSELECT 666
#define STRINGID_TARGETISBEINGSALTCURED 667
#define STRINGID_TARGETISHURTBYSALTCURE 668
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 669
#define STRINGID_SHARPSTEELFLOATS 670
#define STRINGID_SHARPSTEELDMG 671
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 672
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 673
#define STRINGID_TEAMTRAPPEDWITHVINES 674
#define STRINGID_PKMNHURTBYVINES 675
#define STRINGID_TEAMCAUGHTINVORTEX 676
#define STRINGID_PKMNHURTBYVORTEX 677
#define STRINGID_TEAMSURROUNDEDBYFIRE 678
#define STRINGID_PKMNBURNINGUP 679
#define STRINGID_TEAMSURROUNDEDBYROCKS 680
#define STRINGID_PKMNHURTBYROCKSTHROWN 681
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 682
#define STRINGID_ZEROTOHEROTRANSFORMATION 683
#define STRINGID_THETWOMOVESBECOMEONE 684
#define STRINGID_ARAINBOWAPPEAREDONSIDE 685
#define STRINGID_THERAINBOWDISAPPEARED 686
#define STRINGID_WAITINGFORPARTNERSMOVE 687
#define STRINGID_SEAOFFIREENVELOPEDSIDE 688
#define STRINGID_HURTBYTHESEAOFFIRE 689
#define STRINGID_THESEAOFFIREDISAPPEARED 690
#define STRINGID_SWAMPENVELOPEDSIDE 691
#define STRINGID_THESWAMPDISAPPEARED 692
#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 693
#define STRINGID_HOSPITALITYRESTORATION 694
#define STRINGID_ELECTROSHOTCHARGING 695
#define STRINGID_ITEMWASUSEDUP 696
#define STRINGID_ATTACKERLOSTITSTYPE 697
#define STRINGID_SHEDITSTAIL 698
#define STRINGID_CLOAKEDINAHARSHLIGHT 699
#define STRINGID_SUPERSWEETAROMAWAFTS 700
#define STRINGID_DIMENSIONSWERETWISTED 701
#define STRINGID_BIZARREARENACREATED 702
#define STRINGID_BIZARREAREACREATED 703
#define STRINGID_TIDYINGUPCOMPLETE 704
#define STRINGID_PKMNTERASTALLIZEDINTO 705
#define STRINGID_BOOSTERENERGYACTIVATES 706
#define STRINGID_FOGCREPTUP 707
#define STRINGID_FOGISDEEP 708
#define STRINGID_FOGLIFTED 709
#define STRINGID_PKMNMADESHELLGLEAM 710
#define STRINGID_FICKLEBEAMDOUBLED 711
#define STRINGID_COMMANDERACTIVATES 712
#define STRINGID_POKEFLUTECATCHY 713
#define STRINGID_POKEFLUTE 714
#define STRINGID_MONHEARINGFLUTEAWOKE 715
#define STRINGID_SUNLIGHTISHARSH 716
#define STRINGID_ITISHAILING 717
#define STRINGID_ITISSNOWING 718
#define STRINGID_ISCOVEREDWITHGRASS 719
#define STRINGID_MISTSWIRLSAROUND 720
#define STRINGID_ELECTRICCURRENTISRUNNING 721
#define STRINGID_SEEMSWEIRD 722
#define STRINGID_WAGGLINGAFINGER 723
#define STRINGID_BLOCKEDBYSLEEPCLAUSE 724
#define STRINGID_SUPEREFFECTIVETWOFOES 725
#define STRINGID_NOTVERYEFFECTIVETWOFOES 726
#define STRINGID_ITDOESNTAFFECTTWOFOES 727
#define STRINGID_BLOCKEDBYSLEEPCLAUSE 728
#define BATTLESTRINGS_COUNT 729
#define BATTLESTRINGS_COUNT 728
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,

View File

@ -694,7 +694,6 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_LASERFOCUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} concentrated intensely!"),
[STRINGID_GEMACTIVATES] = COMPOUND_STRING("The {B_LAST_ITEM} strengthened {B_ATK_NAME_WITH_PREFIX2}'s power!"),
[STRINGID_BERRYDMGREDUCES] = COMPOUND_STRING("The {B_LAST_ITEM} weakened the damage to {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_TARGETATEITEM] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!"),
[STRINGID_AIRBALLOONFLOAT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} floats in the air with its Air Balloon!"),
[STRINGID_AIRBALLOONPOP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s Air Balloon popped!"),
[STRINGID_INCINERATEBURN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} was burnt up!"),
@ -887,10 +886,10 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_ELECTRICCURRENTISRUNNING] = COMPOUND_STRING("An electric current is running across the battlefield!"),
[STRINGID_SEEMSWEIRD] = COMPOUND_STRING("The battlefield seems weird!"),
[STRINGID_WAGGLINGAFINGER] = COMPOUND_STRING("Waggling a finger let it use {B_CURRENT_MOVE}!"),
[STRINGID_BLOCKEDBYSLEEPCLAUSE] = COMPOUND_STRING("Sleep Clause kept {B_DEF_NAME_WITH_PREFIX2} awake!"),
[STRINGID_SUPEREFFECTIVETWOFOES] = COMPOUND_STRING("It's super effective on {B_DEF_NAME_WITH_PREFIX2} and {B_DEF_PARTNER_NAME}!"),
[STRINGID_NOTVERYEFFECTIVETWOFOES] = COMPOUND_STRING("It's not very effective on {B_DEF_NAME_WITH_PREFIX2} and {B_DEF_PARTNER_NAME}!"),
[STRINGID_ITDOESNTAFFECTTWOFOES] = COMPOUND_STRING("It doesn't affect {B_DEF_NAME_WITH_PREFIX2} and {B_DEF_PARTNER_NAME}…"),
[STRINGID_BLOCKEDBYSLEEPCLAUSE] = COMPOUND_STRING("Sleep Clause kept {B_DEF_NAME_WITH_PREFIX2} awake!"),
};
const u16 gTrainerUsedItemStringIds[] =

View File

@ -487,7 +487,7 @@ static void Cmd_givepaydaymoney(void);
static void Cmd_setlightscreen(void);
static void Cmd_tryKO(void);
static void Cmd_damagetohalftargethp(void);
static void Cmd_unused_95(void);
static void Cmd_copybidedmg(void);
static void Cmd_unused_96(void);
static void Cmd_tryinfatuating(void);
static void Cmd_updatestatusicon(void);
@ -746,7 +746,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_setlightscreen, //0x92
Cmd_tryKO, //0x93
Cmd_damagetohalftargethp, //0x94
Cmd_unused_95, //0x95
Cmd_copybidedmg, //0x95
Cmd_unused_96, //0x96
Cmd_tryinfatuating, //0x97
Cmd_updatestatusicon, //0x98
@ -1706,7 +1706,7 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u
{
u32 moveType = GetMoveType(move);
u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, move);
bool32 calcSpreadMove = IsSpreadMove(moveTarget) && !IS_MOVE_STATUS(move);
bool32 calcSpreadMove = IsSpreadMove(moveTarget) && !IS_MOVE_STATUS(move);
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
@ -2183,9 +2183,9 @@ static void Cmd_adjustdamage(void)
if (!calcSpreadMoveDamage && battlerDef != gBattlerTarget)
continue;
if (IsBattlerInvalidForSpreadMove(gBattlerAttacker, battlerDef, moveTarget)
|| gBattleStruct->noResultString[battlerDef])
continue;
if (IsBattlerInvalidForSpreadMove(gBattlerAttacker, battlerDef, moveTarget)
|| gBattleStruct->noResultString[battlerDef])
continue;
if (DoesSubstituteBlockMove(gBattlerAttacker, battlerDef, gCurrentMove))
goto END;
@ -2331,21 +2331,21 @@ static inline bool32 DoesBattlerNegateDamage(u32 battler)
if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
return FALSE;
if (ability == ABILITY_DISGUISE && species == SPECIES_MIMIKYU)
return TRUE;
if (ability == ABILITY_ICE_FACE && species == SPECIES_EISCUE && GetBattleMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_SPECIAL)
return TRUE;
if (ability == ABILITY_DISGUISE && species == SPECIES_MIMIKYU)
return TRUE;
if (ability == ABILITY_ICE_FACE && species == SPECIES_EISCUE && GetBattleMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_SPECIAL)
return TRUE;
return FALSE;
}
static u32 UpdateEffectivenessResultFlagsForDoubleSpreadMoves(u32 resultFlags)
{
// Only play the "best" sound
for (u32 sound = 0; sound < 3; sound++)
{
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
// Only play the "best" sound
for (u32 sound = 0; sound < 3; sound++)
{
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if ((gBattleStruct->moveResultFlags[battlerDef] & (MOVE_RESULT_MISSED | MOVE_RESULT_NO_EFFECT)
|| gBattleStruct->noResultString[battlerDef]))
continue;
@ -2367,10 +2367,10 @@ static u32 UpdateEffectivenessResultFlagsForDoubleSpreadMoves(u32 resultFlags)
return 0; //Normal effectiveness
return gBattleStruct->moveResultFlags[battlerDef];
}
}
}
}
}
return resultFlags;
return resultFlags;
}
static inline bool32 TryStrongWindsWeakenAttack(u32 battlerDef)
@ -2389,7 +2389,7 @@ static inline bool32 TryStrongWindsWeakenAttack(u32 battlerDef)
}
}
return FALSE;
return FALSE;
}
static inline bool32 TryTeraShellDistortTypeMatchups(u32 battlerDef)
@ -2420,30 +2420,30 @@ static inline bool32 TryActivateWeakenessBerry(u32 battlerDef)
return TRUE;
}
return FALSE;
return FALSE;
}
static bool32 ProcessPreAttackAnimationFuncs(void)
{
if (IsDoubleSpreadMove())
{
if (IsDoubleSpreadMove())
{
u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove);
if (!gBattleStruct->printedStrongWindsWeakenedAttack)
{
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if (!gBattleStruct->printedStrongWindsWeakenedAttack)
{
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if (IsBattlerInvalidForSpreadMove(gBattlerAttacker, battlerDef, moveTarget)
|| (battlerDef == BATTLE_PARTNER(gBattlerAttacker) && !(moveTarget & MOVE_TARGET_FOES_AND_ALLY))
|| (gBattleStruct->noResultString[battlerDef] && gBattleStruct->noResultString[battlerDef] != DO_ACCURACY_CHECK))
continue;
if (TryStrongWindsWeakenAttack(battlerDef))
return TRUE;
}
}
if (TryStrongWindsWeakenAttack(battlerDef))
return TRUE;
}
}
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
for (u32 battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if (IsBattlerInvalidForSpreadMove(gBattlerAttacker, battlerDef, moveTarget)
|| (battlerDef == BATTLE_PARTNER(gBattlerAttacker) && !(moveTarget & MOVE_TARGET_FOES_AND_ALLY))
|| (gBattleStruct->noResultString[battlerDef] && gBattleStruct->noResultString[battlerDef] != DO_ACCURACY_CHECK))
@ -2451,21 +2451,21 @@ static bool32 ProcessPreAttackAnimationFuncs(void)
if (TryTeraShellDistortTypeMatchups(battlerDef))
return TRUE;
if (TryActivateWeakenessBerry(battlerDef))
return TRUE;
}
}
else
{
if (TryStrongWindsWeakenAttack(gBattlerTarget))
return TRUE;
if (TryTeraShellDistortTypeMatchups(gBattlerTarget))
return TRUE;
if (TryActivateWeakenessBerry(gBattlerTarget))
if (TryActivateWeakenessBerry(battlerDef))
return TRUE;
}
}
else
{
if (TryStrongWindsWeakenAttack(gBattlerTarget))
return TRUE;
}
if (TryTeraShellDistortTypeMatchups(gBattlerTarget))
return TRUE;
if (TryActivateWeakenessBerry(gBattlerTarget))
return TRUE;
}
return FALSE;
return FALSE;
}
static void Cmd_attackanimation(void)
@ -2479,7 +2479,7 @@ static void Cmd_attackanimation(void)
u32 moveResultFlags = gBattleStruct->moveResultFlags[gBattlerTarget];
if (IsDoubleSpreadMove())
moveResultFlags = UpdateEffectivenessResultFlagsForDoubleSpreadMoves(gBattleStruct->moveResultFlags[gBattlerTarget]);
moveResultFlags = UpdateEffectivenessResultFlagsForDoubleSpreadMoves(gBattleStruct->moveResultFlags[gBattlerTarget]);
if ((gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION))
&& gCurrentMove != MOVE_TRANSFORM
@ -2556,7 +2556,7 @@ static void Cmd_waitanimation(void)
static void DoublesHPBarReduction(void)
{
if (gBattleStruct->doneDoublesSpreadHit
if (gBattleStruct->doneDoublesSpreadHit
|| gHitMarker & (HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE))
return;
@ -2798,19 +2798,19 @@ static void Cmd_effectivenesssound(void)
u32 moveResultFlags = gBattleStruct->moveResultFlags[gBattlerTarget];
if (IsDoubleSpreadMove())
{
if (gBattleStruct->doneDoublesSpreadHit
|| !gBattleStruct->calculatedDamageDone //The attack animation didn't play yet - only play sound after animation
|| GetBattleMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS) //To handle Dark Void missing basically
if (IsDoubleSpreadMove())
{
if (gBattleStruct->doneDoublesSpreadHit
|| !gBattleStruct->calculatedDamageDone //The attack animation didn't play yet - only play sound after animation
|| GetBattleMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS) //To handle Dark Void missing basically
{
gBattlescriptCurrInstr = cmd->nextInstr;
return;
}
moveResultFlags = UpdateEffectivenessResultFlagsForDoubleSpreadMoves(gBattleStruct->moveResultFlags[gBattlerTarget]);
}
else if (MoveResultHasEffect(gBattlerTarget) && DoesBattlerNegateDamage(gBattlerTarget))
moveResultFlags = 0;
moveResultFlags = UpdateEffectivenessResultFlagsForDoubleSpreadMoves(gBattleStruct->moveResultFlags[gBattlerTarget]);
}
else if (MoveResultHasEffect(gBattlerTarget) && DoesBattlerNegateDamage(gBattlerTarget))
moveResultFlags = 0;
if (!(moveResultFlags & MOVE_RESULT_MISSED))
{
@ -2856,14 +2856,14 @@ static void Cmd_effectivenesssound(void)
static inline bool32 ShouldPrintTwoFoesMessage(u32 moveResult)
{
return gBattlerTarget == BATTLE_OPPOSITE(gBattlerAttacker)
return gBattlerTarget == BATTLE_OPPOSITE(gBattlerAttacker)
&& gBattleStruct->moveResultFlags[BATTLE_PARTNER(gBattlerTarget)] & moveResult
&& !gBattleStruct->noResultString[BATTLE_PARTNER(gBattlerTarget)];
}
static inline bool32 ShouldRelyOnTwoFoesMessage(u32 moveResult)
{
return gBattlerTarget == BATTLE_PARTNER(BATTLE_OPPOSITE(gBattlerAttacker))
return gBattlerTarget == BATTLE_PARTNER(BATTLE_OPPOSITE(gBattlerAttacker))
&& gBattleStruct->moveResultFlags[BATTLE_OPPOSITE(gBattlerAttacker)] & moveResult
&& !(gBattleStruct->moveResultFlags[BATTLE_OPPOSITE(gBattlerAttacker)] & MOVE_RESULT_MISSED && gBattleStruct->missStringId[BATTLE_OPPOSITE(gBattlerAttacker)] > B_MSG_AVOIDED_ATK)
&& !gBattleStruct->noResultString[BATTLE_OPPOSITE(gBattlerAttacker)];
@ -3033,7 +3033,7 @@ static void Cmd_resultmessage(void)
}
if (stringId)
PrepareStringBattle(stringId, gBattlerAttacker);
else
else
gBattleCommunication[MSG_DISPLAY] = 0;
gBattlescriptCurrInstr = cmd->nextInstr;
@ -8159,11 +8159,11 @@ static void Cmd_hitanimation(void)
}
}
}
else if (!gBattleStruct->doneDoublesSpreadHit)
{
else if (!gBattleStruct->doneDoublesSpreadHit)
{
u32 battlerDef;
for (battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
for (battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if (gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_NO_EFFECT
|| gBattleStruct->noResultString[battlerDef])
continue;
@ -8175,8 +8175,8 @@ static void Cmd_hitanimation(void)
BtlController_EmitHitAnimation(battlerDef, BUFFER_A);
MarkBattlerForControllerExec(battlerDef);
}
}
}
}
}
gBattlescriptCurrInstr = cmd->nextInstr;
}
@ -12759,7 +12759,7 @@ static void Cmd_damagetohalftargethp(void)
gBattlescriptCurrInstr = cmd->nextInstr;
}
static void Cmd_unused_95(void)
static void Cmd_copybidedmg(void)
{
CMD_ARGS();
gBattleStruct->moveDamage[gBattlerTarget] = gBideDmg[gBattlerAttacker] * 2;

View File

@ -323,8 +323,8 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Left Slot)")
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft);
HP_BAR(playerLeft);
// MESSAGE("The opposing Wobbuffet's attack missed!"); TODO: Message issue, otherwise fine
HP_BAR(opponentRight);
MESSAGE("The opposing Wobbuffet's attack missed!");
}
}
@ -344,7 +344,7 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Right Slot)")
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight);
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
// MESSAGE("The opposing Wobbuffet's attack missed!"); TODO: Message issue, otherwise fine
MESSAGE("The opposing Wobbuffet's attack missed!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft);
HP_BAR(playerRight);
HP_BAR(opponentRight);

View File

@ -97,23 +97,3 @@ DOUBLE_BATTLE_TEST("Tera Shell only makes the first hit against Terapagos from a
NOT MESSAGE("It's not very effective…");
}
}
DOUBLE_BATTLE_TEST("[1]")
{
GIVEN {
PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); }
PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); }
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponentLeft, MOVE_BLIZZARD); }
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_TERA_SHELL);
MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!");
ABILITY_POPUP(playerRight, ABILITY_TERA_SHELL);
MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_BLIZZARD, opponentLeft);
HP_BAR(playerLeft);
HP_BAR(playerRight);
}
}

View File

@ -6,20 +6,6 @@ ASSUMPTIONS
ASSUME(gMovesInfo[MOVE_ABSORB].effect == EFFECT_ABSORB);
}
SINGLE_BATTLE_TEST("test")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_ABSORB); }
TURN { MOVE(player, MOVE_ABSORB); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player);
}
}
SINGLE_BATTLE_TEST("Absorb recovers 50% of the damage dealt")
{
s16 damage;

View File

@ -7,17 +7,6 @@ ASSUMPTIONS
ASSUME(gSpeciesInfo[SPECIES_CLEFAIRY].types[0] == TYPE_FAIRY || gSpeciesInfo[SPECIES_CLEFAIRY].types[1] == TYPE_FAIRY);
}
SINGLE_BATTLE_TEST("Dragon Darts test")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_CLEFAIRY);
} WHEN {
TURN { MOVE(player, MOVE_DRAGON_DARTS); }
} SCENE {
}
}
SINGLE_BATTLE_TEST("Dragon Darts strikes twice")
{
GIVEN {

View File

@ -19,3 +19,5 @@ SINGLE_BATTLE_TEST("Endeavor causes the target's HP to equal the user's current
EXPECT_EQ(player->hp, opponent->hp);
}
}
TO_DO_BATTLE_TEST("Endeavor does not change HP if the target has less HP than the user, but still plays the animation")
TO_DO_BATTLE_TEST("Endeavor doesn't ignore type immunity") // Ghost types

View File

@ -85,6 +85,7 @@ DOUBLE_BATTLE_TEST("Explosion causes everyone to faint in a double battle")
HP_BAR(playerRight, hp: 0);
HP_BAR(opponentRight, hp: 0);
MESSAGE("The opposing Abra fainted!");
MESSAGE("Wynaut fainted!");
MESSAGE("The opposing Kadabra fainted!");
MESSAGE("Wobbuffet fainted!");
}

View File

@ -99,6 +99,7 @@ DOUBLE_BATTLE_TEST("Mind Blown causes everyone to faint in a double battle")
HP_BAR(playerRight, hp: 0);
HP_BAR(opponentRight, hp: 0);
MESSAGE("The opposing Abra fainted!");
MESSAGE("Wynaut fainted!");
MESSAGE("The opposing Kadabra fainted!");
HP_BAR(playerLeft, hp: 0);
MESSAGE("Wobbuffet fainted!");

View File

@ -28,36 +28,29 @@ DOUBLE_BATTLE_TEST("Spread Moves: Ability and Item effects activate correctly af
}
}
DOUBLE_BATTLE_TEST("Spread Moves: No damage will be dealt to a mon in an invulnerable position - Surf")
DOUBLE_BATTLE_TEST("Spread Moves: No damage will be dealt to a mon in an invulnerable position")
{
u32 attackingMove = 0, invulMove = 0;
PARAMETRIZE { attackingMove = MOVE_HYPER_VOICE; invulMove = MOVE_FLY; }
PARAMETRIZE { attackingMove = MOVE_LAVA_PLUME; invulMove = MOVE_FLY; }
PARAMETRIZE { attackingMove = MOVE_HYPER_VOICE; invulMove = MOVE_DIVE; }
PARAMETRIZE { attackingMove = MOVE_LAVA_PLUME; invulMove = MOVE_DIVE; }
GIVEN {
ASSUME(gMovesInfo[MOVE_HYPER_VOICE].target == MOVE_TARGET_BOTH);
ASSUME(gMovesInfo[MOVE_LAVA_PLUME].target == MOVE_TARGET_FOES_AND_ALLY);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_ZAPDOS);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponentLeft, MOVE_FLY, target: playerLeft); MOVE(playerLeft, MOVE_HYPER_VOICE); }
TURN { MOVE(opponentLeft, invulMove, target: playerLeft); MOVE(playerLeft, attackingMove); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft);
ANIMATION(ANIM_TYPE_MOVE, attackingMove, playerLeft);
NOT HP_BAR(opponentLeft);
HP_BAR(opponentRight);
}
}
DOUBLE_BATTLE_TEST("Spread Moves: No damage will be dealt to a mon in an invulnerable position - Surf")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_ZAPDOS);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_BUBBLE_BEAM, target: opponentLeft); MOVE(opponentLeft, MOVE_SURF); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft);
}
}
DOUBLE_BATTLE_TEST("Spread Moves: A spread move attack will activate both resist berries")
{
s16 opponentLeftDmg[2];
@ -233,26 +226,6 @@ DOUBLE_BATTLE_TEST("Spread Moves: AOE move vs Eiscue and Mimikyu (Based on vanil
}
}
// Can be removed once the above test passes
DOUBLE_BATTLE_TEST("Spread Moves: AOE move vs Eiscue and Mimikyu (Based on battler id)")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_EARTHQUAKE].target == MOVE_TARGET_FOES_AND_ALLY);
ASSUME(gMovesInfo[MOVE_EARTHQUAKE].category == DAMAGE_CATEGORY_PHYSICAL);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_EISCUE);
OPPONENT(SPECIES_MIMIKYU);
OPPONENT(SPECIES_EISCUE);
} WHEN {
TURN { MOVE(playerLeft, MOVE_EARTHQUAKE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, playerLeft);
ABILITY_POPUP(opponentLeft, ABILITY_DISGUISE);
ABILITY_POPUP(playerRight, ABILITY_ICE_FACE);
ABILITY_POPUP(opponentRight, ABILITY_ICE_FACE);
}
}
DOUBLE_BATTLE_TEST("Spread Moves: Spread move, Gem Boosted, vs Resist Berries")
{
GIVEN {