@@ -1014,15 +1014,12 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
|
|||||||
palOffset = (battlerId * 16) + 0x100;
|
palOffset = (battlerId * 16) + 0x100;
|
||||||
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
|
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
|
||||||
}
|
}
|
||||||
else
|
else if (!IsContest())
|
||||||
{
|
{
|
||||||
if (!IsContest())
|
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||||
{
|
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
else
|
||||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||||
else
|
|
||||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4851,40 +4851,38 @@ static void SetActionsAndBattlersTurnOrder(void)
|
|||||||
gBattleStruct->focusPunchBattlerId = 0;
|
gBattleStruct->focusPunchBattlerId = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
||||||
{
|
{
|
||||||
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
|
||||||
{
|
{
|
||||||
if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
|
gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
|
||||||
{
|
gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
|
||||||
gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
|
turnOrderId++;
|
||||||
gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
|
|
||||||
turnOrderId++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
}
|
||||||
|
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
|
||||||
|
{
|
||||||
|
if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH)
|
||||||
{
|
{
|
||||||
if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH)
|
gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
|
||||||
{
|
gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
|
||||||
gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
|
turnOrderId++;
|
||||||
gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
|
|
||||||
turnOrderId++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (i = 0; i < gBattlersCount - 1; i++)
|
}
|
||||||
|
for (i = 0; i < gBattlersCount - 1; i++)
|
||||||
|
{
|
||||||
|
for (j = i + 1; j < gBattlersCount; j++)
|
||||||
{
|
{
|
||||||
for (j = i + 1; j < gBattlersCount; j++)
|
u8 battler1 = gBattlerByTurnOrder[i];
|
||||||
|
u8 battler2 = gBattlerByTurnOrder[j];
|
||||||
|
|
||||||
|
if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
|
||||||
|
&& gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
|
||||||
|
&& gActionsByTurnOrder[i] != B_ACTION_SWITCH
|
||||||
|
&& gActionsByTurnOrder[j] != B_ACTION_SWITCH)
|
||||||
{
|
{
|
||||||
u8 battler1 = gBattlerByTurnOrder[i];
|
if (GetWhoStrikesFirst(battler1, battler2, FALSE))
|
||||||
u8 battler2 = gBattlerByTurnOrder[j];
|
SwapTurnOrder(i, j);
|
||||||
if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
|
|
||||||
&& gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
|
|
||||||
&& gActionsByTurnOrder[i] != B_ACTION_SWITCH
|
|
||||||
&& gActionsByTurnOrder[j] != B_ACTION_SWITCH)
|
|
||||||
{
|
|
||||||
if (GetWhoStrikesFirst(battler1, battler2, FALSE))
|
|
||||||
SwapTurnOrder(i, j);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4962,12 +4960,8 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TryClearRageStatuses();
|
TryClearRageStatuses();
|
||||||
gCurrentTurnActionNumber = 0;
|
gCurrentTurnActionNumber = 0; //See comment underneath
|
||||||
{
|
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; //Should be gActionsByTurnOrder[(gCurrentTurnActionNumber = 0)], but that doesn't match
|
||||||
// something stupid needed to match
|
|
||||||
u8 zero;
|
|
||||||
gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)];
|
|
||||||
}
|
|
||||||
gDynamicBasePower = 0;
|
gDynamicBasePower = 0;
|
||||||
gBattleStruct->dynamicMoveType = 0;
|
gBattleStruct->dynamicMoveType = 0;
|
||||||
gBattleMainFunc = RunTurnActionsFunctions;
|
gBattleMainFunc = RunTurnActionsFunctions;
|
||||||
@@ -4990,13 +4984,10 @@ static void RunTurnActionsFunctions(void)
|
|||||||
gHitMarker &= ~(HITMARKER_x100000);
|
gHitMarker &= ~(HITMARKER_x100000);
|
||||||
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
|
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
|
||||||
}
|
}
|
||||||
else
|
else if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
|
||||||
{
|
{
|
||||||
if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
|
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
|
||||||
{
|
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
|
||||||
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
|
|
||||||
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8216,15 +8216,13 @@ bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent)
|
|||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
objectEvent->frozen = 1;
|
||||||
objectEvent->frozen = 1;
|
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
||||||
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
||||||
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
gSprites[objectEvent->spriteId].animPaused = 1;
|
||||||
gSprites[objectEvent->spriteId].animPaused = 1;
|
gSprites[objectEvent->spriteId].affineAnimPaused = 1;
|
||||||
gSprites[objectEvent->spriteId].affineAnimPaused = 1;
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreezeObjectEvents(void)
|
void FreezeObjectEvents(void)
|
||||||
@@ -8397,8 +8395,8 @@ bool8 sub_80976EC(struct Sprite *sprite)
|
|||||||
|
|
||||||
if (sprite->data[5] > 15)
|
if (sprite->data[5] > 15)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
|
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
|
||||||
@@ -8478,15 +8476,15 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
|
|||||||
return finished;
|
return finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s8 gUnknown_0850E802[] = {
|
static const s8 gUnknown_0850E802[16] = {
|
||||||
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const s8 gUnknown_0850E812[] = {
|
static const s8 gUnknown_0850E812[16] = {
|
||||||
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const s8 gUnknown_0850E822[] = {
|
static const s8 gUnknown_0850E822[16] = {
|
||||||
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -8509,23 +8507,11 @@ void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
|
|||||||
sprite->data[6] = 0;
|
sprite->data[6] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s16 gUnknown_0850E840[] = {
|
|
||||||
16, 16, 32,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const u8 gUnknown_0850E846[] = {
|
|
||||||
0, 0, 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
u8 sub_809785C(struct Sprite *sprite)
|
u8 sub_809785C(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 v5[3];
|
s16 v5[] = {16, 16, 32};
|
||||||
u8 v6[3];
|
u8 v6[] = {0, 0, 1};
|
||||||
u8 v2;
|
u8 v2 = 0;
|
||||||
|
|
||||||
memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy
|
|
||||||
memcpy(v6, gUnknown_0850E846, 3);
|
|
||||||
v2 = 0;
|
|
||||||
|
|
||||||
if (sprite->data[4])
|
if (sprite->data[4])
|
||||||
Step1(sprite, sprite->data[3]);
|
Step1(sprite, sprite->data[3]);
|
||||||
@@ -8546,23 +8532,11 @@ u8 sub_809785C(struct Sprite *sprite)
|
|||||||
return v2;
|
return v2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s16 gUnknown_0850E84A[] = {
|
|
||||||
32, 32, 64,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const u8 gUnknown_0850E850[] = {
|
|
||||||
1, 1, 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
u8 sub_80978E4(struct Sprite *sprite)
|
u8 sub_80978E4(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 v5[3];
|
s16 v5[] = {32, 32, 64};
|
||||||
u8 v6[3];
|
u8 v6[] = {1, 1, 2};
|
||||||
u8 v2;
|
u8 v2 = 0;
|
||||||
|
|
||||||
memcpy(v5, gUnknown_0850E84A, 6);
|
|
||||||
memcpy(v6, gUnknown_0850E850, 3);
|
|
||||||
v2 = 0;
|
|
||||||
|
|
||||||
if (sprite->data[4] && !(sprite->data[6] & 1))
|
if (sprite->data[4] && !(sprite->data[6] & 1))
|
||||||
Step1(sprite, sprite->data[3]);
|
Step1(sprite, sprite->data[3]);
|
||||||
@@ -8590,12 +8564,9 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer)
|
|||||||
|
|
||||||
static bool8 WaitForMovementDelay(struct Sprite *sprite)
|
static bool8 WaitForMovementDelay(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->data[3]--;
|
if (--sprite->data[3] == 0)
|
||||||
|
|
||||||
if (sprite->data[3] == 0)
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
|
void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
|
||||||
@@ -8609,8 +8580,7 @@ bool8 SpriteAnimEnded(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
if (sprite->animEnded)
|
if (sprite->animEnded)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
|
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
|
||||||
@@ -8789,14 +8759,14 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
switch(sprite->tAnimNum)
|
switch(sprite->tAnimNum)
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
case UNION_ROOM_SPAWN_IN:
|
case UNION_ROOM_SPAWN_IN:
|
||||||
MoveUnionRoomObjectDown(sprite);
|
MoveUnionRoomObjectDown(sprite);
|
||||||
break;
|
break;
|
||||||
case UNION_ROOM_SPAWN_OUT:
|
case UNION_ROOM_SPAWN_OUT:
|
||||||
MoveUnionRoomObjectUp(sprite);
|
MoveUnionRoomObjectUp(sprite);
|
||||||
break;
|
break;
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
sprite->tAnimNum = 0;
|
sprite->tAnimNum = 0;
|
||||||
break;
|
break;
|
||||||
@@ -8877,8 +8847,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, firstFreeSlot;
|
||||||
u8 firstFreeSlot;
|
|
||||||
bool32 found;
|
bool32 found;
|
||||||
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
|
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -876,8 +876,7 @@ static void sub_800F498(u16 *a0, u8 *a1)
|
|||||||
|
|
||||||
static bool32 RfuProcessEnqueuedRecvBlock(void)
|
static bool32 RfuProcessEnqueuedRecvBlock(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, j;
|
||||||
u8 j;
|
|
||||||
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
|
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
|
||||||
u8 sp48[2 * (CMD_LENGTH - 1)];
|
u8 sp48[2 * (CMD_LENGTH - 1)];
|
||||||
u8 status;
|
u8 status;
|
||||||
@@ -923,7 +922,7 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
|
|||||||
|
|
||||||
static void HandleSendFailure(u8 unused, u32 flags)
|
static void HandleSendFailure(u8 unused, u32 flags)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j, temp;
|
||||||
|
|
||||||
const u8 *r10 = Rfu.sendBlock.payload;
|
const u8 *r10 = Rfu.sendBlock.payload;
|
||||||
for (i = 0; i < Rfu.sendBlock.count; i++)
|
for (i = 0; i < Rfu.sendBlock.count; i++)
|
||||||
@@ -933,14 +932,15 @@ static void HandleSendFailure(u8 unused, u32 flags)
|
|||||||
sResendBlock16[0] = RFU_COMMAND_0x8900 | i;
|
sResendBlock16[0] = RFU_COMMAND_0x8900 | i;
|
||||||
for (j = 0; j < 7; j++)
|
for (j = 0; j < 7; j++)
|
||||||
{
|
{
|
||||||
sResendBlock16[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0];
|
temp = j << 1;
|
||||||
|
sResendBlock16[j + 1] = (r10[i * 12 + temp + 1] << 8) | r10[i * 12 + temp];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < 7; j++)
|
for (j = 0; j < 7; j++)
|
||||||
{
|
{
|
||||||
sResendBlock8[2 * j + 1] = sResendBlock16[j] >> 8;
|
temp = j << 1;
|
||||||
sResendBlock8[2 * j + 0] = sResendBlock16[j];
|
sResendBlock8[temp + 1] = sResendBlock16[j] >> 8;
|
||||||
|
sResendBlock8[temp + 0] = sResendBlock16[j] & 0xff;
|
||||||
j++;j--; // Needed to match;
|
|
||||||
}
|
}
|
||||||
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
|
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
|
||||||
Rfu.sendBlock.failedFlags |= (1 << i);
|
Rfu.sendBlock.failedFlags |= (1 << i);
|
||||||
@@ -1024,8 +1024,7 @@ void sub_800F850(void)
|
|||||||
|
|
||||||
static void RfuHandleReceiveCommand(u8 unused)
|
static void RfuHandleReceiveCommand(u8 unused)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i, j;
|
||||||
u16 j;
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||||
{
|
{
|
||||||
@@ -1039,7 +1038,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
|||||||
if (gRfuLinkStatus->parentChild == MODE_CHILD)
|
if (gRfuLinkStatus->parentChild == MODE_CHILD)
|
||||||
{
|
{
|
||||||
Rfu.playerCount = gRecvCmds[i][1];
|
Rfu.playerCount = gRecvCmds[i][1];
|
||||||
Rfu.multiplayerId = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
|
Rfu.multiplayerId = sub_800F74C((u8 *)(&gRecvCmds[i][2]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RFU_COMMAND_0x8800:
|
case RFU_COMMAND_0x8800:
|
||||||
@@ -1238,10 +1237,9 @@ void sub_800FE50(void *a0)
|
|||||||
bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
|
bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
|
||||||
{
|
{
|
||||||
bool8 r4;
|
bool8 r4;
|
||||||
if (Rfu.callback != NULL)
|
if (Rfu.callback != NULL || gSendCmd[0] != 0)
|
||||||
return FALSE;
|
|
||||||
if (gSendCmd[0] != 0)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (Rfu.sendBlock.sending)
|
if (Rfu.sendBlock.sending)
|
||||||
{
|
{
|
||||||
sRfuDebug.unk_83++;
|
sRfuDebug.unk_83++;
|
||||||
@@ -1419,16 +1417,12 @@ void Rfu_SetCloseLinkCallback(void)
|
|||||||
|
|
||||||
static void SendReadyExitStandbyUntilAllReady(void)
|
static void SendReadyExitStandbyUntilAllReady(void)
|
||||||
{
|
{
|
||||||
u8 playerCount;
|
u8 i, playerCount;
|
||||||
u8 i;
|
|
||||||
|
|
||||||
if (GetMultiplayerId() != 0)
|
if (GetMultiplayerId() != 0 && Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
|
||||||
{
|
{
|
||||||
if (Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
|
RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY);
|
||||||
{
|
Rfu.resendExitStandbyTimer = 0;
|
||||||
RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY);
|
|
||||||
Rfu.resendExitStandbyTimer = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
playerCount = GetLinkPlayerCount();
|
playerCount = GetLinkPlayerCount();
|
||||||
for (i = 0; i < playerCount; i++)
|
for (i = 0; i < playerCount; i++)
|
||||||
@@ -1458,8 +1452,7 @@ static void LinkLeaderReadyToExitStandby(void)
|
|||||||
// RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll
|
// RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll
|
||||||
static void Rfu_LinkStandby(void)
|
static void Rfu_LinkStandby(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, playerCount;
|
||||||
u8 playerCount;
|
|
||||||
|
|
||||||
if (GetMultiplayerId() != 0)
|
if (GetMultiplayerId() != 0)
|
||||||
{
|
{
|
||||||
@@ -1555,28 +1548,28 @@ static bool8 CheckForLeavingGroupMembers(void)
|
|||||||
bool8 memberLeft = FALSE;
|
bool8 memberLeft = FALSE;
|
||||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||||
{
|
{
|
||||||
if (Rfu.partnerSendStatuses[i] < RFU_STATUS_JOIN_GROUP_OK
|
if (Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_OK
|
||||||
|| Rfu.partnerSendStatuses[i] > RFU_STATUS_JOIN_GROUP_NO)
|
|| Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_NO)
|
||||||
{
|
{
|
||||||
if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
|
continue;
|
||||||
|| gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
|
}
|
||||||
{
|
|
||||||
if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE)
|
|
||||||
{
|
|
||||||
Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP;
|
|
||||||
Rfu.partnerRecvStatuses[i] = RFU_STATUS_10;
|
|
||||||
rfu_clearSlot(TYPE_NI_RECV, i);
|
|
||||||
rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
|
|
||||||
memberLeft = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
|
||||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
|| gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
|
||||||
|
{
|
||||||
|
if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE)
|
||||||
|
{
|
||||||
|
Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP;
|
||||||
|
Rfu.partnerRecvStatuses[i] = RFU_STATUS_10;
|
||||||
rfu_clearSlot(TYPE_NI_RECV, i);
|
rfu_clearSlot(TYPE_NI_RECV, i);
|
||||||
{
|
rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
|
||||||
|
memberLeft = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
||||||
|
{
|
||||||
|
rfu_clearSlot(TYPE_NI_RECV, i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return memberLeft;
|
return memberLeft;
|
||||||
}
|
}
|
||||||
@@ -2097,8 +2090,7 @@ static void sub_80111FC(void)
|
|||||||
|
|
||||||
static void sub_801120C(u8 msg, u8 paramCount)
|
static void sub_801120C(u8 msg, u8 paramCount)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i, disconnectFlag = 0;
|
||||||
u8 disconnectFlag = 0;
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case LMAN_MSG_INITIALIZE_COMPLETED:
|
case LMAN_MSG_INITIALIZE_COMPLETED:
|
||||||
|
|||||||
@@ -894,76 +894,73 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
|
|||||||
{
|
{
|
||||||
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
|
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
|
||||||
}
|
}
|
||||||
|
GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
|
||||||
|
StringGetEnd10(dst);
|
||||||
|
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
|
||||||
|
if (boxId == TOTAL_BOXES_COUNT) // Party mon.
|
||||||
|
{
|
||||||
|
level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
|
||||||
|
gender = GetMonGender(&gPlayerParty[monId]);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
|
// Needed to match, feel free to remove.
|
||||||
StringGetEnd10(dst);
|
boxId++, boxId--;
|
||||||
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
|
monId++, monId--;
|
||||||
if (boxId == TOTAL_BOXES_COUNT) // Party mon.
|
|
||||||
{
|
|
||||||
level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
|
|
||||||
gender = GetMonGender(&gPlayerParty[monId]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Needed to match, feel free to remove.
|
|
||||||
boxId++;boxId--;
|
|
||||||
monId++;monId--;
|
|
||||||
|
|
||||||
boxMon = GetBoxedMonPtr(boxId, monId);
|
boxMon = GetBoxedMonPtr(boxId, monId);
|
||||||
gender = GetBoxMonGender(boxMon);
|
gender = GetBoxMonGender(boxMon);
|
||||||
level = GetLevelFromBoxMonExp(boxMon);
|
level = GetLevelFromBoxMonExp(boxMon);
|
||||||
}
|
|
||||||
|
|
||||||
if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species]))
|
|
||||||
gender = MON_GENDERLESS;
|
|
||||||
|
|
||||||
for (str = dst; *str != EOS; str++)
|
|
||||||
;
|
|
||||||
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_SKIP;
|
|
||||||
*(str++) = 60;
|
|
||||||
|
|
||||||
switch (gender)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
*(str++) = CHAR_SPACE;
|
|
||||||
break;
|
|
||||||
case MON_MALE:
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_COLOR;
|
|
||||||
*(str++) = TEXT_COLOR_RED;
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_SHADOW;
|
|
||||||
*(str++) = TEXT_COLOR_LIGHT_RED;
|
|
||||||
*(str++) = CHAR_MALE;
|
|
||||||
break;
|
|
||||||
case MON_FEMALE:
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_COLOR;
|
|
||||||
*(str++) = TEXT_COLOR_GREEN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_SHADOW;
|
|
||||||
*(str++) = TEXT_COLOR_LIGHT_GREEN;
|
|
||||||
*(str++) = CHAR_FEMALE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*(str++) = EXT_CTRL_CODE_BEGIN;
|
|
||||||
*(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
|
|
||||||
*(str++) = TEXT_COLOR_BLUE;
|
|
||||||
*(str++) = TEXT_COLOR_TRANSPARENT;
|
|
||||||
*(str++) = TEXT_COLOR_LIGHT_BLUE;
|
|
||||||
*(str++) = CHAR_SLASH;
|
|
||||||
*(str++) = CHAR_EXTRA_SYMBOL;
|
|
||||||
*(str++) = CHAR_LV_2;
|
|
||||||
str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3);
|
|
||||||
*(str++) = CHAR_SPACE;
|
|
||||||
*str = EOS;
|
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species]))
|
||||||
|
gender = MON_GENDERLESS;
|
||||||
|
|
||||||
|
for (str = dst; *str != EOS; str++)
|
||||||
|
;
|
||||||
|
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_SKIP;
|
||||||
|
*(str++) = 60;
|
||||||
|
|
||||||
|
switch (gender)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
*(str++) = CHAR_SPACE;
|
||||||
|
break;
|
||||||
|
case MON_MALE:
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_COLOR;
|
||||||
|
*(str++) = TEXT_COLOR_RED;
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_SHADOW;
|
||||||
|
*(str++) = TEXT_COLOR_LIGHT_RED;
|
||||||
|
*(str++) = CHAR_MALE;
|
||||||
|
break;
|
||||||
|
case MON_FEMALE:
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_COLOR;
|
||||||
|
*(str++) = TEXT_COLOR_GREEN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_SHADOW;
|
||||||
|
*(str++) = TEXT_COLOR_LIGHT_GREEN;
|
||||||
|
*(str++) = CHAR_FEMALE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(str++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
|
||||||
|
*(str++) = TEXT_COLOR_BLUE;
|
||||||
|
*(str++) = TEXT_COLOR_TRANSPARENT;
|
||||||
|
*(str++) = TEXT_COLOR_LIGHT_BLUE;
|
||||||
|
*(str++) = CHAR_SLASH;
|
||||||
|
*(str++) = CHAR_EXTRA_SYMBOL;
|
||||||
|
*(str++) = CHAR_LV_2;
|
||||||
|
str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||||
|
*(str++) = CHAR_SPACE;
|
||||||
|
*str = EOS;
|
||||||
|
|
||||||
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces
|
// Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
|
|||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
ctx->mode = 0;
|
ctx->mode = 0;
|
||||||
ctx->scriptPtr = 0;
|
ctx->scriptPtr = NULL;
|
||||||
ctx->stackDepth = 0;
|
ctx->stackDepth = 0;
|
||||||
ctx->nativePtr = 0;
|
ctx->nativePtr = NULL;
|
||||||
ctx->cmdTable = cmdTable;
|
ctx->cmdTable = cmdTable;
|
||||||
ctx->cmdTableEnd = cmdTableEnd;
|
ctx->cmdTableEnd = cmdTableEnd;
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void))
|
|||||||
void StopScript(struct ScriptContext *ctx)
|
void StopScript(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
ctx->mode = 0;
|
ctx->mode = 0;
|
||||||
ctx->scriptPtr = 0;
|
ctx->scriptPtr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 RunScriptCommand(struct ScriptContext *ctx)
|
bool8 RunScriptCommand(struct ScriptContext *ctx)
|
||||||
|
|||||||
Reference in New Issue
Block a user