diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/battle.h | 54 | ||||
-rw-r--r-- | include/evolution_scene.h | 10 | ||||
-rw-r--r-- | include/pokemon.h | 6 | ||||
-rw-r--r-- | include/recorded_battle.h | 1 | ||||
-rw-r--r-- | include/songs.h | 84 |
5 files changed, 90 insertions, 65 deletions
diff --git a/include/battle.h b/include/battle.h index 7c8d89e57..639558e60 100644 --- a/include/battle.h +++ b/include/battle.h @@ -56,6 +56,7 @@ #define BATTLE_TYPE_RAYQUAZA 0x40000000 #define BATTLE_TYPE_x80000000 0x80000000 +#define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 #define TRAINER_OPPONENT_800 0x800 #define STEVEN_PARTNER_ID 0xC03 @@ -71,8 +72,11 @@ #define BATTLE_PLAYER_TELEPORTED 0x5 #define BATTLE_POKE_FLED 0x6 #define BATTLE_CAUGHT 0x7 +#define BATTLE_FORFEITED 0x9 #define BATTLE_OPPONENT_TELEPORTED 0xA +#define BATTLE_OUTCOME_BIT_x80 0x80 + #define STATUS_SLEEP 0x7 #define STATUS_POISON 0x8 #define STATUS_BURN 0x10 @@ -171,8 +175,10 @@ #define ACTION_GO_NEAR 7 #define ACTION_SAFARI_ZONE_RUN 8 #define ACTION_9 9 -#define ACTION_CANCEL_PARTNER 12 -#define ACTION_NOTHING_FAINTED 13 +#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action +#define ACTION_CANCEL_PARTNER 12 // when choosing an action +#define ACTION_FINISHED 12 // when executing an action +#define ACTION_NOTHING_FAINTED 13 // when choosing an action #define ACTION_INIT_VALUE 0xFF #define ABILITYEFFECT_ON_SWITCHIN 0x0 @@ -559,22 +565,19 @@ struct BattleResults u8 playerSwitchesCounter; // 0x2 u8 unk3; // 0x3 u8 unk4; // 0x4 - u8 unk5_0:1; // 0x5 - u8 unk5_1:1; // 0x5 - u8 caughtMonBall:4; // 0x5 - u8 unk5_6:1; // 0x5 - u8 unk5_7:1; // 0x5 - u16 poke1Species; // 0x6 - u8 pokeString1[10]; // 0x8 - u8 unk12; + u8 unk5_0:1; // 0x5 , 0x1 + u8 unk5_1:1; // 0x5 , 0x2 + u8 caughtMonBall:4; // 0x5 , 0x4/0x8/0x10/0x20 + u8 unk5_6:1; // 0x5 , 0x40 + u8 unk5_7:1; // 0x5 , 0x80 + u16 playerMon1Species; // 0x6 + u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 - u8 pokeString2[10]; // 0x14 - u8 field_1E; // 0x1E - u8 field_1F; // 0x1F + u8 playerMon2Name[11]; // 0x14 u16 lastOpponentSpecies; // 0x20 - u16 lastUsedMove; // 0x22 - u16 opponentMove; // 0x24 - u16 opponentSpecies; // 0x26 + u16 lastUsedMovePlayer; // 0x22 + u16 lastUsedMoveOpponent; // 0x24 + u16 playerMon2Species; // 0x26 u16 caughtMonSpecies; // 0x28 u8 caughtMonNick[10]; // 0x2A u8 filler34[2]; @@ -605,7 +608,7 @@ struct BattleStruct u8 field_45; u8 field_46; u8 field_47; - u8 field_48; + u8 focusPunchBank; u8 field_49; u8 moneyMultiplier; u8 field_4B; @@ -620,7 +623,7 @@ struct BattleStruct u8 field_58[4]; u8 field_5C[4]; u8 field_60[4][3]; - u8 field_6C; + u8 runTries; u8 caughtMonNick[11]; u8 field_78; u8 field_79; @@ -630,7 +633,7 @@ struct BattleStruct u8 field_7D; u8 field_7E; u8 formToChangeInto; - u8 chosenMovesIds[BATTLE_BANKS_COUNT]; + u8 chosenMovePositions[BATTLE_BANKS_COUNT]; u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; u8 field_88; u8 field_89; @@ -665,7 +668,9 @@ struct BattleStruct u8 field_B3; void (*savedCallback)(void); u16 usedHeldItems[BATTLE_BANKS_COUNT]; - u8 field_C0[8]; + u8 field_C0[4]; + u8 field_C4[2]; + u8 field_C6[2]; u16 choicedMove[BATTLE_BANKS_COUNT]; u16 changedItems[BATTLE_BANKS_COUNT]; u8 intimidateBank; @@ -818,6 +823,7 @@ extern struct BattleStruct* gBattleStruct; #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_CAN_RUN_FROM_BATTLE 2 #define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 @@ -901,13 +907,15 @@ void sub_803FA70(u8 bank); void BattleMainCB2(void); void VBlankCB_Battle(void); void ResetSentPokesToOpponentValue(void); -bool8 CanRunFromBattle(u8 bank); +bool8 TryRunFromBattle(u8 bank); bool8 IsRunningFromBattleImpossible(void); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); void SwapTurnOrder(u8, u8); void BattleTurnPassed(void); +void RunBattleScriptCommands_PopCallbacksStack(void); +void RunBattleScriptCommands(void); // battle_3 #define MOVE_LIMITATION_ZEROMOVE (1 << 0) @@ -928,7 +936,7 @@ u8 UpdateTurnCounters(void); u8 TurnBasedEffects(void); bool8 sub_8041364(void); bool8 sub_8041728(void); -void b_clear_atk_up_if_hit_flag_unless_enraged(void); +void TryClearRageStatuses(void); u8 AtkCanceller_UnableToUseMove(void); bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); u8 CastformDataTypeChange(u8 bank); @@ -936,7 +944,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) void BattleScriptExecute(const u8* BS_ptr); void BattleScriptPushCursorAndCallback(const u8* BS_ptr); u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void sub_8045868(u8 bank); +void ClearFuryCutterDestinyBondGrudge(u8 bank); void sub_80458B4(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsPokeDisobedient(void); diff --git a/include/evolution_scene.h b/include/evolution_scene.h new file mode 100644 index 000000000..48bd6ebe1 --- /dev/null +++ b/include/evolution_scene.h @@ -0,0 +1,10 @@ +#ifndef GUARD_EVOLUTION_SCENE_H +#define GUARD_EVOLUTION_SCENE_H + +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); + +extern void (*gCB2_AfterEvolution)(void); + +#endif // GUARD_EVOLUTION_SCENE_H diff --git a/include/pokemon.h b/include/pokemon.h index 5d97c1666..c41099b09 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -634,6 +634,12 @@ bool16 sub_806D82C(u8 id); u16 MonTryLearningNewMove(struct Pokemon* mon, bool8); void sub_8068AA4(void); // sets stats for deoxys bool8 HasTwoFramesAnimation(u16 species); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +void RandomlyGivePartyPokerus(struct Pokemon *party); +u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); +u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); +void UpdatePartyPokerusTime(u16 days); +void PartySpreadPokerus(struct Pokemon *party); #include "sprite.h" diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 2df1620e4..65ad998e6 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -14,5 +14,6 @@ u8 sub_8185FB8(void); u8 MoveRecordedBattleToSaveData(void); void sub_818603C(u8); void sub_8185FD0(void); +void sub_8186444(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/songs.h b/include/songs.h index d828e4068..5a1fff00c 100644 --- a/include/songs.h +++ b/include/songs.h @@ -252,23 +252,23 @@ enum SE_W114, SE_W063B, BGM_STOP = 349, - BGM_TETSUJI, - BGM_FIELD13, - BGM_KACHI22, - BGM_KACHI2, - BGM_KACHI3, - BGM_KACHI5, - BGM_PCC, - BGM_NIBI, - BGM_SUIKUN, - BGM_DOORO1, - BGM_DOORO_X1, - BGM_DOORO_X3, - BGM_MACHI_S2, - BGM_MACHI_S4, - BGM_GIM, - BGM_NAMINORI, - BGM_DAN01, + /*0x15E*/ BGM_TETSUJI, + /*0x15F*/ BGM_FIELD13, + /*0x160*/ BGM_KACHI22, + /*0x161*/ BGM_KACHI2, + /*0x162*/ BGM_KACHI3, + /*0x163*/ BGM_KACHI5, + /*0x164*/ BGM_PCC, + /*0x165*/ BGM_NIBI, + /*0x166*/ BGM_SUIKUN, + /*0x167*/ BGM_DOORO1, + /*0x168*/ BGM_DOORO_X1, + /*0x169*/ BGM_DOORO_X3, + /*0x16A*/ BGM_MACHI_S2, + /*0x16B*/ BGM_MACHI_S4, + /*0x16C*/ BGM_GIM, + /*0x16D*/ BGM_NAMINORI, + /*0x16E*/ BGM_DAN01, /*0x16F*/ BGM_FANFA1, /*0x170*/ BGM_ME_ASA, /*0x171*/ BGM_ME_BACHI, @@ -306,31 +306,31 @@ enum /*0x191*/ BGM_NEXTROAD, /*0x192*/ BGM_GRANROAD, /*0x193*/ BGM_CYCLING, - BGM_FRIENDLY, - BGM_MISHIRO, - BGM_TOZAN, - BGM_GIRLEYE, - BGM_MINAMO, - BGM_ASHROAD, - BGM_EVENT0, - BGM_DEEPDEEP, - BGM_KACHI1, - BGM_TITLE3, - BGM_DEMO1, - BGM_GIRL_SUP, - BGM_HAGESHII, - BGM_KAKKOII, - BGM_KAZANBAI, - BGM_AQA_0, - BGM_TSURETEK, - BGM_BOY_SUP, - BGM_RAINBOW, - BGM_AYASII, - BGM_KACHI4, - BGM_ROPEWAY, - BGM_CASINO, - BGM_HIGHTOWN, - BGM_SAFARI, + /*0x194*/ BGM_FRIENDLY, + /*0x195*/ BGM_MISHIRO, + /*0x196*/ BGM_TOZAN, + /*0x197*/ BGM_GIRLEYE, + /*0x198*/ BGM_MINAMO, + /*0x199*/ BGM_ASHROAD, + /*0x19A*/ BGM_EVENT0, + /*0x19B*/ BGM_DEEPDEEP, + /*0x19C*/ BGM_KACHI1, + /*0x19D*/ BGM_TITLE3, + /*0x19E*/ BGM_DEMO1, + /*0x19F*/ BGM_GIRL_SUP, + /*0x1A0*/ BGM_HAGESHII, + /*0x1A1*/ BGM_KAKKOII, + /*0x1A2*/ BGM_KAZANBAI, + /*0x1A3*/ BGM_AQA_0, + /*0x1A4*/ BGM_TSURETEK, + /*0x1A5*/ BGM_BOY_SUP, + /*0x1A6*/ BGM_RAINBOW, + /*0x1A7*/ BGM_AYASII, + /*0x1A8*/ BGM_KACHI4, + /*0x1A9*/ BGM_ROPEWAY, + /*0x1AA*/ BGM_CASINO, + /*0x1AB*/ BGM_HIGHTOWN, + /*0x1AC*/ BGM_SAFARI, BGM_C_ROAD, BGM_AJITO, BGM_M_BOAT, |