Skip to content

Commit fa60a5a

Browse files
Fixed typo in sMoveRelearnerMenuState (pret#2155)
1 parent bfa3e4a commit fa60a5a

File tree

10 files changed

+94
-65
lines changed

10 files changed

+94
-65
lines changed

include/global.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ struct SaveBlock2
518518
u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
519519
u16 optionsBattleSceneOff:1; // whether battle animations are disabled
520520
u16 regionMapZoom:1; // whether the map is zoomed in
521+
u16 expShare:1;
521522
//u16 padding1:4;
522523
//u16 padding2;
523524
/*0x18*/ struct Pokedex pokedex;

include/item_use.h

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,36 @@
11
#ifndef GUARD_ITEM_USE_H
22
#define GUARD_ITEM_USE_H
33

4-
void ItemUseOutOfBattle_Mail(u8 taskId);
5-
void ItemUseOutOfBattle_Bike(u8 taskId);
6-
void ItemUseOutOfBattle_Rod(u8 taskId);
7-
void ItemUseOutOfBattle_Itemfinder(u8 var);
8-
void ItemUseOutOfBattle_PokeblockCase(u8 taskId);
9-
void ItemUseOutOfBattle_CoinCase(u8 taskId);
10-
void ItemUseOutOfBattle_PowderJar(u8 taskId);
11-
void ItemUseOutOfBattle_WailmerPail(u8 taskId);
12-
void ItemUseOutOfBattle_Medicine(u8 taskId);
13-
void ItemUseOutOfBattle_ReduceEV(u8 taskId);
14-
void ItemUseOutOfBattle_SacredAsh(u8 taskId);
15-
void ItemUseOutOfBattle_PPRecovery(u8 taskId);
16-
void ItemUseOutOfBattle_PPUp(u8 taskId);
17-
void ItemUseOutOfBattle_RareCandy(u8 taskId);
18-
void ItemUseOutOfBattle_TMHM(u8 taskId);
19-
void ItemUseOutOfBattle_Repel(u8 taskId);
20-
void ItemUseOutOfBattle_EscapeRope(u8 taskId);
21-
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId);
22-
void ItemUseOutOfBattle_EvolutionStone(u8 taskId);
23-
void ItemUseOutOfBattle_Berry(u8 taskId);
24-
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
25-
void ItemUseOutOfBattle_CannotUse(u8 taskId);
26-
void ItemUseInBattle_PokeBall(u8 taskId);
27-
void ItemUseInBattle_StatIncrease(u8 taskId);
28-
void ItemUseInBattle_Medicine(u8 taskId);
29-
void ItemUseInBattle_PPRecovery(u8 taskId);
30-
void ItemUseInBattle_Escape(u8 taskId);
31-
void ItemUseInBattle_EnigmaBerry(u8 taskId);
4+
void ItemUseOutOfBattle_Mail(u8);
5+
void ItemUseOutOfBattle_Bike(u8);
6+
void ItemUseOutOfBattle_Rod(u8);
7+
void ItemUseOutOfBattle_Itemfinder(u8);
8+
void ItemUseOutOfBattle_PokeblockCase(u8);
9+
void ItemUseOutOfBattle_CoinCase(u8);
10+
void ItemUseOutOfBattle_PowderJar(u8);
11+
void ItemUseOutOfBattle_SSTicket(u8);
12+
void ItemUseOutOfBattle_WailmerPail(u8);
13+
void ItemUseOutOfBattle_Medicine(u8);
14+
void ItemUseOutOfBattle_ReduceEV(u8);
15+
void ItemUseOutOfBattle_SacredAsh(u8);
16+
void ItemUseOutOfBattle_PPRecovery(u8);
17+
void ItemUseOutOfBattle_PPUp(u8);
18+
void ItemUseOutOfBattle_RareCandy(u8);
19+
void ItemUseOutOfBattle_TMHM(u8);
20+
void ItemUseOutOfBattle_Repel(u8);
21+
void ItemUseOutOfBattle_EscapeRope(u8);
22+
void ItemUseOutOfBattle_BlackWhiteFlute(u8);
23+
void ItemUseOutOfBattle_EvolutionStone(u8);
24+
void ItemUseOutOfBattle_Berry(u8);
25+
void ItemUseOutOfBattle_EnigmaBerry(u8);
26+
void ItemUseOutOfBattle_CannotUse(u8);
27+
void ItemUseOutOfBattle_ExpShare(u8);
28+
void ItemUseInBattle_PokeBall(u8);
29+
void ItemUseInBattle_StatIncrease(u8);
30+
void ItemUseInBattle_Medicine(u8);
31+
void ItemUseInBattle_PPRecovery(u8);
32+
void ItemUseInBattle_Escape(u8);
33+
void ItemUseInBattle_EnigmaBerry(u8);
3234
void Task_UseDigEscapeRopeOnField(u8 taskId);
3335
bool8 CanUseDigOrEscapeRopeOnCurMap(void);
3436
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);

