Fixes Kingambit evolution conditions (#8689)
This commit is contained in:
parent
46e8178b89
commit
0e8f94f380
@ -3036,6 +3036,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
|||||||
case MOVE_EFFECT_STEALTH_ROCK:
|
case MOVE_EFFECT_STEALTH_ROCK:
|
||||||
case MOVE_EFFECT_PAYDAY:
|
case MOVE_EFFECT_PAYDAY:
|
||||||
case MOVE_EFFECT_BUG_BITE:
|
case MOVE_EFFECT_BUG_BITE:
|
||||||
|
case MOVE_EFFECT_FLAME_BURST:
|
||||||
activateAfterFaint = TRUE;
|
activateAfterFaint = TRUE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -4281,7 +4282,7 @@ static void Cmd_tryfaintmon(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd->battler == BS_ATTACKER)
|
if (cmd->battler == BS_TARGET && gCurrentMove != MOVE_NONE)
|
||||||
TryUpdateEvolutionTracker(IF_DEFEAT_X_WITH_ITEMS, 1, MOVE_NONE);
|
TryUpdateEvolutionTracker(IF_DEFEAT_X_WITH_ITEMS, 1, MOVE_NONE);
|
||||||
|
|
||||||
gBattlerFainted = battler;
|
gBattlerFainted = battler;
|
||||||
@ -15474,11 +15475,12 @@ static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16
|
|||||||
u32 i, j;
|
u32 i, j;
|
||||||
|
|
||||||
if (IsOnPlayerSide(gBattlerAttacker)
|
if (IsOnPlayerSide(gBattlerAttacker)
|
||||||
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
&& ((TESTING && IsDoubleBattle()) // To be removed when Wild Double Battles are added to tests
|
||||||
|
|| !(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
||||||
| BATTLE_TYPE_EREADER_TRAINER
|
| BATTLE_TYPE_EREADER_TRAINER
|
||||||
| BATTLE_TYPE_RECORDED_LINK
|
| BATTLE_TYPE_RECORDED_LINK
|
||||||
| BATTLE_TYPE_TRAINER_HILL
|
| BATTLE_TYPE_TRAINER_HILL
|
||||||
| BATTLE_TYPE_FRONTIER)))
|
| BATTLE_TYPE_FRONTIER))))
|
||||||
{
|
{
|
||||||
const struct Evolution *evolutions = GetSpeciesEvolutions(gBattleMons[gBattlerAttacker].species);
|
const struct Evolution *evolutions = GetSpeciesEvolutions(gBattleMons[gBattlerAttacker].species);
|
||||||
if (evolutions == NULL)
|
if (evolutions == NULL)
|
||||||
|
|||||||
@ -12552,7 +12552,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||||
.additionalEffects = ADDITIONAL_EFFECTS({
|
.additionalEffects = ADDITIONAL_EFFECTS({
|
||||||
.moveEffect = MOVE_EFFECT_FLAME_BURST,
|
.moveEffect = MOVE_EFFECT_FLAME_BURST,
|
||||||
.self = TRUE,
|
|
||||||
}),
|
}),
|
||||||
.contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
|
.contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
|
||||||
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
||||||
|
|||||||
137
test/battle/evolution_tracker.c
Normal file
137
test/battle/evolution_tracker.c
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "test/battle.h"
|
||||||
|
|
||||||
|
ASSUMPTIONS
|
||||||
|
{
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->condition == IF_DEFEAT_X_WITH_ITEMS);
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->arg1 == SPECIES_BISHARP);
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->arg2 == ITEM_LEADERS_CREST);
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a Bisharp that holds Leader's Crest increases tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// To be replaced with WILD_DOUBLE_BATTLE_TEST when that is made possible (also see TryUpdateEvolutionTracker)
|
||||||
|
DOUBLE_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing multiple Bisharps holding Leader's Crest increases tracker multiple times")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveTarget(MOVE_LAVA_PLUME) == MOVE_TARGET_FOES_AND_ALLY);
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
PLAYER(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_LAVA_PLUME); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponentLeft, hp: 0);
|
||||||
|
HP_BAR(playerRight, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a Bisharp that doesn't hold Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a non-Bisharp that holds Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
u32 species;
|
||||||
|
|
||||||
|
PARAMETRIZE { species = SPECIES_WOBBUFFET; }
|
||||||
|
PARAMETRIZE { species = SPECIES_PAWNIARD; }
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(species) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Pawniard KO-ing a Bisharp that holds Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_PAWNIARD);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler from contact effects doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetItemHoldEffect(ITEM_ROCKY_HELMET) == HOLD_EFFECT_ROCKY_HELMET);
|
||||||
|
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||||
|
PLAYER(SPECIES_BISHARP) { Item(ITEM_ROCKY_HELMET); }
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler with passive damage doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveEffect(MOVE_LEECH_SEED) == EFFECT_LEECH_SEED);
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_LEECH_SEED); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// To be replaced with WILD_DOUBLE_BATTLE_TEST when that is made possible (also see TryUpdateEvolutionTracker)
|
||||||
|
DOUBLE_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler with bursting flames doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(MoveHasAdditionalEffect(MOVE_FLAME_BURST, MOVE_EFFECT_FLAME_BURST));
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_FLAME_BURST, target: opponentRight); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponentLeft, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user