diff options
| -rw-r--r-- | asm/party_menu.s | 138 | ||||
| -rw-r--r-- | include/party_menu.h | 4 | ||||
| -rw-r--r-- | src/party_menu.c | 58 | 
3 files changed, 56 insertions, 144 deletions
| diff --git a/asm/party_menu.s b/asm/party_menu.s index cee9edf14..7c55732b9 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -7448,144 +7448,6 @@ PartyMenuGetPopupMenuFunc: @ 806E81C      .section .text_8070968 -	thumb_func_start sub_8070C54 -sub_8070C54: @ 8070C54 -	push {r4-r7,lr} -	lsls r0, 24 -	lsrs r6, r0, 24 -	ldr r7, _08070C78 @ =0x0201c000 -	ldr r0, [r7] -	movs r1, 0 -	bl MonTryLearningNewMove -	lsls r0, 16 -	lsrs r4, r0, 16 -	ldr r0, _08070C7C @ =0x0000fffe -	cmp r4, r0 -	beq _08070D28 -	cmp r4, r0 -	bgt _08070C80 -	cmp r4, 0 -	beq _08070C8C -	b _08070D30 -	.align 2, 0 -_08070C78: .4byte 0x0201c000 -_08070C7C: .4byte 0x0000fffe -_08070C80: -	ldr r0, _08070C88 @ =0x0000ffff -	cmp r4, r0 -	beq _08070CC8 -	b _08070D30 -	.align 2, 0 -_08070C88: .4byte 0x0000ffff -_08070C8C: -	ldr r0, [r7] -	movs r1, 0 -	movs r2, 0 -	bl GetEvolutionTargetSpecies -	lsls r0, 16 -	lsrs r2, r0, 16 -	cmp r2, 0 -	beq _08070CC0 -	ldr r1, _08070CB8 @ =gCB2_AfterEvolution -	ldr r0, _08070CBC @ =sub_80A53F8 -	str r0, [r1] -	ldr r0, [r7] -	ldrb r3, [r7, 0x5] -	adds r1, r2, 0 -	movs r2, 0x1 -	bl BeginEvolutionScene -	adds r0, r6, 0 -	bl DestroyTask -	b _08070D68 -	.align 2, 0 -_08070CB8: .4byte gCB2_AfterEvolution -_08070CBC: .4byte sub_80A53F8 -_08070CC0: -	adds r0, r6, 0 -	bl sub_8070D90 -	b _08070D68 -_08070CC8: -	ldr r0, [r7] -	ldr r1, _08070D08 @ =gStringVar1 -	bl GetMonNickname -	ldr r0, _08070D0C @ =gStringVar2 -	ldr r5, _08070D10 @ =gMoveToLearn -	ldrh r2, [r5] -	movs r1, 0xD -	muls r1, r2 -	ldr r2, _08070D14 @ =gMoveNames -	adds r1, r2 -	bl StringCopy -	ldr r4, _08070D18 @ =gStringVar4 -	ldr r1, _08070D1C @ =gOtherText_WantsToLearn -	adds r0, r4, 0 -	bl StringExpandPlaceholders -	adds r0, r4, 0 -	movs r1, 0x1 -	bl sub_806E834 -	ldrh r0, [r5] -	strh r0, [r7, 0x8] -	ldr r1, _08070D20 @ =gTasks -	lsls r0, r6, 2 -	adds r0, r6 -	lsls r0, 3 -	adds r0, r1 -	ldr r1, _08070D24 @ =sub_806F358 -	b _08070D66 -	.align 2, 0 -_08070D08: .4byte gStringVar1 -_08070D0C: .4byte gStringVar2 -_08070D10: .4byte gMoveToLearn -_08070D14: .4byte gMoveNames -_08070D18: .4byte gStringVar4 -_08070D1C: .4byte gOtherText_WantsToLearn -_08070D20: .4byte gTasks -_08070D24: .4byte sub_806F358 -_08070D28: -	adds r0, r6, 0 -	bl sub_8070C54 -	b _08070D68 -_08070D30: -	ldr r0, _08070D70 @ =0x0201c000 -	ldr r0, [r0] -	ldr r1, _08070D74 @ =gStringVar1 -	bl GetMonNickname -	ldr r0, _08070D78 @ =gStringVar2 -	movs r1, 0xD -	muls r1, r4 -	ldr r2, _08070D7C @ =gMoveNames -	adds r1, r2 -	bl StringCopy -	ldr r4, _08070D80 @ =gStringVar4 -	ldr r1, _08070D84 @ =gOtherText_LearnedMove -	adds r0, r4, 0 -	bl StringExpandPlaceholders -	adds r0, r4, 0 -	movs r1, 0x1 -	bl sub_806E834 -	ldr r1, _08070D88 @ =gTasks -	lsls r0, r6, 2 -	adds r0, r6 -	lsls r0, 3 -	adds r0, r1 -	ldr r1, _08070D8C @ =Task_TeamMonTMMove3 -_08070D66: -	str r1, [r0] -_08070D68: -	pop {r4-r7} -	pop {r0} -	bx r0 -	.align 2, 0 -_08070D70: .4byte 0x0201c000 -_08070D74: .4byte gStringVar1 -_08070D78: .4byte gStringVar2 -_08070D7C: .4byte gMoveNames -_08070D80: .4byte gStringVar4 -_08070D84: .4byte gOtherText_LearnedMove -_08070D88: .4byte gTasks -_08070D8C: .4byte Task_TeamMonTMMove3 -	thumb_func_end sub_8070C54 -  	thumb_func_start sub_8070D90  sub_8070D90: @ 8070D90  	push {r4,lr} diff --git a/include/party_menu.h b/include/party_menu.h index b1c6ccd02..68af9669b 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -122,8 +122,6 @@ void sub_806E6F0();  void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);  void sub_806E7D0(u8, const struct PartyPopupMenu *);  TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); -void Task_RareCandy3(u8); -void sub_8070C54(u8);  void DoEvolutionStoneItemEffect(u8, u16, TaskFunc);  u8 GetItemEffectType();  u8 sub_806E834(const u8 *message, u8 arg1); @@ -168,6 +166,8 @@ void Task_RareCandy2(u8);  void PrintStatGrowthsInLevelUpWindow(u8 taskId);  void PrintNewStatsInLevelUpWindow(u8 taskId);  void RedrawPokemonInfoInMenu(u8, struct Pokemon *); +void Task_RareCandy3(u8); +void TeachMonMoveInPartyMenu(u8);  void sub_806CA60(u8 taskId);  void sub_806CD5C(u8 taskId);  void DoTakeMail(u8 taskId, TaskFunc func); diff --git a/src/party_menu.c b/src/party_menu.c index c8a59c390..49c421b54 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -598,7 +598,7 @@ void Task_TeamMonTMMove4(u8 taskId)              SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5);              if (ewram1B000.unk282 == 1)              { -                sub_8070C54(taskId); +                TeachMonMoveInPartyMenu(taskId);              }              else              { @@ -616,7 +616,7 @@ void sub_806F2FC(u8 taskId)          SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5);          if (ewram1B000.unk282 == 1)          { -            sub_8070C54(taskId); +            TeachMonMoveInPartyMenu(taskId);          }          else          { @@ -1565,7 +1565,7 @@ void Task_RareCandy3(u8 taskId)              MenuZeroFillWindowRect(WINDOW_LEFT + 8, 0, WINDOW_RIGHT + 3, 7); -            learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, 1); +            learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE);              ewram1B000.unk282 = 1;              switch (learnedMove) @@ -1597,7 +1597,7 @@ void Task_RareCandy3(u8 taskId)                      break;                  case 0xFFFE:                      // Move was already known by the mon. -                    gTasks[taskId].func = sub_8070C54; +                    gTasks[taskId].func = TeachMonMoveInPartyMenu;                      break;                  default:                      // Mon automatically learned a move because it knew less than four moves. @@ -1613,3 +1613,53 @@ void Task_RareCandy3(u8 taskId)          }      }  } + +void TeachMonMoveInPartyMenu(u8 taskId) +{ +    u16 learnedMove; +    u16 evolutionSpecies; + +    learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE); +    switch (learnedMove) +    { +        case 0: +            // No move is learned. +            evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0); +            if (evolutionSpecies != 0) +            { +                gCB2_AfterEvolution = sub_80A53F8; +                BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5); +                DestroyTask(taskId); +            } +            else +            { +                sub_8070D90(taskId); +            } +            break; +        case 0xFFFF: +            // Mon already knows 4 moves. +            GetMonNickname(ewram1C000.pokemon, gStringVar1); +            StringCopy(gStringVar2, gMoveNames[gMoveToLearn]); + +            StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); +            sub_806E834(gStringVar4, 1); + +            ewram1C000.unk8 = gMoveToLearn; +            gTasks[taskId].func = sub_806F358; +            break; +        case 0xFFFE: +            // Move was already known by the mon. Go on the the next move to be learned. +            TeachMonMoveInPartyMenu(taskId); +            break; +        default: +            // Mon automatically learned a move because it knew less than four moves. +            GetMonNickname(ewram1C000.pokemon, gStringVar1); +            StringCopy(gStringVar2, gMoveNames[learnedMove]); + +            StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); +            sub_806E834(gStringVar4, 1); + +            gTasks[taskId].func = Task_TeamMonTMMove3; +            break; +    } +} | 
