Merge remote-tracking branch 'rhh/master' into upcoming

This commit is contained in:
Martin Griffin 2023-12-20 12:56:35 +00:00
commit 50cbcebc81
5 changed files with 46 additions and 18 deletions

View file

@ -860,6 +860,21 @@ gBattleAnims_Moves::
.4byte Move_MATCHA_GOTCHA .4byte Move_MATCHA_GOTCHA
.4byte Move_SYRUP_BOMB .4byte Move_SYRUP_BOMB
.4byte Move_IVY_CUDGEL .4byte Move_IVY_CUDGEL
.4byte Move_833
.4byte Move_834
.4byte Move_835
.4byte Move_836
.4byte Move_837
.4byte Move_838
.4byte Move_839
.4byte Move_840
.4byte Move_841
.4byte Move_842
.4byte Move_843
.4byte Move_844
.4byte Move_845
.4byte Move_846
.4byte Move_847
@@@@ Z MOVES @@@@ Z MOVES
.4byte Move_BREAKNECK_BLITZ .4byte Move_BREAKNECK_BLITZ
.4byte Move_ALL_OUT_PUMMELING .4byte Move_ALL_OUT_PUMMELING
@ -16963,6 +16978,21 @@ Move_IVY_CUDGEL::
Move_NONE: Move_NONE:
Move_MIRROR_MOVE: Move_MIRROR_MOVE:
Move_POUND: Move_POUND:
Move_833:
Move_834:
Move_835:
Move_836:
Move_837:
Move_838:
Move_839:
Move_840:
Move_841:
Move_842:
Move_843:
Move_844:
Move_845:
Move_846:
Move_847:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
setalpha 12, 8 setalpha 12, 8

View file

@ -317,8 +317,9 @@
#define MOVEEND_EMERGENCY_EXIT 33 #define MOVEEND_EMERGENCY_EXIT 33
#define MOVEEND_SYMBIOSIS 34 #define MOVEEND_SYMBIOSIS 34
#define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts #define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts
#define MOVEEND_CLEAR_BITS 36 #define MOVEEND_SAME_MOVE_TURNS 36
#define MOVEEND_COUNT 37 #define MOVEEND_CLEAR_BITS 37
#define MOVEEND_COUNT 38
// switch cases // switch cases
#define B_SWITCH_NORMAL 0 #define B_SWITCH_NORMAL 0

View file

@ -2962,6 +2962,10 @@ static void BattleStartClearSetData(void)
memset(&gSideTimers, 0, sizeof(gSideTimers)); memset(&gSideTimers, 0, sizeof(gSideTimers));
memset(&gWishFutureKnock, 0, sizeof(gWishFutureKnock)); memset(&gWishFutureKnock, 0, sizeof(gWishFutureKnock));
memset(&gBattleResults, 0, sizeof(gBattleResults)); memset(&gBattleResults, 0, sizeof(gBattleResults));
memset(&gBattleScripting, 0, sizeof(gBattleScripting));
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6);
for (i = 0; i < MAX_BATTLERS_COUNT; i++) for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{ {
@ -2998,7 +3002,6 @@ static void BattleStartClearSetData(void)
gBattlerAttacker = 0; gBattlerAttacker = 0;
gBattlerTarget = 0; gBattlerTarget = 0;
gEffectBattler = 0; gEffectBattler = 0;
gBattleScripting.battler = 0;
gBattlerAbility = 0; gBattlerAbility = 0;
gBattleWeather = 0; gBattleWeather = 0;
gHitMarker = 0; gHitMarker = 0;
@ -3013,12 +3016,7 @@ static void BattleStartClearSetData(void)
gHitMarker |= HITMARKER_NO_ANIMATIONS; gHitMarker |= HITMARKER_NO_ANIMATIONS;
} }
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6);
gBattleScripting.monCaught = FALSE;
gMultiHitCounter = 0; gMultiHitCounter = 0;
gBattleScripting.savedDmg = 0;
gBattleOutcome = 0; gBattleOutcome = 0;
gBattleControllerExecFlags = 0; gBattleControllerExecFlags = 0;
gPaydayMoney = 0; gPaydayMoney = 0;
@ -3031,8 +3029,6 @@ static void BattleStartClearSetData(void)
gPauseCounterBattle = 0; gPauseCounterBattle = 0;
gBattleMoveDamage = 0; gBattleMoveDamage = 0;
gIntroSlideFlags = 0; gIntroSlideFlags = 0;
gBattleScripting.animTurn = 0;
gBattleScripting.animTargetsHit = 0;
gLeveledUpInBattle = 0; gLeveledUpInBattle = 0;
gAbsentBattlerFlags = 0; gAbsentBattlerFlags = 0;
gBattleStruct->runTries = 0; gBattleStruct->runTries = 0;

