summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/party_menu.s138
-rw-r--r--include/party_menu.h4
-rw-r--r--src/party_menu.c58
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;
+ }
+}