Merge branch 'master' into document-eventscripts
This commit is contained in:
+4
-4
@@ -1100,7 +1100,7 @@ void ResetAllApprenticeData(void)
|
||||
gSaveBlock2Ptr->apprentices[i].lvlMode = 0;
|
||||
gSaveBlock2Ptr->apprentices[i].number = 0;
|
||||
gSaveBlock2Ptr->apprentices[i].field_1 = 0;
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < TRAINER_ID_LENGTH; j++)
|
||||
gSaveBlock2Ptr->apprentices[i].playerId[j] = 0;
|
||||
gSaveBlock2Ptr->apprentices[i].language = gGameLanguage;
|
||||
gSaveBlock2Ptr->apprentices[i].checksum = 0;
|
||||
@@ -1410,7 +1410,7 @@ static void GetLatestLearnedMoves(u16 species, u16 *moves)
|
||||
|
||||
static u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2)
|
||||
{
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 i, count;
|
||||
|
||||
if (PLAYER_APPRENTICE.field_B1_1 < 3)
|
||||
@@ -2063,7 +2063,7 @@ static void sub_81A1370(void)
|
||||
|
||||
r10 = 0xFFFF;
|
||||
r9 = -1;
|
||||
for (i = 1; i < 4; i++)
|
||||
for (i = 1; i < TRAINER_ID_LENGTH; i++)
|
||||
{
|
||||
if (GetTrainerId(gSaveBlock2Ptr->apprentices[i].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId)
|
||||
&& gSaveBlock2Ptr->apprentices[i].number < r10)
|
||||
@@ -2092,7 +2092,7 @@ static void sub_81A1438(void)
|
||||
gSaveBlock2Ptr->apprentices[0].number++;
|
||||
|
||||
sub_81A0390(gSaveBlock2Ptr->apprentices[0].field_1);
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
gSaveBlock2Ptr->apprentices[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
|
||||
|
||||
StringCopy(gSaveBlock2Ptr->apprentices[0].playerName, gSaveBlock2Ptr->playerName);
|
||||
|
||||
@@ -298,7 +298,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
|
||||
)
|
||||
)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_TRAINER_ITEMS; i++)
|
||||
{
|
||||
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
|
||||
{
|
||||
@@ -397,8 +397,8 @@ u8 BattleAI_ChooseMoveOrAction(void)
|
||||
|
||||
static u8 ChooseMoveOrAction_Singles(void)
|
||||
{
|
||||
u8 currentMoveArray[4];
|
||||
u8 consideredMoveArray[4];
|
||||
u8 currentMoveArray[MAX_MON_MOVES];
|
||||
u8 consideredMoveArray[MAX_MON_MOVES];
|
||||
u8 numOfBestMoves;
|
||||
s32 i;
|
||||
|
||||
@@ -452,11 +452,11 @@ static u8 ChooseMoveOrAction_Doubles(void)
|
||||
s32 i;
|
||||
s32 j;
|
||||
s32 scriptsToRun;
|
||||
s16 bestMovePointsForTarget[4];
|
||||
s8 mostViableTargetsArray[4];
|
||||
u8 actionOrMoveIndex[4];
|
||||
u8 mostViableMovesScores[4];
|
||||
u8 mostViableMovesIndices[4];
|
||||
s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT];
|
||||
s8 mostViableTargetsArray[MAX_BATTLERS_COUNT];
|
||||
u8 actionOrMoveIndex[MAX_BATTLERS_COUNT];
|
||||
u8 mostViableMovesScores[MAX_MON_MOVES];
|
||||
u8 mostViableMovesIndices[MAX_MON_MOVES];
|
||||
s32 mostViableTargetsNo;
|
||||
s32 mostViableMovesNo;
|
||||
s16 mostMovePoints;
|
||||
@@ -543,7 +543,7 @@ static u8 ChooseMoveOrAction_Doubles(void)
|
||||
mostViableTargetsArray[0] = 0;
|
||||
mostViableTargetsNo = 1;
|
||||
|
||||
for (i = 1; i < MAX_MON_MOVES; i++)
|
||||
for (i = 1; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (mostMovePoints == bestMovePointsForTarget[i])
|
||||
{
|
||||
@@ -1167,7 +1167,7 @@ static void BattleAICmd_get_considered_move_power(void)
|
||||
static void BattleAICmd_get_how_powerful_move_is(void)
|
||||
{
|
||||
s32 i, checkedMove;
|
||||
s32 moveDmgs[4];
|
||||
s32 moveDmgs[MAX_MON_MOVES];
|
||||
|
||||
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
|
||||
{
|
||||
|
||||
@@ -820,7 +820,7 @@ static bool8 ShouldUseItem(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_TRAINER_ITEMS; i++)
|
||||
{
|
||||
u16 item;
|
||||
const u8 *itemEffects;
|
||||
|
||||
+1
-1
@@ -1841,7 +1841,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
|
||||
UpdateOamPriorityInAllHealthboxes(0);
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (GetBattlerSide(i) != 0)
|
||||
if (GetBattlerSide(i) != B_SIDE_PLAYER)
|
||||
gAnimBattlerSpecies[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
|
||||
else
|
||||
gAnimBattlerSpecies[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
|
||||
|
||||
@@ -3560,7 +3560,7 @@ void sub_8100640(struct Sprite* sprite)
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (GetBattlerSide(battler) != 0)
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[2] = gBattleAnimArgs[3];
|
||||
@@ -3731,7 +3731,7 @@ static void sub_81009DC(struct Sprite* sprite)
|
||||
|
||||
void sub_81009F8(struct Sprite* sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != 0)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
@@ -3828,7 +3828,7 @@ void sub_8100B88(struct Sprite* sprite)
|
||||
|
||||
sprite->pos1.x = a;
|
||||
sprite->pos1.y = b;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == 0)
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
sprite->pos1.y += 8;
|
||||
|
||||
sprite->callback = AnimSliceStep;
|
||||
|
||||
@@ -1479,7 +1479,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite)
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
}
|
||||
else if (GetBattlerSide(gBattleAnimAttacker) != 0)
|
||||
else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
@@ -1646,7 +1646,7 @@ void sub_8103CF0(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0)
|
||||
if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
{
|
||||
gTasks[taskId].data[4] = 1;
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
@@ -664,7 +664,7 @@ u32 sub_8057FBC(void) // unused
|
||||
|
||||
static void HandleMoveSwitching(void)
|
||||
{
|
||||
u8 perMovePPBonuses[4];
|
||||
u8 perMovePPBonuses[MAX_MON_MOVES];
|
||||
struct ChooseMoveStruct moveStruct;
|
||||
u8 totalPPBonuses;
|
||||
|
||||
|
||||
+10
-10
@@ -234,16 +234,16 @@ static void InitSinglePlayerBtlControllers(void)
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
|
||||
gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
|
||||
gBattlerPositions[0] = 0;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[1] = SetControllerToOpponent;
|
||||
gBattlerPositions[1] = 1;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
|
||||
gBattlerPositions[2] = 2;
|
||||
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
|
||||
|
||||
gBattlerControllerFuncs[3] = SetControllerToOpponent;
|
||||
gBattlerPositions[3] = 3;
|
||||
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
|
||||
|
||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||
|
||||
@@ -524,12 +524,12 @@ static void InitLinkBtlControllers(void)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 0;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 2;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
@@ -544,12 +544,12 @@ static void InitLinkBtlControllers(void)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 0;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 2;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
@@ -561,12 +561,12 @@ static void InitLinkBtlControllers(void)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 1;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_LEFT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
gBattlerPositions[gLinkPlayers[i].id] = 3;
|
||||
gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT;
|
||||
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -779,7 +779,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
|
||||
break;
|
||||
case 4:
|
||||
InitBattlerHealthboxCoords(*battlerId);
|
||||
if (gBattlerPositions[*battlerId] <= 1)
|
||||
if (gBattlerPositions[*battlerId] <= B_POSITION_OPPONENT_LEFT)
|
||||
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
|
||||
else
|
||||
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
|
||||
|
||||
+8
-8
@@ -1790,9 +1790,9 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
for (id = 0; id < 4 && (gLinkPlayers[id].version & 0xFF) == 3; id++);
|
||||
for (id = 0; id < MAX_LINK_PLAYERS && (gLinkPlayers[id].version & 0xFF) == VERSION_EMERALD; id++);
|
||||
|
||||
if (id == 4)
|
||||
if (id == MAX_LINK_PLAYERS)
|
||||
gBattleCommunication[MULTIUSE_STATE] = 8;
|
||||
else
|
||||
gBattleCommunication[MULTIUSE_STATE] = 10;
|
||||
@@ -4025,7 +4025,7 @@ void BattleTurnPassed(void)
|
||||
|
||||
if (gBattleOutcome != 0)
|
||||
{
|
||||
gCurrentActionFuncId = 12;
|
||||
gCurrentActionFuncId = B_ACTION_FINISHED;
|
||||
gBattleMainFunc = RunTurnActionsFunctions;
|
||||
return;
|
||||
}
|
||||
@@ -4244,7 +4244,7 @@ static void HandleTurnActionSelectionState(void)
|
||||
moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
|
||||
moveInfo.monType2 = gBattleMons[gActiveBattler].type2;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i];
|
||||
moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i];
|
||||
@@ -4979,7 +4979,7 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
|
||||
static void RunTurnActionsFunctions(void)
|
||||
{
|
||||
if (gBattleOutcome != 0)
|
||||
gCurrentActionFuncId = 12;
|
||||
gCurrentActionFuncId = B_ACTION_FINISHED;
|
||||
|
||||
*(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber;
|
||||
sTurnActionsFuncsTable[gCurrentActionFuncId]();
|
||||
@@ -5139,7 +5139,7 @@ static void HandleEndTurn_MonFled(void)
|
||||
|
||||
static void HandleEndTurn_FinishBattle(void)
|
||||
{
|
||||
if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
|
||||
if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
|
||||
{
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
||||
| BATTLE_TYPE_x2000000
|
||||
@@ -5284,7 +5284,7 @@ static void ReturnFromBattleToOverworld(void)
|
||||
|
||||
void RunBattleScriptCommands_PopCallbacksStack(void)
|
||||
{
|
||||
if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
|
||||
if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
|
||||
{
|
||||
if (gBattleResources->battleCallbackStack->size != 0)
|
||||
gBattleResources->battleCallbackStack->size--;
|
||||
@@ -5592,7 +5592,7 @@ static void HandleAction_UseItem(void)
|
||||
else
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
|
||||
PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
|
||||
PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X)
|
||||
|
||||
while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
|
||||
{
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ struct PikeWildMon
|
||||
{
|
||||
u16 species;
|
||||
u8 levelDelta;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
// IWRAM bss
|
||||
|
||||
@@ -77,7 +77,7 @@ struct PyramidWildMon
|
||||
u16 species;
|
||||
u8 lvl;
|
||||
u8 abilityNum;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
struct PyramidFloorTemplate
|
||||
|
||||
@@ -10184,7 +10184,7 @@ static void atkEF_handleballthrow(void)
|
||||
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
||||
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
|
||||
|
||||
if (CalculatePlayerPartyCount() == 6)
|
||||
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
else
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||
@@ -10196,7 +10196,7 @@ static void atkEF_handleballthrow(void)
|
||||
odds = Sqrt(Sqrt(16711680 / odds));
|
||||
odds = 1048560 / odds;
|
||||
|
||||
for (shakes = 0; shakes < 4 && Random() < odds; shakes++);
|
||||
for (shakes = 0; shakes < BALL_3_SHAKES_SUCCESS && Random() < odds; shakes++);
|
||||
|
||||
if (gLastUsedItem == ITEM_MASTER_BALL)
|
||||
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
|
||||
@@ -10209,7 +10209,7 @@ static void atkEF_handleballthrow(void)
|
||||
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
||||
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
|
||||
|
||||
if (CalculatePlayerPartyCount() == 6)
|
||||
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
else
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||
|
||||
+4
-4
@@ -1019,7 +1019,7 @@ struct
|
||||
u8 level;
|
||||
u8 nature;
|
||||
u8 evs[6];
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
} const sStevenMons[3] =
|
||||
{
|
||||
{
|
||||
@@ -1561,7 +1561,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
k = 0;
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < TRAINER_ID_LENGTH; j++)
|
||||
{
|
||||
if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j])
|
||||
break;
|
||||
@@ -3308,7 +3308,7 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
|
||||
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
dst->name[i] = src->name[i];
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
dst->trainerId[i] = src->trainerId[i];
|
||||
for (i = 0; i < 6; i++)
|
||||
dst->greeting[i] = src->greeting[i];
|
||||
@@ -3357,7 +3357,7 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
|
||||
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
dst->name[i] = src->name[i];
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
dst->trainerId[i] = src->trainerId[i];
|
||||
for (i = 0; i < 6; i++)
|
||||
dst->greeting[i] = src->greeting[i];
|
||||
|
||||
+11
-11
@@ -1,30 +1,30 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/species.h"
|
||||
#include "item.h"
|
||||
#include "constants/items.h"
|
||||
#include "util.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "battle_scripts.h"
|
||||
#include "random.h"
|
||||
#include "text.h"
|
||||
#include "string_util.h"
|
||||
#include "battle_message.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "constants/weather.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "berry.h"
|
||||
#include "field_weather.h"
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "constants/berry.h"
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/weather.h"
|
||||
|
||||
// rom const data
|
||||
static const u16 sSoundMovesTable[] =
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "random.h"
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
#include "constants/berry.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "new_game.h"
|
||||
#include "save.h"
|
||||
#include "link.h"
|
||||
#include "constants/berry.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
#define BLENDER_SCORE_BEST 0
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "decompress.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "item_menu.h"
|
||||
#include "constants/items.h"
|
||||
#include "item.h"
|
||||
#include "item_use.h"
|
||||
#include "main.h"
|
||||
@@ -15,7 +14,6 @@
|
||||
#include "menu_helpers.h"
|
||||
#include "palette.h"
|
||||
#include "overworld.h"
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "string_util.h"
|
||||
@@ -28,7 +26,10 @@
|
||||
#include "item_menu_icons.h"
|
||||
#include "decompress.h"
|
||||
#include "international_string_util.h"
|
||||
#include "constants/berry.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
// There are 4 windows used in berry tag screen.
|
||||
enum
|
||||
|
||||
+4
-4
@@ -1217,10 +1217,10 @@ static bool8 SetupContestGraphics(u8 *stateVar)
|
||||
CreateApplauseMeterSprite();
|
||||
sub_80DC5E8();
|
||||
sub_80DC7EC();
|
||||
gBattlerPositions[0] = 0;
|
||||
gBattlerPositions[1] = 1;
|
||||
gBattlerPositions[2] = 3;
|
||||
gBattlerPositions[3] = 2;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
|
||||
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
|
||||
gBattleTypeFlags = 0;
|
||||
gBattlerAttacker = 2;
|
||||
gBattlerTarget = 3;
|
||||
|
||||
+5049
-4645
File diff suppressed because it is too large
Load Diff
+123
-122
@@ -1,123 +1,124 @@
|
||||
const u32 *const gUnknown_085A6BE8[][2] = {
|
||||
{gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB7AA0, gUnknown_08DB7B34},
|
||||
{gUnknown_08DB7B5C, gUnknown_08DB7BEC},
|
||||
{gUnknown_08DB7C08, gUnknown_08DB7CE8},
|
||||
{gUnknown_08DB7D08, gUnknown_08DB7DCC},
|
||||
{gUnknown_08DB7DF4, gUnknown_08DB7EA0},
|
||||
{gUnknown_08DB7EC4, gUnknown_08DB7F60},
|
||||
{gUnknown_08DB7F7C, gUnknown_08DB8070},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB808C, gUnknown_08DB8138},
|
||||
{gUnknown_08DB8160, gUnknown_08DB8218},
|
||||
{gUnknown_08DB823C, gUnknown_08DB8300},
|
||||
{gUnknown_08DB8328, gUnknown_08DB8430},
|
||||
{gUnknown_08DB8458, gUnknown_08DB8528},
|
||||
{gUnknown_08DB854C, gUnknown_08DB862C},
|
||||
{gUnknown_08DB8654, gUnknown_08DB86C4},
|
||||
{gUnknown_08DB86E0, gUnknown_08DB8750},
|
||||
{gUnknown_08DB876C, gUnknown_08DB87DC},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB87F8, gUnknown_08DB88D8},
|
||||
{gUnknown_08DB8900, gUnknown_08DB89E0},
|
||||
{gUnknown_08DB8A08, gUnknown_08DB8A68},
|
||||
{gUnknown_08DB8A84, gUnknown_08DB8B40},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB8B68, gUnknown_08DB8C40},
|
||||
{gUnknown_08DB8C5C, gUnknown_08DB8CF4},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB8D18, gUnknown_08DB8DB0},
|
||||
{gUnknown_08DB8DD4, gUnknown_08DB8E80},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB8EA0, gUnknown_08DB8F58},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB8F7C, gUnknown_08DB9038},
|
||||
{gUnknown_08DB9058, gUnknown_08DB9130},
|
||||
{gUnknown_08DB9154, gUnknown_08DB9218},
|
||||
{gUnknown_08DB9234, gUnknown_08DB92FC},
|
||||
{gUnknown_08DB931C, gUnknown_08DB93E8},
|
||||
{gUnknown_08DB940C, gUnknown_08DB94CC},
|
||||
{gUnknown_08DB94E8, gUnknown_08DB95AC},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{NULL, NULL},
|
||||
{gUnknown_08DB95D0, gUnknown_08DB96C4},
|
||||
{gUnknown_08DB96EC, gUnknown_08DB97F4},
|
||||
{gUnknown_08DB981C, gUnknown_08DB9908},
|
||||
{gUnknown_08DB9930, gUnknown_08DB9A54},
|
||||
{gUnknown_08DB9A7C, gUnknown_08DB9B7C},
|
||||
{gUnknown_08DB9BA4, gUnknown_08DB9CB0},
|
||||
{gUnknown_08DB9CD8, gUnknown_08DB9DAC},
|
||||
{gUnknown_08DB9F08, gUnknown_08DB9FFC},
|
||||
{gUnknown_08DB9DD4, gUnknown_08DB9EE4},
|
||||
{gUnknown_08DBA020, gUnknown_08DBA12C}
|
||||
const u32 *const gDecorIconTable[][2] =
|
||||
{
|
||||
[DECOR_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
|
||||
[DECOR_SMALL_DESK] = {NULL, NULL},
|
||||
[DECOR_POKEMON_DESK] = {NULL, NULL},
|
||||
[DECOR_HEAVY_DESK] = {gDecorIcon_HeavyDesk, gDecorIconPalette_HeavyDesk},
|
||||
[DECOR_RAGGED_DESK] = {gDecorIcon_RaggedDesk, gDecorIconPalette_RaggedDesk},
|
||||
[DECOR_COMFORT_DESK] = {gDecorIcon_ComfortDesk, gDecorIconPalette_ComfortDesk},
|
||||
[DECOR_PRETTY_DESK] = {gDecorIcon_PrettyDesk, gDecorIconPalette_PrettyDesk},
|
||||
[DECOR_BRICK_DESK] = {gDecorIcon_BrickDesk, gDecorIconPalette_BrickDesk},
|
||||
[DECOR_CAMP_DESK] = {gDecorIcon_CampDesk, gDecorIconPalette_CampDesk},
|
||||
[DECOR_HARD_DESK] = {gDecorIcon_HardDesk, gDecorIconPalette_HardDesk},
|
||||
[DECOR_SMALL_CHAIR] = {NULL, NULL},
|
||||
[DECOR_POKEMON_CHAIR] = {NULL, NULL},
|
||||
[DECOR_HEAVY_CHAIR] = {NULL, NULL},
|
||||
[DECOR_PRETTY_CHAIR] = {NULL, NULL},
|
||||
[DECOR_COMFORT_CHAIR] = {NULL, NULL},
|
||||
[DECOR_RAGGED_CHAIR] = {NULL, NULL},
|
||||
[DECOR_BRICK_CHAIR] = {NULL, NULL},
|
||||
[DECOR_CAMP_CHAIR] = {NULL, NULL},
|
||||
[DECOR_HARD_CHAIR] = {NULL, NULL},
|
||||
[DECOR_RED_PLANT] = {gDecorIcon_RedPlant, gDecorIconPalette_RedPlant},
|
||||
[DECOR_TROPICAL_PLANT] = {gDecorIcon_TropicalPlant, gDecorIconPalette_TropicalPlant},
|
||||
[DECOR_PRETTY_FLOWERS] = {gDecorIcon_PrettyFlowers, gDecorIconPalette_PrettyFlowers},
|
||||
[DECOR_COLORFUL_PLANT] = {gDecorIcon_ColorfulPlant, gDecorIconPalette_ColorfulPlant},
|
||||
[DECOR_BIG_PLANT] = {gDecorIcon_BigPlant, gDecorIconPalette_BigPlant},
|
||||
[DECOR_GORGEOUS_PLANT] = {gDecorIcon_GorgeousPlant, gDecorIconPalette_GorgeousPlant},
|
||||
[DECOR_RED_BRICK] = {gDecorIcon_RedBrick, gDecorIconPalette_RedBrick},
|
||||
[DECOR_YELLOW_BRICK] = {gDecorIcon_YellowBrick, gDecorIconPalette_YellowBrick},
|
||||
[DECOR_BLUE_BRICK] = {gDecorIcon_BlueBrick, gDecorIconPalette_BlueBrick},
|
||||
[DECOR_RED_BALLOON] = {NULL, NULL},
|
||||
[DECOR_BLUE_BALLOON] = {NULL, NULL},
|
||||
[DECOR_YELLOW_BALLOON] = {NULL, NULL},
|
||||
[DECOR_RED_TENT] = {gDecorIcon_RedTent, gDecorIconPalette_RedTent},
|
||||
[DECOR_BLUE_TENT] = {gDecorIcon_BlueTent, gDecorIconPalette_BlueTent},
|
||||
[DECOR_SOLID_BOARD] = {gDecorIcon_SolidBoard, gDecorIconPalette_SolidBoard},
|
||||
[DECOR_SLIDE] = {gDecorIcon_Slide, gDecorIconPalette_Slide},
|
||||
[DECOR_FENCE_LENGTH] = {NULL, NULL},
|
||||
[DECOR_FENCE_WIDTH] = {NULL, NULL},
|
||||
[DECOR_TIRE] = {gDecorIcon_Tire, gDecorIconPalette_Tire},
|
||||
[DECOR_STAND] = {gDecorIcon_Stand, gDecorIconPalette_Stand},
|
||||
[DECOR_MUD_BALL] = {NULL, NULL},
|
||||
[DECOR_BREAKABLE_DOOR] = {gDecorIcon_BreakableDoor, gDecorIconPalette_BreakableDoor},
|
||||
[DECOR_SAND_ORNAMENT] = {gDecorIcon_SandOrnament, gDecorIconPalette_SandOrnament},
|
||||
[DECOR_SILVER_SHIELD] = {NULL, NULL},
|
||||
[DECOR_GOLD_SHIELD] = {NULL, NULL},
|
||||
[DECOR_GLASS_ORNAMENT] = {gDecorIcon_GlassOrnament, gDecorIconPalette_GlassOrnament},
|
||||
[DECOR_TV] = {NULL, NULL},
|
||||
[DECOR_ROUND_TV] = {NULL, NULL},
|
||||
[DECOR_CUTE_TV] = {NULL, NULL},
|
||||
[DECOR_GLITTER_MAT] = {NULL, NULL},
|
||||
[DECOR_JUMP_MAT] = {NULL, NULL},
|
||||
[DECOR_SPIN_MAT] = {NULL, NULL},
|
||||
[DECOR_C_LOW_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_D_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_E_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_F_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_G_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_A_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_B_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_C_HIGH_NOTE_MAT] = {NULL, NULL},
|
||||
[DECOR_SURF_MAT] = {gDecorIcon_SurfMat, gDecorIconPalette_SurfMat},
|
||||
[DECOR_THUNDER_MAT] = {gDecorIcon_ThunderMat, gDecorIconPalette_ThunderMat},
|
||||
[DECOR_FIRE_BLAST_MAT] = {gDecorIcon_FireBlastMat, gDecorIconPalette_FireBlastMat},
|
||||
[DECOR_POWDER_SNOW_MAT] = {gDecorIcon_PowderSnowMat, gDecorIconPalette_PowderSnowMat},
|
||||
[DECOR_ATTRACT_MAT] = {gDecorIcon_AttractMat, gDecorIconPalette_AttractMat},
|
||||
[DECOR_FISSURE_MAT] = {gDecorIcon_FissureMat, gDecorIconPalette_FissureMat},
|
||||
[DECOR_SPIKES_MAT] = {gDecorIcon_SpikesMat, gDecorIconPalette_SpikesMat},
|
||||
[DECOR_BALL_POSTER] = {NULL, NULL},
|
||||
[DECOR_GREEN_POSTER] = {NULL, NULL},
|
||||
[DECOR_RED_POSTER] = {NULL, NULL},
|
||||
[DECOR_BLUE_POSTER] = {NULL, NULL},
|
||||
[DECOR_CUTE_POSTER] = {NULL, NULL},
|
||||
[DECOR_PIKA_POSTER] = {NULL, NULL},
|
||||
[DECOR_LONG_POSTER] = {NULL, NULL},
|
||||
[DECOR_SEA_POSTER] = {NULL, NULL},
|
||||
[DECOR_SKY_POSTER] = {NULL, NULL},
|
||||
[DECOR_KISS_POSTER] = {NULL, NULL},
|
||||
[DECOR_PICHU_DOLL] = {NULL, NULL},
|
||||
[DECOR_PIKACHU_DOLL] = {NULL, NULL},
|
||||
[DECOR_MARILL_DOLL] = {NULL, NULL},
|
||||
[DECOR_TOGEPI_DOLL] = {NULL, NULL},
|
||||
[DECOR_CYNDAQUIL_DOLL] = {NULL, NULL},
|
||||
[DECOR_CHIKORITA_DOLL] = {NULL, NULL},
|
||||
[DECOR_TOTODILE_DOLL] = {NULL, NULL},
|
||||
[DECOR_JIGGLYPUFF_DOLL] = {NULL, NULL},
|
||||
[DECOR_MEOWTH_DOLL] = {NULL, NULL},
|
||||
[DECOR_CLEFAIRY_DOLL] = {NULL, NULL},
|
||||
[DECOR_DITTO_DOLL] = {NULL, NULL},
|
||||
[DECOR_SMOOCHUM_DOLL] = {NULL, NULL},
|
||||
[DECOR_TREECKO_DOLL] = {NULL, NULL},
|
||||
[DECOR_TORCHIC_DOLL] = {NULL, NULL},
|
||||
[DECOR_MUDKIP_DOLL] = {NULL, NULL},
|
||||
[DECOR_DUSKULL_DOLL] = {NULL, NULL},
|
||||
[DECOR_WYNAUT_DOLL] = {NULL, NULL},
|
||||
[DECOR_BALTOY_DOLL] = {NULL, NULL},
|
||||
[DECOR_KECLEON_DOLL] = {NULL, NULL},
|
||||
[DECOR_AZURILL_DOLL] = {NULL, NULL},
|
||||
[DECOR_SKITTY_DOLL] = {NULL, NULL},
|
||||
[DECOR_SWABLU_DOLL] = {NULL, NULL},
|
||||
[DECOR_GULPIN_DOLL] = {NULL, NULL},
|
||||
[DECOR_LOTAD_DOLL] = {NULL, NULL},
|
||||
[DECOR_SEEDOT_DOLL] = {NULL, NULL},
|
||||
[DECOR_PIKA_CUSHION] = {NULL, NULL},
|
||||
[DECOR_ROUND_CUSHION] = {NULL, NULL},
|
||||
[DECOR_KISS_CUSHION] = {NULL, NULL},
|
||||
[DECOR_ZIGZAG_CUSHION] = {NULL, NULL},
|
||||
[DECOR_SPIN_CUSHION] = {NULL, NULL},
|
||||
[DECOR_DIAMOND_CUSHION] = {NULL, NULL},
|
||||
[DECOR_BALL_CUSHION] = {NULL, NULL},
|
||||
[DECOR_GRASS_CUSHION] = {NULL, NULL},
|
||||
[DECOR_FIRE_CUSHION] = {NULL, NULL},
|
||||
[DECOR_WATER_CUSHION] = {NULL, NULL},
|
||||
[DECOR_SNORLAX_DOLL] = {gDecorIcon_SnorlaxDoll, gDecorIconPalette_SnorlaxDoll},
|
||||
[DECOR_RHYDON_DOLL] = {gDecorIcon_RhydonDoll, gDecorIconPalette_RhydonDoll},
|
||||
[DECOR_LAPRAS_DOLL] = {gDecorIcon_LaprasDoll, gDecorIconPalette_LaprasDoll},
|
||||
[DECOR_VENUSAUR_DOLL] = {gDecorIcon_VenusaurDoll, gDecorIconPalette_VenusaurDoll},
|
||||
[DECOR_CHARIZARD_DOLL] = {gDecorIcon_CharizardDoll, gDecorIconPalette_CharizardDoll},
|
||||
[DECOR_BLASTOISE_DOLL] = {gDecorIcon_BlastoiseDoll, gDecorIconPalette_BlastoiseDoll},
|
||||
[DECOR_WAILMER_DOLL] = {gDecorIcon_WailmerDoll, gDecorIconPalette_WailmerDoll},
|
||||
[DECOR_REGIROCK_DOLL] = {gDecorIcon_RegirockDoll, gDecorIconPalette_RegirockDoll},
|
||||
[DECOR_REGICE_DOLL] = {gDecorIcon_RegiceDoll, gDecorIconPalette_RegiceDoll},
|
||||
[DECOR_REGISTEEL_DOLL] = {gDecorIcon_RegisteelDoll, gDecorIconPalette_RegisteelDoll}
|
||||
};
|
||||
|
||||
@@ -1,125 +1,125 @@
|
||||
const u32 gUnknown_08DB7AA0[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7B34[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7B5C[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7BEC[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7C08[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7CE8[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7D08[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7DCC[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7DF4[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7EA0[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7EC4[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB7F60[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB7F7C[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
|
||||
const u32 gUnknown_08DB8070[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
|
||||
const u32 gDecorIcon_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
|
||||
const u32 gDecorIconPalette_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB808C[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
|
||||
const u32 gUnknown_08DB8138[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
|
||||
const u32 gDecorIcon_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8160[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
|
||||
const u32 gUnknown_08DB8218[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
|
||||
const u32 gDecorIcon_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
|
||||
const u32 gDecorIconPalette_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB823C[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
|
||||
const u32 gUnknown_08DB8300[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
|
||||
const u32 gDecorIcon_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
|
||||
const u32 gDecorIconPalette_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8328[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
|
||||
const u32 gUnknown_08DB8430[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
|
||||
const u32 gDecorIcon_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
|
||||
const u32 gDecorIconPalette_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8458[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
|
||||
const u32 gUnknown_08DB8528[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
|
||||
const u32 gDecorIcon_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB854C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
|
||||
const u32 gUnknown_08DB862C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
|
||||
const u32 gDecorIcon_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
|
||||
const u32 gDecorIconPalette_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8654[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
|
||||
const u32 gUnknown_08DB86C4[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
|
||||
const u32 gDecorIcon_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB86E0[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
|
||||
const u32 gUnknown_08DB8750[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
|
||||
const u32 gDecorIcon_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
|
||||
const u32 gDecorIconPalette_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB876C[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
|
||||
const u32 gUnknown_08DB87DC[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
|
||||
const u32 gDecorIcon_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB87F8[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
|
||||
const u32 gUnknown_08DB88D8[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
|
||||
const u32 gDecorIcon_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8900[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
|
||||
const u32 gUnknown_08DB89E0[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
|
||||
const u32 gDecorIcon_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8A08[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
|
||||
const u32 gUnknown_08DB8A68[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
|
||||
const u32 gDecorIcon_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
|
||||
const u32 gDecorIconPalette_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8A84[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
|
||||
const u32 gUnknown_08DB8B40[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
|
||||
const u32 gDecorIcon_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
|
||||
const u32 gDecorIconPalette_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8B68[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
|
||||
const u32 gUnknown_08DB8C40[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
|
||||
const u32 gDecorIcon_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
|
||||
const u32 gDecorIconPalette_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8C5C[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
|
||||
const u32 gUnknown_08DB8CF4[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
|
||||
const u32 gDecorIcon_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
|
||||
const u32 gDecorIconPalette_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8D18[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
|
||||
const u32 gUnknown_08DB8DB0[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
|
||||
const u32 gDecorIcon_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8DD4[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
|
||||
const u32 gUnknown_08DB8E80[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
|
||||
const u32 gDecorIcon_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
|
||||
const u32 gDecorIconPalette_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8EA0[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
|
||||
const u32 gUnknown_08DB8F58[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
|
||||
const u32 gDecorIcon_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
|
||||
const u32 gDecorIconPalette_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB8F7C[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB9038[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9058[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB9130[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9154[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB9218[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9234[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB92FC[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB931C[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB93E8[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB940C[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB94CC[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB94E8[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
|
||||
const u32 gUnknown_08DB95AC[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
|
||||
const u32 gDecorIcon_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
|
||||
const u32 gDecorIconPalette_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB95D0[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB96C4[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB96EC[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB97F4[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB981C[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9908[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9930[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9A54[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9A7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9B7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9BA4[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9CB0[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9CD8[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9DAC[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9DD4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9EE4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DB9F08[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DB9FFC[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
|
||||
|
||||
const u32 gUnknown_08DBA020[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
|
||||
const u32 gUnknown_08DBA12C[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
|
||||
const u32 gDecorIcon_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
|
||||
const u32 gDecorIconPalette_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
|
||||
|
||||
+5711
-5712
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,32 @@
|
||||
{
|
||||
"label": "gWildMonHeaders",
|
||||
"for_maps": true,
|
||||
"fields": [
|
||||
{
|
||||
"type": "land_mons",
|
||||
"encounter_rates": [
|
||||
20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "water_mons",
|
||||
"encounter_rates": [
|
||||
60, 30, 5, 4, 1
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "rock_smash_mons",
|
||||
"encounter_rates": [
|
||||
60, 30, 5, 4, 1
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "fishing_mons",
|
||||
"encounter_rates": [
|
||||
70, 30, 60, 20, 20, 40, 40, 15, 4, 1
|
||||
]
|
||||
}
|
||||
],
|
||||
"encounters": [
|
||||
{
|
||||
"map": "MAP_ROUTE101",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
{{ doNotModifyHeader }}
|
||||
|
||||
## for wild_encounter_group in wild_encounter_groups
|
||||
{% if wild_encounter_group.for_maps %}
|
||||
## for wild_encounter_field in wild_encounter_group.fields
|
||||
## for encounter_rate in wild_encounter_field.encounter_rates
|
||||
{% if trackVar(encounter_rate, 100) %}
|
||||
#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }}
|
||||
## endfor
|
||||
#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ getVar(wild_encounter_field.type) }})
|
||||
## endfor
|
||||
{% endif %}
|
||||
|
||||
## for encounter in wild_encounter_group.encounters
|
||||
{% if existsIn(encounter, "land_mons") %}
|
||||
const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
|
||||
|
||||
+3
-3
@@ -34,10 +34,10 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
|
||||
|
||||
// RAM buffers used to assist with BuildEggMoveset()
|
||||
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggFinalMoves[4] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggFatherMoves[MAX_MON_MOVES] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggFinalMoves[MAX_MON_MOVES] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
|
||||
EWRAM_DATA static u16 sHatchedEggMotherMoves[MAX_MON_MOVES] = {0};
|
||||
|
||||
#include "data/pokemon/egg_moves.h"
|
||||
|
||||
|
||||
+2
-2
@@ -2044,7 +2044,7 @@ const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
|
||||
if (decor > NUM_DECORATIONS)
|
||||
decor = DECOR_NONE;
|
||||
|
||||
return gUnknown_085A6BE8[decor][mode];
|
||||
return gDecorIconTable[decor][mode];
|
||||
}
|
||||
|
||||
u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor)
|
||||
@@ -2096,7 +2096,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
|
||||
gSprites[spriteId].pos2.x = x + 4;
|
||||
gSprites[spriteId].pos2.y = y + 4;
|
||||
}
|
||||
else if (gUnknown_085A6BE8[decor][0] == NULL)
|
||||
else if (gDecorIconTable[decor][0] == NULL)
|
||||
{
|
||||
spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
|
||||
+3
-3
@@ -298,13 +298,13 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
|
||||
u16 species;
|
||||
u32 personality, pokerus;
|
||||
u8 i, friendship, language, gameMet, markings, obedience;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u32 ivs[NUM_STATS];
|
||||
|
||||
|
||||
species = GetMonData(egg, MON_DATA_SPECIES);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
|
||||
}
|
||||
@@ -324,7 +324,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
|
||||
|
||||
CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
|
||||
}
|
||||
|
||||
+385
-33
@@ -9,6 +9,12 @@
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "util.h"
|
||||
#include "trainer_hill.h"
|
||||
#include "constants/easy_chat.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
struct Unknown030012C8
|
||||
{
|
||||
@@ -38,14 +44,359 @@ static u16 gUnknown_030012F0;
|
||||
static u16 gUnknown_030012F2;
|
||||
static u16 gUnknown_030012F4;
|
||||
|
||||
extern const u8 gUnknown_08625B6C[][0x148];
|
||||
static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
|
||||
[0] = {
|
||||
.name = __("マキエ$$$$$ "),
|
||||
.facilityClass = FACILITY_CLASS_HEX_MANIAC,
|
||||
.unused = 0x1,
|
||||
.speechBefore = { EC_WORD_PREPOSTEROUS, EC_WORD_CASE, EC_WORD_THERE, EC_WORD_TO_HER, EC_WORD_CHALLENGE, EC_WORD_JOKING },
|
||||
.speechWin = { EC_WORD_HERS, EC_WORD_TRUMP_CARD, EC_MOVE2(SECRET_POWER), EC_WORD_USING, EC_WORD_WON, EC_WORD_EXCL_EXCL },
|
||||
.speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL },
|
||||
.speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
|
||||
.mons = {
|
||||
[0] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[1] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[2] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[3] = {
|
||||
.species = SPECIES_SWALOT,
|
||||
.heldItem = ITEM_SHELL_BELL,
|
||||
.moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 55,
|
||||
.attackEV = 255,
|
||||
.defenseEV = 100,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 0,
|
||||
.spDefenseEV = 100,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 1,
|
||||
.personality = 0x80,
|
||||
.nickname = __("マルノーム$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[4] = {
|
||||
.species = SPECIES_DUSTOX,
|
||||
.heldItem = ITEM_BRIGHT_POWDER,
|
||||
.moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 0,
|
||||
.attackEV = 255,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x6,
|
||||
.nickname = __("ドクケイル$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[5] = {
|
||||
.species = SPECIES_RELICANTH,
|
||||
.heldItem = ITEM_QUICK_CLAW,
|
||||
.moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 100,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 155,
|
||||
.spDefenseEV = 255,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x2f,
|
||||
.nickname = __("ジーランス$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
}
|
||||
},
|
||||
[1] = {
|
||||
.name = __("ハルヒト$$$$ "),
|
||||
.facilityClass = FACILITY_CLASS_CAMPER,
|
||||
.unused = 0x1,
|
||||
.speechBefore = { EC_MOVE2(BOUNCE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_STRONG, EC_WORD_EXCL },
|
||||
.speechWin = { EC_MOVE(FLY), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_HAPPY, EC_WORD_EXCL },
|
||||
.speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL },
|
||||
.speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL },
|
||||
.mons = {
|
||||
[0] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[1] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[2] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[3] = {
|
||||
.species = SPECIES_CACTURNE,
|
||||
.heldItem = ITEM_QUICK_CLAW,
|
||||
.moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 55,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 100,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 100,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x8c,
|
||||
.nickname = __("ノクタス$$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[4] = {
|
||||
.species = SPECIES_SWELLOW,
|
||||
.heldItem = ITEM_BRIGHT_POWDER,
|
||||
.moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 255,
|
||||
.attackEV = 255,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 0,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x80,
|
||||
.nickname = __("オオスバメ$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[5] = {
|
||||
.species = SPECIES_WHISCASH,
|
||||
.heldItem = ITEM_CHESTO_BERRY,
|
||||
.moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 0,
|
||||
.attackEV = 255,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x0,
|
||||
.nickname = __("ナマズン$$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
}
|
||||
},
|
||||
[2] = {
|
||||
.name = __("メイコ$$$$$ "),
|
||||
.facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
|
||||
.unused = 0x1,
|
||||
.speechBefore = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_RELEASE, EC_WORD_WAS, EC_MOVE2(FRUSTRATION), EC_WORD_WITHOUT },
|
||||
.speechWin = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_TO_HER, EC_MOVE2(PRESENT), EC_WORD_KNOWS, EC_WORD_WITHOUT },
|
||||
.speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
|
||||
.speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, 0xFFFF },
|
||||
.mons = {
|
||||
[0] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[1] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[2] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[3] = {
|
||||
.species = SPECIES_DELCATTY,
|
||||
.heldItem = ITEM_LUM_BERRY,
|
||||
.moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 0,
|
||||
.attackEV = 255,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 255,
|
||||
.spAttackEV = 0,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x3,
|
||||
.nickname = __("エネコロロ$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[4] = {
|
||||
.species = SPECIES_ROSELIA,
|
||||
.heldItem = ITEM_LEFTOVERS,
|
||||
.moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 255,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 1,
|
||||
.personality = 0x6,
|
||||
.nickname = __("ロゼリア$$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[5] = {
|
||||
.species = SPECIES_BEAUTIFLY,
|
||||
.heldItem = ITEM_BRIGHT_POWDER,
|
||||
.moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 100,
|
||||
.attackEV = 200,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 200,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x6,
|
||||
.nickname = __("アゲハント$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
}
|
||||
},
|
||||
[3] = {
|
||||
.name = __("ピエール$$$$ "),
|
||||
.facilityClass = FACILITY_CLASS_GENTLEMAN,
|
||||
.unused = 0x1,
|
||||
.speechBefore = { EC_WORD_SHE_WAS, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_UNCLE, EC_WORD_THERE, EC_WORD_EXCL },
|
||||
.speechWin = { EC_WORD_HAHAHA, EC_WORD_TEACHER, EC_WORD_BECOMES, EC_WORD_GIVE, EC_WORD_IS_IT_QUES, 0xFFFF },
|
||||
.speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL },
|
||||
.speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL },
|
||||
.mons = {
|
||||
[0] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[1] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[2] = NULL_BATTLE_TOWER_POKEMON,
|
||||
[3] = {
|
||||
.species = SPECIES_MAWILE,
|
||||
.heldItem = ITEM_BRIGHT_POWDER,
|
||||
.moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 0,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 100,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 155,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 1,
|
||||
.personality = 0x0,
|
||||
.nickname = __("クチート$$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[4] = {
|
||||
.species = SPECIES_SHARPEDO,
|
||||
.heldItem = ITEM_SCOPE_LENS,
|
||||
.moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 255,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x96,
|
||||
.nickname = __("サメハダー$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
[5] = {
|
||||
.species = SPECIES_BANETTE,
|
||||
.heldItem = ITEM_LUM_BERRY,
|
||||
.moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP },
|
||||
.level = 0,
|
||||
.ppBonuses = 0x0,
|
||||
.hpEV = 255,
|
||||
.attackEV = 0,
|
||||
.defenseEV = 0,
|
||||
.speedEV = 0,
|
||||
.spAttackEV = 255,
|
||||
.spDefenseEV = 0,
|
||||
.otId = 0x10000000,
|
||||
.hpIV = 5,
|
||||
.attackIV = 5,
|
||||
.defenseIV = 5,
|
||||
.speedIV = 5,
|
||||
.spAttackIV = 5,
|
||||
.spDefenseIV = 5,
|
||||
.abilityNum = 0,
|
||||
.personality = 0x96,
|
||||
.nickname = __("ジュペッタ$$$$$$"),
|
||||
.friendship = 255
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
static u8 sub_81D38D4(void)
|
||||
{
|
||||
return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
|
||||
}
|
||||
|
||||
static bool32 Struct_Unk81D38FC_ValidateChecksum(struct Unk81D38FC *arg0)
|
||||
static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0)
|
||||
{
|
||||
int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
|
||||
if (checksum != arg0->checksum)
|
||||
@@ -58,17 +409,17 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
|
||||
{
|
||||
u32 i;
|
||||
u32 checksum;
|
||||
int var0 = buffer->unk_0;
|
||||
int var0 = buffer->count;
|
||||
if (var0 < 1 || var0 > 8)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < var0; i++)
|
||||
{
|
||||
if (!Struct_Unk81D38FC_ValidateChecksum(&buffer->unk_8[i]))
|
||||
if (!Struct_EReaderTrainerHillTrainer_ValidateChecksum(&buffer->unk_8[i]))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct Unk81D38FC));
|
||||
checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct EReaderTrainerHillTrainer));
|
||||
if (checksum != buffer->checksum)
|
||||
return FALSE;
|
||||
|
||||
@@ -78,7 +429,7 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
|
||||
static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
|
||||
{
|
||||
u32 checksum;
|
||||
int var0 = buffer->unk_0;
|
||||
int var0 = buffer->count;
|
||||
if (var0 < 1 || var0 > 8)
|
||||
return FALSE;
|
||||
|
||||
@@ -89,38 +440,39 @@ static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct Unk81D3998 *buffer2)
|
||||
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct TrHillTag *buffer2)
|
||||
{
|
||||
int i;
|
||||
|
||||
memset(buffer2, 0, 0x1000);
|
||||
buffer2->unk_000 = arg0->unk_0;
|
||||
buffer2->unk_001 = sub_81D38D4();
|
||||
buffer2->unk_002 = (arg0->unk_0 + 1) / 2;
|
||||
AGB_ASSERT_EX(ttdata->dummy == 0, "cereader_tool.c", 450);
|
||||
AGB_ASSERT_EX(ttdata->id == 0, "cereader_tool.c", 452);
|
||||
|
||||
for (i = 0; i < arg0->unk_0; i++)
|
||||
memset(buffer2, 0, 0x1000);
|
||||
buffer2->unkField_0 = ttdata->count;
|
||||
buffer2->unused1 = sub_81D38D4();
|
||||
buffer2->numFloors = (ttdata->count + 1) / 2;
|
||||
|
||||
for (i = 0; i < ttdata->count; i++)
|
||||
{
|
||||
if (!(i & 1))
|
||||
{
|
||||
buffer2->unk_008[i / 2].unk_000[0] = arg0->unk_8[i].unk0;
|
||||
memcpy(buffer2->unk_008[i / 2].unk_294, arg0->unk_8[i].unk14C, 0x124);
|
||||
memcpy(buffer2->unk_008[i / 2].unk_004, arg0->unk_8[i].unk4, 0x148);
|
||||
buffer2->floors[i / 2].unk0 = ttdata->unk_8[i].unk0;
|
||||
buffer2->floors[i / 2].display = ttdata->unk_8[i].unk14C;
|
||||
buffer2->floors[i / 2].trainers[0] = ttdata->unk_8[i].unk4;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer2->unk_008[i / 2].unk_000[1] = arg0->unk_8[i].unk0;
|
||||
memcpy(buffer2->unk_008[i / 2].unk_14C, arg0->unk_8[i].unk4, 0x148);
|
||||
buffer2->floors[i / 2].unk1 = ttdata->unk_8[i].unk0;
|
||||
buffer2->floors[i / 2].trainers[1] = ttdata->unk_8[i].unk4;
|
||||
}
|
||||
}
|
||||
|
||||
if (i & 1)
|
||||
{
|
||||
u8 * dest = buffer2->unk_008[i / 2].unk_14C;
|
||||
const u8 (* src)[0x148] = gUnknown_08625B6C;
|
||||
memcpy(dest, src[i / 2], 0x148);
|
||||
buffer2->floors[i / 2].trainers[1] = sTrainerHillTrainerTemplates_JP[i / 2];
|
||||
}
|
||||
|
||||
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->unk_008, sizeof(struct Unk81D3998) - offsetof(struct Unk81D3998, unk_008));
|
||||
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor));
|
||||
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1)
|
||||
return FALSE;
|
||||
|
||||
@@ -129,7 +481,7 @@ static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct U
|
||||
|
||||
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
|
||||
{
|
||||
struct Unk81D3998 *var0 = AllocZeroed(0x1000);
|
||||
void *var0 = AllocZeroed(0x1000);
|
||||
bool32 result = TryWriteTrainerHill_r(arg0, var0);
|
||||
Free(var0);
|
||||
return result;
|
||||
@@ -163,20 +515,20 @@ bool32 ReadTrainerHillAndValidate(void)
|
||||
return result;
|
||||
}
|
||||
|
||||
static int unref_sub_81D3B54(int arg0, u32 *arg1)
|
||||
int EReader_Send(int arg0, u32 *arg1)
|
||||
{
|
||||
int result;
|
||||
u16 var0;
|
||||
int var1;
|
||||
|
||||
sub_81D41A0();
|
||||
EReaderHelper_SaveRegsState();
|
||||
while (1)
|
||||
{
|
||||
sub_81D4170();
|
||||
if (gUnknown_030012E2 & 2)
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
var1 = sub_81D3D70(1, arg0, arg1, NULL);
|
||||
var1 = EReaderHandleTransfer(1, arg0, arg1, NULL);
|
||||
gUnknown_030012E4 = var1;
|
||||
if ((gUnknown_030012E4 & 0x13) == 0x10)
|
||||
{
|
||||
@@ -202,24 +554,24 @@ static int unref_sub_81D3B54(int arg0, u32 *arg1)
|
||||
}
|
||||
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
sub_81D41F4();
|
||||
EReaderHelper_RestoreRegsState();
|
||||
return result;
|
||||
}
|
||||
|
||||
static int unref_sub_81D3BE8(u32 *arg0)
|
||||
int EReader_Recv(u32 *arg0)
|
||||
{
|
||||
int result;
|
||||
u16 var0;
|
||||
int var1;
|
||||
|
||||
sub_81D41A0();
|
||||
EReaderHelper_SaveRegsState();
|
||||
while (1)
|
||||
{
|
||||
sub_81D4170();
|
||||
if (gUnknown_030012E2 & 2)
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
var1 = sub_81D3D70(0, 0, NULL, arg0);
|
||||
var1 = EReaderHandleTransfer(0, 0, NULL, arg0);
|
||||
gUnknown_030012E4 = var1;
|
||||
if ((gUnknown_030012E4 & 0x13) == 0x10)
|
||||
{
|
||||
@@ -245,7 +597,7 @@ static int unref_sub_81D3BE8(u32 *arg0)
|
||||
}
|
||||
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
sub_81D41F4();
|
||||
EReaderHelper_RestoreRegsState();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -285,7 +637,7 @@ static void sub_81D3D34(void)
|
||||
gUnknown_030012E8 = 0;
|
||||
}
|
||||
|
||||
int sub_81D3D70(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
|
||||
int EReaderHandleTransfer(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
|
||||
{
|
||||
switch (gUnknown_030012C8.unk0[1])
|
||||
{
|
||||
@@ -519,7 +871,7 @@ static void sub_81D4170(void)
|
||||
gUnknown_030012E0 = keysMask;
|
||||
}
|
||||
|
||||
void sub_81D41A0(void)
|
||||
void EReaderHelper_SaveRegsState(void)
|
||||
{
|
||||
gUnknown_030012EC = REG_IME;
|
||||
gUnknown_030012EE = REG_IE;
|
||||
@@ -528,7 +880,7 @@ void sub_81D41A0(void)
|
||||
gUnknown_030012F4 = REG_RCNT;
|
||||
}
|
||||
|
||||
void sub_81D41F4(void)
|
||||
void EReaderHelper_RestoreRegsState(void)
|
||||
{
|
||||
REG_IME = gUnknown_030012EC;
|
||||
REG_IE = gUnknown_030012EE;
|
||||
|
||||
@@ -49,7 +49,7 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
|
||||
REG_IME = 0;
|
||||
gIntrTable[1] = sub_81D3FAC;
|
||||
gIntrTable[2] = sub_81D3F9C;
|
||||
sub_81D41A0();
|
||||
EReaderHelper_SaveRegsState();
|
||||
sub_81D4238();
|
||||
REG_IE |= INTR_FLAG_VCOUNT;
|
||||
REG_IME = backupIME;
|
||||
@@ -63,7 +63,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
|
||||
volatile u16 backupIME = REG_IME;
|
||||
REG_IME = 0;
|
||||
sub_81D4238();
|
||||
sub_81D41F4();
|
||||
EReaderHelper_RestoreRegsState();
|
||||
RestoreSerialTimer3IntrHandlers();
|
||||
REG_IME = backupIME;
|
||||
}
|
||||
@@ -71,7 +71,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
|
||||
static u8 sub_81D4DE8(struct Unk03006370 *arg0)
|
||||
{
|
||||
u8 var0 = 0;
|
||||
arg0->unk0 = sub_81D3D70(1, arg0->unk4, arg0->unk8, NULL);
|
||||
arg0->unk0 = EReaderHandleTransfer(1, arg0->unk4, arg0->unk8, NULL);
|
||||
if ((arg0->unk0 & 0x13) == 0x10)
|
||||
var0 = 1;
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ void ScriptUnfreezeEventObjects(void)
|
||||
{
|
||||
u8 playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ void sub_8098524(void)
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -949,7 +949,7 @@ static u16 sub_8109930(u8 spriteId)
|
||||
{
|
||||
u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == 0)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
var1 = ((var1 << 16) + 0x4A0000) >> 16;
|
||||
}
|
||||
@@ -1059,7 +1059,7 @@ static void sub_8109AFC(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[7] = gBattleAnimArgs[2];
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != 0)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->data[4] = 4;
|
||||
}
|
||||
@@ -1073,7 +1073,7 @@ static void sub_8109AFC(struct Sprite *sprite)
|
||||
break;
|
||||
case 1:
|
||||
sprite->data[1] += 192;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != 0)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
}
|
||||
|
||||
@@ -735,7 +735,7 @@ void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
void AnimSwirlingSnowball_Step3(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempVar;
|
||||
tempVar = GetBattlerSide(gBattleAnimAttacker) != 0 ? 20 : -20;
|
||||
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
|
||||
if (sprite->data[5] <= 31)
|
||||
{
|
||||
@@ -1190,12 +1190,12 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
||||
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
|
||||
sprite->data[7] = 0x8000;
|
||||
|
||||
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
|
||||
if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
|
||||
if ((sprite->data[7] & 0x8000) && !(gBattlerPositions[gBattleAnimAttacker] & 1))
|
||||
if ((sprite->data[7] & 0x8000) && (gBattlerPositions[gBattleAnimAttacker] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
|
||||
|
||||
sprite->data[6] = 1;
|
||||
|
||||
+1
-1
@@ -1290,7 +1290,7 @@ static bool32 sub_81963F0(u8 taskId)
|
||||
sub_81973A4();
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
UnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
+4
-4
@@ -350,7 +350,7 @@ void sub_811FAA4(u8 markings, s16 x, s16 y)
|
||||
u16 i;
|
||||
sMenu->cursorPos = 0;
|
||||
sMenu->markings = markings;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||
sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
|
||||
sub_811FC80(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
|
||||
}
|
||||
@@ -371,7 +371,7 @@ void sub_811FAF8(void)
|
||||
DestroySprite(sMenu->menuWindowSprites[i]);
|
||||
sMenu->menuWindowSprites[i] = NULL;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||
{
|
||||
if (!sMenu->menuMarkingSprites[i])
|
||||
return;
|
||||
@@ -422,7 +422,7 @@ bool8 sub_811FBA4(void)
|
||||
{
|
||||
case 4:
|
||||
sMenu->markings = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||
sMenu->markings |= sMenu->markingsArray[i] << i;
|
||||
return FALSE;
|
||||
case 5:
|
||||
@@ -498,7 +498,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
|
||||
sprTemplate.callback = sub_811FF40;
|
||||
sprTemplate.oam = &gUnknown_0859EE84;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ void FinishMossdeepGymTiles(void)
|
||||
|
||||
id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
u16 MossdeepGym_MoveEvents(u8 arg0)
|
||||
|
||||
@@ -154,7 +154,7 @@ static EWRAM_DATA struct
|
||||
{
|
||||
u8 state;
|
||||
u8 heartSpriteIds[16]; /*0x001*/
|
||||
u16 movesToLearn[4]; /*0x012*/
|
||||
u16 movesToLearn[MAX_MON_MOVES]; /*0x012*/
|
||||
u8 filler1A[0x44 - 0x1A]; /*0x01A*/
|
||||
u8 partyMon; /*0x044*/
|
||||
u8 moveSlot; /*0x045*/
|
||||
|
||||
+1
-1
@@ -81,7 +81,7 @@ u32 GetTrainerId(u8 *trainerId)
|
||||
void CopyTrainerId(u8 *dst, u8 *src)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
dst[i] = src[i];
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2435,7 +2435,7 @@ static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
|
||||
struct TradeRoomPlayer trainer;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
u8 key = keys[i];
|
||||
u16 setFacing = FACING_NONE;
|
||||
@@ -3026,7 +3026,7 @@ static s32 sub_80878E4(u8 linkPlayerId)
|
||||
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayerEventObjects[i].active
|
||||
&& (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
|
||||
|
||||
+1
-1
@@ -3,7 +3,6 @@
|
||||
#include "battle.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_message.h"
|
||||
#include "berry.h"
|
||||
#include "bg.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
@@ -30,6 +29,7 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "constants/berry.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
+17
-17
@@ -2989,11 +2989,11 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
|
||||
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
|
||||
{
|
||||
s32 i;
|
||||
u16 moves[4];
|
||||
u8 pp[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 pp[MAX_MON_MOVES];
|
||||
u8 ppBonuses;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES - 1; i++)
|
||||
{
|
||||
moves[i] = GetMonData(mon, MON_DATA_MOVE2 + i, NULL);
|
||||
pp[i] = GetMonData(mon, MON_DATA_PP2 + i, NULL);
|
||||
@@ -3016,11 +3016,11 @@ void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
|
||||
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
|
||||
{
|
||||
s32 i;
|
||||
u16 moves[4];
|
||||
u8 pp[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 pp[MAX_MON_MOVES];
|
||||
u8 ppBonuses;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES - 1; i++)
|
||||
{
|
||||
moves[i] = GetBoxMonData(boxMon, MON_DATA_MOVE2 + i, NULL);
|
||||
pp[i] = GetBoxMonData(boxMon, MON_DATA_PP2 + i, NULL);
|
||||
@@ -3197,13 +3197,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
|
||||
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
|
||||
{
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
|
||||
damage = 2 * (damage / 3);
|
||||
else
|
||||
damage /= 2;
|
||||
}
|
||||
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
|
||||
damage /= 2;
|
||||
|
||||
// moves always do at least 1 damage.
|
||||
@@ -3244,13 +3244,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
|
||||
if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
|
||||
{
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
|
||||
damage = 2 * (damage / 3);
|
||||
else
|
||||
damage /= 2;
|
||||
}
|
||||
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
|
||||
damage /= 2;
|
||||
|
||||
// are effects of weather negated with cloud nine or air lock
|
||||
@@ -3304,21 +3304,21 @@ u8 CountAliveMonsInBattle(u8 caseId)
|
||||
switch (caseId)
|
||||
{
|
||||
case BATTLE_ALIVE_EXCEPT_ACTIVE:
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
retVal++;
|
||||
}
|
||||
break;
|
||||
case BATTLE_ALIVE_ATK_SIDE:
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
retVal++;
|
||||
}
|
||||
break;
|
||||
case BATTLE_ALIVE_DEF_SIDE:
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
|
||||
retVal++;
|
||||
@@ -6096,7 +6096,7 @@ u32 CanSpeciesLearnTMHM(u16 species, u8 tm)
|
||||
|
||||
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
|
||||
{
|
||||
u16 learnedMoves[4];
|
||||
u16 learnedMoves[MAX_MON_MOVES];
|
||||
u8 numMoves = 0;
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
@@ -6146,7 +6146,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
|
||||
|
||||
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon)
|
||||
{
|
||||
u16 learnedMoves[4];
|
||||
u16 learnedMoves[MAX_MON_MOVES];
|
||||
u16 moves[20];
|
||||
u8 numMoves = 0;
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
|
||||
@@ -6683,7 +6683,7 @@ u8 sub_806EF08(u8 arg0)
|
||||
var = (arg0 != 0) ? 2 : 0;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayers[i].id == (s16)(var))
|
||||
break;
|
||||
@@ -6706,7 +6706,7 @@ u8 sub_806EF84(u8 arg0, u8 arg1)
|
||||
var = (arg0 != 0) ? 2 : 0;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayers[i].id == (s16)(var))
|
||||
break;
|
||||
|
||||
@@ -121,8 +121,8 @@ static EWRAM_DATA struct PokemonSummaryScreenData
|
||||
u8 metGame; // 0xB
|
||||
u32 pid; // 0xC
|
||||
u32 exp; // 0x10
|
||||
u16 moves[4]; // 0x14
|
||||
u8 pp[4]; // 0x1C
|
||||
u16 moves[MAX_MON_MOVES]; // 0x14
|
||||
u8 pp[MAX_MON_MOVES]; // 0x1C
|
||||
u16 currentHP; // 0x20
|
||||
u16 maxHP; // 0x22
|
||||
u16 atk; // 0x24
|
||||
|
||||
@@ -37,8 +37,8 @@ struct PlayerInfo
|
||||
|
||||
struct MovePp
|
||||
{
|
||||
u16 moves[4];
|
||||
u8 pp[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 pp[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
struct RecordedBattleSave
|
||||
@@ -91,7 +91,7 @@ EWRAM_DATA static u32 sBattleFlags = 0;
|
||||
EWRAM_DATA static u32 sAI_Scripts = 0;
|
||||
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0};
|
||||
EWRAM_DATA static u16 sPlayerMonMoves[2][MAX_MON_MOVES] = {0};
|
||||
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
|
||||
EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
|
||||
@@ -766,11 +766,11 @@ void sub_818603C(u8 arg0)
|
||||
{
|
||||
if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
|
||||
{
|
||||
u8 ppBonuses[4];
|
||||
u8 array1[4];
|
||||
u8 array2[4];
|
||||
u8 ppBonuses[MAX_MON_MOVES];
|
||||
u8 array1[MAX_MON_MOVES];
|
||||
u8 array2[MAX_MON_MOVES];
|
||||
struct MovePp movePp;
|
||||
u8 array3[8];
|
||||
u8 array3[(MAX_MON_MOVES * 2)];
|
||||
u8 var;
|
||||
|
||||
RecordedBattle_GetBattlerAction(battlerId);
|
||||
|
||||
+2
-2
@@ -1247,7 +1247,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
|
||||
HideFieldMessageBox();
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
UnfreezeEventObjects();
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1261,7 +1261,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
|
||||
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
|
||||
sub_80D338C();
|
||||
ScriptMovement_UnfreezeEventObjects();
|
||||
UnfreezeEventObjects();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+60
-60
@@ -121,109 +121,109 @@ const struct MenuAction MultichoiceList_024[] =
|
||||
{gText_Exit, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_025[] =
|
||||
const struct MenuAction MultichoiceList_025[] = //Trick House Mechadoll 1, Question 1
|
||||
{
|
||||
{gUnknown_0827ECBC, NULL},
|
||||
{gUnknown_0827ECC3, NULL},
|
||||
{gUnknown_0827ECCD, NULL},
|
||||
{gTrickHouse_Mechadoll_Oddish, NULL},
|
||||
{gTrickHouse_Mechadoll_Poochyena, NULL},
|
||||
{gTrickHouse_Mechadoll_Taillow, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_026[] =
|
||||
const struct MenuAction MultichoiceList_026[] = //Trick House Mechadoll 1, Question 2
|
||||
{
|
||||
{gUnknown_0827ECD5, NULL},
|
||||
{gUnknown_0827ECDD, NULL},
|
||||
{gUnknown_0827ECE3, NULL},
|
||||
{gTrickHouse_Mechadoll_Azurill, NULL},
|
||||
{gTrickHouse_Mechadoll_Lotad, NULL},
|
||||
{gTrickHouse_Mechadoll_Wingull, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_027[] =
|
||||
const struct MenuAction MultichoiceList_027[] = //Trick House Mechadoll 1, Question 3
|
||||
{
|
||||
{gUnknown_0827ECEB, NULL},
|
||||
{gUnknown_0827ECF2, NULL},
|
||||
{gUnknown_0827ECF8, NULL},
|
||||
{gTrickHouse_Mechadoll_Dustox, NULL},
|
||||
{gTrickHouse_Mechadoll_Zubat, NULL},
|
||||
{gTrickHouse_Mechadoll_Nincada, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_028[] =
|
||||
const struct MenuAction MultichoiceList_028[] = //Trick House Mechadoll 2, Question 1
|
||||
{
|
||||
{gUnknown_0827ED00, NULL},
|
||||
{gUnknown_0827ED06, NULL},
|
||||
{gUnknown_0827ED10, NULL},
|
||||
{gTrickHouse_Mechadoll_Ralts, NULL},
|
||||
{gTrickHouse_Mechadoll_Zigzagoon, NULL},
|
||||
{gTrickHouse_Mechadoll_Slakoth, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_029[] =
|
||||
const struct MenuAction MultichoiceList_029[] = //Trick House Mechadoll 2, Question 2
|
||||
{
|
||||
{gUnknown_0827ED18, NULL},
|
||||
{gUnknown_0827ED22, NULL},
|
||||
{gUnknown_0827ED2C, NULL},
|
||||
{gTrickHouse_Mechadoll_Poochyena2, NULL},
|
||||
{gTrickHouse_Mechadoll_Shroomish, NULL},
|
||||
{gTrickHouse_Mechadoll_Zigzagoon2, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_030[] =
|
||||
const struct MenuAction MultichoiceList_030[] = //Trick House Mechadoll 2, Question 3
|
||||
{
|
||||
{gUnknown_0827ED36, NULL},
|
||||
{gUnknown_0827ED40, NULL},
|
||||
{gUnknown_0827ED46, NULL},
|
||||
{gTrickHouse_Mechadoll_Poochyena3, NULL},
|
||||
{gTrickHouse_Mechadoll_Zubat2, NULL},
|
||||
{gTrickHouse_Mechadoll_Carvanha, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_031[] =
|
||||
const struct MenuAction MultichoiceList_031[] = //Trick House Mechadoll 3, Question 1
|
||||
{
|
||||
{gUnknown_0827ED4F, NULL},
|
||||
{gUnknown_0827ED59, NULL},
|
||||
{gUnknown_0827ED65, NULL},
|
||||
{gTrickHouse_Mechadoll_BurnHeal, NULL},
|
||||
{gTrickHouse_Mechadoll_HarborMail, NULL},
|
||||
{gTrickHouse_Mechadoll_SamePrice, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_032[] =
|
||||
const struct MenuAction MultichoiceList_032[] = //Trick House Mechadoll 3, Question 2
|
||||
{
|
||||
{gUnknown_0827ED70, NULL},
|
||||
{gUnknown_0827ED74, NULL},
|
||||
{gUnknown_0827ED78, NULL},
|
||||
{gTrickHouse_Mechadoll_60Yen, NULL},
|
||||
{gTrickHouse_Mechadoll_55Yen, NULL},
|
||||
{gTrickHouse_Mechadoll_Nothing, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_033[] =
|
||||
const struct MenuAction MultichoiceList_033[] = //Trick House Mechadoll 3, Question 3
|
||||
{
|
||||
{gUnknown_0827ED80, NULL},
|
||||
{gUnknown_0827ED95, NULL},
|
||||
{gUnknown_0827EDAA, NULL},
|
||||
{gTrickHouse_Mechadoll_CostMore, NULL},
|
||||
{gTrickHouse_Mechadoll_CostLess, NULL},
|
||||
{gTrickHouse_Mechadoll_SamePrice2, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_034[] =
|
||||
const struct MenuAction MultichoiceList_034[] = //Trick House Mechadoll 4, Question 1
|
||||
{
|
||||
{gUnknown_0827EDB5, NULL},
|
||||
{gUnknown_0827EDBA, NULL},
|
||||
{gUnknown_0827EDC1, NULL},
|
||||
{gTrickHouse_Mechadoll_Male, NULL},
|
||||
{gTrickHouse_Mechadoll_Female, NULL},
|
||||
{gTrickHouse_Mechadoll_Neither, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_035[] =
|
||||
const struct MenuAction MultichoiceList_035[] = //Trick House Mechadoll 4, Question 2
|
||||
{
|
||||
{gUnknown_0827EDC9, NULL},
|
||||
{gUnknown_0827EDD5, NULL},
|
||||
{gUnknown_0827EDE4, NULL},
|
||||
{gTrickHouse_Mechadoll_ElderlyMen, NULL},
|
||||
{gTrickHouse_Mechadoll_ElderlyLadies, NULL},
|
||||
{gTrickHouse_Mechadoll_SameNumber, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_036[] =
|
||||
const struct MenuAction MultichoiceList_036[] = //Trick House Mechadoll 4, Question 3
|
||||
{
|
||||
{gUnknown_0827EDF0, NULL},
|
||||
{gUnknown_0827EDF5, NULL},
|
||||
{gUnknown_0827EDF7, NULL},
|
||||
{gTrickHouse_Mechadoll_None, NULL},
|
||||
{gTrickHouse_Mechadoll_One, NULL},
|
||||
{gTrickHouse_Mechadoll_Two, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_037[] =
|
||||
const struct MenuAction MultichoiceList_037[] = //Trick House Mechadoll 5, Question 1
|
||||
{
|
||||
{gUnknown_0827EDF9, NULL},
|
||||
{gUnknown_0827EDFB, NULL},
|
||||
{gUnknown_0827EDFD, NULL},
|
||||
{gTrickHouse_Mechadoll_Two2, NULL},
|
||||
{gTrickHouse_Mechadoll_Three, NULL},
|
||||
{gTrickHouse_Mechadoll_Four, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_038[] =
|
||||
const struct MenuAction MultichoiceList_038[] = //Trick House Mechadoll 5, Question 2
|
||||
{
|
||||
{gUnknown_0827EDFF, NULL},
|
||||
{gUnknown_0827EE01, NULL},
|
||||
{gUnknown_0827EE03, NULL},
|
||||
{gTrickHouse_Mechadoll_Six, NULL},
|
||||
{gTrickHouse_Mechadoll_Seven, NULL},
|
||||
{gTrickHouse_Mechadoll_Eight, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_039[] =
|
||||
const struct MenuAction MultichoiceList_039[] = //Trick House Mechadoll 5, Question 3
|
||||
{
|
||||
{gUnknown_0827EE05, NULL},
|
||||
{gUnknown_0827EE07, NULL},
|
||||
{gUnknown_0827EE09, NULL},
|
||||
{gTrickHouse_Mechadoll_Six2, NULL},
|
||||
{gTrickHouse_Mechadoll_Seven2, NULL},
|
||||
{gTrickHouse_Mechadoll_Eight2, NULL},
|
||||
};
|
||||
|
||||
const struct MenuAction MultichoiceList_042[] =
|
||||
|
||||
+88
-86
@@ -3,20 +3,22 @@
|
||||
#include "event_object_movement.h"
|
||||
#include "task.h"
|
||||
#include "util.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
|
||||
// static functions
|
||||
static void sub_80D33AC(u8);
|
||||
static u8 sub_80D33F4(void);
|
||||
static bool8 sub_80D3408(u8, u8, const u8 *);
|
||||
static u8 sub_80D3474(u8, u8);
|
||||
static bool8 sub_80D3584(u8, u8);
|
||||
static void sub_80D35DC(u8, u8, u8, const u8 *);
|
||||
static void UnfreezeObjects(u8);
|
||||
static void sub_80D3660(u8);
|
||||
static void sub_80A2490(u8, u8, u8, const u8 *);
|
||||
static void ScriptMovement_StartMoveObjects(u8 priority);
|
||||
static u8 GetMoveObjectsTaskId(void);
|
||||
static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript);
|
||||
static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId);
|
||||
static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId);
|
||||
static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
|
||||
static void ScriptMovement_UnfreezeActiveObjects(u8 taskId);
|
||||
static void ScriptMovement_MoveObjects(u8 taskId);
|
||||
static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
|
||||
|
||||
// EWRAM_DATA
|
||||
static EWRAM_DATA const u8 *gUnknown_02039D90[16] = {0};
|
||||
static EWRAM_DATA const u8 *gMovementScripts[EVENT_OBJECTS_COUNT] = {0};
|
||||
|
||||
// text
|
||||
bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript)
|
||||
@@ -25,207 +27,207 @@ bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGrou
|
||||
|
||||
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
|
||||
return TRUE;
|
||||
if (!FuncIsActiveTask(sub_80D3660))
|
||||
sub_80D33AC(50);
|
||||
return sub_80D3408(sub_80D33F4(), eventObjId, movementScript);
|
||||
if (!FuncIsActiveTask(ScriptMovement_MoveObjects))
|
||||
ScriptMovement_StartMoveObjects(50);
|
||||
return ScriptMovement_TryAddNewMovement(GetMoveObjectsTaskId(), eventObjId, movementScript);
|
||||
}
|
||||
|
||||
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
|
||||
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapGroup)
|
||||
{
|
||||
u8 eventObjId;
|
||||
u8 r4;
|
||||
u8 r1;
|
||||
u8 taskId;
|
||||
u8 moveScrId;
|
||||
|
||||
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &eventObjId))
|
||||
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
|
||||
return TRUE;
|
||||
r4 = sub_80D33F4();
|
||||
r1 = sub_80D3474(r4, eventObjId);
|
||||
if (r1 == 16)
|
||||
taskId = GetMoveObjectsTaskId();
|
||||
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
|
||||
if (moveScrId == EVENT_OBJECTS_COUNT)
|
||||
return TRUE;
|
||||
return sub_80D3584(r4, r1);
|
||||
return IsMovementScriptFinished(taskId, moveScrId);
|
||||
}
|
||||
|
||||
void sub_80D338C(void)
|
||||
void ScriptMovement_UnfreezeEventObjects(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
taskId = sub_80D33F4();
|
||||
taskId = GetMoveObjectsTaskId();
|
||||
if (taskId != 0xFF)
|
||||
{
|
||||
UnfreezeObjects(taskId);
|
||||
ScriptMovement_UnfreezeActiveObjects(taskId);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void sub_80D33AC(u8 priority)
|
||||
static void ScriptMovement_StartMoveObjects(u8 priority)
|
||||
{
|
||||
u8 taskId;
|
||||
u8 i;
|
||||
|
||||
taskId = CreateTask(sub_80D3660, priority);
|
||||
for (i = 1; i < 16; i++)
|
||||
taskId = CreateTask(ScriptMovement_MoveObjects, priority);
|
||||
|
||||
for (i = 1; i < NUM_TASK_DATA; i++)
|
||||
gTasks[taskId].data[i] = 0xFFFF;
|
||||
}
|
||||
|
||||
static u8 sub_80D33F4(void)
|
||||
static u8 GetMoveObjectsTaskId(void)
|
||||
{
|
||||
return FindTaskIdByFunc(sub_80D3660);
|
||||
return FindTaskIdByFunc(ScriptMovement_MoveObjects);
|
||||
}
|
||||
|
||||
static bool8 sub_80D3408(u8 taskId, u8 eventObjId, const u8 *movementScript)
|
||||
static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript)
|
||||
{
|
||||
u8 r4;
|
||||
u8 moveScrId;
|
||||
|
||||
r4 = sub_80D3474(taskId, eventObjId);
|
||||
if (r4 != 16)
|
||||
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
|
||||
if (moveScrId != EVENT_OBJECTS_COUNT)
|
||||
{
|
||||
if (sub_80D3584(taskId, r4) == 0)
|
||||
if (IsMovementScriptFinished(taskId, moveScrId) == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80D35DC(taskId, r4, eventObjId, movementScript);
|
||||
ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
r4 = sub_80D3474(taskId, 0xFF);
|
||||
if (r4 == 16)
|
||||
moveScrId = GetMovementScriptIdFromEventObjectId(taskId, EVENT_OBJ_ID_PLAYER);
|
||||
if (moveScrId == EVENT_OBJECTS_COUNT)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80D35DC(taskId, r4, eventObjId, movementScript);
|
||||
ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_80D3474(u8 taskId, u8 b)
|
||||
static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId)
|
||||
{
|
||||
u8 *ptr;
|
||||
u8 *moveScriptId;
|
||||
u8 i;
|
||||
|
||||
ptr = (u8 *)&gTasks[taskId].data[1];
|
||||
for (i = 0; i < 16; i++, ptr++)
|
||||
moveScriptId = (u8 *)&gTasks[taskId].data[1];
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++, moveScriptId++)
|
||||
{
|
||||
if (*ptr == b)
|
||||
if (*moveScriptId == eventObjId)
|
||||
return i;
|
||||
}
|
||||
return 16;
|
||||
return EVENT_OBJECTS_COUNT;
|
||||
}
|
||||
|
||||
static void sub_80D34B0(u8 taskId, u8 b, u8 **c)
|
||||
static void LoadEventObjectIdPtrFromMovementScript(u8 taskId, u8 moveScrId, u8 **pEventObjId)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
*c = (u8 *)&gTasks[taskId].data[1];
|
||||
for (i = 0; i < b; i++, (*c)++)
|
||||
*pEventObjId = (u8 *)&gTasks[taskId].data[1];
|
||||
for (i = 0; i < moveScrId; i++, (*pEventObjId)++)
|
||||
;
|
||||
}
|
||||
|
||||
static void sub_80D34E4(u8 taskId, u8 b, u8 c)
|
||||
static void SetEventObjectIdAtMovementScript(u8 taskId, u8 moveScrId, u8 eventObjId)
|
||||
{
|
||||
u8 *ptr;
|
||||
|
||||
sub_80D34B0(taskId, b, &ptr);
|
||||
*ptr = c; //what is this supposed to do?
|
||||
LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
|
||||
*ptr = eventObjId;
|
||||
}
|
||||
|
||||
static void sub_80D3508(u8 taskId, u8 b, u8 *c)
|
||||
static void LoadEventObjectIdFromMovementScript(u8 taskId, u8 moveScrId, u8 *eventObjId)
|
||||
{
|
||||
u8 *ptr;
|
||||
|
||||
sub_80D34B0(taskId, b, &ptr);
|
||||
*c = *ptr;
|
||||
LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
|
||||
*eventObjId = *ptr;
|
||||
}
|
||||
|
||||
static void sub_80D352C(u8 a, u8 b)
|
||||
static void ClearMovementScriptFinished(u8 taskId, u8 moveScrId)
|
||||
{
|
||||
u16 var = ~gBitTable[b];
|
||||
u16 mask = ~gBitTable[moveScrId];
|
||||
|
||||
gTasks[a].data[0] &= var;
|
||||
gTasks[taskId].data[0] &= mask;
|
||||
}
|
||||
|
||||
static void sub_80D355C(u8 taskId, u8 b)
|
||||
static void SetMovementScriptFinished(u8 taskId, u8 moveScrId)
|
||||
{
|
||||
gTasks[taskId].data[0] |= gBitTable[b];
|
||||
gTasks[taskId].data[0] |= gBitTable[moveScrId];
|
||||
}
|
||||
|
||||
static bool8 sub_80D3584(u8 taskId, u8 b)
|
||||
static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId)
|
||||
{
|
||||
u16 var = (u16)gTasks[taskId].data[0] & gBitTable[b];
|
||||
u16 moveScriptFinished = (u16)gTasks[taskId].data[0] & gBitTable[moveScrId];
|
||||
|
||||
if (var != 0)
|
||||
if (moveScriptFinished != 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void npc_obj_offscreen_culling_and_flag_update(u8 a, const u8 *movementScript)
|
||||
static void SetMovementScript(u8 moveScrId, const u8 *movementScript)
|
||||
{
|
||||
gUnknown_02039D90[a] = movementScript;
|
||||
gMovementScripts[moveScrId] = movementScript;
|
||||
}
|
||||
|
||||
static const u8 *sub_80D35CC(u8 a)
|
||||
static const u8 *GetMovementScript(u8 moveScrId)
|
||||
{
|
||||
return gUnknown_02039D90[a];
|
||||
return gMovementScripts[moveScrId];
|
||||
}
|
||||
|
||||
static void sub_80D35DC(u8 taskId, u8 b, u8 eventObjId, const u8 *movementScript)
|
||||
static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
|
||||
{
|
||||
sub_80D352C(taskId, b);
|
||||
npc_obj_offscreen_culling_and_flag_update(b, movementScript);
|
||||
sub_80D34E4(taskId, b, eventObjId);
|
||||
ClearMovementScriptFinished(taskId, moveScrId);
|
||||
SetMovementScript(moveScrId, movementScript);
|
||||
SetEventObjectIdAtMovementScript(taskId, moveScrId, eventObjId);
|
||||
}
|
||||
|
||||
static void UnfreezeObjects(u8 taskId)
|
||||
static void ScriptMovement_UnfreezeActiveObjects(u8 taskId)
|
||||
{
|
||||
u8 *pEventObjId;
|
||||
u8 i;
|
||||
|
||||
pEventObjId = (u8 *)&gTasks[taskId].data[1];
|
||||
for (i = 0; i < 16; i++, pEventObjId++)
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++, pEventObjId++)
|
||||
{
|
||||
if (*pEventObjId != 0xFF)
|
||||
UnfreezeEventObject(&gEventObjects[*pEventObjId]);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80D3660(u8 taskId)
|
||||
static void ScriptMovement_MoveObjects(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
u8 var;
|
||||
u8 eventObjId;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
|
||||
{
|
||||
sub_80D3508(taskId, i, &var);
|
||||
if (var != 0xFF)
|
||||
sub_80A2490(taskId, i, var, sub_80D35CC(i));
|
||||
LoadEventObjectIdFromMovementScript(taskId, i, &eventObjId);
|
||||
if (eventObjId != 0xFF)
|
||||
ScriptMovement_TakeStep(taskId, i, eventObjId, GetMovementScript(i));
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A2490(u8 taskId, u8 b, u8 eventObjId, const u8 *d)
|
||||
static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
|
||||
{
|
||||
u8 var;
|
||||
u8 nextMoveActionId;
|
||||
|
||||
if (EventObjectIsHeldMovementActive(&gEventObjects[eventObjId])
|
||||
&& !EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
|
||||
return;
|
||||
|
||||
var = *d;
|
||||
if (var == 0xFE)
|
||||
nextMoveActionId = *movementScript;
|
||||
if (nextMoveActionId == MOVEMENT_ACTION_STEP_END)
|
||||
{
|
||||
sub_80D355C(taskId, b);
|
||||
SetMovementScriptFinished(taskId, moveScrId);
|
||||
FreezeEventObject(&gEventObjects[eventObjId]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], var))
|
||||
if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], nextMoveActionId))
|
||||
{
|
||||
d++;
|
||||
npc_obj_offscreen_culling_and_flag_update(b, d);
|
||||
movementScript++;
|
||||
SetMovementScript(moveScrId, movementScript);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -349,7 +349,7 @@ void SetPlayerSecretBase(void)
|
||||
u16 i;
|
||||
|
||||
gSaveBlock1Ptr->secretBases[0].secretBaseId = sCurSecretBaseId;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
|
||||
|
||||
VarSet(VAR_CURRENT_SECRET_BASE, 0);
|
||||
@@ -1291,7 +1291,7 @@ static void SetSecretBaseDataAndLanguage(u8 secretBaseId, struct SecretBase *sec
|
||||
static bool8 SecretBasesHaveSameTrainerId(struct SecretBase *secretBase1, struct SecretBase *secretBase2)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
{
|
||||
if (secretBase1->trainerId[i] != secretBase2->trainerId[i])
|
||||
return FALSE;
|
||||
@@ -1445,7 +1445,7 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
|
||||
return FALSE;
|
||||
|
||||
// Check if the player's trainer Id matches the secret base's id.
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < TRAINER_ID_LENGTH; i++)
|
||||
{
|
||||
if (secretBase->trainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
|
||||
return FALSE;
|
||||
|
||||
+5
-5
@@ -3032,7 +3032,7 @@ static u8 sub_8079A3C(u8 *str, u8 whichParty, u8 monIdx)
|
||||
|
||||
static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
|
||||
{
|
||||
u16 arr[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u16 i;
|
||||
|
||||
if (!gUnknown_0203229C->unk_51[a1][a2])
|
||||
@@ -3041,11 +3041,11 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
|
||||
{
|
||||
if (!a1)
|
||||
{
|
||||
arr[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
|
||||
moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
arr[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
|
||||
moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3053,9 +3053,9 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
|
||||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (arr[i] != MOVE_NONE)
|
||||
if (moves[i] != MOVE_NONE)
|
||||
{
|
||||
StringAppend(a0, gMoveNames[arr[i]]);
|
||||
StringAppend(a0, gMoveNames[moves[i]]);
|
||||
}
|
||||
|
||||
StringAppend(a0, gText_NewLine3);
|
||||
|
||||
+27
-69
@@ -38,58 +38,16 @@
|
||||
#define HILL_TAG_UNIQUE 2
|
||||
#define HILL_TAG_EXPERT 3
|
||||
|
||||
#define HILL_TRAINER_NAME_LENGTH 11
|
||||
#define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1
|
||||
|
||||
struct TrHillRoomTrainers
|
||||
{
|
||||
u8 name[2][HILL_TRAINER_NAME_LENGTH];
|
||||
u8 facilityClass[2];
|
||||
};
|
||||
|
||||
struct TrainerHillTrainer
|
||||
{
|
||||
u8 name[HILL_TRAINER_NAME_LENGTH];
|
||||
u8 facilityClass;
|
||||
u32 unused;
|
||||
u16 speechBefore[6];
|
||||
u16 speechWin[6];
|
||||
u16 speechLose[6];
|
||||
u16 speechAfter[6];
|
||||
struct BattleTowerPokemon mons[PARTY_SIZE];
|
||||
};
|
||||
|
||||
struct TrHillFloor
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
struct TrainerHillTrainer trainers[2];
|
||||
u8 data[0x100];
|
||||
u16 unk3A0[16];
|
||||
u8 coords[2]; // x first 4 bits, y last 4 bits
|
||||
u8 direction; // array of 4 bits for each trainer
|
||||
u8 range; // array of 4 bits for each trainer
|
||||
};
|
||||
|
||||
struct TrHillTag
|
||||
{
|
||||
u8 unkField_0;
|
||||
u8 unused1;
|
||||
u8 unkField_2;
|
||||
u8 unused3;
|
||||
u8 unused4;
|
||||
u8 unused5;
|
||||
u8 unused6;
|
||||
struct TrHillFloor floors[4];
|
||||
};
|
||||
|
||||
// EWRAM
|
||||
struct TrHillStruct2
|
||||
{
|
||||
u8 floorId;
|
||||
struct TrHillTag tag;
|
||||
struct TrHillFloor floors[4];
|
||||
};
|
||||
|
||||
// EWRAM
|
||||
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
|
||||
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
|
||||
EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
|
||||
@@ -350,7 +308,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId)
|
||||
|
||||
SetUpDataStruct();
|
||||
id = trainerId - 1;
|
||||
facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[id].facilityClass;
|
||||
facilityClass = sHillData->floors[sHillData->floorId].trainers[id].facilityClass;
|
||||
FreeDataStruct();
|
||||
|
||||
return gFacilityClassToPicIndex[facilityClass];
|
||||
@@ -367,9 +325,9 @@ void InitTrainerHillBattleStruct(void)
|
||||
{
|
||||
for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++)
|
||||
{
|
||||
sRoomTrainers->name[i][j] = sHillData->tag.floors[sHillData->floorId].trainers[i].name[j];
|
||||
sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j];
|
||||
}
|
||||
sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
|
||||
sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass;
|
||||
}
|
||||
SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
|
||||
FreeDataStruct();
|
||||
@@ -387,7 +345,7 @@ static void SetUpDataStruct(void)
|
||||
{
|
||||
sHillData = AllocZeroed(sizeof(*sHillData));
|
||||
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
|
||||
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag));
|
||||
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
|
||||
nullsub_2();
|
||||
}
|
||||
}
|
||||
@@ -409,16 +367,16 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
|
||||
switch (which)
|
||||
{
|
||||
case 2:
|
||||
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechBefore);
|
||||
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechBefore);
|
||||
break;
|
||||
case 3:
|
||||
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechWin);
|
||||
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechWin);
|
||||
break;
|
||||
case 4:
|
||||
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechLose);
|
||||
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechLose);
|
||||
break;
|
||||
case 5:
|
||||
FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechAfter);
|
||||
FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechAfter);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -460,7 +418,7 @@ static void sub_81D5924(void)
|
||||
{
|
||||
u16 itemId = sub_81D6640();
|
||||
|
||||
if (sHillData->tag.unkField_2 != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
|
||||
if (sHillData->tag.numFloors != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
|
||||
{
|
||||
gSpecialVar_Result = 2;
|
||||
}
|
||||
@@ -556,9 +514,9 @@ static void sub_81D5B2C(void)
|
||||
static void sub_81D5BBC(void)
|
||||
{
|
||||
SetUpDataStruct();
|
||||
if (sHillData->tag.unkField_2 != 4)
|
||||
if (sHillData->tag.numFloors != 4)
|
||||
{
|
||||
ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.unkField_2, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
gSpecialVar_Result = 0;
|
||||
}
|
||||
else
|
||||
@@ -673,12 +631,12 @@ void sub_81D5DF8(void)
|
||||
|
||||
eventTemplates[i] = gUnknown_0862A670;
|
||||
eventTemplates[i].localId = i + 1;
|
||||
eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->tag.floors[floorId].trainers[i].facilityClass);
|
||||
eventTemplates[i].x = sHillData->tag.floors[floorId].coords[i] & 0xF;
|
||||
eventTemplates[i].y = ((sHillData->tag.floors[floorId].coords[i] >> 4) & 0xF) + 5;
|
||||
eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass);
|
||||
eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF;
|
||||
eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5;
|
||||
bits = i << 2;
|
||||
eventTemplates[i].movementType = ((sHillData->tag.floors[floorId].direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
|
||||
eventTemplates[i].trainerRange_berryTreeId = (sHillData->tag.floors[floorId].range >> bits) & 0xF;
|
||||
eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
|
||||
eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF;
|
||||
eventTemplates[i].script = EventScript_2C83F0;
|
||||
gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1;
|
||||
}
|
||||
@@ -699,8 +657,8 @@ static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
|
||||
{
|
||||
u32 var0, var1, var2, var3;
|
||||
|
||||
var0 = (sHillData->tag.floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
|
||||
var1 = sHillData->tag.floors[floorId].data[arg2 * arg3 + bit];
|
||||
var0 = (sHillData->floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
|
||||
var1 = sHillData->floors[floorId].data[arg2 * arg3 + bit];
|
||||
var3 = 0x200;
|
||||
var2 = 0x3000;
|
||||
|
||||
@@ -943,7 +901,7 @@ static void sub_81D62CC(u16 trainerId, u8 firstMonId)
|
||||
u8 id = gUnknown_0862A698[trId][arrId];
|
||||
struct Pokemon *mon = &gEnemyParty[i];
|
||||
|
||||
CreateBattleTowerMon(mon, &sHillData->tag.floors[floorId].trainers[trId].mons[id]);
|
||||
CreateBattleTowerMon(mon, &sHillData->floors[floorId].trainers[trId].mons[id]);
|
||||
sub_81D642C(mon, level);
|
||||
}
|
||||
|
||||
@@ -978,7 +936,7 @@ u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId)
|
||||
|
||||
SetUpDataStruct();
|
||||
trId = trainerId - 1;
|
||||
facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[trId].facilityClass;
|
||||
facilityClass = sHillData->floors[sHillData->floorId].trainers[trId].facilityClass;
|
||||
FreeDataStruct();
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gUnknown_0862A3B4); i++)
|
||||
@@ -1005,7 +963,7 @@ u8 sub_81D6490(void)
|
||||
u8 ret;
|
||||
|
||||
SetUpDataStruct();
|
||||
ret = sHillData->tag.unkField_2;
|
||||
ret = sHillData->tag.numFloors;
|
||||
FreeDataStruct();
|
||||
|
||||
return ret;
|
||||
@@ -1070,8 +1028,8 @@ static u8 sub_81D65E8(u8 arg0)
|
||||
var = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
var ^= sHillData->tag.floors[i].unk0 & 0x1F;
|
||||
var ^= sHillData->tag.floors[i].unk1 & 0x1F;
|
||||
var ^= sHillData->floors[i].unk0 & 0x1F;
|
||||
var ^= sHillData->floors[i].unk1 & 0x1F;
|
||||
}
|
||||
|
||||
if (arg0)
|
||||
@@ -1091,8 +1049,8 @@ static u16 sub_81D6640(void)
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
var += sHillData->tag.floors[i].unk0;
|
||||
var += sHillData->tag.floors[i].unk1;
|
||||
var += sHillData->floors[i].unk0;
|
||||
var += sHillData->floors[i].unk1;
|
||||
}
|
||||
|
||||
var2 = var / 256;
|
||||
|
||||
@@ -182,7 +182,7 @@ static void DoTVShowPokemonContestLiveUpdates2(void);
|
||||
|
||||
static const struct {
|
||||
u16 species;
|
||||
u16 moves[4];
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 level;
|
||||
u8 location;
|
||||
} sPokeOutbreakSpeciesList[] = {
|
||||
@@ -2329,7 +2329,7 @@ void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u1
|
||||
show->battleSeminar.foeSpecies = foeSpecies;
|
||||
show->battleSeminar.species = species;
|
||||
show->battleSeminar.move = movePtr[moveIdx];
|
||||
for (i = 0, j = 0; i < 4; i ++)
|
||||
for (i = 0, j = 0; i < MAX_MON_MOVES; i ++)
|
||||
{
|
||||
if (i != moveIdx && movePtr[i])
|
||||
{
|
||||
|
||||
+30
-30
@@ -143,47 +143,47 @@ static void FeebasSeedRng(u16 seed)
|
||||
|
||||
static u8 ChooseWildMonIndex_Land(void)
|
||||
{
|
||||
u8 rand = Random() % 100;
|
||||
u8 rand = Random() % ENCOUNTER_CHANCE_LAND_MONS_TOTAL;
|
||||
|
||||
if (rand < 20) // 20% chance
|
||||
if (rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_0)
|
||||
return 0;
|
||||
else if (rand >= 20 && rand < 40) // 20% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_1)
|
||||
return 1;
|
||||
else if (rand >= 40 && rand < 50) // 10% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_2)
|
||||
return 2;
|
||||
else if (rand >= 50 && rand < 60) // 10% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_3)
|
||||
return 3;
|
||||
else if (rand >= 60 && rand < 70) // 10% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_4)
|
||||
return 4;
|
||||
else if (rand >= 70 && rand < 80) // 10% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_5)
|
||||
return 5;
|
||||
else if (rand >= 80 && rand < 85) // 5% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_6)
|
||||
return 6;
|
||||
else if (rand >= 85 && rand < 90) // 5% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_7)
|
||||
return 7;
|
||||
else if (rand >= 90 && rand < 94) // 4% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_8)
|
||||
return 8;
|
||||
else if (rand >= 94 && rand < 98) // 4% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
|
||||
return 9;
|
||||
else if (rand == 98) // 1% chance
|
||||
else if (rand == ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
|
||||
return 10;
|
||||
else // 1% chance
|
||||
else
|
||||
return 11;
|
||||
}
|
||||
|
||||
static u8 ChooseWildMonIndex_WaterRock(void)
|
||||
{
|
||||
u8 rand = Random() % 100;
|
||||
u8 rand = Random() % ENCOUNTER_CHANCE_WATER_MONS_TOTAL;
|
||||
|
||||
if (rand < 60) // 60% chance
|
||||
if (rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_0)
|
||||
return 0;
|
||||
else if (rand >= 60 && rand < 90) // 30% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_1)
|
||||
return 1;
|
||||
else if (rand >= 90 && rand < 95) // 5% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_2)
|
||||
return 2;
|
||||
else if (rand >= 95 && rand < 99) // 4% chance
|
||||
else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_3)
|
||||
return 3;
|
||||
else // 1% chance
|
||||
else
|
||||
return 4;
|
||||
}
|
||||
|
||||
@@ -197,34 +197,34 @@ enum
|
||||
static u8 ChooseWildMonIndex_Fishing(u8 rod)
|
||||
{
|
||||
u8 wildMonIndex = 0;
|
||||
u8 rand = Random() % 100;
|
||||
u8 rand = Random() % ENCOUNTER_CHANCE_FISHING_MONS_TOTAL;
|
||||
|
||||
switch (rod)
|
||||
{
|
||||
case OLD_ROD:
|
||||
if (rand < 70) // 70% chance
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0)
|
||||
wildMonIndex = 0;
|
||||
else // 30% chance
|
||||
else
|
||||
wildMonIndex = 1;
|
||||
break;
|
||||
case GOOD_ROD:
|
||||
if (rand < 60) // 60% chance
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2)
|
||||
wildMonIndex = 2;
|
||||
if (rand >= 60 && rand < 80) // 20% chance
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3)
|
||||
wildMonIndex = 3;
|
||||
if (rand >= 80 && rand < 100) // 20% chance
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4)
|
||||
wildMonIndex = 4;
|
||||
break;
|
||||
case SUPER_ROD:
|
||||
if (rand < 40) // 40% chance
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5)
|
||||
wildMonIndex = 5;
|
||||
if (rand >= 40 && rand < 80) // 40% chance
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6)
|
||||
wildMonIndex = 6;
|
||||
if (rand >= 80 && rand < 95) // 15% chance
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7)
|
||||
wildMonIndex = 7;
|
||||
if (rand >= 95 && rand < 99) // 4% chance
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
|
||||
wildMonIndex = 8;
|
||||
if (rand == 99) // 1% chance
|
||||
if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
|
||||
wildMonIndex = 9;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user