Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions include/enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -3665,7 +3665,7 @@ enum BattleStates {
BATTLE_STATE_END_TURN = 6,
BATTLE_STATE_BEGIN_PLAYER_TURN = 7,
BATTLE_STATE_BEGIN_PARTNER_TURN = 8,
BATTLE_STATE_9 = 9, // can be reached from BATTLE_STATE_PARTNER_MOVE if partner == nullptr
BATTLE_STATE_END_TEAM_TURN = 9, // can be reached from BATTLE_STATE_PARTNER_MOVE if partner == nullptr
Copy link
Copy Markdown
Member

@bates64 bates64 Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot I think we should introduce an idea: "team phase" and "enemy phase", the two of which constitute one entire turn.

Also, remove the comment.

BATTLE_STATE_SWITCH_TO_PLAYER = 10,
BATTLE_STATE_SWITCH_TO_PARTNER = 11,
BATTLE_STATE_PREPARE_MENU = 12,
Expand Down Expand Up @@ -3758,15 +3758,15 @@ enum BattleSubStates {
BTL_SUBSTATE_BEGIN_PARTNER_TURN_END_DELAY = 10,
BTL_SUBSTATE_BEGIN_PARTNER_TURN_RESET_STATE = 100,

// BATTLE_STATE_9
BTL_SUBSTATE_9_INIT = 0,
BTL_SUBSTATE_9_1 = 1,
BTL_SUBSTATE_9_2 = 2,
BTL_SUBSTATE_9_3 = 3,
BTL_SUBSTATE_9_4 = 4,
BTL_SUBSTATE_9_5 = 5,
BTL_SUBSTATE_9_6 = 6,
BTL_SUBSTATE_9_7 = 7,
// BATTLE_STATE_END_TEAM_TURN
BTL_SUBSTATE_END_TEAM_TURN_INIT = 0,
BTL_SUBSTATE_END_TEAM_TURN_PROCESS_STATUS = 1,
BTL_SUBSTATE_END_TEAM_TURN_AWAIT_SCRIPTS = 2,
BTL_SUBSTATE_END_TEAM_TURN_SWAP_POSITIONS = 3,
BTL_SUBSTATE_END_TEAM_TURN_HANDLE_MERLEE = 4,
BTL_SUBSTATE_END_TEAM_TURN_EXEC_PHASE_SCRIPTS = 5,
BTL_SUBSTATE_END_TEAM_TURN_AWAIT_PHASE_SCRIPTS = 6,
BTL_SUBSTATE_END_TEAM_TURN_DONE = 7,

// BATTLE_STATE_SWITCH_TO_PLAYER
// BATTLE_STATE_SWITCH_TO_PARTNER
Expand Down
4 changes: 2 additions & 2 deletions include/functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,8 +334,8 @@ void btl_state_update_begin_partner_turn(void);
void btl_state_draw_begin_partner_turn(void);
void btl_state_update_switch_to_partner(void);
void btl_state_draw_switch_to_partner(void);
void btl_state_update_9(void);
void btl_state_draw_9(void);
void btl_state_update_end_team_turn(void);
void btl_state_draw_end_team_turn(void);
void btl_state_update_prepare_menu(void);
void btl_state_draw_prepare_menu(void);
void btl_state_update_end_turn(void);
Expand Down
8 changes: 4 additions & 4 deletions src/battle/16C8E0.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,8 @@ void btl_update(void) {
case BATTLE_STATE_BEGIN_PARTNER_TURN:
btl_state_update_begin_partner_turn();
break;
case BATTLE_STATE_9:
btl_state_update_9();
case BATTLE_STATE_END_TEAM_TURN:
btl_state_update_end_team_turn();
break;
case BATTLE_STATE_BEGIN_TURN:
btl_state_update_begin_turn();
Expand Down Expand Up @@ -528,8 +528,8 @@ void btl_draw_ui(void) {
case BATTLE_STATE_BEGIN_PARTNER_TURN:
btl_state_draw_begin_partner_turn();
break;
case BATTLE_STATE_9:
btl_state_draw_9();
case BATTLE_STATE_END_TEAM_TURN:
btl_state_draw_end_team_turn();
break;
case BATTLE_STATE_BEGIN_TURN:
btl_state_draw_begin_turn();
Expand Down
2 changes: 1 addition & 1 deletion src/battle/area/hos/actor/goombario_tutor.c
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ EvtScript N(EVS_ManageTutorial) = {
Call(UseIdleAnimation, ACTOR_PARTNER, false)
Call(ActorSpeak, MSG_HOS_001D, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, true)
Call(WaitForState, BATTLE_STATE_9)
Call(WaitForState, BATTLE_STATE_END_TEAM_TURN)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(UseIdleAnimation, ACTOR_PARTNER, false)
Expand Down
52 changes: 26 additions & 26 deletions src/battle/btl_states_actions.c
Original file line number Diff line number Diff line change
Expand Up @@ -1110,11 +1110,11 @@ void btl_state_update_begin_partner_turn(void) {
btl_cam_move(5);
gBattleSubState = BTL_SUBSTATE_BEGIN_PARTNER_TURN_RESET_STATE;
} else {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
return;
}
} else {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
return;
}
}
Expand Down Expand Up @@ -1198,7 +1198,7 @@ void btl_state_update_begin_partner_turn(void) {
btl_set_state(BATTLE_STATE_SWITCH_TO_PARTNER);
} else {
gBattleStatus.flags2 |= BS_FLAGS2_PARTNER_TURN_USED;
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
}
}
}
Expand Down Expand Up @@ -1236,7 +1236,7 @@ void btl_state_update_switch_to_partner(void) {
void btl_state_draw_switch_to_partner(void) {
}

void btl_state_update_9(void) {
void btl_state_update_end_team_turn(void) {
BattleStatus* battleStatus = &gBattleStatus;
Actor* player = battleStatus->playerActor;
Actor* partner = battleStatus->partnerActor;
Expand All @@ -1248,7 +1248,7 @@ void btl_state_update_9(void) {

s32 oldKoDuration;

if (gBattleSubState == BTL_SUBSTATE_9_INIT) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_INIT) {
if (!(gBattleStatus.flags2 & BS_FLAGS2_PLAYER_TURN_USED)) {
btl_set_state(BATTLE_STATE_SWITCH_TO_PLAYER);
return;
Expand All @@ -1268,15 +1268,15 @@ void btl_state_update_9(void) {
partner->flags |= ACTOR_FLAG_USING_IDLE_ANIM;
}

gBattleSubState = BTL_SUBSTATE_9_1;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_PROCESS_STATUS;
D_8029F258 = 0;
gBattleStatus.flags2 &= ~BS_FLAGS2_PLAYER_TURN_USED;
gBattleStatus.flags2 &= ~BS_FLAGS2_PARTNER_TURN_USED;
gBattleStatus.flags2 &= ~BS_FLAGS2_OVERRIDE_INACTIVE_PLAYER;
gBattleStatus.flags2 &= ~BS_FLAGS2_OVERRIDE_INACTIVE_PARTNER;
}

if (gBattleSubState == BTL_SUBSTATE_9_1) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_PROCESS_STATUS) {
Copy link
Copy Markdown
Member

@bates64 bates64 Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot This isn't particularly descriptive. It looks like this is applying pre-enemy-phase status effects. Can you find out what D_8029F258 is?

waitingForScript = false;
for (i = 0; i < ARRAY_COUNT(battleStatus->enemyActors); i++) {
actor = battleStatus->enemyActors[i];
Expand Down Expand Up @@ -1359,11 +1359,11 @@ void btl_state_update_9(void) {
}
}
}
gBattleSubState = BTL_SUBSTATE_9_2;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_AWAIT_SCRIPTS;
}
}

if (gBattleSubState == BTL_SUBSTATE_9_2) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_AWAIT_SCRIPTS) {
// wait for player HandleEvent script to finish
if(player->handleEventScript != nullptr && does_script_exist(player->handleEventScriptID)) {
goto WAITING;
Expand Down Expand Up @@ -1402,9 +1402,9 @@ void btl_state_update_9(void) {

btl_cam_use_preset(BTL_CAM_DEFAULT);
if (partner == nullptr || !(gBattleStatus.flags1 & BS_FLAGS1_PLAYER_IN_BACK)) {
gBattleSubState = BTL_SUBSTATE_9_4;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_HANDLE_MERLEE;
} else if (gBattleStatus.flags2 & BS_FLAGS2_PEACH_BATTLE) {
gBattleSubState = BTL_SUBSTATE_9_4;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_HANDLE_MERLEE;
} else {
player->flags &= ~ACTOR_FLAG_SHOW_STATUS_ICONS;
partner->flags &= ~ACTOR_FLAG_SHOW_STATUS_ICONS;
Expand All @@ -1426,12 +1426,12 @@ void btl_state_update_9(void) {
}
state->moveTime = 4;
state->angle = 0.0f;
gBattleSubState = BTL_SUBSTATE_9_3;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_SWAP_POSITIONS;
}
}
WAITING:

if (gBattleSubState == BTL_SUBSTATE_9_3) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_SWAP_POSITIONS) {
if (partner->state.moveTime != 0) {
partner->curPos.x += (partner->state.goalPos.x - partner->curPos.x) / partner->state.moveTime;
partner->curPos.z += (partner->state.goalPos.z - partner->curPos.z) / partner->state.moveTime;
Expand Down Expand Up @@ -1460,12 +1460,12 @@ void btl_state_update_9(void) {
player->homePos.x = player->curPos.x;
player->homePos.z = player->curPos.z;
}
gBattleSubState = BTL_SUBSTATE_9_4;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_HANDLE_MERLEE;
gBattleStatus.flags1 &= ~BS_FLAGS1_PLAYER_IN_BACK;
}
}

if (gBattleSubState == BTL_SUBSTATE_9_4) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_HANDLE_MERLEE) {
if (D_8029F258 != 0) {
D_8029F258--;
} else {
Expand All @@ -1485,15 +1485,15 @@ void btl_state_update_9(void) {
partner->flags &= ~ACTOR_FLAG_SHOW_STATUS_ICONS;
partner->flags |= ACTOR_FLAG_USING_IDLE_ANIM;
}
gBattleSubState = BTL_SUBSTATE_9_5;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_EXEC_PHASE_SCRIPTS;
gBattleStatus.flags2 &= ~BS_FLAGS2_PLAYER_TURN_USED;
gBattleStatus.flags2 &= ~BS_FLAGS2_PARTNER_TURN_USED;
gBattleStatus.flags2 &= ~BS_FLAGS2_OVERRIDE_INACTIVE_PLAYER;
gBattleStatus.flags2 &= ~BS_FLAGS2_OVERRIDE_INACTIVE_PARTNER;
}
}

if (gBattleSubState == BTL_SUBSTATE_9_5) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_EXEC_PHASE_SCRIPTS) {
if (player->takeTurnScript == nullptr || (does_script_exist(player->takeTurnScriptID) == 0)) {
player->takeTurnScript = nullptr;

Expand All @@ -1507,29 +1507,29 @@ void btl_state_update_9(void) {
script->owner1.enemyID = i | ACTOR_CLASS_ENEMY;
}
}
gBattleSubState = BTL_SUBSTATE_9_6;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_AWAIT_PHASE_SCRIPTS;
}
}

waitingForScript = false;
if (gBattleSubState == BTL_SUBSTATE_9_6) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_AWAIT_PHASE_SCRIPTS) {
for (i = 0; i < ARRAY_COUNT(battleStatus->enemyActors); i++) {
actor = battleStatus->enemyActors[i];
if (actor != nullptr && actor->handlePhaseSource != nullptr && does_script_exist(actor->handleBatttlePhaseScriptID)) {
waitingForScript = true;
}
}
if (!waitingForScript) {
gBattleSubState = BTL_SUBSTATE_9_7;
gBattleSubState = BTL_SUBSTATE_END_TEAM_TURN_DONE;
}
}

if (gBattleSubState == BTL_SUBSTATE_9_7) {
if (gBattleSubState == BTL_SUBSTATE_END_TEAM_TURN_DONE) {
btl_set_state(BATTLE_STATE_NEXT_ENEMY);
}
}

void btl_state_draw_9(void) {
void btl_state_draw_end_team_turn(void) {
}

void btl_state_update_prepare_menu(void) {
Expand Down Expand Up @@ -2361,7 +2361,7 @@ void btl_state_update_run_away(void) {
&& (partner == nullptr || !does_script_exist(partner->takeTurnScriptID))
&& battleStatus->stateFreezeCount == 0
) {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
}
break;
}
Expand Down Expand Up @@ -3139,7 +3139,7 @@ void btl_state_update_end_player_turn(void) {
if (!(gBattleStatus.flags2 & BS_FLAGS2_PEACH_BATTLE)) {
btl_set_state(BATTLE_STATE_BEGIN_PARTNER_TURN);
} else {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
}
}
}
Expand All @@ -3164,7 +3164,7 @@ void btl_state_update_partner_move(void) {
switch (gBattleSubState) {
case BTL_SUBSTATE_PARTNER_MOVE_INIT:
if (partner == nullptr) {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
break;
}
battleStatus->stateFreezeCount = 0;
Expand Down Expand Up @@ -3431,7 +3431,7 @@ void btl_state_update_end_partner_turn(void) {
battleStatus->unk_94 = 0;
btl_set_state(BATTLE_STATE_END_TURN);
} else {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/battle/btl_states_menus.c
Original file line number Diff line number Diff line change
Expand Up @@ -4010,7 +4010,7 @@ void btl_state_update_partner_menu(void) {
battleStatus->selectedMoveID = MOVE_NONE;
battleStatus->curAttackElement = 0;
if (!can_switch_to_partner()) {
btl_set_state(BATTLE_STATE_9);
btl_set_state(BATTLE_STATE_END_TEAM_TURN);
} else {
btl_cam_use_preset(BTL_CAM_DEFAULT);
battleStatus->flags1 |= BS_FLAGS1_MENU_OPEN;
Expand Down