summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-09-18 00:32:52 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-09-18 00:32:52 -0700
commitad1f73f49e53f166bf3d4c9610d2fa60977fb6a3 (patch)
treedf5606e0dc4e6136f9af561d611deb2cf3545fc2 /src
parentee45710b2b62b099f1d1919678ca1f21839b1251 (diff)
Decompile Task_RareCandy3
Diffstat (limited to 'src')
-rw-r--r--src/party_menu.c64
-rw-r--r--src/pokemon_menu.c1
2 files changed, 64 insertions, 1 deletions
diff --git a/src/party_menu.c b/src/party_menu.c
index c57753085..c8a59c390 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -5,8 +5,10 @@
#include "battle_party_menu.h"
#include "data2.h"
#include "event_data.h"
+#include "evolution_scene.h"
#include "item.h"
#include "item_use.h"
+#include "item_menu.h"
#include "mail_data.h"
#include "main.h"
#include "menu.h"
@@ -69,6 +71,7 @@ extern u8 gUnknown_0202E8FA;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
+extern u16 gMoveToLearn;
//extern const u16 gUnknown_083769A8[][6];
//extern const u8 gUnknown_083769A8[][12];
@@ -81,6 +84,7 @@ extern const u8 *const gUnknown_08376D04[NUM_STATS];
extern const struct UnknownStruct5 gUnknown_08376BB4[][6];
static void sub_806E884(u8 taskId);
+void sub_8070D90(u8 taskId);
void PartyMenuTryDrawHPBar(u8, struct Pokemon *);
/*
@@ -1549,3 +1553,63 @@ void RedrawPokemonInfoInMenu(u8 a, struct Pokemon *pokemon)
task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + a * 2], 7);
ewram1B000.unk261 = 2;
}
+
+void Task_RareCandy3(u8 taskId)
+{
+ if (WaitFanfare(0))
+ {
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ u16 learnedMove;
+ u16 evolutionSpecies;
+
+ MenuZeroFillWindowRect(WINDOW_LEFT + 8, 0, WINDOW_RIGHT + 3, 7);
+
+ learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, 1);
+ ewram1B000.unk282 = 1;
+
+ 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.
+ gTasks[taskId].func = sub_8070C54;
+ 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;
+ }
+ }
+ }
+}
diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c
index bc5150a16..dd6b576a3 100644
--- a/src/pokemon_menu.c
+++ b/src/pokemon_menu.c
@@ -57,7 +57,6 @@ void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3);
void sub_808A520(void);
void sub_80A61D0(void);
void CB2_InitFlyRegionMap(void);
-u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
bool8 SetUpFieldMove_Cut(void);
bool8 SetUpFieldMove_Flash(void);
bool8 SetUpFieldMove_RockSmash(void);