added some 'test' tests
This commit is contained in:
parent
d0dc564da8
commit
ca75fcb50c
3 changed files with 140 additions and 0 deletions
136
test/dynamax.c
Normal file
136
test/dynamax.c
Normal file
|
@ -0,0 +1,136 @@
|
|||
#include "global.h"
|
||||
#include "test_battle.h"
|
||||
|
||||
// DYNAMAX FEATURES
|
||||
/*
|
||||
SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x")
|
||||
{
|
||||
GIVEN { // TODO: Dynamax level
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); }
|
||||
OPPONENT(SPECIES_WOBBUFFET)
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player);
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
}
|
||||
}
|
||||
*/
|
||||
/*
|
||||
SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns.")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(80); }
|
||||
OPPONENT(SPECIES_WOBBUFFET)
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } // 1st max move
|
||||
TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move
|
||||
TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move
|
||||
} SCENE {
|
||||
int i;
|
||||
for (i = 0; i < DYNAMAX_TURNS; ++i) {
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
}
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
} FINALLY {
|
||||
EXPECT_EQ(player->hp, 80)
|
||||
EXPECT_EQ(player->maxHP, 100)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// MAX MOVE EFFECTS
|
||||
SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed")
|
||||
{
|
||||
GIVEN {
|
||||
// Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE);
|
||||
ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(80); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); }
|
||||
TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); }
|
||||
} SCENE {
|
||||
// turn 1
|
||||
MESSAGE("Foe Wobbuffet used Tackle!");
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
// turn 2
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed")
|
||||
{
|
||||
GIVEN {
|
||||
// Fails? ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE);
|
||||
ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(80); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(79); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(100); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(99); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); \
|
||||
MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \
|
||||
MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); }
|
||||
TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); \
|
||||
MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \
|
||||
MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); }
|
||||
} SCENE {
|
||||
// turn 1
|
||||
MESSAGE("Foe Wobbuffet used Tackle!");
|
||||
MESSAGE("Foe Wobbuffet used Tackle!");
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
// turn 2
|
||||
MESSAGE("Wobbuffet used Max Strike!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
|
||||
MESSAGE("Foe Wobbuffet's speed fell!");
|
||||
MESSAGE("Foe Wobbuffet used Tackle!");
|
||||
MESSAGE("Foe Wobbuffet used Tackle!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight.")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_MAX_FLARE].argument == MAX_EFFECT_SUN);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EMBER, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet used Max Flare!");
|
||||
MESSAGE("The sunlight got bright!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SUN_CONTINUES);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain.")
|
||||
{
|
||||
KNOWN_FAILING
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(256); HP(128); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet used Max Overgrowth!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
//HP_BAR(player, damage: -player->maxHP / 16);
|
||||
}
|
||||
}
|
|
@ -722,6 +722,7 @@ struct MoveContext
|
|||
u16 megaEvolve:1;
|
||||
u16 explicitMegaEvolve:1;
|
||||
// TODO: u8 zMove:1;
|
||||
u16 dynamax:1;
|
||||
u16 allowed:1;
|
||||
u16 explicitAllowed:1;
|
||||
struct BattlePokemon *target;
|
||||
|
|
|
@ -1217,6 +1217,9 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx)
|
|||
|
||||
if (ctx.explicitMegaEvolve && ctx.megaEvolve)
|
||||
moveSlot |= RET_MEGA_EVOLUTION;
|
||||
|
||||
if (ctx.dynamax)
|
||||
moveSlot |= RET_DYNAMAX;
|
||||
|
||||
if (ctx.explicitTarget)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue