From 95f5950811b59bd41d2ac67eafb2fef0b49ce31a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 17 Apr 2022 09:43:09 -0300 Subject: [PATCH 01/12] Removed ternary from CanMonLearnTMTutor --- src/party_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/party_menu.c b/src/party_menu.c index 5d0822df24..4091437772 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1961,7 +1961,7 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) if (item >= ITEM_TM01) { - if (!CanMonLearnTMHM(mon, item - ITEM_TM01 - ((item > ITEM_TM100) ? NUM_TECHNICAL_MACHINES : 0))) + if (!CanMonLearnTMHM(mon, item - ITEM_TM01)) return CANNOT_LEARN_MOVE; else move = ItemIdToBattleMoveId(item); From 239ebe9973d666f76353b00c7a015d8441151164 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 17 Apr 2022 09:17:52 -0400 Subject: [PATCH 02/12] Revert "Removed ternary from CanMonLearnTMTutor" --- src/party_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/party_menu.c b/src/party_menu.c index 4091437772..5d0822df24 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1961,7 +1961,7 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) if (item >= ITEM_TM01) { - if (!CanMonLearnTMHM(mon, item - ITEM_TM01)) + if (!CanMonLearnTMHM(mon, item - ITEM_TM01 - ((item > ITEM_TM100) ? NUM_TECHNICAL_MACHINES : 0))) return CANNOT_LEARN_MOVE; else move = ItemIdToBattleMoveId(item); From 49905cee04bafede71ddb2926e3f42bc662102a7 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Tue, 3 May 2022 14:14:04 -0400 Subject: [PATCH 03/12] Ability Patch --- include/item_use.h | 1 + include/party_menu.h | 1 + src/data/items.h | 2 +- src/item_use.c | 6 +++ src/party_menu.c | 94 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 103 insertions(+), 1 deletion(-) diff --git a/include/item_use.h b/include/item_use.h index 266bcad0bb..fb30f35308 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -12,6 +12,7 @@ void ItemUseOutOfBattle_SSTicket(u8); void ItemUseOutOfBattle_WailmerPail(u8); void ItemUseOutOfBattle_Medicine(u8); void ItemUseOutOfBattle_AbilityCapsule(u8); +void ItemUseOutOfBattle_AbilityPatch(u8); void ItemUseOutOfBattle_ReduceEV(u8); void ItemUseOutOfBattle_SacredAsh(u8); void ItemUseOutOfBattle_PPRecovery(u8); diff --git a/include/party_menu.h b/include/party_menu.h index 845db5222f..750b859c0a 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -50,6 +50,7 @@ void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichPart void CB2_ShowPartyMenuForItemUse(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task); +void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task); void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task); void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task); void ItemUseCB_PPUp(u8 taskId, TaskFunc task); diff --git a/src/data/items.h b/src/data/items.h index 63ad66dfec..61c1fd770c 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1095,7 +1095,7 @@ const struct Item gItems[] = .description = sAbilityPatchDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_AbilityPatch, }, // Mints diff --git a/src/item_use.c b/src/item_use.c index 284c94c23d..86c34f854b 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -755,6 +755,12 @@ void ItemUseOutOfBattle_AbilityCapsule(u8 taskId) SetUpItemUseCallback(taskId); } +void ItemUseOutOfBattle_AbilityPatch(u8 taskId) +{ + gItemUseCB = ItemUseCB_AbilityPatch; + SetUpItemUseCallback(taskId); +} + void ItemUseOutOfBattle_ReduceEV(u8 taskId) { gItemUseCB = ItemUseCB_ReduceEV; diff --git a/src/party_menu.c b/src/party_menu.c index 4091437772..992aa9c40e 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4475,6 +4475,100 @@ void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task) gTasks[taskId].func = Task_AbilityCapsule; } +void Task_AbilityPatch(u8 taskId) +{ + static const u8 askText[] = _("Would you like to change {STR_VAR_1}'s\nability to {STR_VAR_2}?"); + static const u8 doneText[] = _("{STR_VAR_1}'s ability became\n{STR_VAR_2}!{PAUSE_UNTIL_PRESS}"); + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + + // If Hidden Abilities have been implemented without the use of Pokémon Expansion and added to the `abilities` field + // as ability no. 3 (eg. {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL} ) + // you can remove this #ifdef. + #ifdef POKEMON_EXPANSION + // Can't use. + if (gBaseStats[tSpecies].abilities[tAbilityNum] == 0 + || !tSpecies + || GetMonData(&gPlayerParty[tMonId], MON_DATA_ABILITY_NUM, NULL) > 1 + ) + #endif + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + return; + } + gPartyMenuUseExitCallback = TRUE; + GetMonNickname(&gPlayerParty[tMonId], gStringVar1); + StringCopy(gStringVar2, gAbilityNames[GetAbilityBySpecies(tSpecies, tAbilityNum)]); + StringExpandPlaceholders(gStringVar4, askText); + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + tState++; + break; + case 1: + if (!IsPartyMenuTextPrinterActive()) + { + PartyMenuDisplayYesNoMenu(); + tState++; + } + break; + case 2: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + tState++; + break; + case 1: + case MENU_B_PRESSED: + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + ScheduleBgCopyTilemapToVram(2); + // Don't exit party selections screen, return to choosing a mon. + ClearStdWindowAndFrameToTransparent(6, 0); + ClearWindowTilemap(6); + DisplayPartyMenuStdMessage(5); + gTasks[taskId].func = (void *)GetWordTaskArg(taskId, tOldFunc); + return; + } + break; + case 3: + PlaySE(SE_USE_ITEM); + StringExpandPlaceholders(gStringVar4, doneText); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + tState++; + break; + case 4: + if (!IsPartyMenuTextPrinterActive()) + tState++; + break; + case 5: + SetMonData(&gPlayerParty[tMonId], MON_DATA_ABILITY_NUM, &tAbilityNum); + RemoveBagItem(gSpecialVar_ItemId, 1); + gTasks[taskId].func = Task_ClosePartyMenu; + break; + } +} + +void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task) +{ + s16 *data = gTasks[taskId].data; + + tState = 0; + tMonId = gPartyMenu.slotId; + tSpecies = GetMonData(&gPlayerParty[tMonId], MON_DATA_SPECIES, NULL); + tAbilityNum = 2; + SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func)); + gTasks[taskId].func = Task_AbilityPatch; +} + #undef tState #undef tSpecies #undef tAbilityNum From 7008c01f2564c4153bfa47ddb652aa69a588536a Mon Sep 17 00:00:00 2001 From: sneed Date: Sat, 7 May 2022 21:41:21 +0300 Subject: [PATCH 04/12] Update items.h --- src/data/items.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 61c1fd770c..034b5be57a 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7037,13 +7037,22 @@ const struct Item gItems[] = .flingPower = 10, }, +#ifndef BATTLE_ENGINE + #define CONFUSE_BERRY_HEAL_FRACTION 8 +#else + #if B_CONFUSE_BERRIES_HEAL >= GEN_8 + #define CONFUSE_BERRY_HEAL_FRACTION 3 + #elseif B_CONFUSE_BERRIES_HEAL == GEN_7 + #define CONFUSE_BERRY_HEAL_FRACTION 2 +#endif + [ITEM_FIGY_BERRY] = { .name = _("Figy Berry"), .itemId = ITEM_FIGY_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, - .holdEffectParam = 8, + .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, @@ -7057,7 +7066,7 @@ const struct Item gItems[] = .itemId = ITEM_WIKI_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_CONFUSE_DRY, - .holdEffectParam = 8, + .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sWikiBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, @@ -7071,7 +7080,7 @@ const struct Item gItems[] = .itemId = ITEM_MAGO_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, - .holdEffectParam = 8, + .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sMagoBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, @@ -7085,7 +7094,7 @@ const struct Item gItems[] = .itemId = ITEM_AGUAV_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, - .holdEffectParam = 8, + .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sAguavBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, @@ -7099,7 +7108,7 @@ const struct Item gItems[] = .itemId = ITEM_IAPAPA_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, - .holdEffectParam = 8, + .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sIapapaBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, @@ -7107,6 +7116,8 @@ const struct Item gItems[] = .flingPower = 10, }, +#undef CONFUSE_BERRY_HEAL_FRACTION + [ITEM_RAZZ_BERRY] = { .name = _("Razz Berry"), From 5592fa434a3cff0a68503abd797e5c75c64d6a3e Mon Sep 17 00:00:00 2001 From: sneed Date: Sat, 7 May 2022 22:01:35 +0300 Subject: [PATCH 05/12] catch < gen7 with engine --- src/data/items.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 034b5be57a..5f34ff3ed0 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7037,13 +7037,12 @@ const struct Item gItems[] = .flingPower = 10, }, -#ifndef BATTLE_ENGINE - #define CONFUSE_BERRY_HEAL_FRACTION 8 +#if defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL >= GEN_8 + #define CONFUSE_BERRY_HEAL_FRACTION 3 +#else if defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL == GEN_7 + #define CONFUSE_BERRY_HEAL_FRACTION 2 #else - #if B_CONFUSE_BERRIES_HEAL >= GEN_8 - #define CONFUSE_BERRY_HEAL_FRACTION 3 - #elseif B_CONFUSE_BERRIES_HEAL == GEN_7 - #define CONFUSE_BERRY_HEAL_FRACTION 2 + #define CONFUSE_BERRY_HEAL_FRACTION 8 #endif [ITEM_FIGY_BERRY] = From d8256663e3852732d4b2a174bb3e869e29a4d80f Mon Sep 17 00:00:00 2001 From: sneed Date: Sat, 7 May 2022 22:12:10 +0300 Subject: [PATCH 06/12] fix syntax --- src/data/items.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/items.h b/src/data/items.h index 5f34ff3ed0..246af3dd70 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7039,7 +7039,7 @@ const struct Item gItems[] = #if defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL >= GEN_8 #define CONFUSE_BERRY_HEAL_FRACTION 3 -#else if defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL == GEN_7 +#elseif defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL == GEN_7 #define CONFUSE_BERRY_HEAL_FRACTION 2 #else #define CONFUSE_BERRY_HEAL_FRACTION 8 From eebfed20add79295e6c30511f5c018902656b019 Mon Sep 17 00:00:00 2001 From: sneed Date: Sun, 8 May 2022 09:58:06 +0300 Subject: [PATCH 07/12] #elif --- src/data/items.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/items.h b/src/data/items.h index 246af3dd70..11c4bb91d3 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7039,7 +7039,7 @@ const struct Item gItems[] = #if defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL >= GEN_8 #define CONFUSE_BERRY_HEAL_FRACTION 3 -#elseif defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL == GEN_7 +#elif defined(BATTLE_ENGINE) && B_CONFUSE_BERRIES_HEAL == GEN_7 #define CONFUSE_BERRY_HEAL_FRACTION 2 #else #define CONFUSE_BERRY_HEAL_FRACTION 8 From 0c0bea33c7e45df1755f9d1ce08502131c24cdb5 Mon Sep 17 00:00:00 2001 From: sneed Date: Thu, 12 May 2022 18:39:10 +0300 Subject: [PATCH 08/12] Update items.h --- src/data/items.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/items.h b/src/data/items.h index 61c1fd770c..cf67b8433a 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7479,7 +7479,7 @@ const struct Item gItems[] = .itemId = ITEM_COBA_BERRY, .price = 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, - .holdEffectParam = TYPE_FIGHTING, + .holdEffectParam = TYPE_FLYING, .description = sCobaBerryDesc, .pocket = POCKET_BERRIES, .type = ITEM_USE_BAG_MENU, From 1d75f3ffde1cc41014ef414a1a01511ddc216759 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 13 May 2022 10:51:49 -0300 Subject: [PATCH 09/12] Moved order of defined header files in include/global.h --- include/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/global.h b/include/global.h index 2f1b59ece9..b844943d09 100644 --- a/include/global.h +++ b/include/global.h @@ -14,8 +14,8 @@ #include "constants/maps.h" #include "constants/pokemon.h" #include "constants/easy_chat.h" -#include "constants/expansion_branches.h" #include "constants/trainer_hill.h" +#include "constants/expansion_branches.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); From bcf9ed3fb8eda61031886659da49256d8e7bd639 Mon Sep 17 00:00:00 2001 From: sneed Date: Mon, 30 May 2022 03:11:56 +0300 Subject: [PATCH 10/12] Update spritesheet_rules.mk --- spritesheet_rules.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 29bdf2555e..275761d291 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -596,6 +596,18 @@ $(OBJEVENTGFXDIR)/berry_trees/colbur.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/berry_trees/roseli.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 +$(OBJEVENTGFXDIR)/berry_trees/custap.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/berry_trees/jaboca.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/berry_trees/rowap.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/berry_trees/micle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + $(OBJEVENTGFXDIR)/misc/breakable_rock.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 From 3c9be7c3b29b5dfee80b6a602ac338d89cbb6a48 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 3 Jul 2022 13:36:00 -0300 Subject: [PATCH 11/12] =?UTF-8?q?Fixed=20Pok=C3=A9block=20Case's=20descrip?= =?UTF-8?q?tion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/text/item_descriptions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h index 5c70e17b26..4706ddfdba 100644 --- a/src/data/text/item_descriptions.h +++ b/src/data/text/item_descriptions.h @@ -3615,7 +3615,7 @@ static const u8 sPokeRadarDesc[] = _( static const u8 sPokeblockCaseDesc[] = _( "A case for holding\n" - "Pokéblocks made with\n" + "{POKEBLOCK}s made with\n" "a Berry Blender."); static const u8 sSootSackDesc[] = _( From 640974b164852a8c45d6f601014798213b0eeadf Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 5 Jul 2022 22:13:15 -0300 Subject: [PATCH 12/12] Update items.h --- src/data/items.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/items.h b/src/data/items.h index bd2b821aff..f55ddf48d3 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -846,7 +846,7 @@ const struct Item gItems[] = [ITEM_CASTELIACONE] = { - .name = _("CasteliaCone"), + .name = _("Casteliacone"), .itemId = ITEM_CASTELIACONE, .price = 350, .description = sCasteliaconeDesc,