mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-27 04:04:17 +01:00
90d9334f0b
* Fix Sap Sipper not blocking bullet seed * add defiant sticky web test
141 lines
6.7 KiB
C
141 lines
6.7 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
DOUBLE_BATTLE_TEST("Defiant sharply raises player's Attack after Intimidate")
|
|
{
|
|
u32 abilityLeft, abilityRight;
|
|
|
|
PARAMETRIZE { abilityLeft = ABILITY_VITAL_SPIRIT; abilityRight = ABILITY_VITAL_SPIRIT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_VITAL_SPIRIT; abilityRight = ABILITY_DEFIANT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_DEFIANT; abilityRight = ABILITY_VITAL_SPIRIT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_DEFIANT; abilityRight = ABILITY_DEFIANT; }
|
|
|
|
GIVEN {
|
|
PLAYER(SPECIES_MANKEY) { Ability(abilityLeft); }
|
|
PLAYER(SPECIES_PRIMEAPE) { Ability(abilityRight); }
|
|
OPPONENT(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
|
|
OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); }
|
|
} WHEN {
|
|
TURN { MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft); MOVE(playerRight, MOVE_TACKLE, target:opponentRight); }
|
|
} SCENE {
|
|
//1st mon Intimidate
|
|
ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
|
|
MESSAGE("Foe Gyarados's Intimidate cuts Mankey's attack!");
|
|
if (abilityLeft == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(playerLeft, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
|
|
MESSAGE("Mankey's Attack sharply rose!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
|
|
MESSAGE("Foe Gyarados's Intimidate cuts Primeape's attack!");
|
|
if (abilityRight == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(playerRight, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
|
|
MESSAGE("Primeape's Attack sharply rose!");
|
|
}
|
|
|
|
//2nd mon Intimidate
|
|
ABILITY_POPUP(opponentRight, ABILITY_INTIMIDATE);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
|
|
MESSAGE("Foe Arbok's Intimidate cuts Mankey's attack!");
|
|
if (abilityLeft == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(playerLeft, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
|
|
MESSAGE("Mankey's Attack sharply rose!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
|
|
MESSAGE("Foe Arbok's Intimidate cuts Primeape's attack!");
|
|
if (abilityRight == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(playerRight, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
|
|
MESSAGE("Primeape's Attack sharply rose!");
|
|
}
|
|
} FINALLY {
|
|
// -2 from Intimidates and +4 from Defiants gets +2 total
|
|
EXPECT_EQ(playerLeft->statStages[STAT_ATK], (abilityLeft == ABILITY_DEFIANT) ? DEFAULT_STAT_STAGE + 2 : DEFAULT_STAT_STAGE - 2);
|
|
EXPECT_EQ(playerRight->statStages[STAT_ATK], (abilityRight == ABILITY_DEFIANT) ? DEFAULT_STAT_STAGE + 2 : DEFAULT_STAT_STAGE - 2);
|
|
}
|
|
}
|
|
|
|
// Same as above, but for opponent.
|
|
DOUBLE_BATTLE_TEST("Defiant sharply raises opponent's Attack after Intimidate")
|
|
{
|
|
u32 abilityLeft, abilityRight;
|
|
|
|
PARAMETRIZE { abilityLeft = ABILITY_VITAL_SPIRIT; abilityRight = ABILITY_VITAL_SPIRIT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_VITAL_SPIRIT; abilityRight = ABILITY_DEFIANT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_DEFIANT; abilityRight = ABILITY_VITAL_SPIRIT; }
|
|
PARAMETRIZE { abilityLeft = ABILITY_DEFIANT; abilityRight = ABILITY_DEFIANT; }
|
|
|
|
GIVEN {
|
|
OPPONENT(SPECIES_MANKEY) { Ability(abilityLeft); }
|
|
OPPONENT(SPECIES_PRIMEAPE) { Ability(abilityRight); }
|
|
PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
|
|
PLAYER(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); }
|
|
} WHEN {
|
|
TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(opponentRight, MOVE_TACKLE, target:playerRight); }
|
|
} SCENE {
|
|
//1st mon Intimidate
|
|
ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
|
MESSAGE("Gyarados's Intimidate cuts Foe Mankey's attack!");
|
|
if (abilityLeft == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(opponentLeft, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
|
MESSAGE("Foe Mankey's Attack sharply rose!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
|
MESSAGE("Gyarados's Intimidate cuts Foe Primeape's attack!");
|
|
if (abilityRight == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(opponentRight, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
|
MESSAGE("Foe Primeape's Attack sharply rose!");
|
|
}
|
|
|
|
//2nd mon Intimidate
|
|
ABILITY_POPUP(playerRight, ABILITY_INTIMIDATE);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
|
MESSAGE("Arbok's Intimidate cuts Foe Mankey's attack!");
|
|
if (abilityLeft == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(opponentLeft, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
|
MESSAGE("Foe Mankey's Attack sharply rose!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
|
MESSAGE("Arbok's Intimidate cuts Foe Primeape's attack!");
|
|
if (abilityRight == ABILITY_DEFIANT) {
|
|
ABILITY_POPUP(opponentRight, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
|
MESSAGE("Foe Primeape's Attack sharply rose!");
|
|
}
|
|
} FINALLY {
|
|
// -2 from Intimidates and +4 from Defiants gets +2 total
|
|
EXPECT_EQ(opponentLeft->statStages[STAT_ATK], (abilityLeft == ABILITY_DEFIANT) ? DEFAULT_STAT_STAGE + 2 : DEFAULT_STAT_STAGE - 2);
|
|
EXPECT_EQ(opponentRight->statStages[STAT_ATK], (abilityRight == ABILITY_DEFIANT) ? DEFAULT_STAT_STAGE + 2 : DEFAULT_STAT_STAGE - 2);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET);
|
|
PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(opponent, MOVE_STICKY_WEB); }
|
|
TURN { SWITCH(player, 1); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, opponent);
|
|
// Switch-in - Sticky Web activates
|
|
MESSAGE("Go! Mankey!");
|
|
MESSAGE("Mankey was caught in a Sticky Web!");
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
MESSAGE("Mankey's Speed fell!");
|
|
// Defiant activates
|
|
ABILITY_POPUP(player, ABILITY_DEFIANT);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
MESSAGE("Mankey's Attack sharply rose!");
|
|
}
|
|
}
|