diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index fc18ab1e76..f7e3c382d5 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -5434,10 +5434,12 @@ BattleScript_AskToLearnMove:: waitstate setbyte sLEARNMOVE_STATE, 0 yesnoboxlearnmove BattleScript_ForgotAndLearnedNewMove +.if P_ASK_MOVE_CONFIRMATION == TRUE printstring STRINGID_STOPLEARNINGMOVE waitstate setbyte sLEARNMOVE_STATE, 0 yesnoboxstoplearningmove BattleScript_AskToLearnMove +.endif printstring STRINGID_DIDNOTLEARNMOVE goto BattleScript_TryLearnMoveLoop BattleScript_ForgotAndLearnedNewMove:: diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 2345cc3f36..92b0f3bd64 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -56,6 +56,7 @@ #define P_SHOW_TERA_TYPE GEN_8 // Since Gen 9, the Tera Type is shown on the summary screen. #define P_TM_LITERACY GEN_LATEST // Since Gen 6, TM illiterate Pokémon can learn TMs that teach moves that are in their level-up learnsets. #define P_CAN_FORGET_HIDDEN_MOVE FALSE // If TRUE, Pokémon can forget any move, even if it is a Hidden Move. +#define P_ASK_MOVE_CONFIRMATION FALSE // If FALSE, when a player decides not to learn a Move, the game does not ask the player for confirmation. #define P_EGG_CYCLE_LENGTH GEN_LATEST // Since Gen 8, egg cycles take half as many steps as before. Previous Gens have some varied step counts around 255. #define P_ONLY_OBTAINABLE_SHINIES FALSE // If TRUE, Pokémon encountered in the Battle Pyramid won't be shiny. #define P_NO_SHINIES_WITHOUT_POKEBALLS FALSE // If TRUE, Pokémon encountered when the player is out of Poké Balls won't be shiny diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 73f8c78527..c746414958 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -910,7 +910,7 @@ static void Task_EvolutionScene(u8 taskId) BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3]); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT; - gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL; + gTasks[taskId].tLearnMoveNoState = (P_ASK_MOVE_CONFIRMATION) ? MVSTATE_ASK_CANCEL : MVSTATE_CANCEL; gTasks[taskId].tLearnMoveState++; } case MVSTATE_PRINT_YES_NO: @@ -986,7 +986,7 @@ static void Task_EvolutionScene(u8 taskId) if (var == MAX_MON_MOVES) { // Didn't select move slot - gTasks[taskId].tLearnMoveState = MVSTATE_ASK_CANCEL; + gTasks[taskId].tLearnMoveNoState = (P_ASK_MOVE_CONFIRMATION) ? MVSTATE_ASK_CANCEL : MVSTATE_CANCEL; } else { @@ -1313,7 +1313,7 @@ static void Task_TradeEvolutionScene(u8 taskId) BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveYesState = T_MVSTATE_SHOW_MOVE_SELECT; - gTasks[taskId].tLearnMoveNoState = T_MVSTATE_ASK_CANCEL; + gTasks[taskId].tLearnMoveNoState = (P_ASK_MOVE_CONFIRMATION) ? T_MVSTATE_ASK_CANCEL : T_MVSTATE_CANCEL; gTasks[taskId].tLearnMoveState++; } case T_MVSTATE_PRINT_YES_NO: @@ -1370,7 +1370,7 @@ static void Task_TradeEvolutionScene(u8 taskId) if (var == MAX_MON_MOVES) { // Didn't select move slot - gTasks[taskId].tLearnMoveState = T_MVSTATE_ASK_CANCEL; + gTasks[taskId].tLearnMoveNoState = (P_ASK_MOVE_CONFIRMATION) ? T_MVSTATE_ASK_CANCEL : T_MVSTATE_CANCEL; } else { diff --git a/src/move_relearner.c b/src/move_relearner.c index 7ac7a6bb11..ee700beb44 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -603,7 +603,21 @@ static void DoMoveRelearnerMain(void) } else if (selection == MENU_B_PRESSED || selection == 1) { - sMoveRelearnerStruct->state = MENU_STATE_PRINT_STOP_TEACHING; + if (P_ASK_MOVE_CONFIRMATION) + { + sMoveRelearnerStruct->state = MENU_STATE_PRINT_STOP_TEACHING; + } + else + { + if (sMoveRelearnerMenuState.showContestInfo == FALSE) + { + sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE; + } + else if (sMoveRelearnerMenuState.showContestInfo == TRUE) + { + sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE; + } + } } } break; diff --git a/src/party_menu.c b/src/party_menu.c index 404157c497..0954715a5d 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -414,6 +414,7 @@ static void CB2_ReturnToPartyMenuWhileLearningMove(void); static void Task_ReturnToPartyMenuWhileLearningMove(u8); static void DisplayPartyMenuForgotMoveMessage(u8); static void Task_PartyMenuReplaceMove(u8); +static void Task_HandleStopLearningMove(u8 taskId); static void Task_StopLearningMoveYesNo(u8); static void Task_HandleStopLearningMoveYesNoInput(u8); static void Task_TryLearningNextMoveAfterText(u8); @@ -5567,11 +5568,28 @@ static void Task_PartyMenuReplaceMove(u8 taskId) static void StopLearningMovePrompt(u8 taskId) { + if (P_ASK_MOVE_CONFIRMATION == FALSE) + { + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + GetMonNickname(mon, gStringVar1); + } + StringCopy(gStringVar2, GetMoveName(gPartyMenu.data1)); - StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2); + StringExpandPlaceholders(gStringVar4, (P_ASK_MOVE_CONFIRMATION) ? gText_StopLearningMove2 : gText_MoveNotLearned); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = Task_StopLearningMoveYesNo; + gTasks[taskId].func = (P_ASK_MOVE_CONFIRMATION) ? Task_StopLearningMoveYesNo : Task_HandleStopLearningMove; +} + +static void Task_HandleStopLearningMove(u8 taskId) +{ + if (IsPartyMenuTextPrinterActive() != TRUE) + { + if (gPartyMenu.learnMoveState == 1) + gTasks[taskId].func = Task_TryLearningNextMoveAfterText; + else + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + } } static void Task_StopLearningMoveYesNo(u8 taskId)