Add P_ASK_MOVE_CONFIRMATION (#7132)

This commit is contained in:
psf 2025-06-27 01:11:41 -07:00 committed by GitHub
parent 206d2503d8
commit b60c897b4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 42 additions and 7 deletions

View File

@ -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::

View File

@ -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

View File

@ -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
{

View File

@ -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;

View File

@ -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)