fixes for BATTLE_TYPE_POKEDUDE

This commit is contained in:
cawtds 2026-03-15 17:36:22 +01:00
parent 565d54e02a
commit 7d704a1ce6
4 changed files with 7 additions and 7 deletions

View File

@ -113,7 +113,7 @@ enum BattleSide
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
#define BATTLE_TYPE_RECORDED_INVALID ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
| BATTLE_TYPE_CATCH_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_LEGENDARY \
| BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_POKEDUDE \
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE))
#define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER))))

View File

@ -967,7 +967,7 @@ void BattleInitBgsAndWindows(void)
SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer);
SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer);
}
else if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_CATCH_TUTORIAL))
else if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_CATCH_TUTORIAL | BATTLE_TYPE_POKEDUDE))
{
gBattleScripting.windowsType = B_WIN_TYPE_KANTO_TUTORIAL;
}

View File

@ -1731,7 +1731,7 @@ void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
enum BattlerId battler;
u8 healthBarSpriteId;
if (gBattleTypeFlags & BATTLE_TYPE_CATCH_TUTORIAL)
if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_CATCH_TUTORIAL | BATTLE_TYPE_POKEDUDE))
return;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
return;

View File

@ -4215,7 +4215,7 @@ static void Cmd_getexp(void)
else
{
// Music change in a wild battle after fainting opposing pokemon.
if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)
if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_POKEDUDE))
&& (gBattleMons[0].hp || (IsDoubleBattle() && gBattleMons[2].hp))
&& !IsBattlerAlive(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
&& (!IsDoubleBattle() || !IsBattlerAlive(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)))
@ -4253,7 +4253,7 @@ static void Cmd_getexp(void)
gBattleStruct->battlerExpReward = gExperienceTables[growthRate][levelCap] - currentExp;
}
if (IsTradedMon(&gPlayerParty[*expMonId]))
if (IsTradedMon(&gPlayerParty[*expMonId]) && !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE))
{
// check if the Pokémon doesn't belong to the player
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && *expMonId >= 3)
@ -10867,7 +10867,7 @@ static void Cmd_handleballthrow(void)
MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_CATCH_TUTORIAL)
else if (gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_CATCH_TUTORIAL))
{
BtlController_EmitBallThrowAnim(gBattlerAttacker, B_COMM_TO_CONTROLLER, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gBattlerAttacker);
@ -11841,7 +11841,7 @@ void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBat
{
enum HoldEffect holdEffect = GetMonHoldEffect(&gPlayerParty[expGetterMonId]);
if (IsTradedMon(&gPlayerParty[expGetterMonId]))
if (IsTradedMon(&gPlayerParty[expGetterMonId]) && !(gBattleTypeFlags & BATTLE_TYPE_POKEDUDE))
*expAmount = (*expAmount * 150) / 100;
if (holdEffect == HOLD_EFFECT_LUCKY_EGG)
*expAmount = (*expAmount * 150) / 100;