View file

@ -1859,13 +1859,9 @@ static void Cmd_ppreduce(void)
if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos])
{ {
gProtectStructs[gBattlerAttacker].notFirstStrike = TRUE; gProtectStructs[gBattlerAttacker].notFirstStrike = TRUE;
// For item Metronome, echoed voice // For item Metronome, echoed voice
if (gCurrentMove == gLastResultingMoves[gBattlerAttacker] if (gCurrentMove != gLastResultingMoves[gBattlerAttacker] || WasUnableToUseMove(gBattlerAttacker))
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& !WasUnableToUseMove(gBattlerAttacker)
&& gSpecialStatuses[gBattlerAttacker].parentalBondState != PARENTAL_BOND_1ST_HIT) // Don't increment counter on first hit
gBattleStruct->sameMoveTurns[gBattlerAttacker]++;
else
gBattleStruct->sameMoveTurns[gBattlerAttacker] = 0; gBattleStruct->sameMoveTurns[gBattlerAttacker] = 0;
if (gBattleMons[gBattlerAttacker].pp[gCurrMovePos] > ppToDeduct) if (gBattleMons[gBattlerAttacker].pp[gCurrMovePos] > ppToDeduct)
@ -6052,6 +6048,13 @@ static void Cmd_moveend(void)
} }
gBattleScripting.moveendState++; gBattleScripting.moveendState++;
break; break;
case MOVEEND_SAME_MOVE_TURNS:
if (gCurrentMove != gLastResultingMoves[gBattlerAttacker] || gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
gBattleStruct->sameMoveTurns[gBattlerAttacker] = 0;
else if (gCurrentMove == gLastResultingMoves[gBattlerAttacker] && gSpecialStatuses[gBattlerAttacker].parentalBondState != PARENTAL_BOND_1ST_HIT)
gBattleStruct->sameMoveTurns[gBattlerAttacker]++;
gBattleScripting.moveendState++;
break;
case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits. case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits.
if (gSpecialStatuses[gBattlerAttacker].instructedChosenTarget) if (gSpecialStatuses[gBattlerAttacker].instructedChosenTarget)
*(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].instructedChosenTarget & 0x3; *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].instructedChosenTarget & 0x3;

View file

@ -67,7 +67,6 @@ SINGLE_BATTLE_TEST("Metronome Item's boost is reset if the attacker uses a diffe
SINGLE_BATTLE_TEST("Metronome Item's boost is reset if the move fails") SINGLE_BATTLE_TEST("Metronome Item's boost is reset if the move fails")
{ {
s16 damage[2]; s16 damage[2];
KNOWN_FAILING; //https://github.com/rh-hideout/pokeemerald-expansion/issues/3251
GIVEN { GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_METRONOME); } PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_METRONOME); }
OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET);
@ -110,7 +109,6 @@ SINGLE_BATTLE_TEST("Metronome Item counts charging turn of moves for its attacki
{ {
u32 item; u32 item;
KNOWN_FAILING; // https://github.com/rh-hideout/pokeemerald-expansion/issues/3250
PARAMETRIZE {item = ITEM_NONE; } PARAMETRIZE {item = ITEM_NONE; }
PARAMETRIZE {item = ITEM_METRONOME; } PARAMETRIZE {item = ITEM_METRONOME; }
GIVEN { GIVEN {