include/strings.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3019,6 +3019,10 @@ extern const u8 gText_PkmnForSwap[];
30193019
extern const u8 gText_SamePkmnInPartyAlready[];
30203020
extern const u8 gText_Cancel3[];
30213021

3022+
// Exp. Share
3023+
extern const u8 gText_ExpShareOn[];
3024+
extern const u8 gText_ExpShareOff[];
3025+
30223026
// Naming Screen
30233027
extern const u8 gText_MoveOkBack[];
30243028
extern const u8 gText_YourName[];

src/battle_script_commands.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,7 +3258,6 @@ static void Cmd_getexp(void)
32583258
s32 i; // also used as stringId
32593259
u8 holdEffect;
32603260
s32 sentIn;
3261-
s32 viaExpShare = 0;
32623261
u16 *exp = &gBattleStruct->expValue;
32633262

32643263
gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -3302,20 +3301,17 @@ static void Cmd_getexp(void)
33023301
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
33033302
else
33043303
holdEffect = GetItemHoldEffect(item);
3305-
3306-
if (holdEffect == HOLD_EFFECT_EXP_SHARE)
3307-
viaExpShare++;
33083304
}
33093305

33103306
calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7;
33113307

3312-
if (viaExpShare) // at least one mon is getting exp via exp share
3308+
if (gSaveBlock2Ptr->expShare) // exp share is turned on
33133309
{
33143310
*exp = SAFE_DIV(calculatedExp / 2, viaSentIn);
33153311
if (*exp == 0)
33163312
*exp = 1;
33173313

3318-
gExpShareExp = calculatedExp / 2 / viaExpShare;
3314+
gExpShareExp = calculatedExp / 2;
33193315
if (gExpShareExp == 0)
33203316
gExpShareExp = 1;
33213317
}
@@ -3342,7 +3338,7 @@ static void Cmd_getexp(void)
33423338
else
33433339
holdEffect = GetItemHoldEffect(item);
33443340

3345-
if (holdEffect != HOLD_EFFECT_EXP_SHARE && !(gBattleStruct->sentInPokes & 1))
3341+
if (!gSaveBlock2Ptr->expShare && !(gBattleStruct->sentInPokes & 1))
33463342
{
33473343
*(&gBattleStruct->sentInPokes) >>= 1;
33483344
gBattleScripting.getexpState = 5;
@@ -3364,14 +3360,14 @@ static void Cmd_getexp(void)
33643360
gBattleStruct->wildVictorySong++;
33653361
}
33663362

3367-
if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP))
3363+
if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && !GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_IS_EGG))
33683364
{
33693365
if (gBattleStruct->sentInPokes & 1)
33703366
gBattleMoveDamage = *exp;
33713367
else
33723368
gBattleMoveDamage = 0;
33733369

3374-
if (holdEffect == HOLD_EFFECT_EXP_SHARE)
3370+
if (gSaveBlock2Ptr->expShare)
33753371
gBattleMoveDamage += gExpShareExp;
33763372
if (holdEffect == HOLD_EFFECT_LUCKY_EGG)
33773373
gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;

src/data/items.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2227,9 +2227,9 @@ const struct Item gItems[] =
22272227
.price = 3000,
22282228
.holdEffect = HOLD_EFFECT_EXP_SHARE,
22292229
.description = sExpShareDesc,
2230-
.pocket = POCKET_ITEMS,
2231-
.type = ITEM_USE_BAG_MENU,
2232-
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
2230+
.pocket = POCKET_KEY_ITEMS,
2231+
.type = ITEM_USE_FIELD,
2232+
.fieldUseFunc = ItemUseOutOfBattle_ExpShare,
22332233
},
22342234

22352235
[ITEM_QUICK_CLAW] =

