Fix nature power string and add support for evnvironment in tests (#8068)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
This commit is contained in:
parent
f7cbe4853b
commit
fd07daf0d8
@ -8889,7 +8889,7 @@ BattleScript_MetronomeAttackstring::
|
||||
BattleScript_NaturePowerAttackstring::
|
||||
printattackstring
|
||||
pause B_WAIT_TIME_SHORT
|
||||
setcalledmove
|
||||
printstring STRINGID_NATUREPOWERTURNEDINTO
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
setcalledmove
|
||||
return
|
||||
|
||||
@ -736,6 +736,7 @@ struct BattleTestData
|
||||
bool8 isShiny;
|
||||
enum Ability forcedAbilities[NUM_BATTLE_SIDES][PARTY_SIZE];
|
||||
u8 chosenGimmick[NUM_BATTLE_SIDES][PARTY_SIZE];
|
||||
u8 forcedEnvironment;
|
||||
|
||||
u8 currentMonIndexes[MAX_BATTLERS_COUNT];
|
||||
u8 turnState;
|
||||
@ -990,6 +991,7 @@ struct moveWithPP {
|
||||
#define TeraType(teraType) TeraType_(__LINE__, teraType)
|
||||
#define Shadow(isShadow) Shadow_(__LINE__, isShadow)
|
||||
#define Shiny(isShiny) Shiny_(__LINE__, isShiny)
|
||||
#define Environment(environment) Environment_(__LINE__, environment)
|
||||
|
||||
void SetFlagForTest(u32 sourceLine, u16 flagId);
|
||||
void TestSetConfig(u32 sourceLine, enum GenConfigTag configTag, u32 value);
|
||||
@ -1030,6 +1032,7 @@ void GigantamaxFactor_(u32 sourceLine, bool32 gigantamaxFactor);
|
||||
void TeraType_(u32 sourceLine, enum Type teraType);
|
||||
void Shadow_(u32 sourceLine, bool32 isShadow);
|
||||
void Shiny_(u32 sourceLine, bool32 isShiny);
|
||||
void Environment_(u32 sourceLine, u32 environment);
|
||||
|
||||
static inline bool8 IsMultibattleTest(void)
|
||||
{
|
||||
|
||||
@ -28,6 +28,7 @@ void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordInde
|
||||
|
||||
u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex);
|
||||
u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex);
|
||||
u32 TestRunner_Battle_GetForcedEnvironment(void);
|
||||
|
||||
#else
|
||||
|
||||
@ -51,6 +52,8 @@ u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex);
|
||||
|
||||
#define TestRunner_Battle_GetChosenGimmick(...) (u32)0
|
||||
|
||||
#define TestRunner_Battle_GetForcedEnvironment(...) (u8)0
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "test_runner.h"
|
||||
#include "text_window.h"
|
||||
#include "trig.h"
|
||||
#include "window.h"
|
||||
@ -650,7 +651,13 @@ static u8 GetBattleEnvironmentOverride(void)
|
||||
{
|
||||
u8 battleScene = GetCurrentMapBattleScene();
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
if (TestRunner_Battle_GetForcedEnvironment()
|
||||
&& gBattleEnvironmentInfo[gBattleEnvironment].background.tilemap
|
||||
&& gBattleEnvironmentInfo[gBattleEnvironment].background.tileset)
|
||||
{
|
||||
return gBattleEnvironment;
|
||||
}
|
||||
else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
return BATTLE_ENVIRONMENT_FRONTIER;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
{
|
||||
@ -1022,7 +1029,13 @@ void DrawBattleEntryBackground(void)
|
||||
}
|
||||
else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
{
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE))
|
||||
if (TestRunner_Battle_GetForcedEnvironment()
|
||||
&& gBattleEnvironmentInfo[gBattleEnvironment].background.tilemap
|
||||
&& gBattleEnvironmentInfo[gBattleEnvironment].background.tileset)
|
||||
{
|
||||
LoadBattleEnvironmentEntryGfx(gBattleEnvironment);
|
||||
}
|
||||
else if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE))
|
||||
{
|
||||
LoadBattleEnvironmentEntryGfx(BATTLE_ENVIRONMENT_BUILDING);
|
||||
}
|
||||
|
||||
@ -125,6 +125,8 @@ void HandleIntroSlide(u8 environment)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (environment >= NELEMS(sBattleIntroSlideFuncs))
|
||||
environment = BATTLE_ENVIRONMENT_PLAIN;
|
||||
taskId = CreateTask(sBattleIntroSlideFuncs[environment], 0);
|
||||
}
|
||||
|
||||
|
||||
@ -521,6 +521,8 @@ static void CB2_InitBattleInternal(void)
|
||||
}
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||
gBattleEnvironment = BATTLE_ENVIRONMENT_BUILDING;
|
||||
if (TestRunner_Battle_GetForcedEnvironment())
|
||||
gBattleEnvironment = TestRunner_Battle_GetForcedEnvironment() - 1;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER
|
||||
| BATTLE_TYPE_EREADER_TRAINER
|
||||
|
||||
@ -1,4 +1,27 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
#include "battle_environment.h"
|
||||
|
||||
TO_DO_BATTLE_TEST("TODO: Write Nature Power (Move Effect) test titles")
|
||||
//TO_DO_BATTLE_TEST("TODO: Write Nature Power (Move Effect) test titles")
|
||||
|
||||
SINGLE_BATTLE_TEST("Nature power plays a move correctly in any background")
|
||||
{
|
||||
u32 environment = 0;
|
||||
u32 move = MOVE_TRI_ATTACK;
|
||||
for (u32 j = 0; j < BATTLE_ENVIRONMENT_COUNT; j++)
|
||||
{
|
||||
PARAMETRIZE {environment = i;}
|
||||
}
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
Environment(environment);
|
||||
if (gBattleEnvironmentInfo[environment].naturePower)
|
||||
move = gBattleEnvironmentInfo[environment].naturePower;
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_NATURE_POWER); }
|
||||
} SCENE {
|
||||
NOT MESSAGE("Nature Power turned into Nature Power!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, player);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2181,6 +2181,13 @@ void Shiny_(u32 sourceLine, bool32 isShiny)
|
||||
DATA.isShiny = isShiny;
|
||||
}
|
||||
|
||||
void Environment_(u32 sourceLine, u32 environment)
|
||||
{
|
||||
INVALID_IF(DATA.forcedEnvironment, "Environment is already set");
|
||||
INVALID_IF(environment >= BATTLE_ENVIRONMENT_COUNT, "Illegal environment: %d", environment);
|
||||
DATA.forcedEnvironment = environment + 1;
|
||||
}
|
||||
|
||||
static const char *const sBattlerIdentifiersSingles[] =
|
||||
{
|
||||
"player",
|
||||
@ -3104,6 +3111,11 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex)
|
||||
return DATA.forcedAbilities[side][partyIndex];
|
||||
}
|
||||
|
||||
u32 TestRunner_Battle_GetForcedEnvironment(void)
|
||||
{
|
||||
return DATA.forcedEnvironment;
|
||||
}
|
||||
|
||||
u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex)
|
||||
{
|
||||
return DATA.chosenGimmick[side][partyIndex];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user