diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-07-29 21:21:31 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-07-29 21:21:31 +0200 |
commit | 9b73817c9015b91ecad0c5d1f4e7e57524f203d6 (patch) | |
tree | e4aa66a0d391ab7c4eb7ab81bcde6b799e5aff7b /src | |
parent | 6785868132dbebc8dd9fa95cc47189ccd7b8d3b7 (diff) |
Battle3 is done. Except ABE.
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_3.c | 563 | ||||
-rw-r--r-- | src/battle_4.c | 32 | ||||
-rw-r--r-- | src/pokemon_3.c | 2 |
3 files changed, 295 insertions, 302 deletions
diff --git a/src/battle_3.c b/src/battle_3.c index cbad8ab45..9bb9e333f 100644 --- a/src/battle_3.c +++ b/src/battle_3.c @@ -49,6 +49,21 @@ extern u8 gLastUsedAbility; extern u8 gBattleTextBuff2[]; extern u8 gFightStateTracker; extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gUnknown_02024BE5; +extern u8 gCurrMovePos; +extern u16 gRandomMove; +extern s32 gBattleMoveDamage; +extern u16 gDynamicBasePower; +extern u32 gBattleExecBuffer; +extern const u16 gSoundMovesTable[]; +extern const u8 gStatusConditionString_PoisonJpn[]; +extern const u8 gStatusConditionString_SleepJpn[]; +extern const u8 gStatusConditionString_ParalysisJpn[]; +extern const u8 gStatusConditionString_BurnJpn[]; +extern const u8 gStatusConditionString_IceJpn[]; +extern const u8 gStatusConditionString_ConfusionJpn[]; +extern const u8 gStatusConditionString_LoveJpn[]; +extern const BattleCmdFunc gBattleScriptingCommandsTable[]; u8 IsImprisoned(u8 bank, u16 move); u8 GetBankByPlayerAI(u8 ID); @@ -57,12 +72,12 @@ u8 GetBankSide(u8 bank); void b_call_bc_move_exec(u8* BS_ptr); bool8 sub_8015660(u8 bank); //check if a move failed void SetMoveEffect(bool8 primary, u8 certainArg); -bool8 sub_8025A44(u8 bank); //uproar wakeup check +bool8 UproarWakeUpCheck(u8 bank); bool8 sub_8018018(u8 bank, u8, u8); void sub_8015740(u8 bank); s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); u8 CountTrailingZeroBits(u32 a); -u8 sub_801B5C0(u16 move, u8 useMoveTarget); //get target of move +u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); u8 weather_get_current(void); @@ -71,6 +86,7 @@ void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); void sub_8013F54(void); void sub_8013FBC(void); +s8 GetPokeFlavourRelation(u32 pid, u8 flavor); extern u8 BattleScript_MoveSelectionDisabledMove[]; extern u8 BattleScript_MoveSelectionTormented[]; @@ -100,34 +116,87 @@ extern u8 gUnknown_081D9008[]; extern u8 gUnknown_081D9041[]; extern u8 gUnknown_081D950F[]; //uproar wakeup BS extern u8 gUnknown_081D957E[]; //uproar BS -extern u8 gUnknown_081D9587[]; //thrash confusion BS -extern u8 gUnknown_081D964C[]; //yawn sleep BS -extern u8 gUnknown_081D92D7[]; //future sight hit -extern u8 gUnknown_081D9202[]; //perish song hit -extern u8 gUnknown_081D921D[]; //perish song timer goes down +extern u8 BattleScript_ThrashConfuses[]; +extern u8 BattleScript_YawnMakesAsleep[]; +extern u8 BattleScript_FutureSightHits[]; +extern u8 BattleScript_PerishSongHits[]; +extern u8 BattleScript_PerishSongTimerGoesDown[]; extern u8 gUnknown_081D8C72[]; extern u8 gUnknown_081D8C7B[]; -extern u8 gUnknown_081D94FB[]; //uproar wakes you up when trying to use a move -extern u8 gUnknown_081D94EE[]; //poke is asleep -extern u8 gUnknown_081D94FB[]; //poke woke up -extern u8 gUnknown_081D9545[]; //poke is frozen -extern u8 gUnknown_081D9552[]; //poke is no longer frozen -extern u8 gUnknown_081D9977[]; //poke is loafing around -extern u8 gUnknown_081D7956[]; //poke must recharge -extern u8 gUnknown_081D9573[]; //poke flinched -extern u8 gUnknown_081D9139[]; //poke tries to use a disabled move -extern u8 gUnknown_081D938F[]; //taunt prevents from using the chosen move -extern u8 gUnknown_081D9459[]; //using imprisoned move -extern u8 gUnknown_081D9595[]; //poke is confused -extern u8 gUnknown_081D95D4[]; //poke is confused no more -extern u8 gUnknown_081D9566[]; //poke is paralyzed -extern u8 gUnknown_081D9608[]; //poke is infatuated, won't attack -extern u8 gUnknown_081D95FB[]; //poke is infatuated -extern u8 gUnknown_081D90A7[]; //bide storing energy -extern u8 gUnknown_081D90B2[]; //bide attack -extern u8 gUnknown_081D90F1[]; //bide no energy to attack +extern u8 BattleScript_MoveUsedIsAsleep[]; +extern u8 BattleScript_MoveUsedWokeUp[]; +extern u8 BattleScript_MoveUsedIsFrozen[]; +extern u8 BattleScript_MoveUsedUnfroze[]; +extern u8 BattleScript_MoveUsedLoafingAround[]; +extern u8 BattleScript_MoveUsedMustRecharge[]; +extern u8 BattleScript_MoveUsedFlinched[]; +extern u8 BattleScript_MoveUsedIsDisabled[]; +extern u8 BattleScript_MoveUsedIsTaunted[]; +extern u8 BattleScript_MoveUsedIsImprisoned[]; +extern u8 BattleScript_MoveUsedIsConfused[]; +extern u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern u8 BattleScript_MoveUsedIsParalyzed[]; +extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern u8 BattleScript_MoveUsedIsInLove[]; +extern u8 BattleScript_BideStoringEnergy[]; +extern u8 BattleScript_BideAttack[]; +extern u8 BattleScript_BideNoEnergyToAttack[]; +extern u8 gUnknown_081D901D[]; //load weather from overworld +extern u8 BattleScript_DrizzleActivates[]; +extern u8 BattleScript_SandstreamActivates[]; +extern u8 BattleScript_DroughtActivates[]; +extern u8 BattleScript_CastformChange[]; +extern u8 BattleScript_RainDishActivates[]; +extern u8 BattleScript_ShedSkinActivates[]; +extern u8 BattleScript_SpeedBoostActivates[]; +extern u8 BattleScript_SoundproofProtected[]; +extern u8 BattleScript_MoveHPDrain[]; +extern u8 BattleScript_MoveHPDrain_PPLoss[]; +extern u8 BattleScript_FlashFireBoost[]; +extern u8 BattleScript_FlashFireBoost_PPLoss[]; +extern u8 BattleScript_MoveHPDrain_FullHP[]; +extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[]; +extern u8 BattleScript_ColorChangeActivates[]; +extern u8 BattleScript_RoughSkinActivates[]; +extern u8 BattleScript_ApplySecondaryEffect[]; +extern u8 BattleScript_CuteCharmActivates[]; +extern u8 gUnknown_081D9956[]; //ability status clear +extern u8 BattleScript_SynchronizeActivates[]; +extern u8 gUnknown_081D978C[]; //intimidate1 +extern u8 gUnknown_081D9795[]; //intimidate2 +extern u8 BattleScript_TraceActivates[]; + +extern u8 BattleScript_WhiteHerbEnd2[]; +extern u8 BattleScript_WhiteHerbRet[]; +extern u8 BattleScript_ItemHealHP_RemoveItem[]; +extern u8 BattleScript_BerryPPHealEnd2[]; +extern u8 BattleScript_ItemHealHP_End2[]; +extern u8 BattleScript_BerryConfuseHealEnd2[]; +extern u8 BattleScript_BerryStatRaiseEnd2[]; +extern u8 BattleScript_BerryFocusEnergyEnd2[]; +extern u8 BattleScript_BerryCurePrlzEnd2[]; +extern u8 BattleScript_BerryCurePsnEnd2[]; +extern u8 BattleScript_BerryCureBrnEnd2[]; +extern u8 BattleScript_BerryCureFrzEnd2[]; +extern u8 BattleScript_BerryCureSlpEnd2[]; +extern u8 BattleScript_BerryCureConfusionEnd2[]; +extern u8 gUnknown_081D9A44[]; //berry cure any status end2 +extern u8 BattleScript_BerryCureParRet[]; +extern u8 BattleScript_BerryCurePsnRet[]; +extern u8 BattleScript_BerryCureBrnRet[]; +extern u8 BattleScript_BerryCureFrzRet[]; +extern u8 BattleScript_BerryCureSlpRet[]; +extern u8 BattleScript_BerryCureConfusionRet[]; +extern u8 gUnknown_081D9A4A[]; //berry cure any status return + +extern u8 BattleScript_ItemHealHP_Ret[]; + +extern u8 gUnknown_081D995F[]; //disobedient while asleep +extern u8 gUnknown_081D996F[]; //disobedient, uses a random move +extern u8 gUnknown_081D9989[]; //disobedient, went to sleep +extern u8 gUnknown_081D99A0[]; //disobedient, hits itself #define CHOICED_MOVE(bank)(((u16*)(&ewram[bank * 2 + 0x160e8]))) @@ -743,7 +812,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; SetMoveEffect(1, 0); if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) - b_call_bc_move_exec(gUnknown_081D9587); + b_call_bc_move_exec(BattleScript_ThrashConfuses); effect++; } } @@ -813,14 +882,14 @@ u8 TurnBasedEffects(void) gStatuses3[gActiveBank] -= 0x800; if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY) && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT - && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !sub_8025A44(gActiveBank)) + && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank)) { CancelMultiTurnMoves(gActiveBank); gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); gEffectBank = gActiveBank; - b_call_bc_move_exec(gUnknown_081D964C); + b_call_bc_move_exec(BattleScript_YawnMakesAsleep); effect++; } } @@ -868,7 +937,7 @@ bool8 sub_80170DC(void) // handle future sight and perish song gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - b_call_bc_move_exec(gUnknown_081D92D7); + b_call_bc_move_exec(BattleScript_FutureSightHits); return 1; } } @@ -896,12 +965,12 @@ bool8 sub_80170DC(void) // handle future sight and perish song { gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG); gBattleMoveDamage = gBattleMons[gActiveBank].hp; - gBattlescriptCurrInstr = gUnknown_081D9202; + gBattlescriptCurrInstr = BattleScript_PerishSongHits; } else { gDisableStructs[gActiveBank].perishSong1--; - gBattlescriptCurrInstr = gUnknown_081D921D; + gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown; } b_call_bc_move_exec(gBattlescriptCurrInstr); return 1; @@ -1015,13 +1084,13 @@ u8 AtkCanceller_UnableToUseMove(void) case 1: // check being asleep if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) { - if (sub_8025A44(gBankAttacker)) + if (UproarWakeUpCheck(gBankAttacker)) { gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); b_movescr_stack_push_cursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattlescriptCurrInstr = gUnknown_081D94FB; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; } else @@ -1039,7 +1108,7 @@ u8 AtkCanceller_UnableToUseMove(void) { if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) { - gBattlescriptCurrInstr = gUnknown_081D94EE; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 2; } @@ -1049,7 +1118,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); b_movescr_stack_push_cursor(); gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = gUnknown_081D94FB; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; } } @@ -1063,7 +1132,7 @@ u8 AtkCanceller_UnableToUseMove(void) { if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 { - gBattlescriptCurrInstr = gUnknown_081D9545; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; gHitMarker |= HITMARKER_NO_ATTACKSTRING; } else @@ -1076,7 +1145,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9552; + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } effect = 2; @@ -1089,7 +1158,7 @@ u8 AtkCanceller_UnableToUseMove(void) CancelMultiTurnMoves(gBankAttacker); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = gUnknown_081D9977; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; gBattleMoveFlags |= MOVESTATUS_MISSED; effect = 1; } @@ -1101,7 +1170,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE); gDisableStructs[gBankAttacker].rechargeCounter = 0; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D7956; + gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1113,7 +1182,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED); gProtectStructs[gBankAttacker].flinchImmobility = 1; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D9573; + gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1125,7 +1194,7 @@ u8 AtkCanceller_UnableToUseMove(void) gProtectStructs[gBankAttacker].usedDisabledMove = 1; BATTLE_STRUCT->scriptingActive = gBankAttacker; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D9139; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1136,7 +1205,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gProtectStructs[gBankAttacker].usedTauntedMove = 1; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D938F; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1147,7 +1216,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gProtectStructs[gBankAttacker].usedImprisionedMove = 1; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D9459; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1172,12 +1241,12 @@ u8 AtkCanceller_UnableToUseMove(void) gProtectStructs[gBankAttacker].confusionSelfDmg = 1; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; } - gBattlescriptCurrInstr = gUnknown_081D9595; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; } else // snapped out of confusion { b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D95D4; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; } effect = 1; } @@ -1188,7 +1257,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gProtectStructs[gBankAttacker].prlzImmobility = 1; CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = gUnknown_081D9566; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } @@ -1202,12 +1271,12 @@ u8 AtkCanceller_UnableToUseMove(void) b_movescr_stack_push_cursor(); else { - b_movescr_stack_push(gUnknown_081D9608); + b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gProtectStructs[gBankAttacker].loveImmobility = 1; CancelMultiTurnMoves(gBankAttacker); } - gBattlescriptCurrInstr = gUnknown_081D95FB; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; effect = 1; } BATTLE_STRUCT->atkCancellerTracker++; @@ -1217,7 +1286,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gBattleMons[gBankAttacker].status2 -= 0x100; if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) - gBattlescriptCurrInstr = gUnknown_081D90A7; + gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; else { gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); @@ -1227,11 +1296,11 @@ u8 AtkCanceller_UnableToUseMove(void) *bideDmg = gTakenDmg[gBankAttacker] * 2; gBankTarget = gTakenDmgBanks[gBankAttacker]; if (gAbsentBankFlags & gBitTable[gBankTarget]) - gBankTarget = sub_801B5C0(MOVE_BIDE, 1); - gBattlescriptCurrInstr = gUnknown_081D90B2; + gBankTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlescriptCurrInstr = BattleScript_BideAttack; } else - gBattlescriptCurrInstr = gUnknown_081D90F1; + gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; } effect = 1; } @@ -1244,7 +1313,7 @@ u8 AtkCanceller_UnableToUseMove(void) { gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9552; + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; gBattleCommunication[MULTISTRING_CHOOSER] = 1; } effect = 2; @@ -1365,66 +1434,6 @@ u8 CastformDataTypeChange(u8 bank) return formChange; } -extern const u8 gStatusConditionString_PoisonJpn[]; -extern const u8 gStatusConditionString_SleepJpn[]; -extern const u8 gStatusConditionString_ParalysisJpn[]; -extern const u8 gStatusConditionString_BurnJpn[]; -extern const u8 gStatusConditionString_IceJpn[]; -extern const u8 gStatusConditionString_ConfusionJpn[]; -extern const u8 gStatusConditionString_LoveJpn[]; - -extern const u16 gUnknown_081FA724[]; //sound moves table - -extern u8 gUnknown_081D901D[]; //load weather from overworld -extern u8 gUnknown_081D9704[]; //Drizzle activates -extern u8 gUnknown_081D9744[]; //Sandstream activates -extern u8 gUnknown_081D97FE[]; //Drought activates -extern u8 gUnknown_081D977D[]; //castform change -extern u8 gUnknown_081D9730[]; //rain dish hp heal -extern u8 gUnknown_081D9758[]; //shed skin status heal -extern u8 gUnknown_081D9718[]; //speed boost bs -extern u8 gUnknown_081D98F3[]; //soundproof protection -extern u8 gUnknown_081D9843[]; //volt/water absorb no pp loss -extern u8 gUnknown_081D9842[]; //volt/water absorb pp loss -extern u8 gUnknown_081D987C[]; //flash fire boost no pp loss -extern u8 gUnknown_081D987B[]; //flash fire boost pp loss -extern u8 gUnknown_081D9866[]; //volt/water absorb no pp loss full hp -extern u8 gUnknown_081D9865[]; //volt/water absorb pp loss full hp -extern u8 gUnknown_081D9921[]; //color change type change -extern u8 gUnknown_081D9928[]; //rough skin damage -extern u8 gUnknown_081D9950[]; //secondary effect applier -extern u8 gUnknown_081D9943[]; //cute charm activates -extern u8 gUnknown_081D9956[]; //ability status clear -extern u8 gUnknown_081D9953[]; //synchronize effect -extern u8 gUnknown_081D978C[]; //intimidate1 -extern u8 gUnknown_081D9795[]; //intimidate2 -extern u8 gUnknown_081D9726[]; //trace effect - -extern u8 gUnknown_081D9A5E[]; //white herb end2 -extern u8 gUnknown_081D9A64[]; //white herb return -extern u8 gUnknown_081D9A74[]; //item hp heal end2 -extern u8 gUnknown_081D9A91[]; //berry pp heal end2 -extern u8 gUnknown_081D9AA1[]; //leftovers heal end2 -extern u8 gUnknown_081D9AD4[]; //berry heal/confuse end2 -extern u8 gUnknown_081D9AFE[]; //berry stat raise end2 -extern u8 gUnknown_081D9B19[]; //berry focus energy end2 -extern u8 gUnknown_081D99B6[]; //berry cure par end2 -extern u8 gUnknown_081D99CE[]; //berry cure psn end2 -extern u8 gUnknown_081D99E6[]; //berry cure brn end2 -extern u8 gUnknown_081D99FE[]; //berry cure frz end2 -extern u8 gUnknown_081D9A16[]; //berry cure slp end2 -extern u8 gUnknown_081D9A2E[]; //berry cure confusion end2 -extern u8 gUnknown_081D9A44[]; //berry cure any status end2 -extern u8 gUnknown_081D99BC[]; //berry cure par return -extern u8 gUnknown_081D99D4[]; //berry cure psn return -extern u8 gUnknown_081D99EC[]; //berry cure brn return -extern u8 gUnknown_081D9A04[]; //berry cure frz return -extern u8 gUnknown_081D9A1C[]; //berry cure slp return -extern u8 gUnknown_081D9A34[]; //berry cure confusion return -extern u8 gUnknown_081D9A4A[]; //berry cure any status return - -extern u8 gUnknown_081D9AA7[]; //shell bell hp heal - #ifdef NONMATCHING struct Struct2017100 @@ -1543,7 +1552,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) { gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); - b_push_move_exec(gUnknown_081D9704); + b_push_move_exec(BattleScript_DrizzleActivates); BATTLE_STRUCT->scriptingActive = bank; effect++; } @@ -1553,7 +1562,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - b_push_move_exec(gUnknown_081D9744); + b_push_move_exec(BattleScript_SandstreamActivates); BATTLE_STRUCT->scriptingActive = bank; effect++; } @@ -1563,7 +1572,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - b_push_move_exec(gUnknown_081D97FE); + b_push_move_exec(BattleScript_DroughtActivates); BATTLE_STRUCT->scriptingActive = bank; effect++; } @@ -1581,7 +1590,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(bank); if (effect != 0) { - b_push_move_exec(gUnknown_081D977D); + b_push_move_exec(BattleScript_CastformChange); BATTLE_STRUCT->scriptingActive = bank; BATTLE_STRUCT->castformToChangeInto = effect - 1; } @@ -1607,7 +1616,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(i); if (effect != 0) { - b_push_move_exec(gUnknown_081D977D); + b_push_move_exec(BattleScript_CastformChange); BATTLE_STRUCT->scriptingActive = i; BATTLE_STRUCT->castformToChangeInto = effect - 1; break; @@ -1629,7 +1638,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) && gBattleMons[bank].maxHP > gBattleMons[bank].hp) { gLastUsedAbility = ABILITY_RAIN_DISH; //why - b_push_move_exec(gUnknown_081D9730); + b_push_move_exec(BattleScript_RainDishActivates); gBattleMoveDamage = gBattleMons[bank].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -1653,7 +1662,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].status1 = 0; //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); fixed in Emerald BATTLE_STRUCT->scriptingActive = gActiveBank = bank; - b_push_move_exec(gUnknown_081D9758); + b_push_move_exec(BattleScript_ShedSkinActivates); EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); MarkBufferBankForExecution(gActiveBank); effect++; @@ -1665,7 +1674,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; BATTLE_STRUCT->animArg1 = 0x11; BATTLE_STRUCT->animArg2 = 0; - b_push_move_exec(gUnknown_081D9718); + b_push_move_exec(BattleScript_SpeedBoostActivates); BATTLE_STRUCT->scriptingActive = bank; effect++; } @@ -1680,16 +1689,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) //_08018A40 if (gLastUsedAbility == ABILITY_SOUNDPROOF) { - for (i = 0; gUnknown_081FA724[i] != 0xFFFF; i++) + for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) { - if (gUnknown_081FA724[i] == move) + if (gSoundMovesTable[i] == move) break; } - if (gUnknown_081FA724[i] != 0xFFFF) + if (gSoundMovesTable[i] != 0xFFFF) { if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; - gBattlescriptCurrInstr = gUnknown_081D98F3; + gBattlescriptCurrInstr = BattleScript_SoundproofProtected; effect = 1; } } @@ -1704,9 +1713,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) { if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = gUnknown_081D9843; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else - gBattlescriptCurrInstr = gUnknown_081D9842; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; effect = 1; } break; @@ -1714,9 +1723,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) { if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = gUnknown_081D9843; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else - gBattlescriptCurrInstr = gUnknown_081D9842; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; effect = 1; } break; @@ -1727,9 +1736,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MULTISTRING_CHOOSER] = 0; if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = gUnknown_081D987C; + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else - gBattlescriptCurrInstr = gUnknown_081D987B; + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; ewram17100.arr[bank] |= 1; effect = 2; } @@ -1737,9 +1746,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MULTISTRING_CHOOSER] = 1; if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = gUnknown_081D987C; + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else - gBattlescriptCurrInstr = gUnknown_081D987B; + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; effect = 2; } } @@ -1750,9 +1759,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = gUnknown_081D9843; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else - gBattlescriptCurrInstr = gUnknown_081D9842; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; } else { @@ -1785,7 +1794,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleTextBuff1[2] = moveType; gBattleTextBuff1[3] = 0xFF; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9921; + gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; effect++; } break; @@ -1801,7 +1810,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9928; + gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; effect++; } break; @@ -1822,7 +1831,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleCommunication[MOVE_EFFECT_BYTE] += 2; gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9950; + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -1838,7 +1847,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9950; + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -1854,7 +1863,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9950; + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -1870,7 +1879,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9950; + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -1892,7 +1901,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9943; + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; effect++; } break; @@ -1995,7 +2004,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) effect = CastformDataTypeChange(i); if (effect) { - b_push_move_exec(gUnknown_081D977D); + b_push_move_exec(BattleScript_CastformChange); BATTLE_STRUCT->scriptingActive = i; BATTLE_STRUCT->castformToChangeInto = effect - 1; return effect; @@ -2016,7 +2025,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; BATTLE_STRUCT->scriptingActive = gBankTarget; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9953; + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -2032,7 +2041,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; BATTLE_STRUCT->scriptingActive = gBankAttacker; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9953; + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; effect++; } @@ -2102,7 +2111,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } if (effect) { - b_push_move_exec(gUnknown_081D9726); + b_push_move_exec(BattleScript_TraceActivates); gStatuses3[i] &= ~(STATUS3_TRACE); BATTLE_STRUCT->scriptingActive = i; @@ -2664,7 +2673,7 @@ _08018680:\n\ _08018690:\n\ movs r0, 0x5\n\ strh r0, [r2]\n\ - ldr r0, _080186AC @ =gUnknown_081D9704\n\ + ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\ bl b_push_move_exec\n\ ldr r0, _080186B0 @ =0x02000000\n\ ldr r3, _080186B4 @ =0x00016003\n\ @@ -2674,7 +2683,7 @@ _08018690:\n\ bl _08019F22\n\ .align 2, 0\n\ _080186A8: .4byte gBattleWeather\n\ -_080186AC: .4byte gUnknown_081D9704\n\ +_080186AC: .4byte BattleScript_DrizzleActivates\n\ _080186B0: .4byte 0x02000000\n\ _080186B4: .4byte 0x00016003\n\ _080186B8:\n\ @@ -2688,7 +2697,7 @@ _080186B8:\n\ _080186C8:\n\ movs r0, 0x18\n\ strh r0, [r2]\n\ - ldr r0, _080186E4 @ =gUnknown_081D9744\n\ + ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\ bl b_push_move_exec\n\ ldr r0, _080186E8 @ =0x02000000\n\ ldr r1, _080186EC @ =0x00016003\n\ @@ -2698,7 +2707,7 @@ _080186C8:\n\ bl _08019F22\n\ .align 2, 0\n\ _080186E0: .4byte gBattleWeather\n\ -_080186E4: .4byte gUnknown_081D9744\n\ +_080186E4: .4byte BattleScript_SandstreamActivates\n\ _080186E8: .4byte 0x02000000\n\ _080186EC: .4byte 0x00016003\n\ _080186F0:\n\ @@ -2712,7 +2721,7 @@ _080186F0:\n\ _08018700:\n\ movs r0, 0x60\n\ strh r0, [r2]\n\ - ldr r0, _0801871C @ =gUnknown_081D97FE\n\ + ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\ bl b_push_move_exec\n\ ldr r0, _08018720 @ =0x02000000\n\ ldr r3, _08018724 @ =0x00016003\n\ @@ -2722,7 +2731,7 @@ _08018700:\n\ bl _08019F22\n\ .align 2, 0\n\ _08018718: .4byte gBattleWeather\n\ -_0801871C: .4byte gUnknown_081D97FE\n\ +_0801871C: .4byte BattleScript_DroughtActivates\n\ _08018720: .4byte 0x02000000\n\ _08018724: .4byte 0x00016003\n\ _08018728:\n\ @@ -2761,7 +2770,7 @@ _0801875C:\n\ bne _08018770\n\ bl _08019F92\n\ _08018770:\n\ - ldr r0, _08018790 @ =gUnknown_081D977D\n\ + ldr r0, _08018790 @ =BattleScript_CastformChange\n\ bl b_push_move_exec\n\ ldr r0, _08018794 @ =0x02000000\n\ ldr r2, _08018798 @ =0x00016003\n\ @@ -2775,7 +2784,7 @@ _08018770:\n\ strb r1, [r0]\n\ bl _08019F76\n\ .align 2, 0\n\ -_08018790: .4byte gUnknown_081D977D\n\ +_08018790: .4byte BattleScript_CastformChange\n\ _08018794: .4byte 0x02000000\n\ _08018798: .4byte 0x00016003\n\ _0801879C: .4byte 0x0001609b\n\ @@ -2911,7 +2920,7 @@ _0801889E:\n\ _080188AA:\n\ mov r2, r8\n\ strb r5, [r2]\n\ - ldr r0, _080188D4 @ =gUnknown_081D9730\n\ + ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\ bl b_push_move_exec\n\ ldr r1, _080188D8 @ =gBattleMoveDamage\n\ ldrh r0, [r4, 0x2C]\n\ @@ -2928,7 +2937,7 @@ _080188C4:\n\ bl _08019F22\n\ .align 2, 0\n\ _080188D0: .4byte gBattleWeather\n\ -_080188D4: .4byte gUnknown_081D9730\n\ +_080188D4: .4byte BattleScript_RainDishActivates\n\ _080188D8: .4byte gBattleMoveDamage\n\ _080188DC:\n\ adds r0, r2, 0\n\ @@ -3003,7 +3012,7 @@ _08018960:\n\ ldr r1, _080189B0 @ =0x00016003\n\ adds r0, r1\n\ strb r3, [r0]\n\ - ldr r0, _080189B4 @ =gUnknown_081D9758\n\ + ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\ bl b_push_move_exec\n\ str r5, [sp]\n\ movs r0, 0\n\ @@ -3024,7 +3033,7 @@ _080189A4: .4byte gStatusConditionString_IceJpn\n\ _080189A8: .4byte 0x02000000\n\ _080189AC: .4byte gActiveBank\n\ _080189B0: .4byte 0x00016003\n\ -_080189B4: .4byte gUnknown_081D9758\n\ +_080189B4: .4byte BattleScript_ShedSkinActivates\n\ _080189B8:\n\ ldrb r2, [r4, 0x1B]\n\ movs r0, 0x1B\n\ @@ -3054,7 +3063,7 @@ _080189DC:\n\ ldr r1, _08018A0C @ =0x000160a5\n\ adds r0, r7, r1\n\ strb r2, [r0]\n\ - ldr r0, _08018A10 @ =gUnknown_081D9718\n\ + ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\ bl b_push_move_exec\n\ ldr r2, _08018A14 @ =0x00016003\n\ adds r0, r7, r2\n\ @@ -3065,7 +3074,7 @@ _080189DC:\n\ _08018A04: .4byte gDisableStructs\n\ _08018A08: .4byte 0x000160a4\n\ _08018A0C: .4byte 0x000160a5\n\ -_08018A10: .4byte gUnknown_081D9718\n\ +_08018A10: .4byte BattleScript_SpeedBoostActivates\n\ _08018A14: .4byte 0x00016003\n\ _08018A18:\n\ ldr r2, _08018A3C @ =gDisableStructs\n\ @@ -3095,7 +3104,7 @@ _08018A40:\n\ bl _08019F76\n\ _08018A4C:\n\ movs r4, 0\n\ - ldr r0, _08018ABC @ =gUnknown_081FA724\n\ + ldr r0, _08018ABC @ =gSoundMovesTable\n\ ldrh r2, [r0]\n\ ldr r5, _08018AC0 @ =0x0000ffff\n\ adds r1, r0, 0\n\ @@ -3146,19 +3155,19 @@ _08018A86:\n\ str r1, [r0]\n\ _08018AAC:\n\ ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018AD4 @ =gUnknown_081D98F3\n\ + ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\ str r0, [r1]\n\ movs r0, 0x1\n\ mov r9, r0\n\ bl _08019F7C\n\ .align 2, 0\n\ -_08018ABC: .4byte gUnknown_081FA724\n\ +_08018ABC: .4byte gSoundMovesTable\n\ _08018AC0: .4byte 0x0000ffff\n\ _08018AC4: .4byte gBattleMons\n\ _08018AC8: .4byte gBankAttacker\n\ _08018ACC: .4byte gHitMarker\n\ _08018AD0: .4byte gBattlescriptCurrInstr\n\ -_08018AD4: .4byte gUnknown_081D98F3\n\ +_08018AD4: .4byte BattleScript_SoundproofProtected\n\ _08018AD8:\n\ cmp r3, 0\n\ bne _08018AE0\n\ @@ -3202,24 +3211,24 @@ _08018B10:\n\ cmp r0, 0\n\ bge _08018B3C\n\ ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B38 @ =gUnknown_081D9843\n\ + ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\ b _08018B40\n\ .align 2, 0\n\ _08018B28: .4byte gBattleMoves\n\ _08018B2C: .4byte gProtectStructs\n\ _08018B30: .4byte gBankAttacker\n\ _08018B34: .4byte gBattlescriptCurrInstr\n\ -_08018B38: .4byte gUnknown_081D9843\n\ +_08018B38: .4byte BattleScript_MoveHPDrain\n\ _08018B3C:\n\ ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B4C @ =gUnknown_081D9842\n\ + ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\ _08018B40:\n\ str r0, [r1]\n\ movs r2, 0x1\n\ b _08018C68\n\ .align 2, 0\n\ _08018B48: .4byte gBattlescriptCurrInstr\n\ -_08018B4C: .4byte gUnknown_081D9842\n\ +_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\ _08018B50:\n\ cmp r4, 0xB\n\ beq _08018B56\n\ @@ -3245,17 +3254,17 @@ _08018B68:\n\ cmp r0, 0\n\ bge _08018B94\n\ ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B90 @ =gUnknown_081D9843\n\ + ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\ b _08018B98\n\ .align 2, 0\n\ _08018B80: .4byte gBattleMoves\n\ _08018B84: .4byte gProtectStructs\n\ _08018B88: .4byte gBankAttacker\n\ _08018B8C: .4byte gBattlescriptCurrInstr\n\ -_08018B90: .4byte gUnknown_081D9843\n\ +_08018B90: .4byte BattleScript_MoveHPDrain\n\ _08018B94:\n\ ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018BA4 @ =gUnknown_081D9842\n\ + ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\ _08018B98:\n\ str r0, [r1]\n\ movs r3, 0x1\n\ @@ -3263,7 +3272,7 @@ _08018B98:\n\ b _08018C6A\n\ .align 2, 0\n\ _08018BA0: .4byte gBattlescriptCurrInstr\n\ -_08018BA4: .4byte gUnknown_081D9842\n\ +_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\ _08018BA8:\n\ cmp r4, 0xA\n\ bne _08018C6A\n\ @@ -3301,7 +3310,7 @@ _08018BA8:\n\ cmp r0, 0\n\ bge _08018C10\n\ ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C0C @ =gUnknown_081D987C\n\ + ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\ b _08018C14\n\ .align 2, 0\n\ _08018BF4: .4byte gBattleMons\n\ @@ -3310,10 +3319,10 @@ _08018BFC: .4byte gBattleCommunication\n\ _08018C00: .4byte gProtectStructs\n\ _08018C04: .4byte gBankAttacker\n\ _08018C08: .4byte gBattlescriptCurrInstr\n\ -_08018C0C: .4byte gUnknown_081D987C\n\ +_08018C0C: .4byte BattleScript_FlashFireBoost\n\ _08018C10:\n\ ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C2C @ =gUnknown_081D987B\n\ + ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\ _08018C14:\n\ str r0, [r1]\n\ adds r0, r5, r2\n\ @@ -3326,7 +3335,7 @@ _08018C14:\n\ b _08018C6A\n\ .align 2, 0\n\ _08018C28: .4byte gBattlescriptCurrInstr\n\ -_08018C2C: .4byte gUnknown_081D987B\n\ +_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\ _08018C30:\n\ ldr r0, _08018C4C @ =gBattleCommunication\n\ strb r4, [r0, 0x5]\n\ @@ -3340,17 +3349,17 @@ _08018C30:\n\ cmp r0, 0\n\ bge _08018C60\n\ ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C5C @ =gUnknown_081D987C\n\ + ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\ b _08018C64\n\ .align 2, 0\n\ _08018C4C: .4byte gBattleCommunication\n\ _08018C50: .4byte gProtectStructs\n\ _08018C54: .4byte gBankAttacker\n\ _08018C58: .4byte gBattlescriptCurrInstr\n\ -_08018C5C: .4byte gUnknown_081D987C\n\ +_08018C5C: .4byte BattleScript_FlashFireBoost\n\ _08018C60:\n\ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CA8 @ =gUnknown_081D987B\n\ + ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\ _08018C64:\n\ str r0, [r1]\n\ movs r2, 0x2\n\ @@ -3382,24 +3391,24 @@ _08018C74:\n\ cmp r0, 0\n\ bge _08018CBC\n\ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CB8 @ =gUnknown_081D9866\n\ + ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\ str r0, [r1]\n\ bl _08019F76\n\ .align 2, 0\n\ _08018CA4: .4byte gBattlescriptCurrInstr\n\ -_08018CA8: .4byte gUnknown_081D987B\n\ +_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\ _08018CAC: .4byte gBattleMons\n\ _08018CB0: .4byte gProtectStructs\n\ _08018CB4: .4byte gBankAttacker\n\ -_08018CB8: .4byte gUnknown_081D9866\n\ +_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\ _08018CBC:\n\ ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CCC @ =gUnknown_081D9865\n\ + ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\ str r0, [r1]\n\ bl _08019F76\n\ .align 2, 0\n\ _08018CC8: .4byte gBattlescriptCurrInstr\n\ -_08018CCC: .4byte gUnknown_081D9865\n\ +_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\ _08018CD0:\n\ ldr r2, _08018CEC @ =gBattleMoveDamage\n\ ldrh r0, [r1, 0x2C]\n\ @@ -3561,7 +3570,7 @@ _08018E52:\n\ strb r0, [r1, 0x3]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018E90 @ =gUnknown_081D9921\n\ + ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\ str r0, [r1]\n\ bl _08019F22\n\ .align 2, 0\n\ @@ -3572,7 +3581,7 @@ _08018E80: .4byte gBankTarget\n\ _08018E84: .4byte gBattleMons\n\ _08018E88: .4byte gBattleTextBuff1\n\ _08018E8C: .4byte gBattlescriptCurrInstr\n\ -_08018E90: .4byte gUnknown_081D9921\n\ +_08018E90: .4byte BattleScript_ColorChangeActivates\n\ _08018E94:\n\ ldr r0, _08018F2C @ =gBattleMoveFlags\n\ ldrb r1, [r0]\n\ @@ -3645,7 +3654,7 @@ _08018F0E:\n\ _08018F1C:\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018F50 @ =gUnknown_081D9928\n\ + ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\ str r0, [r1]\n\ bl _08019F22\n\ .align 2, 0\n\ @@ -3658,7 +3667,7 @@ _08018F40: .4byte gBankTarget\n\ _08018F44: .4byte gBattleMoves\n\ _08018F48: .4byte gBattleMoveDamage\n\ _08018F4C: .4byte gBattlescriptCurrInstr\n\ -_08018F50: .4byte gUnknown_081D9928\n\ +_08018F50: .4byte BattleScript_RoughSkinActivates\n\ _08018F54:\n\ ldr r0, _08019020 @ =gBattleMoveFlags\n\ ldrb r1, [r0]\n\ @@ -3750,7 +3759,7 @@ _08019000:\n\ strb r0, [r1, 0x3]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019044 @ =gUnknown_081D9950\n\ + ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ ldr r2, _08019048 @ =gHitMarker\n\ ldr r0, [r2]\n\ @@ -3769,7 +3778,7 @@ _08019034: .4byte gBankTarget\n\ _08019038: .4byte gBattleMoves\n\ _0801903C: .4byte gBattleCommunication\n\ _08019040: .4byte gBattlescriptCurrInstr\n\ -_08019044: .4byte gUnknown_081D9950\n\ +_08019044: .4byte BattleScript_ApplySecondaryEffect\n\ _08019048: .4byte gHitMarker\n\ _0801904C:\n\ ldr r0, _080190FC @ =gBattleMoveFlags\n\ @@ -3847,7 +3856,7 @@ _080190DC:\n\ strb r0, [r1, 0x3]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019120 @ =gUnknown_081D9950\n\ + ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ ldr r2, _08019124 @ =gHitMarker\n\ ldr r0, [r2]\n\ @@ -3866,7 +3875,7 @@ _08019110: .4byte gBankTarget\n\ _08019114: .4byte gBattleMoves\n\ _08019118: .4byte gBattleCommunication\n\ _0801911C: .4byte gBattlescriptCurrInstr\n\ -_08019120: .4byte gUnknown_081D9950\n\ +_08019120: .4byte BattleScript_ApplySecondaryEffect\n\ _08019124: .4byte gHitMarker\n\ _08019128:\n\ ldr r0, _080191D8 @ =gBattleMoveFlags\n\ @@ -3944,7 +3953,7 @@ _080191B8:\n\ strb r0, [r1, 0x3]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080191FC @ =gUnknown_081D9950\n\ + ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ ldr r2, _08019200 @ =gHitMarker\n\ ldr r0, [r2]\n\ @@ -3963,7 +3972,7 @@ _080191EC: .4byte gBankTarget\n\ _080191F0: .4byte gBattleMoves\n\ _080191F4: .4byte gBattleCommunication\n\ _080191F8: .4byte gBattlescriptCurrInstr\n\ -_080191FC: .4byte gUnknown_081D9950\n\ +_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\ _08019200: .4byte gHitMarker\n\ _08019204:\n\ ldr r0, _080192B4 @ =gBattleMoveFlags\n\ @@ -4041,7 +4050,7 @@ _08019294:\n\ strb r0, [r1, 0x3]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080192D8 @ =gUnknown_081D9950\n\ + ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\ str r0, [r1]\n\ ldr r2, _080192DC @ =gHitMarker\n\ ldr r0, [r2]\n\ @@ -4060,7 +4069,7 @@ _080192C8: .4byte gSpecialStatuses\n\ _080192CC: .4byte gBankTarget\n\ _080192D0: .4byte gBattleCommunication\n\ _080192D4: .4byte gBattlescriptCurrInstr\n\ -_080192D8: .4byte gUnknown_081D9950\n\ +_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\ _080192DC: .4byte gHitMarker\n\ _080192E0:\n\ ldr r0, _08019420 @ =gBattleMoveFlags\n\ @@ -4212,7 +4221,7 @@ _080193F6:\n\ str r0, [r2]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019444 @ =gUnknown_081D9943\n\ + ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\ str r0, [r1]\n\ bl _08019F22\n\ .align 2, 0\n\ @@ -4225,7 +4234,7 @@ _08019434: .4byte gSpecialStatuses\n\ _08019438: .4byte gBankTarget\n\ _0801943C: .4byte gBitTable\n\ _08019440: .4byte gBattlescriptCurrInstr\n\ -_08019444: .4byte gUnknown_081D9943\n\ +_08019444: .4byte BattleScript_CuteCharmActivates\n\ _08019448:\n\ movs r5, 0\n\ mov r10, r5\n\ @@ -4674,7 +4683,7 @@ _08019838:\n\ strb r1, [r0]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\ - ldr r0, _0801987C @ =gUnknown_081D9953\n\ + ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\ str r0, [r1]\n\ ldr r0, [r4]\n\ movs r1, 0x80\n\ @@ -4690,7 +4699,7 @@ _0801986C: .4byte gBattleCommunication\n\ _08019870: .4byte gBankTarget\n\ _08019874: .4byte 0x00016003\n\ _08019878: .4byte gBattlescriptCurrInstr\n\ -_0801987C: .4byte gUnknown_081D9953\n\ +_0801987C: .4byte BattleScript_SynchronizeActivates\n\ _08019880:\n\ mov r1, r8\n\ ldrb r0, [r1]\n\ @@ -4731,7 +4740,7 @@ _080198B4:\n\ strb r1, [r0]\n\ bl b_movescr_stack_push_cursor\n\ ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080198F8 @ =gUnknown_081D9953\n\ + ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\ str r0, [r1]\n\ ldr r0, [r4]\n\ movs r1, 0x80\n\ @@ -4747,7 +4756,7 @@ _080198E8: .4byte gBattleCommunication\n\ _080198EC: .4byte gBankAttacker\n\ _080198F0: .4byte 0x00016003\n\ _080198F4: .4byte gBattlescriptCurrInstr\n\ -_080198F8: .4byte gUnknown_081D9953\n\ +_080198F8: .4byte BattleScript_SynchronizeActivates\n\ _080198FC:\n\ movs r4, 0\n\ ldr r0, _08019934 @ =gNoOfAllBanks\n\ @@ -5414,7 +5423,7 @@ _08019E08: .4byte gNoOfAllBanks\n\ _08019E0C: .4byte gBattleMons\n\ _08019E10: .4byte gLastUsedAbility\n\ _08019E14:\n\ - ldr r0, _08019E30 @ =gUnknown_081D977D\n\ + ldr r0, _08019E30 @ =BattleScript_CastformChange\n\ bl b_push_move_exec\n\ ldr r0, _08019E34 @ =0x02000000\n\ ldr r2, _08019E38 @ =0x00016003\n\ @@ -5427,12 +5436,12 @@ _08019E14:\n\ strb r1, [r0]\n\ b _08019F76\n\ .align 2, 0\n\ -_08019E30: .4byte gUnknown_081D977D\n\ +_08019E30: .4byte BattleScript_CastformChange\n\ _08019E34: .4byte 0x02000000\n\ _08019E38: .4byte 0x00016003\n\ _08019E3C: .4byte 0x0001609b\n\ _08019E40:\n\ - ldr r0, _08019E5C @ =gUnknown_081D977D\n\ + ldr r0, _08019E5C @ =BattleScript_CastformChange\n\ bl b_push_move_exec\n\ ldr r0, _08019E60 @ =0x02000000\n\ ldr r5, _08019E64 @ =0x00016003\n\ @@ -5446,7 +5455,7 @@ _08019E40:\n\ strb r1, [r0]\n\ b _08019F92\n\ .align 2, 0\n\ -_08019E5C: .4byte gUnknown_081D977D\n\ +_08019E5C: .4byte BattleScript_CastformChange\n\ _08019E60: .4byte 0x02000000\n\ _08019E64: .4byte 0x00016003\n\ _08019E68: .4byte 0x0001609b\n\ @@ -5464,7 +5473,7 @@ _08019E6C:\n\ _08019E80: .4byte 0xfff7ffff\n\ _08019E84: .4byte gUnknown_081D978C\n\ _08019E88:\n\ - ldr r0, _08019EDC @ =gUnknown_081D9726\n\ + ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\ bl b_push_move_exec\n\ ldr r1, _08019EE0 @ =gStatuses3\n\ ldr r2, [sp, 0x18]\n\ @@ -5505,7 +5514,7 @@ _08019E88:\n\ strb r0, [r1, 0x3]\n\ b _08019F76\n\ .align 2, 0\n\ -_08019EDC: .4byte gUnknown_081D9726\n\ +_08019EDC: .4byte BattleScript_TraceActivates\n\ _08019EE0: .4byte gStatuses3\n\ _08019EE4: .4byte 0xffefffff\n\ _08019EE8: .4byte 0x02000000\n\ @@ -5641,8 +5650,6 @@ enum FLAVOR_SOUR, // 4 }; -s8 sub_8040A7C(u32 pid, u8 flavor); // get poke flavor relation - u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { int i = 0; @@ -5711,7 +5718,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->scriptingActive = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(gUnknown_081D9A5E); + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); } break; } @@ -5728,7 +5735,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = 4; } break; @@ -5763,7 +5770,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[2] = move; gBattleTextBuff1[3] = move >> 8; gBattleTextBuff1[4] = 0xFF; - b_call_bc_move_exec(gUnknown_081D9A91); + b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBufferBankForExecution(gActiveBank); effect = ITEM_PP_CHANGE; @@ -5784,7 +5791,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->scriptingActive = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(gUnknown_081D9A5E); + b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); } break; case HOLD_EFFECT_LEFTOVERS: @@ -5796,7 +5803,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - b_call_bc_move_exec(gUnknown_081D9AA1); + b_call_bc_move_exec(BattleScript_ItemHealHP_End2); effect = ITEM_HP_CHANGE; RecordItemBattle(bank, bankHoldEffect); } @@ -5815,10 +5822,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (sub_8040A7C(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) - b_call_bc_move_exec(gUnknown_081D9AD4); + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5835,10 +5842,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (sub_8040A7C(gBattleMons[bank].personality, FLAVOR_DRY) < 0) - b_call_bc_move_exec(gUnknown_081D9AD4); + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5855,10 +5862,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (sub_8040A7C(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) - b_call_bc_move_exec(gUnknown_081D9AD4); + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5875,10 +5882,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (sub_8040A7C(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) - b_call_bc_move_exec(gUnknown_081D9AD4); + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5895,10 +5902,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; gBattleMoveDamage *= -1; - if (sub_8040A7C(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) - b_call_bc_move_exec(gUnknown_081D9AD4); + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) + b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); else - b_call_bc_move_exec(gUnknown_081D9A74); + b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); effect = ITEM_HP_CHANGE; } break; @@ -5921,7 +5928,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5937,7 +5944,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5953,7 +5960,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5969,7 +5976,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5985,7 +5992,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; @@ -5993,7 +6000,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) { gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; - b_call_bc_move_exec(gUnknown_081D9B19); + b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2); effect = ITEM_EFFECT_OTHER; } break; @@ -6030,7 +6037,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->statChanger = 0x21 + i; BATTLE_STRUCT->animArg1 = 0x21 + i + 6; BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(gUnknown_081D9AFE); + b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } } @@ -6039,7 +6046,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PARALYSIS) { gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); - b_call_bc_move_exec(gUnknown_081D99B6); + b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -6047,7 +6054,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_PSN_ANY) { gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); - b_call_bc_move_exec(gUnknown_081D99CE); + b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -6055,7 +6062,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_BURN) { gBattleMons[bank].status1 &= ~(STATUS_BURN); - b_call_bc_move_exec(gUnknown_081D99E6); + b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -6063,7 +6070,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status1 & STATUS_FREEZE) { gBattleMons[bank].status1 &= ~(STATUS_FREEZE); - b_call_bc_move_exec(gUnknown_081D99FE); + b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -6072,7 +6079,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - b_call_bc_move_exec(gUnknown_081D9A16); + b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -6080,7 +6087,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) if (gBattleMons[bank].status2 & STATUS2_CONFUSION) { gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_call_bc_move_exec(gUnknown_081D9A2E); + b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2); effect = ITEM_EFFECT_OTHER; } break; @@ -6182,7 +6189,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D99BC; + gBattlescriptCurrInstr = BattleScript_BerryCureParRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6191,7 +6198,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D99D4; + gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6200,7 +6207,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_BURN); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D99EC; + gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6209,7 +6216,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status1 &= ~(STATUS_FREEZE); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9A04; + gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6219,7 +6226,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMons[bank].status1 &= ~(STATUS_SLEEP); gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9A1C; + gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6228,7 +6235,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9A34; + gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; effect = ITEM_EFFECT_OTHER; } break; @@ -6293,7 +6300,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) BATTLE_STRUCT->scriptingActive = bank; gStringBank = bank; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9A64; + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; return effect; // unnecessary return } break; @@ -6343,7 +6350,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleMoveDamage = -1; gSpecialStatuses[gBankTarget].moveturnLostHP = 0; b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9AA7; + gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; effect++; } break; @@ -6362,7 +6369,7 @@ struct CombinedMove u16 newMove; }; -const struct CombinedMove sCombinedMoves[2] = +static const struct CombinedMove sCombinedMoves[2] = { {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE}, {0xFFFF, 0xFFFF, 0xFFFF} @@ -6403,16 +6410,13 @@ void unref_sub_801B40C(void) } } -extern const BattleCmdFunc gBattleScriptingCommandsTable[]; -extern u32 gBattleExecBuffer; - void sub_801B594(void) { if (gBattleExecBuffer == 0) gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); } -u8 sub_801B5C0(u16 move, u8 useMoveTarget) //get move target +u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target { u8 targetBank = 0; u8 moveTarget; @@ -6489,28 +6493,16 @@ u8 sub_801B5C0(u16 move, u8 useMoveTarget) //get move target return targetBank; } -extern u8 gUnknown_081D995F[]; //disobedient while asleep -extern u8 gUnknown_081D9977[]; //disobedient no possible moves to use -extern u8 gUnknown_081D996F[]; //disobedient, uses a random move -extern u8 gUnknown_081D9989[]; //disobedient, went to sleep -extern u8 gUnknown_081D99A0[]; //disobedient, hits itself - -extern u8 gUnknown_02024BE5; -extern u8 gCurrMovePos; -extern u16 gRandomMove; -extern s32 gBattleMoveDamage; -extern u16 gDynamicBasePower; - -/* u8 IsPokeDisobedient(void) { u8 obedienceLevel; - register s32 calc asm("r4"); + s32 rnd; + s32 calc; if (gBattleTypeFlags & BATTLE_TYPE_LINK - || GetBankSide(gBankAttacker) == 1 - || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) - || FlagGet(BADGE08_GET)) + || GetBankSide(gBankAttacker) == 1 + || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) + || FlagGet(BADGE08_GET)) return 0; obedienceLevel = 10; @@ -6523,8 +6515,8 @@ u8 IsPokeDisobedient(void) if (gBattleMons[gBankAttacker].level <= obedienceLevel) return 0; - calc = (Random() & 255); - calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * calc / 256; + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel) return 0; @@ -6536,15 +6528,16 @@ u8 IsPokeDisobedient(void) gBattlescriptCurrInstr = gUnknown_081D995F; return 1; } - calc = (Random() & 255); - calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * calc / 256; + + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel) { - u8 moveLimitations = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); - if (moveLimitations == 0xF) // all moves cannot be used + calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); + if (calc == 0xF) // all moves cannot be used { gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; - gBattlescriptCurrInstr = gUnknown_081D9977; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; return 1; } else // use a random move @@ -6552,13 +6545,13 @@ u8 IsPokeDisobedient(void) do { gCurrMovePos = gUnknown_02024BE5 = Random() & 3; - } while (gBitTable[gCurrMovePos] & moveLimitations); + } while (gBitTable[gCurrMovePos] & calc); gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; gBattleCommunication[3] = 0; gDynamicBasePower = 0; BATTLE_STRUCT->dynamicMoveType = 0; gBattlescriptCurrInstr = gUnknown_081D996F; - gBankTarget = sub_801B5C0(gRandomMove, 0); + gBankTarget = GetMoveTarget(gRandomMove, 0); gHitMarker |= HITMARKER_x200000; return 2; } @@ -6566,6 +6559,7 @@ u8 IsPokeDisobedient(void) else { obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel; + calc = (Random() & 255); if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA) { @@ -6594,9 +6588,8 @@ u8 IsPokeDisobedient(void) else { gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; - gBattlescriptCurrInstr = gUnknown_081D9977; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; return 1; } } } -*/ diff --git a/src/battle_4.c b/src/battle_4.c index 3912c3426..31d6c76dc 100644 --- a/src/battle_4.c +++ b/src/battle_4.c @@ -150,7 +150,7 @@ bool8 sub_8014AB8(u8 bank); //can run from battle u8 CountAliveMons(u8 caseID); void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); u8 CanRunFromBattle(void); -u8 sub_801B5C0(u16 move, u8 targetbyte); //get target of move +u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move void sub_80153D0(u8 atk); //pressure perish song pp decrement u8 CastformDataTypeChange(u8 bank); void b_push_move_exec(u8* bs_ptr); @@ -207,7 +207,7 @@ extern u8 BattleScript_1D6F44[]; //present dmg extern u8 BattleScript_1D83B5[]; //present full hp extern u8 BattleScript_1D839B[]; //present hp heal extern u8 BattleScript_1D6F74[]; -extern u8 gUnknown_081D977D[]; //castform change bs +extern u8 BattleScript_CastformChange[]; extern u8 gUnknown_081D9834[]; extern u8 gUnknown_081D90FC[]; //bs random switchout extern u8 gUnknown_081D95DB[]; //bs payday money give @@ -12762,7 +12762,7 @@ static void atk76_various(void) gBattleCommunication[0] = CanRunFromBattle(); break; case 3: - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); break; case 4: if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) @@ -12938,7 +12938,7 @@ static void atk7C_8025508(void) { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = r7; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; } else if (r6 != 0 && r5 != 0 && r6 != 0xFFFF && r5 != 0xFFFF) @@ -12948,21 +12948,21 @@ static void atk7C_8025508(void) gCurrentMove = r6; else gCurrentMove = r5; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; } else if (r6 != 0 && r6 != 0xFFFF) { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = r6; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; } else if (r5 != 0 && r5 != 0xFFFF) { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = r5; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; } else @@ -13087,7 +13087,7 @@ static void atk83_nop(void) gBattlescriptCurrInstr++; } -bool8 sub_8025A44(u8 bank) //uproar wakeup check +bool8 UproarWakeUpCheck(u8 bank) { int i; for (i = 0; i < gNoOfAllBanks; i++) @@ -13112,7 +13112,7 @@ bool8 sub_8025A44(u8 bank) //uproar wakeup check static void atk84_jump_if_cant_sleep(void) { u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1); - if (sub_8025A44(gBankTarget)) + if (UproarWakeUpCheck(gBankTarget)) gBattlescriptCurrInstr = jump_loc; else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT) { @@ -14936,7 +14936,7 @@ static void atk9E_metronome(void) gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); } #else @@ -15002,7 +15002,7 @@ _080278F8:\n\ str r0, [r1]\n\ ldrh r0, [r4]\n\ movs r1, 0\n\ - bl sub_801B5C0\n\ + bl GetMoveTarget\n\ ldr r1, _0802795C @ =gBankTarget\n\ strb r0, [r1]\n\ pop {r3}\n\ @@ -15570,7 +15570,7 @@ static void atkA9_sleeptalk_choose_move(void) gRandomMove = gBattleMons[gBankAttacker].moves[random_pos]; gCurrMovePos = random_pos; gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); - gBankTarget = sub_801B5C0(gRandomMove, 0); + gBankTarget = GetMoveTarget(gRandomMove, 0); gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } } @@ -16684,7 +16684,7 @@ static void atkCC_callterrainattack(void) //nature power { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = sNaturePowerMoves[gBattleTerrain]; - gBankTarget = sub_801B5C0(gCurrentMove, 0); + gBankTarget = GetMoveTarget(gCurrentMove, 0); b_movescr_stack_push(gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]); gBattlescriptCurrInstr++; } @@ -17307,7 +17307,7 @@ static void atkDE_asistattackselect(void) { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no]; - gBankTarget = sub_801B5C0(gRandomMove, 0); + gBankTarget = GetMoveTarget(gRandomMove, 0); gBattlescriptCurrInstr += 5; } else @@ -17451,7 +17451,7 @@ _0802AB54:\n\ strh r0, [r4]\n\ ldrh r0, [r4]\n\ movs r1, 0\n\ - bl sub_801B5C0\n\ + bl GetMoveTarget\n\ ldr r1, _0802ABC4 @ =gBankTarget\n\ strb r0, [r1]\n\ ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr\n\ @@ -17655,7 +17655,7 @@ static void atkE7_castform_data_change(void) form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive); if (form) { - b_push_move_exec(gUnknown_081D977D); + b_push_move_exec(BattleScript_CastformChange); BATTLE_STRUCT->castformToChangeInto = form - 1; } } diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 3d85a1c8f..e449af0a1 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1219,7 +1219,7 @@ s8 sub_8040A54(struct Pokemon *mon, u8 a2) return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } -s8 sub_8040A7C(u32 personality, u8 a2) +s8 GetPokeFlavourRelation(u32 personality, u8 a2) { u8 nature = GetNatureFromPersonality(personality); return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; |