src/data/text/item_descriptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ static const u8 sMachoBraceDesc[] = _(
730730

731731
static const u8 sExpShareDesc[] = _(
732732
"A hold item that\n"
733-
"gets EXP. points\n"
733+
"spreads experience\n"
734734
"from battles.");
735735

736736
static const u8 sQuickClawDesc[] = _(

src/item_use.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,27 @@ void ItemUseOutOfBattle_Mail(u8 taskId)
197197
Task_FadeAndCloseBagMenu(taskId);
198198
}
199199

200+
void ItemUseOutOfBattle_ExpShare(u8 taskId)
201+
{
202+
if (!gSaveBlock2Ptr->expShare)
203+
{
204+
PlaySE(SE_EXP_MAX);
205+
if (gTasks[taskId].tUsingRegisteredKeyItem) // to account for pressing select in the overworld
206+
DisplayItemMessageOnField(taskId, gText_ExpShareOn, Task_CloseCantUseKeyItemMessage);
207+
else
208+
DisplayItemMessage(taskId, 1, gText_ExpShareOn, CloseItemMessage);
209+
}
210+
else
211+
{
212+
PlaySE(SE_PC_OFF);
213+
if (gTasks[taskId].tUsingRegisteredKeyItem) // to account for pressing select in the overworld
214+
DisplayItemMessageOnField(taskId, gText_ExpShareOff, Task_CloseCantUseKeyItemMessage);
215+
else
216+
DisplayItemMessage(taskId, 1, gText_ExpShareOff, CloseItemMessage);
217+
}
218+
gSaveBlock2Ptr->expShare = !gSaveBlock2Ptr->expShare;
219+
}
220+
200221
void ItemUseOutOfBattle_Bike(u8 taskId)
201222
{
202223
s16 *data = gTasks[taskId].data;

src/move_relearner.c

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static EWRAM_DATA struct {
179179
u16 listOffset;
180180
u16 listRow;
181181
bool8 showContestInfo;
182-
} sMoveRelearnerMenuSate = {0};
182+
} sMoveRelearnerMenuState = {0};
183183

184184
static const u16 sUI_Pal[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal");
185185

@@ -401,17 +401,17 @@ static void CB2_InitLearnMove(void)
401401
InitMoveRelearnerBackgroundLayers();
402402
InitMoveRelearnerWindows(FALSE);
403403

404-
sMoveRelearnerMenuSate.listOffset = 0;
405-
sMoveRelearnerMenuSate.listRow = 0;
406-
sMoveRelearnerMenuSate.showContestInfo = FALSE;
404+
sMoveRelearnerMenuState.listOffset = 0;
405+
sMoveRelearnerMenuState.listRow = 0;
406+
sMoveRelearnerMenuState.showContestInfo = FALSE;
407407

408408
CreateLearnableMovesList();
409409

410410
LoadSpriteSheet(&sMoveRelearnerSpriteSheet);
411411
LoadSpritePalette(&sMoveRelearnerPalette);
412412
CreateUISprites();
413413

414-
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
414+
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuState.listOffset, sMoveRelearnerMenuState.listRow);
415415
SetBackdropFromColor(RGB_BLACK);
416416
SetMainCallback2(CB2_MoveRelearnerMain);
417417
}
@@ -429,14 +429,14 @@ static void CB2_InitLearnMoveReturnFromSelectMove(void)
429429
SetVBlankCallback(VBlankCB_MoveRelearner);
430430

431431
InitMoveRelearnerBackgroundLayers();
432-
InitMoveRelearnerWindows(sMoveRelearnerMenuSate.showContestInfo);
432+
InitMoveRelearnerWindows(sMoveRelearnerMenuState.showContestInfo);
433433
CreateLearnableMovesList();
434434

435435
LoadSpriteSheet(&sMoveRelearnerSpriteSheet);
436436
LoadSpritePalette(&sMoveRelearnerPalette);
437437
CreateUISprites();
438438

439-
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
439+
sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuState.listOffset, sMoveRelearnerMenuState.listRow);
440440
SetBackdropFromColor(RGB_BLACK);
441441
SetMainCallback2(CB2_MoveRelearnerMain);
442442
}
@@ -533,11 +533,11 @@ static void DoMoveRelearnerMain(void)
533533
}
534534
else if (selection == MENU_B_PRESSED || selection == 1)
535535
{
536-
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
536+
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
537537
{
538538
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
539539
}
540-
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
540+
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
541541
{
542542
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
543543
}
@@ -562,11 +562,11 @@ static void DoMoveRelearnerMain(void)
562562
}
563563
else if (selection == MENU_B_PRESSED || selection == 1)
564564
{
565-
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
565+
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
566566
{
567567
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
568568
}
569-
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
569+
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
570570
{
571571
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
572572
}
@@ -622,11 +622,11 @@ static void DoMoveRelearnerMain(void)
622622
else if (selection == MENU_B_PRESSED || selection == 1)
623623
{
624624
// What's the point? It gets set to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT, anyway.
625-
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
625+
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
626626
{
627627
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
628628
}
629-
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
629+
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
630630
{
631631
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
632632
}
@@ -638,11 +638,11 @@ static void DoMoveRelearnerMain(void)
638638
if (!MoveRelearnerRunTextPrinters())
639639
{
640640
FillWindowPixelBuffer(RELEARNERWIN_MSG, 0x11);
641-
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
641+
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
642642
{
643643
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
644644
}
645-
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
645+
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
646646
{
647647
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
648648
}
@@ -685,11 +685,11 @@ static void DoMoveRelearnerMain(void)
685685
case MENU_STATE_FADE_FROM_SUMMARY_SCREEN:
686686
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
687687
sMoveRelearnerStruct->state++;
688-
if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
688+
if (sMoveRelearnerMenuState.showContestInfo == FALSE)
689689
{
690690
HideHeartSpritesAndShowTeachMoveText(TRUE);
691691
}
692-
else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
692+
else if (sMoveRelearnerMenuState.showContestInfo == TRUE)
693693
{
694694
ShowTeachMoveText(TRUE);
695695
}
@@ -751,7 +751,7 @@ static void DoMoveRelearnerMain(void)
751751
static void FreeMoveRelearnerResources(void)
752752
{
753753
RemoveScrollArrows();
754-
DestroyListMenuTask(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
754+
DestroyListMenuTask(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuState.listOffset, &sMoveRelearnerMenuState.listRow);
755755
FreeAllWindowBuffers();
756756
FREE_AND_SET_NULL(sMoveRelearnerStruct);
757757
ResetSpriteData();
@@ -778,7 +778,7 @@ static void HideHeartSpritesAndShowTeachMoveText(bool8 onlyHideSprites)
778778
static void HandleInput(bool8 showContest)
779779
{
780780
s32 itemId = ListMenu_ProcessInput(sMoveRelearnerStruct->moveListMenuTask);
781-
ListMenuGetScrollAndRow(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
781+
ListMenuGetScrollAndRow(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuState.listOffset, &sMoveRelearnerMenuState.listRow);
782782

783783
switch (itemId)
784784
{
@@ -792,13 +792,13 @@ static void HandleInput(bool8 showContest)
792792
{
793793
PutWindowTilemap(RELEARNERWIN_DESC_CONTEST);
794794
sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
795-
sMoveRelearnerMenuSate.showContestInfo = TRUE;
795+
sMoveRelearnerMenuState.showContestInfo = TRUE;
796796
}
797797
else
798798
{
799799
PutWindowTilemap(RELEARNERWIN_DESC_BATTLE);
800800
sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
801-
sMoveRelearnerMenuSate.showContestInfo = FALSE;
801+
sMoveRelearnerMenuState.showContestInfo = FALSE;
802802
}
803803

804804
ScheduleBgCopyTilemapToVram(1);
@@ -824,7 +824,7 @@ static void HandleInput(bool8 showContest)
824824

825825
static s32 GetCurrentSelectedMove(void)
826826
{
827-
return sMoveRelearnerStruct->menuItems[sMoveRelearnerMenuSate.listRow + sMoveRelearnerMenuSate.listOffset].id;
827+
return sMoveRelearnerStruct->menuItems[sMoveRelearnerMenuState.listRow + sMoveRelearnerMenuState.listOffset].id;
828828
}
829829

830830
// Theory: This used to make the heart sprites visible again (i.e.
@@ -876,7 +876,7 @@ static void AddScrollArrows(void)
876876
{
877877
gTempScrollArrowTemplate = sMoveListScrollArrowsTemplate;
878878
gTempScrollArrowTemplate.fullyDownThreshold = sMoveRelearnerStruct->numMenuChoices - sMoveRelearnerStruct->numToShowAtOnce;
879-
sMoveRelearnerStruct->moveListScrollArrowTask = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sMoveRelearnerMenuSate.listOffset);
879+
sMoveRelearnerStruct->moveListScrollArrowTask = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sMoveRelearnerMenuState.listOffset);
880880
}
881881
}
882882

@@ -921,7 +921,7 @@ void MoveRelearnerShowHideHearts(s32 move)
921921
u16 numHearts;
922922
u16 i;
923923

924-
if (!sMoveRelearnerMenuSate.showContestInfo || move == LIST_CANCEL)
924+
if (!sMoveRelearnerMenuState.showContestInfo || move == LIST_CANCEL)
925925
{
926926
for (i = 0; i < 16; i++)
927927
gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;

src/new_game.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ void NewGameInitData(void)
204204
WipeTrainerNameRecords();
205205
ResetTrainerHillResults();
206206
ResetContestLinkResults();
207+
gSaveBlock2Ptr->expShare = 0;
207208
}
208209

209210
static void ResetMiniGamesRecords(void)

src/strings.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1819,3 +1819,7 @@ const u8 gText_Answer[] = _("ANSWER");
18191819
const u8 gText_PokeBalls[] = _("POKé BALLS");
18201820
const u8 gText_Berry[] = _("BERRY");
18211821
const u8 gText_Berries[] = _("BERRIES");
1822+
1823+
// Exp. Share
1824+
const u8 gText_ExpShareOn[] = _("Turned on the Exp. Share.\pParty will now gain a portion\nof the Experience Points.{PAUSE_UNTIL_PRESS}");
1825+
const u8 gText_ExpShareOff[] = _("Turned off the Exp. Share.\pParty will no longer gain a portion\nof any Experience Points.{PAUSE_UNTIL_PRESS}");

0 commit comments

Comments
 (0)